164{
166
167
169 {
172 return;
173 }
174
175
177
178 if (unit)
180 else if (gob)
182
184 LOG_DEBUG(
"sql.sql",
"SmartScript::ProcessAction: Invoker: {} ({})", tempInvoker->GetName(), tempInvoker->GetGUID().ToString());
185
187
190 if (unit)
191 invoker = unit;
192 else if (gob)
193 invoker = gob;
194
196
198 {
200 {
203
205 {
206 if (
IsCreature((target)) && !target->ToCreature()->IsPet())
207 {
209 {
212 }
213 else
215 break;
216 }
218 {
221 break;
222 }
223 }
224
225 if (!talkTarget)
227
228 if (!talker)
229 break;
230
232 {
234 break;
235 }
236
241
244 break;
245 }
247 {
249 {
253 {
256 }
257
258 LOG_DEBUG(
"sql.sql",
"SmartScript::ProcessAction:: SMART_ACTION_SIMPLE_TALK: talker: {} ({}), textGroupId: {}",
260 }
261 break;
262 }
264 {
266 {
268 {
269 target->ToUnit()->HandleEmoteCommand(e.
action.
emote.emote);
270 LOG_DEBUG(
"sql.sql",
"SmartScript::ProcessAction:: SMART_ACTION_PLAY_EMOTE: target: {} ({}), emote: {}",
271 target->GetName(), target->GetGUID().ToString(), e.
action.
emote.emote);
272 }
273 }
274 break;
275 }
277 {
279 {
281 {
284 else
286 LOG_DEBUG(
"sql.sql",
"SmartScript::ProcessAction:: SMART_ACTION_SOUND: target: {} ({}), sound: {}, onlyself: {}",
288 }
289 }
290 break;
291 }
293 {
301 for (unsigned int sound : sounds)
302 {
303 if (sound)
304 {
305 temp[count] = sound;
306 ++count;
307 }
308 }
309
310 if (count == 0)
311 {
312 break;
313 }
314
316 {
318 {
321 LOG_DEBUG(
"sql.sql",
"SmartScript::ProcessAction:: SMART_ACTION_RANDOM_SOUND: target: {} ({}), sound: {}, onlyself: {}",
323 }
324 }
325
326 break;
327 }
329 {
331
333 {
335 {
337
339 {
341 if (
Player* player = i->GetSource())
342 {
344 {
346 {
348 targets.push_back(player);
349 }
350 else
351 targets.push_back(player);
352 }
353 }
354 }
355 }
356 }
357 else
359
360 if (!targets.empty())
361 {
363 {
365 {
367 LOG_DEBUG(
"sql.sql",
"SmartScript::ProcessAction:: SMART_ACTION_MUSIC: target: {} ({}), sound: {}, onlySelf: {}, type: {}",
369 }
370 }
371 }
372 break;
373 }
375 {
377
379 {
381 {
383
385 {
387 if (
Player* player = i->GetSource())
388 {
390 {
392 {
394 targets.push_back(player);
395 }
396 else
397 targets.push_back(player);
398 }
399 }
400 }
401 }
402 }
403 else
405
406 if (targets.empty())
407 break;
408
416 for (unsigned int sound : sounds)
417 {
418 if (sound)
419 {
420 temp[count] = sound;
421 ++count;
422 }
423 }
424
425 if (count == 0)
426 {
427 break;
428 }
429
431 {
433 {
436 LOG_DEBUG(
"sql.sql",
"SmartScript::ProcessAction:: SMART_ACTION_RANDOM_MUSIC: target: {} ({}), sound: {}, onlyself: {}, type: {}",
438 }
439 }
440
441 break;
442 }
444 {
446 {
448 {
450 {
452 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction:: SMART_ACTION_SET_FACTION: Creature entry {}, GuidLow {} set faction to {}",
454 }
455 else
456 {
458 {
459 if (target->ToCreature()->GetFaction() != ci->faction)
460 {
461 target->ToCreature()->SetFaction(ci->faction);
462 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction:: SMART_ACTION_SET_FACTION: Creature entry {}, GuidLow {} set faction to {}",
463 target->GetEntry(), target->GetGUID().ToString(), ci->faction);
464 }
465 }
466 }
467 }
468 }
469 break;
470 }
472 {
474 {
476 continue;
477
479 {
480
482 {
484 {
487 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction:: SMART_ACTION_MORPH_TO_ENTRY_OR_MODEL: Creature entry {}, GuidLow {} set displayid to {}",
489 }
490 }
491
492 else
493 {
495 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction:: SMART_ACTION_MORPH_TO_ENTRY_OR_MODEL: Creature entry {}, GuidLow {} set displayid to {}",
497 }
498 }
499 else
500 {
501 target->ToCreature()->DeMorph();
502 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction:: SMART_ACTION_MORPH_TO_ENTRY_OR_MODEL: Creature entry {}, GuidLow {} demorphs.",
503 target->GetEntry(), target->GetGUID().ToString());
504 }
505 }
506 break;
507 }
509 {
511 {
513 {
514 target->ToPlayer()->FailQuest(e.
action.
quest.quest);
515 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction:: SMART_ACTION_FAIL_QUEST: Player guidLow {} fails quest {}",
516 target->GetGUID().ToString(), e.
action.
quest.quest);
517 }
518 }
519 break;
520 }
522 {
524 {
526 {
528 {
530 {
531 if (player->CanTakeQuest(q, true))
532 {
534 {
536 menu.SendQuestGiverQuestDetails(q,
me->
GetGUID(),
true);
537 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction:: SMART_ACTION_OFFER_QUEST: Player guidLow {} - offering quest {}",
539 }
540 }
541 }
542 else
543 {
544 player->AddQuestAndCheckCompletion(q, nullptr);
545 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction:: SMART_ACTION_OFFER_QUEST: Player guidLow {} - quest {} added",
547 }
548 }
549 }
550 }
551 break;
552 }
554 {
556 {
558 continue;
559
561 }
562 break;
563 }
565 {
566 std::vector<uint32> emotes;
568 std::back_inserter(emotes), [](
uint32 emote) { return emote != 0; });
569
571 {
573 {
575 target->ToUnit()->HandleEmoteCommand(emote);
576 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction:: SMART_ACTION_RANDOM_EMOTE: Creature guidLow {} handle random emote {}",
577 target->GetGUID().ToString(), emote);
578 }
579 }
580 break;
581 }
583 {
585 break;
586
588 for (ThreatContainer::StorageType::const_iterator i = threatList.begin(); i != threatList.end(); ++i)
589 {
591 {
593 LOG_DEBUG(
"sql.sql",
"SmartScript::ProcessAction:: SMART_ACTION_THREAT_ALL_PCT: Creature {} modify threat for unit {}, value {}",
595 }
596 }
597 break;
598 }
600 {
602 break;
603
605 {
607 {
609 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction:: SMART_ACTION_THREAT_SINGLE_PCT: Creature guidLow {} modify threat for unit {}, value {}",
611 }
612 }
613 break;
614 }
616 {
618 {
619
621 if (
Vehicle* vehicle = target->ToUnit()->GetVehicleKit())
622 for (
auto & Seat : vehicle->
Seats)
624 player->AreaExploredOrEventHappens(e.action.quest.quest);
625
627 {
628 target->ToPlayer()->AreaExploredOrEventHappens(e.
action.
quest.quest);
629
630 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction:: SMART_ACTION_CALL_AREAEXPLOREDOREVENTHAPPENS: Player guidLow {} credited quest {}",
631 target->GetGUID().ToString(), e.
action.
quest.quest);
632 }
633 }
634 break;
635 }
637 {
638 if (targets.empty())
639 break;
640
642
645
648
649 bool failedSpellCast = false, successfulSpellCast = false;
650
652 {
653
656
658 continue;
659
660 if (caster && caster !=
me)
661 {
663 }
665 {
666
668 continue;
669
670
673 break;
674
675
677 continue;
678
679
682
688
690 bool isWithinMeleeRange = distanceToTarget <= meleeRange;
693
696
697
698 if (isWithinLOSInMap && isWithinMeleeRange && isRangedAttack && isTargetRooted && canCastSpell && !
me->
IsVehicle())
699 {
700 failedSpellCast = true;
701
703 continue;
704
705 float minDistance = std::max(meleeRange, spellMinRange) - distanceToTarget +
NOMINAL_MELEE_RANGE;
707 continue;
708 }
709
710
711 if (distanceToTarget > spellMaxRange && isWithinLOSInMap)
712 {
713 failedSpellCast = true;
714
716 continue;
717
719 continue;
720 }
721 else if (distanceToTarget < spellMinRange || !(isWithinLOSInMap || isSpellIgnoreLOS))
722 {
723 failedSpellCast = true;
724
726 continue;
727
731 continue;
732 }
733
736 {
739 else
741 }
742
745
747 {
748
750
752 else
753
755 }
756
757 if (spellCastFailed)
758 failedSpellCast = true;
759 else
760 successfulSpellCast = true;
761
762 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction:: SMART_ACTION_CAST: Unit {} casts spell {} on target {} with castflags {}",
764 }
765 }
766
767
768 if (failedSpellCast && !successfulSpellCast)
769 {
771
772 return;
773 }
774
775 break;
776 }
778 {
779 if (targets.empty())
780 break;
781
784
787 {
789 {
791 }
792 else
793 {
795 }
796 }
797
799 {
801 if (!uTarget)
802 continue;
803
805 {
807 {
809 }
810
812 }
813 }
814 break;
815 }
817 {
818
820 if (!tempLastInvoker)
821 break;
822
823 if (targets.empty())
824 break;
825
828
830 {
832 continue;
833
834 if (!
IsUnit(tempLastInvoker))
835 continue;
836
838 {
840 {
842 }
843
846 {
848 {
850 }
851 else
852 {
854 }
855 }
856
858 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction:: SMART_ACTION_INVOKER_CAST: Invoker {} casts spell {} on target {} with castflags {}",
860 }
861 else
862 {
863 LOG_DEBUG(
"scripts.ai",
"Spell {} not cast because it has flag SMARTCAST_AURA_NOT_PRESENT and the target {} already has the aura",
865 }
866 }
867 break;
868 }
870 {
872 {
874 {
876 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction:: SMART_ACTION_ADD_AURA: Adding aura {} to unit {}",
878 }
879 }
880 break;
881 }
883 {
885 {
887 {
889
890
892 {
894 }
895
897 LOG_DEBUG(
"sql.sql",
"SmartScript::ProcessAction:: SMART_ACTION_ACTIVATE_GOBJECT. Gameobject {} activated",
go->
GetGUID().
ToString());
898 }
899 }
900
901 break;
902 }
904 {
906 {
908 {
909 target->ToGameObject()->ResetDoorOrButton();
910 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction:: SMART_ACTION_RESET_GOBJECT. Gameobject {} (entry: {}) reset",
911 target->GetGUID().ToString(), target->GetEntry());
912 }
913 }
914 break;
915 }
917 {
919 {
921 {
923 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction:: SMART_ACTION_SET_EMOTE_STATE. Unit {} set emotestate to {}",
924 target->GetGUID().ToString(), e.
action.
emote.emote);
925 }
926 }
927 break;
928 }
930 {
932 {
934 {
936 {
938 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction:: SMART_ACTION_SET_UNIT_FLAG. Unit {} added flag {} to UNIT_FIELD_FLAGS",
940 }
941 else
942 {
944 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction:: SMART_ACTION_SET_UNIT_FLAG. Unit {} added flag {} to UNIT_FIELD_FLAGS_2",
946 }
947 }
948 }
949 break;
950 }
952 {
954 {
956 {
958 {
960 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction:: SMART_ACTION_REMOVE_UNIT_FLAG. Unit {} removed flag {} to UNIT_FIELD_FLAGS",
962 }
963 else
964 {
966 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction:: SMART_ACTION_REMOVE_UNIT_FLAG. Unit {} removed flag {} to UNIT_FIELD_FLAGS_2",
968 }
969 }
970 }
971 break;
972 }
974 {
976 break;
977
979 LOG_DEBUG(
"sql.sql",
"SmartScript::ProcessAction:: SMART_ACTION_AUTO_ATTACK: Creature: {} bool on = {}",
981 break;
982 }
984 {
986 break;
987
990 LOG_DEBUG(
"sql.sql",
"SmartScript::ProcessAction:: SMART_ACTION_ALLOW_COMBAT_MOVEMENT: Creature {} bool on = {}",
992 break;
993 }
995 {
997 break;
998
1000 LOG_DEBUG(
"sql.sql",
"SmartScript::ProcessAction:: SMART_ACTION_SET_EVENT_PHASE: Creature {} set event phase {}",
1002 break;
1003 }
1005 {
1007 break;
1008
1011 LOG_DEBUG(
"sql.sql",
"SmartScript::ProcessAction:: SMART_ACTION_INC_EVENT_PHASE: Creature {} inc event phase by {}, "
1013 break;
1014 }
1016 {
1018 break;
1019
1022 if (target->ToCreature()->IsAIEnabled)
1023 target->ToCreature()->AI()->EnterEvadeMode();
1024
1025 break;
1026 }
1028 {
1029
1031 break;
1032
1035 {
1038 }
1039 LOG_DEBUG(
"sql.sql",
"SmartScript::ProcessAction:: SMART_ACTION_FLEE_FOR_ASSIST: Creature {} DoFleeToGetAssistance",
me->
GetGUID().
ToString());
1040 break;
1041 }
1043 {
1045 break;
1046
1048 break;
1049 }
1051 {
1053 {
1055 continue;
1056
1058
1061 {
1063 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction: SMART_ACTION_CALL_GROUPEVENTHAPPENS: Player {}, group credit for quest {}",
1065 }
1066
1067
1069 {
1070 for (
auto& Seat : vehicle->
Seats)
1071 {
1073 {
1075 }
1076 }
1077 }
1078 }
1079 break;
1080 }
1082 {
1084 {
1086 continue;
1087
1089 {
1091 {
1094 }
1095 else
1097 }
1098 else
1099 target->ToUnit()->RemoveAllAuras();
1100
1101 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction: SMART_ACTION_REMOVEAURASFROMSPELL: Unit {}, spell {}",
1103 }
1104 break;
1105 }
1107 {
1109 break;
1110
1112 {
1114 break;
1115 }
1116
1118 {
1120 {
1123 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction: SMART_ACTION_FOLLOW: Creature {} following target {}",
1125 break;
1126 }
1127 }
1128 break;
1129 }
1131 {
1133 break;
1134
1135 std::vector<uint32> phases;
1137 std::back_inserter(phases), [](
uint32 phase) { return phase != 0; });
1138
1141 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction: SMART_ACTION_RANDOM_PHASE: Creature {} sets event phase to {}",
1143 break;
1144 }
1146 {
1148 break;
1149
1152 LOG_DEBUG(
"sql.sql",
"SmartScript::ProcessAction: SMART_ACTION_RANDOM_PHASE_RANGE: Creature {} sets event phase to {}",
1154 break;
1155 }
1157 {
1159 {
1161 LOG_DEBUG(
"sql.sql",
"SmartScript::ProcessAction: SMART_ACTION_CALL_KILLEDMONSTER: (trigger == true) Player {}, Killcredit: {}",
1163 }
1165 {
1167 break;
1168
1170 {
1172 LOG_DEBUG(
"sql.sql",
"SmartScript::ProcessAction: SMART_ACTION_CALL_KILLEDMONSTER: Player {}, Killcredit: {}",
1174 }
1175 }
1176 else
1177 {
1179 {
1181 continue;
1182
1184 if (!player)
1185 continue;
1186
1188 LOG_DEBUG(
"sql.sql",
"SmartScript::ProcessAction: SMART_ACTION_CALL_KILLEDMONSTER: Player {}, Killcredit: {}",
1190 }
1191 }
1192 break;
1193 }
1195 {
1197 if (!obj)
1198 obj = unit;
1199
1200 if (!obj)
1201 break;
1202
1204 if (!instance)
1205 {
1206 LOG_ERROR(
"scripts.ai.sai",
"SmartScript: Event {} attempt to set instance data without instance script. EntryOrGuid {}", e.
GetEventType(), e.
entryOrGuid);
1207 break;
1208 }
1209
1211 {
1212 case 0:
1213 {
1216 } break;
1217 case 1:
1218 {
1221 } break;
1222 default:
1223 {
1224 break;
1225 }
1226 }
1227 break;
1228 }
1230 {
1232 if (!obj)
1233 obj = unit;
1234
1235 if (!obj)
1236 break;
1237
1239 if (!instance)
1240 {
1242 break;
1243 }
1244
1245 if (targets.empty())
1246 break;
1247
1249 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction: SMART_ACTION_SET_INST_DATA64: Field: {}, data: {}",
1251 break;
1252 }
1254 {
1257 target->ToCreature()->UpdateEntry(e.action.updateTemplate.creature, target->ToCreature()->GetCreatureData(), e.action.updateTemplate.updateLevel != 0);
1258 break;
1259 }
1261 {
1263 {
1265 {
1267 {
1268
1270 {
1271 me->KillSelf();
1272 LOG_DEBUG("sql.sql", "SmartScript::ProcessAction: SMART_ACTION_DIE: Creature {}", me->GetGUID().ToString());
1273 }
1275 }
1276 }
1278 {
1281 }
1282 break;
1283 }
1285 {
1286 if (targets.empty())
1287 break;
1288
1290 {
1293
1296 if (
IsPlayer(unit) && !unit->ToPlayer()->isDead())
1297 {
1301 }
1302 }
1303 else
1304 {
1306 {
1308 {
1309 target->ToCreature()->SetInCombatWithZone();
1310 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction: SMART_ACTION_SET_IN_COMBAT_WITH_ZONE: Creature {}, target: {}",
1312 }
1313 }
1314 }
1315
1316 break;
1317 }
1319 {
1321 {
1323 {
1326 {
1329 }
1330 LOG_DEBUG(
"scripts.ai",
"SmartScript::ProcessAction: SMART_ACTION_CALL_FOR_HELP: Creature {}, target: {}",
1332 }
1333 }
1334 break;
1335 }
1337 {
1339 {
1341 LOG_DEBUG(
"sql.sql",
"SmartScript::ProcessAction: SMART_ACTION_SET_SHEATH: Creature {}, State: {}",
1343 }
1344 break;
1345 }
1347 {
1349 {
1351 {
1353 LOG_ERROR(
"sql.sql",
"SmartScript: SMART_ACTION_FORCE_DESPAWN has removeObjectFromWorld set. delay and forceRespawnTimer ignored.");
1354
1356 creature->AddObjectToRemoveList();
1359 }
1360 else
1361 {
1363
1364
1365 if (despawnDelay <= 0ms)
1366 despawnDelay = 1ms;
1367
1370 creature->DespawnOrUnsummon(despawnDelay, forceRespawnTimer);
1373 }
1374 }
1375
1376 break;
1377 }
1379 {
1381 {
1386 }
1387 break;
1388 }
1390 {
1392 {
1394 continue;
1395
1397 {
1399 {
1402 }
1403 else
1405 }
1406 else
1407 target->ToUnit()->Dismount();
1408 }
1409 break;
1410 }
1412 {
1414 {
1416 {
1418 if (!ai)
1419 continue;
1420
1423 else
1425 }
1426 }
1427 break;
1428 }
1430 {
1432 {
1434 {
1436
1438 {
1441 else
1443 }
1444 else
1446 }
1448 {
1450
1452 {
1455 else
1457 }
1458 else
1460 }
1461 }
1462 break;
1463 }
1465 {
1467 break;
1468
1469 float x, y, z;
1472 break;
1473 }
1475 {
1477 break;
1478
1480 break;
1481 }
1483 {
1486 target->ToUnit()->SetVisible(e.action.visibility.state);
1487
1488 break;
1489 }
1491 {
1493 target->setActive(e.action.setActive.state);
1494 break;
1495 }
1497 {
1499 break;
1500
1501 if (targets.empty())
1502 break;
1503
1504
1507 break;
1508 }
1510 {
1512 if (
Unit* unitTarget = target->ToUnit())
1513 unitTarget->AttackStop();
1514 break;
1515 }
1517 {
1521 if (!summoner)
1522 break;
1523
1525
1527 {
1532 {
1535 else
1538 {
1540 summon->AI()->AttackStart(unit);
1542 summon->AI()->AttackStart(
me);
1543 }
1544 }
1545 break;
1546 }
1547
1548 float x, y, z, o;
1550 {
1551 target->GetPosition(x, y, z, o);
1557 {
1559 summon->AI()->AttackStart(unit);
1561 summon->AI()->AttackStart(target->ToUnit());
1563 summon->AI()->AttackStart(
me);
1564 }
1565 }
1566
1568 break;
1569
1571 {
1573 summon->AI()->AttackStart(unit);
1575 summon->AI()->AttackStart(
me);
1576 }
1577 break;
1578 }
1580 {
1582 break;
1583
1584 if (!targets.empty())
1585 {
1586 float x, y, z, o;
1588 {
1589
1590
1591
1592
1593 target->GetPosition(x, y, z, o);
1600 else
1602 }
1603 }
1604
1606 break;
1607
1609 break;
1610 }
1612 {
1614 {
1616 continue;
1617
1618 Unit::Kill(target->ToUnit(), target->ToUnit());
1619 }
1620
1621 break;
1622 }
1624 {
1626 break;
1627 }
1629 {
1631 {
1633 continue;
1634
1636 }
1637 break;
1638 }
1640 {
1642 {
1644 continue;
1645
1647 }
1648 break;
1649 }
1651 {
1653 break;
1654 }
1656 {
1658 {
1663 }
1664 break;
1665 }
1667 {
1669 break;
1670
1672
1675
1676
1678 break;
1679 }
1681 {
1683 {
1685 {
1687 }
1688 }
1689
1690 break;
1691 }
1693 {
1695 break;
1696
1698 break;
1699 }
1701 {
1702 if (!targets.empty())
1703 {
1705 {
1707 {
1710 else
1711 LOG_ERROR(
"sql.sql",
"SmartScript: Action target for SMART_ACTION_SET_COUNTER is not using SmartAI, skipping");
1712 }
1714 {
1717 else
1718 LOG_ERROR(
"sql.sql",
"SmartScript: Action target for SMART_ACTION_SET_COUNTER is not using SmartGameObjectAI, skipping");
1719 }
1720 }
1721 }
1722 else
1724 break;
1725 }
1727 {
1729 break;
1730
1734
1736 {
1738 {
1740 break;
1741 }
1742 }
1743
1746
1751 break;
1752 }
1754 {
1756 break;
1757
1760 break;
1761 }
1763 {
1765 break;
1766
1771 break;
1772 }
1774 {
1776 break;
1777
1779 break;
1780 }
1782 {
1784 break;
1785
1787 {
1788 float randomOri =
frand(0.0f, 2 * M_PI);
1792 break;
1793 }
1794
1796 {
1801 break;
1802 }
1803
1805 {
1809 }
1811 {
1815 }
1816 else if (!targets.empty())
1817 {
1821 }
1822
1823 break;
1824 }
1826 {
1828 {
1830 continue;
1831
1833 }
1834 break;
1835 }
1837 {
1839 break;
1840
1842
1844
1846 {
1848 {
1852 trans->CalculatePassengerPosition(dest.x, dest.y, dest.z);
1853
1856
1857 break;
1858 }
1860 {
1862 {
1873 );
1874
1875 }
1876
1877 break;
1878 }
1879
1880 default:
1881 {
1882
1883 if (targets.empty())
1884 return;
1885 else
1887
1888 float x, y, z;
1890
1895
1898
1899 break;
1900 }
1901 }
1902
1903 break;
1904 }
1906 {
1908 {
1910 {
1912
1916 }
1917 }
1918
1919 break;
1920 }
1922 {
1924 {
1928 {
1929
1932 else
1934 }
1935 }
1936 break;
1937 }
1939 {
1942 target->ToPlayer()->PlayerTalkClass->SendCloseGossip();
1943 break;
1944 }
1946 {
1948 {
1950 {
1951 std::array<uint32, MAX_EQUIPMENT_ITEMS> slot;
1953 {
1955 if (!eInfo)
1956 {
1957 LOG_ERROR(
"sql.sql",
"SmartScript: SMART_ACTION_EQUIP uses non-existent equipment info id {} for creature {}", equipId,
npc->GetEntry());
1958 break;
1959 }
1960
1961 npc->SetCurrentEquipmentId(equipId);
1962
1963 std::copy(std::begin(eInfo->
ItemEntry), std::end(eInfo->
ItemEntry), std::begin(slot));
1964 }
1965 else
1967
1971 }
1972 }
1973 break;
1974 }
1976 {
1981
1986
1990
1994
2002 break;
2003 }
2006
2007
2010 break;
2013 break;
2015 {
2017 {
2019 {
2026 break;
2027 }
2029 {
2036 break;
2037 }
2038 }
2039
2040 break;
2041 }
2044 break;
2047 break;
2049 {
2051 break;
2052
2055
2057 if (
Creature* creature = target->ToCreature())
2058 if (
IsSmart(creature) && creature->GetVictim())
2060 creature->GetMotionMaster()->MoveChase(creature->GetVictim(), attackDistance, attackAngle);
2061
2062 break;
2063 }
2065 {
2067 {
2069 break;
2070 }
2071
2073 {
2075 {
2078 }
2080 {
2083 }
2084 }
2085 break;
2086 }
2088 {
2091 target->ToUnit()->ReplaceAllNpcFlags(
NPCFlags(e.action.unitFlag.flag));
2092 break;
2093 }
2095 {
2098 target->ToUnit()->SetNpcFlag(
NPCFlags(e.action.unitFlag.flag));
2099 break;
2100 }
2102 {
2105 target->ToUnit()->RemoveNpcFlag(
NPCFlags(e.action.unitFlag.flag));
2106 break;
2107 }
2109 {
2110 if (targets.empty())
2111 break;
2112
2114 GetTargets(casters,
CreateSmartEvent(
SMART_EVENT_UPDATE_IC, 0, 0, 0, 0, 0, 0, 0,
SMART_ACTION_NONE, 0, 0, 0, 0, 0, 0, (
SMARTAI_TARGETS)e.
action.
crossCast.
targetType, e.
action.
crossCast.
targetParam1, e.
action.
crossCast.
targetParam2, e.
action.
crossCast.
targetParam3, 0, 0), unit);
2115
2117 {
2119 continue;
2120
2122
2123 bool interruptedSpell = false;
2124
2126 {
2128 continue;
2129
2131 {
2133 {
2135 interruptedSpell = true;
2136 }
2137
2139 }
2140 else
2142 }
2143 }
2144 break;
2145 }
2147 {
2148 std::vector<uint32> actionLists;
2150 std::back_inserter(actionLists), [](
uint32 actionList) { return actionList != 0; });
2151
2154 {
2156 break;
2157 }
2158
2160 {
2162 {
2165 }
2167 {
2170 }
2171 }
2172 break;
2173 }
2175 {
2178 {
2180 break;
2181 }
2182
2184 {
2186 {
2189 }
2191 {
2194 }
2195 }
2196 break;
2197 }
2199 {
2202 target->ToPlayer()->ActivateTaxiPathTo(e.action.taxi.id);
2203 break;
2204 }
2206 {
2207 bool foundTarget = false;
2208
2210 {
2212 {
2213 foundTarget = true;
2214
2217 else
2219 }
2220 }
2221
2223 {
2226 else
2228 }
2229 break;
2230 }
2232 {
2235 target->ToUnit()->SetByteFlag(
UNIT_FIELD_BYTES_1, e.action.setunitByte.type, e.action.setunitByte.byte1);
2236 break;
2237 }
2239 {
2242 target->ToUnit()->RemoveByteFlag(
UNIT_FIELD_BYTES_1, e.action.delunitByte.type, e.action.delunitByte.byte1);
2243 break;
2244 }
2246 {
2249 target->ToUnit()->InterruptNonMeleeSpells(e.action.interruptSpellCasting.withDelayed != 0, e.action.interruptSpellCasting.spell_id, e.action.interruptSpellCasting.withInstant != 0);
2250 break;
2251 }
2253 {
2256 target->ToGameObject()->SendCustomAnim(e.action.sendGoCustomAnim.anim);
2257 break;
2258 }
2260 {
2264 break;
2265 }
2267 {
2271 break;
2272 }
2274 {
2278 break;
2279 }
2281 {
2283 {
2285 {
2290 }
2291
2292 break;
2293 }
2294
2295 if (targets.empty())
2296 break;
2297
2298
2300 {
2304 }
2305 else
2306 {
2309 {
2312 }
2313 }
2314
2315 break;
2316 }
2318 {
2321 target->ToGameObject()->SetLootState((
LootState)e.action.setGoLootState.state);
2322 break;
2323 }
2325 {
2328 target->ToGameObject()->SetGoState((
GOState)e.action.goState.state);
2329 break;
2330 }
2332 {
2334
2335 if (!ref)
2336 ref = unit;
2337
2338 if (!ref)
2339 break;
2340
2342 if (!storedTargets)
2343 break;
2344
2346 {
2348 {
2351 else
2352 LOG_ERROR(
"sql.sql",
"SmartScript: Action target for SMART_ACTION_SEND_TARGET_TO_TARGET is not using SmartAI, skipping");
2353 }
2355 {
2358 else
2359 LOG_ERROR(
"sql.sql",
"SmartScript: Action target for SMART_ACTION_SEND_TARGET_TO_TARGET is not using SmartGameObjectAI, skipping");
2360 }
2361 }
2362 break;
2363 }
2365 {
2367 break;
2368
2369 LOG_DEBUG(
"sql.sql",
"SmartScript::ProcessAction:: SMART_ACTION_SEND_GOSSIP_MENU: gossipMenuId {}, gossipNpcTextId {}",
2371
2373 if (
Player* player = target->ToPlayer())
2374 {
2377 else
2379
2381 }
2382
2383 break;
2384 }
2386 {
2387 if (!targets.empty())
2388 {
2389 float x, y, z, o;
2392 {
2394 {
2397 }
2398 else
2400 }
2401 }
2403 {
2405 {
2406 float x, y, z, o;
2409 }
2410 else
2412 }
2413 break;
2414 }
2416 {
2419 target->ToCreature()->SetRegeneratingHealth(e.action.setHealthRegen.regenHealth);
2420
2421 break;
2422 }
2424 {
2427 target->ToCreature()->SetControlled(e.action.setRoot.root != 0,
UNIT_STATE_ROOT);
2428 break;
2429 }
2431 {
2434 target->ToGameObject()->SetUInt32Value(
GAMEOBJECT_FLAGS, e.action.goFlag.flag);
2435 break;
2436 }
2438 {
2442 break;
2443 }
2445 {
2448 target->ToGameObject()->RemoveFlag(
GAMEOBJECT_FLAGS, e.action.goFlag.flag);
2449 break;
2450 }
2452 {
2453 std::list<TempSummon*> summonList;
2455
2456 for (std::list<TempSummon*>::const_iterator itr = summonList.begin(); itr != summonList.end(); ++itr)
2457 {
2459 (*itr)->AI()->AttackStart(unit);
2461 (*itr)->AI()->AttackStart(
me);
2462 }
2463
2464 break;
2465 }
2467 {
2470 target->ToUnit()->SetPower(
Powers(e.action.power.powerType), e.action.power.newPower);
2471 break;
2472 }
2474 {
2477 target->ToUnit()->SetPower(
Powers(e.action.power.powerType), target->ToUnit()->GetPower(
Powers(e.action.power.powerType)) + e.action.power.newPower);
2478 break;
2479 }
2481 {
2484 target->ToUnit()->SetPower(
Powers(e.action.power.powerType), target->ToUnit()->GetPower(
Powers(e.action.power.powerType)) - e.action.power.newPower);
2485 break;
2486 }
2488 {
2491 {
2492 LOG_ERROR(
"scripts.ai.sai",
"SmartScript::ProcessAction: At case SMART_ACTION_GAME_EVENT_STOP, inactive event (id: {})", eventId);
2493 break;
2494 }
2496 break;
2497 }
2499 {
2502 {
2503 LOG_ERROR(
"scripts.ai.sai",
"SmartScript::ProcessAction: At case SMART_ACTION_GAME_EVENT_START, already activated event (id: {})", eventId);
2504 break;
2505 }
2507 break;
2508 }
2510 {
2511 float distanceToClosest = std::numeric_limits<float>::max();
2513
2515 {
2517 {
2519 {
2521 {
2523 if (!path || path->empty())
2524 continue;
2525
2526 auto itrWp = path->find(1);
2527 if (itrWp != path->end())
2528 {
2530 float distToThisPath = creature->GetExactDistSq(wpData.
x, wpData.
y, wpData.
z);
2531 if (distToThisPath < distanceToClosest)
2532 {
2533 distanceToClosest = distToThisPath;
2534 closestWpId = wp;
2535 }
2536 }
2537 }
2538
2539 if (closestWpId)
2540 {
2543
2544 CAST_AI(
SmartAI, creature->AI())->StartPath(forcedMovement, closestWpId, repeat);
2545 }
2546 }
2547 }
2548 }
2549 break;
2550 }
2552 {
2555 target->ToUnit()->ExitVehicle();
2556
2557 break;
2558 }
2560 {
2563 {
2566 }
2567
2568 break;
2569 }
2571 {
2574 target->ToCreature()->m_CombatDistance = e.action.combatDistance.dist;
2575
2576 break;
2577 }
2579 {
2582 target->ToCreature()->m_SightDistance = e.action.sightDistance.dist;
2583 break;
2584 }
2586 {
2589 target->ToCreature()->GetMotionMaster()->MoveFleeing(
me, e.action.flee.withEmote);
2590 break;
2591 }
2593 {
2596 me->AddThreat(target->ToUnit(), float(e.action.threatPCT.threatINC) - float(e.action.threatPCT.threatDEC));
2597 break;
2598 }
2600 {
2603 target->ToCreature()->LoadEquipment(e.action.loadEquipment.id, e.action.loadEquipment.force != 0);
2604 break;
2605 }
2607 {
2610 break;
2611 }
2613 {
2616 target->ToUnit()->Dismount();
2617 break;
2618 }
2620 {
2623 target->ToUnit()->SetHover(e.action.setHover.state);
2624 break;
2625 }
2627 {
2630 target->ToUnit()->ApplySpellImmune(e.action.immunity.id, e.action.immunity.type, e.action.immunity.value, true);
2631
2632 break;
2633 }
2635 {
2638 target->ToUnit()->ApplySpellImmune(e.action.immunity.id, e.action.immunity.type, e.action.immunity.value, false);
2639 break;
2640 }
2642 {
2645 target->ToUnit()->GetMotionMaster()->MoveFall();
2646
2647 break;
2648 }
2650 {
2652 break;
2653 }
2655 {
2658 target->ToUnit()->RemoveAllGameObjects();
2659 break;
2660 }
2662 {
2664 {
2666 {
2671 }
2672 }
2673 break;
2674 }
2676 {
2680
2681 break;
2682 }
2684 {
2687 if (
Player* player = target->ToUnit()->GetCharmerOrOwnerPlayerOrPlayerItself())
2688 {
2690 break;
2691 }
2692
2693 break;
2694 }
2696 {
2699 break;
2700 }
2702 {
2704
2705 if (!targets.empty())
2709
2710 break;
2711 }
2713 {
2715 break;
2716
2718 {
2720 {
2722 {
2724 }
2725
2727 {
2737
2740 {
2741
2743
2745 else
2746
2748 }
2749 }
2750 }
2751 }
2752 break;
2753 }
2755 {
2757 break;
2758
2759 if (targets.empty())
2760 break;
2761
2763
2768
2769
2770
2771
2772
2773 float factor = std::exp(k * delta_phi);
2774
2775
2776 float summonRadius = a;
2777
2779 {
2780
2781
2783
2784 do
2785 {
2787 summonPosition.RelocatePolarOffset(phi, summonRadius);
2788
2790
2791 phi += delta_phi;
2792 summonRadius *= factor;
2793 } while (summonRadius <= r_max);
2794 }
2795
2796 break;
2797 }
2799 {
2801 break;
2802
2804
2807
2809 {
2810 float deltaAngle = 0.0f;
2811 if (radius > 0)
2812 deltaAngle = distInARow / radius;
2813
2815 if (deltaAngle > 0)
2816 count += coneAngle / deltaAngle;
2817
2818 float currentAngle = -static_cast<float>(count) * deltaAngle / 2.0f;
2819
2822 else if (!targets.empty())
2823 {
2825 }
2826
2827 for (
uint32 index = 0; index < count; ++index)
2828 {
2830 spawnPosition.RelocatePolarOffset(currentAngle, radius);
2831 currentAngle += deltaAngle;
2832
2834 }
2835 }
2836
2837 break;
2838 }
2840 {
2842 {
2844 {
2845 playerTarget->RemoveArenaSpellCooldowns();
2847 playerTarget->RemoveAurasDueToSpell(57723);
2848 playerTarget->RemoveAurasDueToSpell(2825);
2849 playerTarget->RemoveAurasDueToSpell(32182);
2850 }
2851 }
2852
2853 break;
2854 }
2856 {
2859 {
2860 if (targets.empty())
2861 break;
2862
2864 {
2866 {
2868 {
2869 unitTarget->AI()->DoAction(actionId);
2870 }
2871 }
2873 {
2874 gobjTarget->AI()->DoAction(actionId);
2875 }
2876 }
2877
2878 }
2879 else
2880 {
2883 {
2884 instanceScript = baseObj->GetInstanceScript();
2885 }
2886
2888 {
2890 }
2891
2892 if (instanceScript)
2893 {
2894 instanceScript->
DoAction(actionId);
2895 }
2896 }
2897 break;
2898 }
2900 {
2902 break;
2903
2905 break;
2906 }
2908 {
2910 {
2913 }
2914 break;
2915 }
2917 {
2919 if (
Unit* targetUnit = target->ToUnit())
2920 targetUnit->SetHealth(targetUnit->CountPctFromMaxHealth(e.action.setHealthPct.percent));
2921 break;
2922 }
2924 {
2927 float speed = float(speedInteger) + float(speedFraction) / std::pow(10, std::floor(std::log10(float(speedFraction ? speedFraction : 1)) + 1));
2928
2931 target->ToCreature()->SetSpeed(
UnitMoveType(e.action.movementSpeed.movementType), speed);
2932
2933 break;
2934 }
2936 {
2938 {
2940 continue;
2941
2943 }
2944 break;
2945 }
2947 {
2949 {
2951
2953 {
2955 {
2956 guidToSend = invoker->
GetGUID();
2957 }
2958 }
2959
2961 {
2963 }
2965 {
2967 }
2968 }
2969 break;
2970 }
2972 {
2973
2975 {
2976 case 0:
2977 {
2979 {
2981 {
2984 c->DespawnOrUnsummon();
2985 }
2986 }
2987 break;
2988 }
2989 case 1:
2990 {
2992 {
2994 {
2996 c->Respawn(true);
2998 }
2999 }
3000 break;
3001 }
3002 case 2:
3003 {
3005 {
3007 {
3009
3010
3013 else
3014 c->Respawn(true);
3015
3016
3019
3020
3023 }
3024 }
3025 break;
3026 }
3027 default:
3028 break;
3029 }
3030 break;
3031 }
3033 {
3035
3037 {
3039 {
3041 }
3042 }
3043 break;
3044 }
3046 {
3048 break;
3049
3051
3054
3056 {
3058 {
3062 }
3063 break;
3064 }
3065
3067 {
3068 float currentAngle = startAngle + (itr * stepAngle);
3070 }
3071
3072 break;
3073 }
3075 {
3077 {
3079 {
3082 }
3083 }
3084 break;
3085 }
3087 {
3089 {
3092 target->ToCreature()->GetMotionMaster()->MoveIdle();
3093
3094 break;
3095 }
3096
3097 uint8 membCount = targets.size();
3101 {
3103 {
3104 float angle = (membCount > 4 ? (M_PI * 2)/membCount : (M_PI / 2));
3106 {
3108 {
3110 itr++;
3111 }
3112 }
3113 break;
3114 }
3116 {
3118 {
3120 {
3122 itr++;
3123 }
3124 }
3125 break;
3126 }
3128 {
3130 {
3132 {
3134 itr++;
3135 }
3136 }
3137 break;
3138 }
3140 {
3142 {
3144 {
3146 itr++;
3147 }
3148 }
3149 break;
3150 }
3152 {
3154 {
3156 {
3158 itr++;
3159 }
3160 }
3161 break;
3162 }
3164 {
3166 {
3168 {
3170 itr++;
3171 }
3172 }
3173 break;
3174 }
3175 default:
3176 break;
3177 }
3178
3179 break;
3180 }
3182 {
3184 {
3185 case 0:
3186 {
3188 target->ToCreature()->SetFacingTo((target->ToCreature()->HasUnitMovementFlag(
MOVEMENTFLAG_ONTRANSPORT) && target->ToCreature()->GetTransGUID() ? target->ToCreature()->GetTransportHomePosition() : target->ToCreature()->GetHomePosition()).GetOrientation());
3189
3190 break;
3191 }
3192 case 1:
3193 {
3195 target->ToCreature()->SetFacingTo(e.target.o);
3196
3197 break;
3198 }
3199 case 2:
3200 {
3202 target->ToCreature()->SetFacingToObject(
me);
3203
3204 break;
3205 }
3206 case 3:
3207 {
3209 GetTargets(facingTargets,
CreateSmartEvent(
SMART_EVENT_UPDATE_IC, 0, 0, 0, 0, 0, 0, 0,
SMART_ACTION_NONE, 0, 0, 0, 0, 0, 0, (
SMARTAI_TARGETS)e.
action.
orientationTarget.
targetType, e.
action.
orientationTarget.
targetParam1, e.
action.
orientationTarget.
targetParam2, e.
action.
orientationTarget.
targetParam3, e.
action.
orientationTarget.
targetParam4, 0), unit);
3210
3213 target->ToCreature()->SetFacingToObject(facingTarget);
3214
3215 break;
3216 }
3217 default:
3218 break;
3219 }
3220 break;
3221 }
3223 {
3225 {
3227 {
3229 {
3232 }
3233 }
3234 }
3235
3236 break;
3237 }
3239 {
3241 {
3243 {
3245 {
3249 }
3250 }
3251 }
3252
3253 break;
3254 }
3256 {
3259 target->ToUnit()->StopMoving();
3260
3261 break;
3262 }
3264 {
3267 target->ToUnit()->PauseMovement(e.action.move.timer);
3268
3269 break;
3270 }
3272 {
3275 target->ToUnit()->ResumeMovement(e.action.move.timer);
3276
3277 break;
3278 }
3280 {
3282 break;
3283 }
3285 {
3288 {
3291 }
3292 break;
3293 }
3294 default:
3296 break;
3297 }
3298
3300 {
3302 if (linked.has_value())
3303 {
3304 auto& linkedEvent = linked.value().get();
3306 executionStack.emplace_back(SmartScriptFrame{ linkedEvent, unit, var0, var1, bvar, spell, gob });
3307 else
3308 LOG_ERROR(
"sql.sql",
"SmartScript::ProcessAction: Entry {} SourceType {}, Event {}, Link Event {} found but has wrong type (should be 61, is {}).", e.
entryOrGuid, e.
GetScriptType(), e.
event_id, e.
link, linkedEvent.GetEventType());
3309 }
3310 else
3312 }
3313}
npc
Definition BattlegroundSA.h:47
#define DEFAULT_LOCALE
Definition Common.h:131
#define MAX_EQUIPMENT_ITEMS
Definition CreatureData.h:35
@ TEXT_RANGE_NORMAL
Definition CreatureTextMgr.h:30
std::int8_t int8
Definition Define.h:105
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
Definition Duration.h:27
std::chrono::seconds Seconds
Seconds shorthand typedef.
Definition Duration.h:30
#define sGameEventMgr
Definition GameEventMgr.h:201
GOState
Definition GameObjectData.h:690
LootState
Definition GameObject.h:109
@ GO_READY
Definition GameObject.h:111
EncounterState
Definition InstanceScript.h:57
@ BROADCAST_TEXT_CALL_FOR_HELP
Definition Language.h:24
@ BROADCAST_TEXT_FLEE_FOR_ASSIST
Definition Language.h:25
@ MOTION_SLOT_CONTROLLED
Definition MotionMaster.h:65
@ MOTION_SLOT_ACTIVE
Definition MotionMaster.h:64
ForcedMovement
Definition MotionMaster.h:84
@ FORCED_MOVEMENT_NONE
Definition MotionMaster.h:85
#define NOMINAL_MELEE_RANGE
Definition ObjectDefines.h:47
#define sObjectMgr
Definition ObjectMgr.h:1650
TempSummonType
Definition Object.h:47
@ TEMPSUMMON_TIMED_DESPAWN
Definition Object.h:50
@ TEMPSUMMON_CORPSE_DESPAWN
Definition Object.h:52
float frand(float min, float max)
Definition Random.cpp:57
uint32 urand(uint32 min, uint32 max)
Definition Random.cpp:44
void SendGossipMenuFor(Player *player, uint32 npcTextID, ObjectGuid const &guid)
Definition ScriptedGossip.cpp:45
void ClearGossipMenuFor(Player *player)
Definition ScriptedGossip.cpp:22
@ GAMEOBJECT_TYPE_DOOR
Definition SharedDefines.h:1571
@ POWER_MANA
Definition SharedDefines.h:280
@ CHAT_MSG_MONSTER_EMOTE
Definition SharedDefines.h:3418
@ CHAT_MSG_ADDON
Definition SharedDefines.h:3401
@ LANG_UNIVERSAL
Definition SharedDefines.h:746
@ LANG_ADDON
Definition SharedDefines.h:764
@ SPELL_ATTR2_IGNORE_LINE_OF_SIGHT
Definition SharedDefines.h:469
@ TEAM_NEUTRAL
Definition SharedDefines.h:773
SpellCastResult
Definition SharedDefines.h:959
@ SPELL_FAILED_OUT_OF_RANGE
Definition SharedDefines.h:1057
@ SPELL_CAST_OK
Definition SharedDefines.h:1149
@ SPELL_FAILED_SPELL_IN_PROGRESS
Definition SharedDefines.h:1065
@ SMART_EVENT_FLAG_TEMP_IGNORE_CHANCE_ROLL
Definition SmartScriptMgr.h:1930
SMARTAI_TARGETS
Definition SmartScriptMgr.h:1520
@ SMART_TARGET_RANDOM_POINT
Definition SmartScriptMgr.h:1559
#define sSmartWaypointMgr
Definition SmartScriptMgr.h:2232
SMART_ACTION
Definition SmartScriptMgr.h:539
@ SMART_ACTION_REMOVE_TIMED_EVENT
Definition SmartScriptMgr.h:614
@ SMART_ACTION_NONE
Definition SmartScriptMgr.h:540
@ SMART_ACTION_SET_GO_FLAG
Definition SmartScriptMgr.h:644
@ SMART_ACTION_UPDATE_TEMPLATE
Definition SmartScriptMgr.h:576
@ SMART_ACTION_SET_HEALTH_REGEN
Definition SmartScriptMgr.h:642
@ SMART_ACTION_ACTIVATE_GOBJECT
Definition SmartScriptMgr.h:549
@ SMART_ACTION_GAME_EVENT_START
Definition SmartScriptMgr.h:652
@ SMART_ACTION_CALL_RANDOM_RANGE_TIMED_ACTIONLIST
Definition SmartScriptMgr.h:628
@ SMART_ACTION_REMOVE_UNIT_FIELD_BYTES_1
Definition SmartScriptMgr.h:631
@ SMART_ACTION_SET_INST_DATA64
Definition SmartScriptMgr.h:575
@ SMART_ACTION_SET_FACTION
Definition SmartScriptMgr.h:542
@ SMART_ACTION_THREAT_SINGLE_PCT
Definition SmartScriptMgr.h:553
@ SMART_ACTION_OFFER_QUEST
Definition SmartScriptMgr.h:547
@ SMART_ACTION_REMOVE_ALL_GAMEOBJECTS
Definition SmartScriptMgr.h:666
@ SMART_ACTION_RISE_UP
Definition SmartScriptMgr.h:654
@ SMART_ACTION_SET_INGAME_PHASE_MASK
Definition SmartScriptMgr.h:584
@ SMART_ACTION_SET_UNIT_FIELD_BYTES_1
Definition SmartScriptMgr.h:630
@ SMART_ACTION_CLOSE_GOSSIP
Definition SmartScriptMgr.h:612
@ SMART_ACTION_DISABLE_EVADE
Definition SmartScriptMgr.h:657
@ SMART_ACTION_CONE_SUMMON
Definition SmartScriptMgr.h:704
@ SMART_ACTION_ADD_GO_FLAG
Definition SmartScriptMgr.h:645
@ SMART_ACTION_ESCORT_START
Definition SmartScriptMgr.h:593
@ SMART_ACTION_ADD_DYNAMIC_FLAG
Definition SmartScriptMgr.h:635
@ SMART_ACTION_KILL_UNIT
Definition SmartScriptMgr.h:591
@ SMART_ACTION_LOAD_EQUIPMENT
Definition SmartScriptMgr.h:664
@ SMART_ACTION_CALL_AREAEXPLOREDOREVENTHAPPENS
Definition SmartScriptMgr.h:555
@ SMART_ACTION_ATTACK_START
Definition SmartScriptMgr.h:589
@ SMART_ACTION_MOVEMENT_RESUME
Definition SmartScriptMgr.h:721
@ SMART_ACTION_SET_UNIT_FLAG
Definition SmartScriptMgr.h:558
@ SMART_ACTION_NO_ENVIRONMENT_UPDATE
Definition SmartScriptMgr.h:697
@ SMART_ACTION_CALL_GROUPEVENTHAPPENS
Definition SmartScriptMgr.h:566
@ SMART_ACTION_MOUNT_TO_ENTRY_OR_MODEL
Definition SmartScriptMgr.h:583
@ SMART_ACTION_INVOKER_CAST
Definition SmartScriptMgr.h:674
@ SMART_ACTION_MOVEMENT_STOP
Definition SmartScriptMgr.h:719
@ SMART_ACTION_SET_SCALE
Definition SmartScriptMgr.h:712
@ SMART_ACTION_JUMP_TO_POS
Definition SmartScriptMgr.h:637
@ SMART_ACTION_CALL_RANDOM_TIMED_ACTIONLIST
Definition SmartScriptMgr.h:627
@ SMART_ACTION_SEND_GOSSIP_MENU
Definition SmartScriptMgr.h:638
@ SMART_ACTION_SET_COUNTER
Definition SmartScriptMgr.h:603
@ SMART_ACTION_FLEE_FOR_ASSIST
Definition SmartScriptMgr.h:565
@ SMART_ACTION_EQUIP
Definition SmartScriptMgr.h:611
@ SMART_ACTION_SET_ROOT
Definition SmartScriptMgr.h:643
@ SMART_ACTION_ATTACK_STOP
Definition SmartScriptMgr.h:709
@ SMART_ACTION_SUMMON_GO
Definition SmartScriptMgr.h:590
@ SMART_ACTION_SET_HOVER
Definition SmartScriptMgr.h:691
@ SMART_ACTION_SIMPLE_TALK
Definition SmartScriptMgr.h:624
@ SMART_ACTION_STOP_MOTION
Definition SmartScriptMgr.h:696
@ SMART_ACTION_VORTEX_SUMMON
Definition SmartScriptMgr.h:706
@ SMART_ACTION_WORLD_SCRIPT
Definition SmartScriptMgr.h:722
@ SMART_ACTION_MUSIC
Definition SmartScriptMgr.h:700
@ SMART_ACTION_SET_ORIENTATION_TARGET
Definition SmartScriptMgr.h:716
@ SMART_ACTION_SET_UNIT_MOVEMENT_FLAGS
Definition SmartScriptMgr.h:688
@ SMART_ACTION_ADD_AURA
Definition SmartScriptMgr.h:615
@ SMART_ACTION_THREAT_ALL_PCT
Definition SmartScriptMgr.h:554
@ SMART_ACTION_WAYPOINT_START
Definition SmartScriptMgr.h:717
@ SMART_ACTION_ESCORT_STOP
Definition SmartScriptMgr.h:595
@ SMART_ACTION_RESPAWN_TARGET
Definition SmartScriptMgr.h:610
@ SMART_ACTION_FOLLOW_GROUP
Definition SmartScriptMgr.h:715
@ SMART_ACTION_SOUND
Definition SmartScriptMgr.h:544
@ SMART_ACTION_ESCORT_PAUSE
Definition SmartScriptMgr.h:594
@ SMART_ACTION_MOVE_TO_POS_TARGET
Definition SmartScriptMgr.h:685
@ SMART_ACTION_SET_MOVEMENT_SPEED
Definition SmartScriptMgr.h:676
@ SMART_ACTION_PLAY_CINEMATIC
Definition SmartScriptMgr.h:675
@ SMART_ACTION_ADD_NPC_FLAG
Definition SmartScriptMgr.h:622
@ SMART_ACTION_EVADE
Definition SmartScriptMgr.h:564
@ SMART_ACTION_FAIL_QUEST
Definition SmartScriptMgr.h:546
@ SMART_ACTION_INTERRUPT_SPELL
Definition SmartScriptMgr.h:632
@ SMART_ACTION_ADD_POWER
Definition SmartScriptMgr.h:649
@ SMART_ACTION_REMOVE_DYNAMIC_FLAG
Definition SmartScriptMgr.h:636
@ SMART_ACTION_RANDOM_SOUND
Definition SmartScriptMgr.h:655
@ SMART_ACTION_RANDOM_MUSIC
Definition SmartScriptMgr.h:701
@ SMART_ACTION_SET_COMBAT_DISTANCE
Definition SmartScriptMgr.h:689
@ SMART_ACTION_SET_POWER
Definition SmartScriptMgr.h:648
@ SMART_ACTION_SEND_TARGET_TO_TARGET
Definition SmartScriptMgr.h:640
@ SMART_ACTION_REMOVE_POWER
Definition SmartScriptMgr.h:650
@ SMART_ACTION_ADD_IMMUNITY
Definition SmartScriptMgr.h:692
@ SMART_ACTION_SET_DYNAMIC_FLAG
Definition SmartScriptMgr.h:634
@ SMART_ACTION_FALL
Definition SmartScriptMgr.h:694
@ SMART_ACTION_GO_SET_GO_STATE
Definition SmartScriptMgr.h:658
@ SMART_ACTION_CUSTOM_CAST
Definition SmartScriptMgr.h:703
@ SMART_ACTION_REMOVE_ITEM
Definition SmartScriptMgr.h:597
@ SMART_ACTION_SEND_GO_CUSTOM_ANIM
Definition SmartScriptMgr.h:633
@ SMART_ACTION_MORPH_TO_ENTRY_OR_MODEL
Definition SmartScriptMgr.h:543
@ SMART_ACTION_REMOVE_UNIT_FLAG
Definition SmartScriptMgr.h:559
@ SMART_ACTION_RANDOM_PHASE
Definition SmartScriptMgr.h:570
@ SMART_ACTION_SET_EMOTE_STATE
Definition SmartScriptMgr.h:557
@ SMART_ACTION_CROSS_CAST
Definition SmartScriptMgr.h:626
@ SMART_ACTION_GAME_EVENT_STOP
Definition SmartScriptMgr.h:651
@ SMART_ACTION_SCRIPTED_SPAWN
Definition SmartScriptMgr.h:711
@ SMART_ACTION_ESCORT_RESUME
Definition SmartScriptMgr.h:605
@ SMART_ACTION_CALL_SCRIPT_RESET
Definition SmartScriptMgr.h:618
@ SMART_ACTION_CU_ENCOUNTER_START
Definition SmartScriptMgr.h:707
@ SMART_ACTION_COMBAT_STOP
Definition SmartScriptMgr.h:567
@ SMART_ACTION_EXIT_VEHICLE
Definition SmartScriptMgr.h:687
@ SMART_ACTION_SET_HEALTH_PCT
Definition SmartScriptMgr.h:678
@ SMART_ACTION_AUTO_ATTACK
Definition SmartScriptMgr.h:560
@ SMART_ACTION_SET_INVINCIBILITY_HP_LEVEL
Definition SmartScriptMgr.h:582
@ SMART_ACTION_SET_VISIBILITY
Definition SmartScriptMgr.h:587
@ SMART_ACTION_RANDOM_PHASE_RANGE
Definition SmartScriptMgr.h:571
@ SMART_ACTION_MOVEMENT_PAUSE
Definition SmartScriptMgr.h:720
@ SMART_ACTION_GO_SET_LOOT_STATE
Definition SmartScriptMgr.h:639
@ SMART_ACTION_PLAYER_TALK
Definition SmartScriptMgr.h:705
@ SMART_ACTION_SELF_CAST
Definition SmartScriptMgr.h:625
@ SMART_ACTION_SET_SWIM
Definition SmartScriptMgr.h:601
@ SMART_ACTION_SET_SIGHT_DIST
Definition SmartScriptMgr.h:661
@ SMART_ACTION_SET_INST_DATA
Definition SmartScriptMgr.h:574
@ SMART_ACTION_REMOVE_GO_FLAG
Definition SmartScriptMgr.h:646
@ SMART_ACTION_LOAD_GRID
Definition SmartScriptMgr.h:699
@ SMART_ACTION_CALL_FOR_HELP
Definition SmartScriptMgr.h:579
@ SMART_ACTION_SUMMON_RADIAL
Definition SmartScriptMgr.h:713
@ SMART_ACTION_ADD_THREAT
Definition SmartScriptMgr.h:663
@ SMART_ACTION_DISMOUNT
Definition SmartScriptMgr.h:690
@ SMART_ACTION_TELEPORT
Definition SmartScriptMgr.h:602
@ SMART_ACTION_PLAYMOVIE
Definition SmartScriptMgr.h:608
@ SMART_ACTION_TRIGGER_RANDOM_TIMED_EVENT
Definition SmartScriptMgr.h:665
@ SMART_ACTION_FOLLOW
Definition SmartScriptMgr.h:569
@ SMART_ACTION_PLAY_EMOTE
Definition SmartScriptMgr.h:545
@ SMART_ACTION_SET_CORPSE_DELAY
Definition SmartScriptMgr.h:656
@ SMART_ACTION_WAYPOINT_DATA_RANDOM
Definition SmartScriptMgr.h:718
@ SMART_ACTION_SET_GUID
Definition SmartScriptMgr.h:710
@ SMART_ACTION_SET_SHEATH
Definition SmartScriptMgr.h:580
@ SMART_ACTION_SET_ORIENTATION
Definition SmartScriptMgr.h:606
@ SMART_ACTION_SET_NPC_FLAG
Definition SmartScriptMgr.h:621
@ SMART_ACTION_MOVE_TO_POS
Definition SmartScriptMgr.h:609
@ SMART_ACTION_RANDOM_EMOTE
Definition SmartScriptMgr.h:550
@ SMART_ACTION_INC_EVENT_PHASE
Definition SmartScriptMgr.h:563
@ SMART_ACTION_CREATE_TIMED_EVENT
Definition SmartScriptMgr.h:607
@ SMART_ACTION_SET_EVENT_FLAG_RESET
Definition SmartScriptMgr.h:695
@ SMART_ACTION_DIE
Definition SmartScriptMgr.h:577
@ SMART_ACTION_RESET_SCRIPT_BASE_OBJECT
Definition SmartScriptMgr.h:617
@ SMART_ACTION_REMOVE_NPC_FLAG
Definition SmartScriptMgr.h:623
@ SMART_ACTION_SET_FLY
Definition SmartScriptMgr.h:600
@ SMART_ACTION_INSTALL_AI_TEMPLATE
Definition SmartScriptMgr.h:598
@ SMART_ACTION_SUMMON_CREATURE
Definition SmartScriptMgr.h:552
@ SMART_ACTION_CALL_TIMED_ACTIONLIST
Definition SmartScriptMgr.h:620
@ SMART_ACTION_SET_IN_COMBAT_WITH_ZONE
Definition SmartScriptMgr.h:578
@ SMART_ACTION_DO_ACTION
Definition SmartScriptMgr.h:708
@ SMART_ACTION_SET_HOME_POS
Definition SmartScriptMgr.h:641
@ SMART_ACTION_ADD_ITEM
Definition SmartScriptMgr.h:596
@ SMART_ACTION_SET_ACTIVE
Definition SmartScriptMgr.h:588
@ SMART_ACTION_SET_RANGED_MOVEMENT
Definition SmartScriptMgr.h:619
@ SMART_ACTION_ACTIVATE_TAXI
Definition SmartScriptMgr.h:592
@ SMART_ACTION_START_CLOSEST_WAYPOINT
Definition SmartScriptMgr.h:653
@ SMART_ACTION_SUMMON_CREATURE_GROUP
Definition SmartScriptMgr.h:647
@ SMART_ACTION_REMOVE_IMMUNITY
Definition SmartScriptMgr.h:693
@ SMART_ACTION_PLAY_SPELL_VISUAL
Definition SmartScriptMgr.h:714
@ SMART_ACTION_SET_REACT_STATE
Definition SmartScriptMgr.h:548
@ SMART_ACTION_DISABLE_REWARD
Definition SmartScriptMgr.h:723
@ SMART_ACTION_RANDOM_MOVE
Definition SmartScriptMgr.h:629
@ SMART_ACTION_OVERRIDE_SCRIPT_BASE_OBJECT
Definition SmartScriptMgr.h:616
@ SMART_ACTION_TRIGGER_TIMED_EVENT
Definition SmartScriptMgr.h:613
@ SMART_ACTION_REMOVEAURASFROMSPELL
Definition SmartScriptMgr.h:568
@ SMART_ACTION_FLEE
Definition SmartScriptMgr.h:662
@ SMART_ACTION_ZONE_UNDER_ATTACK
Definition SmartScriptMgr.h:698
@ FOLLOW_TYPE_CIRCLE
Definition SmartScriptMgr.h:1949
@ FOLLOW_TYPE_SEMI_CIRCLE_BEHIND
Definition SmartScriptMgr.h:1950
@ FOLLOW_TYPE_SEMI_CIRCLE_FRONT
Definition SmartScriptMgr.h:1951
@ FOLLOW_TYPE_COLUMN
Definition SmartScriptMgr.h:1953
@ FOLLOW_TYPE_ANGULAR
Definition SmartScriptMgr.h:1954
@ FOLLOW_TYPE_LINE
Definition SmartScriptMgr.h:1952
SMART_EVENT
Definition SmartScriptMgr.h:98
@ SMART_EVENT_TIMED_EVENT_TRIGGERED
Definition SmartScriptMgr.h:158
@ SMART_EVENT_ESCORT_REACHED
Definition SmartScriptMgr.h:139
@ SMART_EVENT_LINK
Definition SmartScriptMgr.h:160
uint32 SAIBool
Definition SmartScriptMgr.h:31
SmartActionSummonCreatureFlags
Definition SmartScriptMgr.h:729
@ SMART_ESCORT_TARGETS
Definition SmartScriptMgr.h:40
@ SMARTCAST_TRIGGERED
Definition SmartScriptMgr.h:1936
@ SMARTCAST_ENABLE_COMBAT_MOVE_ON_LOS
Definition SmartScriptMgr.h:1944
@ SMARTCAST_COMBAT_MOVE
Definition SmartScriptMgr.h:1941
@ SMARTCAST_INTERRUPT_PREVIOUS
Definition SmartScriptMgr.h:1935
@ SMARTCAST_AURA_NOT_PRESENT
Definition SmartScriptMgr.h:1940
@ SMARTCAST_THREATLIST_NOT_SINGLE
Definition SmartScriptMgr.h:1942
@ SMARTCAST_TARGET_POWER_MANA
Definition SmartScriptMgr.h:1943
@ AURA_REMOVE_BY_EXPIRE
Definition SpellAuraDefines.h:395
@ SPELLVALUE_BASE_POINT1
Definition SpellDefines.h:114
@ SPELLVALUE_BASE_POINT2
Definition SpellDefines.h:115
@ SPELLVALUE_BASE_POINT0
Definition SpellDefines.h:113
TriggerCastFlags
Definition SpellDefines.h:132
@ TRIGGERED_FULL_MASK
Will return SPELL_FAILED_DONT_REPORT in CheckCast functions.
Definition SpellDefines.h:150
@ TRIGGERED_NONE
Definition SpellDefines.h:133
#define sSpellMgr
Definition SpellMgr.h:825
#define CAST_AI(a, b)
Definition UnitAI.h:26
#define ENSURE_AI(a, b)
Definition UnitAI.h:27
@ MOVEMENTFLAG_ONTRANSPORT
Definition UnitDefines.h:378
NPCFlags
Non Player Character flags.
Definition UnitDefines.h:317
SheathState
Definition UnitDefines.h:125
@ UNIT_STATE_LOST_CONTROL
Definition UnitDefines.h:216
@ UNIT_STATE_ROOT
Definition UnitDefines.h:180
@ UNIT_STATE_NO_ENVIRONMENT_UPD
Definition UnitDefines.h:198
@ UNIT_STATE_NO_COMBAT_MOVEMENT
Definition UnitDefines.h:201
UnitMoveType
Definition UnitDefines.h:352
@ MOVE_RUN
Definition UnitDefines.h:354
@ UNIT_FLAG_SILENCED
Definition UnitDefines.h:267
ReactStates
Definition Unit.h:549
@ UNIT_FIELD_FLAGS_2
Definition UpdateFields.h:118
@ UNIT_VIRTUAL_ITEM_SLOT_ID
Definition UpdateFields.h:116
@ UNIT_FIELD_FLAGS
Definition UpdateFields.h:117
@ UNIT_NPC_EMOTESTATE
Definition UpdateFields.h:140
@ UNIT_FIELD_BYTES_1
Definition UpdateFields.h:131
@ UNIT_DYNAMIC_FLAGS
Definition UpdateFields.h:136
@ GAMEOBJECT_FLAGS
Definition UpdateFields.h:399
std::map< uint32, WaypointData > WaypointPath
Definition WaypointMgr.h:48
#define sWorldState
Definition WorldState.h:377
WorldStateEvent
Definition WorldState.h:42
Say
Definition boss_broodlord_lashlayer.cpp:29
Seats
Definition boss_flame_leviathan.cpp:168
phase
Definition boss_skadi.cpp:99
Definition ChatTextBuilder.h:31
Definition SpellAuras.h:87
Definition CreatureAI.h:71
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr, Milliseconds delay=0ms)
Causes the creature to talk/say the text assigned to their entry in the creature_text database table.
Definition CreatureAI.cpp:53
void SetReputationRewardDisabled(bool disable)
Definition Creature.h:362
void SetHomePosition(float x, float y, float z, float o)
Definition Creature.h:339
void Respawn(bool force=false)
Definition Creature.cpp:2043
void GetRespawnPosition(float &x, float &y, float &z, float *ori=nullptr, float *dist=nullptr) const
Definition Creature.cpp:2958
void GetHomePosition(float &x, float &y, float &z, float &ori) const
Definition Creature.h:341
void SendZoneUnderAttackMessage(Player *attacker)
Send a message to LocalDefense channel for players opposition team in the zone.
Definition Creature.cpp:2819
void GetTransportHomePosition(float &x, float &y, float &z, float &ori) const
Definition Creature.h:346
void DoFleeToGetAssistance()
Definition Creature.cpp:1068
bool IsRooted() const
Definition Creature.h:88
void SetCorpseDelay(uint32 delay)
Definition Creature.h:74
void SetLootRewardDisabled(bool disable)
Definition Creature.h:364
void SetReactState(ReactStates state)
A creature can have 3 ReactStates : Agressive, Passive, Neutral.
Definition Creature.h:99
void LoadPath(uint32 pathid)
Definition Creature.h:350
Definition SpellDefines.h:165
void AddSpellMod(SpellValueMod mod, int32 value)
Definition SpellDefines.h:167
void AddEventAtOffset(BasicEvent *event, Milliseconds offset, uint8 eventGroup=0)
Definition EventProcessor.h:108
Definition GameObjectAI.h:33
virtual void SetData(uint32, uint32)
Definition GameObjectAI.h:62
void UseDoorOrButton(uint32 time_to_restore=0, bool alternative=false, Unit *user=nullptr)
Definition GameObject.cpp:1410
bool isSpawnedByDefault() const
Definition GameObject.h:195
void SetLootState(LootState s, Unit *unit=nullptr)
Definition GameObject.cpp:2434
void SetRespawnTime(int32 respawn)
Definition GameObject.cpp:1284
GameobjectTypes GetGoType() const
Definition GameObject.h:202
void Respawn()
Definition GameObject.cpp:1299
void DespawnOrUnsummon(Milliseconds delay=0ms, Seconds forcedRespawnTime=0s)
Definition GameObject.cpp:932
void CastSpell(Unit *target, uint32 spell)
Definition GameObject.cpp:2077
virtual bool SetBossState(uint32 id, EncounterState state)
Definition InstanceScript.cpp:385
virtual void DoAction(int32)
Definition InstanceScript.h:274
static std::string GetBossStateName(uint8 state)
Definition InstanceScript.cpp:826
Definition LinkedList.h:139
bool IsEmpty() const
Definition LinkedList.h:97
Definition MapRefMgr.h:26
iterator begin()
Definition MapRefMgr.h:36
iterator end()
Definition MapRefMgr.h:37
void LoadGrid(float x, float y)
Definition Map.cpp:214
PlayerList const & GetPlayers() const
Definition Map.h:326
void MoveWaypoint(uint32 path_id, bool repeatable, PathSource pathSource=PathSource::WAYPOINT_MGR)
Move the unit following a specific path. Doesn't work with UNIT_FLAG_DISABLE_MOVE.
Definition MotionMaster.cpp:901
void MovementExpired(bool reset=true)
Definition MotionMaster.h:195
void MovePoint(uint32 id, const Position &pos, ForcedMovement forcedMovement=FORCED_MOVEMENT_NONE, float speed=0.f, bool generatePath=true, bool forceDestination=true)
Definition MotionMaster.h:228
void MoveJump(Position const &pos, float speedXY, float speedZ, uint32 id=0)
Definition MotionMaster.h:244
void MoveIdle()
Definition MotionMaster.cpp:233
void MoveFollow(Unit *target, float dist, float angle, MovementSlot slot=MOTION_SLOT_ACTIVE, bool inheritWalkState=true, bool inheritSpeed=true)
The unit will follow this target. Doesn't work with UNIT_FLAG_DISABLE_MOVE.
Definition MotionMaster.cpp:446
void MoveRandom(float wanderDistance=0.0f)
Enable a random movement in desired range around the unit. Doesn't work with UNIT_FLAG_DISABLE_MOVE.
Definition MotionMaster.cpp:243
static ObjectGuid const Empty
Definition ObjectGuid.h:120
std::string ToString() const
Definition ObjectGuid.cpp:47
static CreatureModel const * ChooseDisplayId(CreatureTemplate const *cinfo, CreatureData const *data=nullptr)
Definition ObjectMgr.cpp:1661
bool HasFlag(uint16 index, uint32 flag) const
Definition Object.cpp:878
virtual void SetObjectScale(float scale)
Definition Object.h:120
void GroupEventHappens(uint32 questId, WorldObject const *pEventObject)
Definition PlayerQuest.cpp:1818
void SendCinematicStart(uint32 CinematicSequenceId) const
Definition Player.cpp:5692
void PrepareGossipMenu(WorldObject *source, uint32 menuId=0, bool showQuests=false)
Definition PlayerGossip.cpp:32
void RewardPlayerAndGroupAtEvent(uint32 creature_id, WorldObject *pRewardSource)
Definition Player.cpp:12729
Definition QuestDef.h:210
void SetInvincibilityHpLevel(uint32 level)
Definition SmartAI.h:184
void SetData(uint32 id, uint32 value) override
Definition SmartAI.h:163
void IncPhase(uint32 p)
Definition SmartScript.cpp:5382
void StoreTargetList(ObjectVector const &targets, uint32 id)
Definition SmartScript.h:93
void RetryLater(SmartScriptHolder &e, bool ignoreChanceRoll=false)
Definition SmartScript.cpp:5070
void StoreCounter(uint32 id, uint32 value, uint32 reset, uint32 subtract)
Definition SmartScript.h:108
std::optional< std::reference_wrapper< SmartScriptHolder > > FindLinkedEvent(uint32 link)
Definition SmartScript.h:267
std::deque< SmartScriptFrame > executionStack
Definition SmartScript.h:284
void SetPhaseReset(bool allow)
Definition SmartScript.h:205
void GetTargets(ObjectVector &targets, SmartScriptHolder const &e, WorldObject *invoker=nullptr) const
Definition SmartScript.cpp:3442
void OnReset()
Definition SmartScript.cpp:109
void InstallTemplate(SmartScriptHolder const &e)
Definition SmartScript.cpp:3330
ObjectGuid goOrigGUID
Definition SmartScript.h:227
void DecPhase(uint32 p)
Definition SmartScript.cpp:5388
ObjectGuid meOrigGUID
Definition SmartScript.h:225
Definition SpellInfo.h:316
SpellSchoolMask GetSchoolMask() const
Definition SpellInfo.cpp:1998
bool HasAttribute(SpellAttr0 attribute) const
Definition SpellInfo.h:415
int32 CalcPowerCost(Unit const *caster, SpellSchoolMask schoolMask, Spell *spell=nullptr) const
Definition SpellInfo.cpp:2413
float GetThreatListSize() const
Definition ThreatMgr.h:221
void ModifyThreatByPercent(Unit *victim, int32 percent)
Definition ThreatMgr.cpp:508
Definition VehicleDefines.h:130
virtual void SetData(uint32, uint32)
Definition UnitAI.h:219
virtual void AttackStart(Unit *)
Definition UnitAI.cpp:27
uint8 getGender() const
Definition Unit.h:831
void SetFacingToObject(WorldObject *object, Milliseconds timed=0ms)
Definition Unit.cpp:20291
void SetFacingTo(float ori)
Definition Unit.cpp:20281
void CombatStop(bool includingCast=false)
Definition Unit.cpp:10513
float GetSpeed(UnitMoveType mtype) const
Definition Unit.cpp:14513
void InterruptNonMeleeSpells(bool withDelayed, uint32 spellid=0, bool withInstant=true, bool bySelf=false)
Definition Unit.cpp:4189
float GetSpellMinRangeForTarget(Unit const *target, SpellInfo const *spellInfo) const
Definition Unit.cpp:15197
void AddThreat(Unit *victim, float fThreat, SpellSchoolMask schoolMask=SPELL_SCHOOL_MASK_NORMAL, SpellInfo const *threatSpell=nullptr)
Definition Unit.cpp:14683
Player * GetCharmerOrOwnerPlayerOrPlayerItself() const
Definition Unit.cpp:10693
static void Kill(Unit *killer, Unit *victim, bool durabilityLoss=true, WeaponAttackType attackType=BASE_ATTACK, SpellInfo const *spellProto=nullptr, Spell const *spell=nullptr)
Definition Unit.cpp:17743
MotionMaster * GetMotionMaster()
Definition Unit.h:1713
void SetUnitMovementFlags(uint32 f)
Definition Unit.h:761
SpellCastResult CastCustomSpell(Unit *victim, uint32 spellId, int32 const *bp0, int32 const *bp1, int32 const *bp2, bool triggered, Item *castItem=nullptr, AuraEffect const *triggeredByAura=nullptr, ObjectGuid originalCaster=ObjectGuid::Empty)
Definition Unit.cpp:1251
void SetInCombatWith(Unit *enemy, uint32 duration=0)
Definition Unit.cpp:13663
bool IsAlive() const
Definition Unit.h:1748
void StopMoving()
Definition Unit.cpp:16661
void SendPlaySpellVisual(uint32 id)
Definition Unit.cpp:18943
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint8 reqEffMask=0) const
Definition Unit.cpp:5790
virtual void SetSheath(SheathState sheathed)
Definition Unit.h:1732
float GetSpellMaxRangeForTarget(Unit const *target, SpellInfo const *spellInfo) const
Definition Unit.cpp:15177
bool HasUnitMovementFlag(uint32 f) const
Definition Unit.h:759
TransportBase * GetDirectTransport() const
Definition Unit.cpp:18799
void SendMovementFlagUpdate(bool self=false)
Definition Unit.cpp:16715
SpellCastResult CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=nullptr, AuraEffect const *triggeredByAura=nullptr, ObjectGuid originalCaster=ObjectGuid::Empty)
Definition Unit.cpp:1194
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint8 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Definition Unit.cpp:4978
void SetSpeed(UnitMoveType mtype, float rate, bool forced=false)
Definition Unit.cpp:14518
ObjectGuid GetTransGUID() const override
Definition Unit.cpp:18788
bool IsAIEnabled
Definition Unit.h:2054
bool HasUnitState(const uint32 f) const
Definition Unit.h:721
float GetPowerPct(Powers power) const
Definition Unit.h:1099
void SetDisableGravity(bool disable)
Definition Unit.cpp:20332
float GetMeleeRange(Unit const *target) const
Definition Unit.cpp:683
uint32 GetPower(Powers power) const
Definition Unit.h:1097
void KillSelf(bool durabilityLoss=true, WeaponAttackType attackType=BASE_ATTACK, SpellInfo const *spellProto=nullptr, Spell const *spell=nullptr)
Definition Unit.h:1201
void SetInFront(WorldObject const *target)
Definition Unit.cpp:20275
bool isDead() const
Definition Unit.h:1750
TempSummon * SummonCreature(uint32 id, const Position &pos, TempSummonType spwtype=TEMPSUMMON_MANUAL_DESPAWN, uint32 despwtime=0, uint32 vehId=0, SummonPropertiesEntry const *properties=nullptr, bool visibleBySummonerOnly=false) const
Definition Object.cpp:2359
Map * FindMap() const
Definition Object.h:622
bool IsWithinLOSInMap(WorldObject const *obj, VMAP::ModelIgnoreFlags ignoreFlags=VMAP::ModelIgnoreFlags::Nothing, LineOfSightChecks checks=LINEOFSIGHT_ALL_CHECKS, Optional< float > collisionHeight={ }, Optional< float > combatReach={ }) const
Definition Object.cpp:1380
void GetNearPoint(WorldObject const *searcher, float &x, float &y, float &z, float searcher_size, float distance2d, float absAngle, float controlZ=0, Position const *startPos=nullptr) const
Definition Object.cpp:2644
bool GetClosePoint(float &x, float &y, float &z, float size, float distance2d=0, float angle=0, WorldObject const *forWho=nullptr, bool force=false) const
Definition Object.cpp:2717
std::string const & GetName() const
Definition Object.h:525
void AddObjectToRemoveList()
Definition Object.cpp:2151
EventProcessor m_Events
Definition Object.h:731
float GetDistance(WorldObject const *obj) const
Definition Object.cpp:1278
uint32 GetAreaId() const
Definition Object.cpp:3071
uint32 GetZoneId() const
Definition Object.cpp:3063
float GetObjectSize() const
Definition Object.cpp:2789
GameObject * SummonGameObject(uint32 entry, float x, float y, float z, float ang, float rotation0, float rotation1, float rotation2, float rotation3, uint32 respawnTime, bool checkTransport=true, GOSummonType summonType=GO_SUMMON_TIMED_OR_CORPSE_DESPAWN)
Definition Object.cpp:2373
void GetRandomPoint(const Position &srcPos, float distance, float &rand_x, float &rand_y, float &rand_z) const
Definition Object.cpp:1535
void SummonCreatureGroup(uint8 group, std::list< TempSummon * > *list=nullptr)
Definition Object.cpp:2436
virtual float GetCombatReach() const
Definition Object.h:503
Creature * SummonTrigger(float x, float y, float z, float ang, uint32 dur, bool setLevel=false, CreatureAI *(*GetAI)(Creature *)=nullptr)
Definition Object.cpp:2408
Player session in the World.
Definition WorldSession.h:369
virtual void SetData(uint32, uint32)
Definition ZoneScript.h:52
virtual void SetGuidData(uint32, ObjectGuid)
Definition ZoneScript.h:45
auto SelectRandomContainerElement(C const &container) -> typename std::add_const< decltype(*std::begin(container))>::type &
Definition Containers.h:133
std::string ToString(Type &&val, Params &&... params)
Definition StringConvert.h:250
Definition ObjectAccessor.h:61
Player * GetPlayer(Map const *, ObjectGuid const &guid)
Definition ObjectAccessor.cpp:220
Definition CreatureData.h:169
uint32 CreatureDisplayID
Definition CreatureData.h:179
float DisplayScale
Definition CreatureData.h:180
Definition CreatureData.h:360
uint32 ItemEntry[MAX_EQUIPMENT_ITEMS]
Definition CreatureData.h:361
float m_positionZ
Definition Position.h:57
float m_positionX
Definition Position.h:55
float GetPositionZ() const
Definition Position.h:123
float m_positionY
Definition Position.h:56
float GetOrientation() const
Definition Position.h:124
void SetOrientation(float orientation)
Definition Position.h:116
float GetPositionX() const
Definition Position.h:121
void GetPosition(float &x, float &y) const
Definition Position.h:126
float GetPositionY() const
Definition Position.h:122
void RelocatePolarOffset(float angle, float dist, float z=0.0f)
Definition Position.cpp:34
float GetAngle(const Position *pos) const
Definition Position.cpp:85
Definition SmartScriptMgr.h:740
struct SmartAction::@75::@98 combatMove
uint32 followState
Definition SmartScriptMgr.h:1448
uint32 visualId
Definition SmartScriptMgr.h:1443
uint32 targetParam2
Definition SmartScriptMgr.h:844
struct SmartAction::@75::@100 incEventPhase
struct SmartAction::@75::@106 killedMonster
SAIBool disableForceDestination
Definition SmartScriptMgr.h:1201
std::array< uint32, SMART_ACTION_PARAM_COUNT > emotes
Definition SmartScriptMgr.h:827
uint32 forcedMovement
Definition SmartScriptMgr.h:1026
uint32 repeatMax
Definition SmartScriptMgr.h:1103
uint32 phaseMin
Definition SmartScriptMgr.h:929
uint32 targetsLimit
Definition SmartScriptMgr.h:835
struct SmartAction::@75::@181 movementSpeed
struct SmartAction::@75::@186 setScale
SAIBool transport
Definition SmartScriptMgr.h:1197
struct SmartAction::@75::@192 wpDataRandom
struct SmartAction::@75::@82 randomSound
struct SmartAction::@75::@120 summonGO
uint32 startAngle
Definition SmartScriptMgr.h:1436
SAIBool reset
Definition SmartScriptMgr.h:1088
std::array< uint32, SMART_ACTION_PARAM_COUNT > actionLists
Definition SmartScriptMgr.h:1151
struct SmartAction::@75::@185 scriptSpawn
uint32 delay
Definition SmartScriptMgr.h:750
struct SmartAction::@75::@163 startClosestWaypoint
uint32 random
Definition SmartScriptMgr.h:1331
uint32 quickChange
Definition SmartScriptMgr.h:1330
uint32 targetParam4
Definition SmartScriptMgr.h:1460
uint32 dist
Definition SmartScriptMgr.h:914
uint32 group
Definition SmartScriptMgr.h:1254
SAIBool disable
Definition SmartScriptMgr.h:1385
struct SmartAction::@75::@180 corpseDelay
struct SmartAction::@75::@194 worldStateScript
struct SmartAction::@75::@111 callHelp
uint32 spell
Definition SmartScriptMgr.h:832
uint32 minHP
Definition SmartScriptMgr.h:981
struct SmartAction::@75::@177 summonVortex
uint32 flags
Definition SmartScriptMgr.h:841
struct SmartAction::@75::@97 autoAttack
SAIBool loot
Definition SmartScriptMgr.h:1503
uint32 distanceBetweenSummons
Definition SmartScriptMgr.h:1346
uint32 data
Definition SmartScriptMgr.h:941
struct SmartAction::@75::@105 randomPhaseRange
uint32 entry
Definition SmartScriptMgr.h:916
struct SmartAction::@75::@91 crossCast
struct SmartAction::@75::@129 setSwim
uint32 quest
Definition SmartScriptMgr.h:811
struct SmartAction::@75::@150 moveToPosTarget
struct SmartAction::@75::@172 orientation
struct SmartAction::@75::@78 simpleTalk
uint32 triggerFlags
Definition SmartScriptMgr.h:834
struct SmartAction::@75::@87 questOffer
uint32 bp1
Definition SmartScriptMgr.h:1361
uint32 distance
Definition SmartScriptMgr.h:774
SAIBool removeObjectFromWorld
Definition SmartScriptMgr.h:976
uint32 min
Definition SmartScriptMgr.h:1100
uint32 spawnTimerMax
Definition SmartScriptMgr.h:1420
uint32 subtract
Definition SmartScriptMgr.h:1089
struct SmartAction::@75::@110 die
uint32 a
Definition SmartScriptMgr.h:1370
struct SmartAction::@75::@151 sendGossipMenu
struct SmartAction::@75::@104 randomPhase
struct SmartAction::@75::@133 timeEvent
SAIBool invokerGUID
Definition SmartScriptMgr.h:1412
struct SmartAction::@75::@191 wpData
uint32 percent
Definition SmartScriptMgr.h:982
uint32 dec
Definition SmartScriptMgr.h:898
uint32 milliseconds
Definition SmartScriptMgr.h:958
struct SmartAction::@75::@125 item
uint32 summonEntry
Definition SmartScriptMgr.h:1343
struct SmartAction::@75::@84 randomMusic
uint32 followType
Definition SmartScriptMgr.h:1449
uint32 instanceTarget
Definition SmartScriptMgr.h:1380
struct SmartAction::@75::@196 reward
uint32 credit
Definition SmartScriptMgr.h:917
uint32 controlled
Definition SmartScriptMgr.h:1198
uint32 alternative
Definition SmartScriptMgr.h:850
uint32 targetParam1
Definition SmartScriptMgr.h:843
uint32 mapID
Definition SmartScriptMgr.h:1081
uint32 stopMovement
Definition SmartScriptMgr.h:1337
struct SmartAction::@75::@134 movie
struct SmartAction::@75::@94 summonCreature
uint32 charges
Definition SmartScriptMgr.h:909
struct SmartAction::@75::@113 forceDespawn
struct SmartAction::@75::@103 follow
uint32 model
Definition SmartScriptMgr.h:767
uint32 duration
Definition SmartScriptMgr.h:748
SAIBool attackInvoker
Definition SmartScriptMgr.h:863
SAIBool useTalkTarget
Definition SmartScriptMgr.h:749
SAIBool run
Definition SmartScriptMgr.h:1064
struct SmartAction::@75::@176 castCustom
uint32 value
Definition SmartScriptMgr.h:1087
struct SmartAction::@75::@140 timedActionList
uint32 movementExpired
Definition SmartScriptMgr.h:1338
struct SmartAction::@75::@117 moveRandom
uint32 targetParam3
Definition SmartScriptMgr.h:845
uint32 respawnDelay
Definition SmartScriptMgr.h:1421
SAIBool swim
Definition SmartScriptMgr.h:1076
uint32 combatReach
Definition SmartScriptMgr.h:1200
uint32 sound2
Definition SmartScriptMgr.h:780
struct SmartAction::@75::@188 spellVisual
uint32 spawnPos
Definition SmartScriptMgr.h:1301
struct SmartAction::@75::@92 activateObject
struct SmartAction::@75::@167 setHomePos
struct SmartAction::@75::@161 gameEventStop
uint32 pathId2
Definition SmartScriptMgr.h:1278
uint32 creature
Definition SmartScriptMgr.h:766
struct SmartAction::@75::@190 orientationTarget
uint32 spawnTimerMin
Definition SmartScriptMgr.h:1419
struct SmartAction::@75::@132 storeTargets
struct SmartAction::@75::@114 invincHP
uint32 angle
Definition SmartScriptMgr.h:915
uint32 field
Definition SmartScriptMgr.h:940
uint32 range
Definition SmartScriptMgr.h:855
struct SmartAction::@75::@95 threatPCT
struct SmartAction::@75::@89 randomEmote
struct SmartAction::@75::@162 gameEventStart
uint32 flag
Definition SmartScriptMgr.h:1121
uint32 sound3
Definition SmartScriptMgr.h:781
uint32 targetsummon
Definition SmartScriptMgr.h:1015
struct SmartAction::@75::@145 jump
uint32 chance
Definition SmartScriptMgr.h:1104
struct SmartAction::@75::@131 setCounter
uint32 state
Definition SmartScriptMgr.h:822
struct SmartAction::@75::@90 cast
struct SmartAction::@75::@108 setInstanceData64
uint32 sound1
Definition SmartScriptMgr.h:779
struct SmartAction::@75::@80 morphOrMount
struct SmartAction::@75::@116 setData
uint32 forceRespawnTimer
Definition SmartScriptMgr.h:975
uint32 speed
Definition SmartScriptMgr.h:1070
uint32 sound4
Definition SmartScriptMgr.h:782
struct SmartAction::@75::@147 flee
uint32 targetType
Definition SmartScriptMgr.h:842
uint32 repetitions
Definition SmartScriptMgr.h:1435
struct SmartAction::@75::@174 coneSummon
uint32 aliveState
Definition SmartScriptMgr.h:919
SAIBool onlySelf
Definition SmartScriptMgr.h:773
uint32 attackScriptOwner
Definition SmartScriptMgr.h:864
uint32 speedxy
Definition SmartScriptMgr.h:1174
uint32 pointId
Definition SmartScriptMgr.h:1196
SAIBool attack
Definition SmartScriptMgr.h:882
uint32 repeatMin
Definition SmartScriptMgr.h:1102
struct SmartAction::@75::@122 wpStart
uint32 scale
Definition SmartScriptMgr.h:1428
SAIBool fly
Definition SmartScriptMgr.h:1069
uint32 textGroupID
Definition SmartScriptMgr.h:747
uint32 castFlags
Definition SmartScriptMgr.h:833
struct SmartAction::@75::@179 disableEvade
std::array< uint32, SMART_ACTION_PARAM_COUNT > phases
Definition SmartScriptMgr.h:924
SAIBool dontDespawn
Definition SmartScriptMgr.h:1423
uint32 turnAngle
Definition SmartScriptMgr.h:1332
uint32 textId
Definition SmartScriptMgr.h:1353
uint32 gossipMenuId
Definition SmartScriptMgr.h:1212
uint32 speedz
Definition SmartScriptMgr.h:1175
SAIBool repeat
Definition SmartScriptMgr.h:1028
struct SmartAction::@75::@173 stopMotion
uint32 gossipNpcTextId
Definition SmartScriptMgr.h:1213
uint32 mask
Definition SmartScriptMgr.h:987
uint32 pathId1
Definition SmartScriptMgr.h:1277
uint32 phi_delta
Definition SmartScriptMgr.h:1373
uint32 count
Definition SmartScriptMgr.h:1049
struct SmartAction::@75::@112 setSheath
uint32 inc
Definition SmartScriptMgr.h:897
uint32 phaseMax
Definition SmartScriptMgr.h:930
struct SmartAction::@75::@130 teleport
uint32 timer
Definition SmartScriptMgr.h:1390
uint32 ContactDistance
Definition SmartScriptMgr.h:1199
struct SmartAction::@75::@79 faction
PathSource pathSource
Definition SmartScriptMgr.h:1467
struct SmartAction::@75::@135 equip
uint32 k
Definition SmartScriptMgr.h:1371
uint32 distanceBetweenRings
Definition SmartScriptMgr.h:1345
uint32 coneLength
Definition SmartScriptMgr.h:1347
uint32 counterId
Definition SmartScriptMgr.h:1086
SAIBool withEmote
Definition SmartScriptMgr.h:964
struct SmartAction::@75::@146 movementFlag
uint32 param
Definition SmartScriptMgr.h:1485
uint32 max
Definition SmartScriptMgr.h:1101
uint32 selfJump
Definition SmartScriptMgr.h:1176
struct SmartAction::@75::@183 cinematic
uint32 maxId
Definition SmartScriptMgr.h:1313
uint32 r_max
Definition SmartScriptMgr.h:1372
struct SmartAction::@75::@136 unitFlag
uint32 speedFraction
Definition SmartScriptMgr.h:1397
struct SmartAction::@75::@88 react
struct SmartAction::@75::@119 setActive
struct SmartAction::@75::@159 creatureGroup
SAIBool fail
Definition SmartScriptMgr.h:1043
struct SmartAction::@75::@124 wpStop
SAIBool directAdd
Definition SmartScriptMgr.h:817
uint32 bp2
Definition SmartScriptMgr.h:1362
uint32 disableGravity
Definition SmartScriptMgr.h:1071
uint32 sound
Definition SmartScriptMgr.h:772
uint32 threatINC
Definition SmartScriptMgr.h:870
uint32 coneAngle
Definition SmartScriptMgr.h:1348
uint32 summonDuration
Definition SmartScriptMgr.h:1344
struct SmartAction::@75::@148 RespawnTarget
struct SmartAction::@75::@175 playerTalk
uint32 threatDEC
Definition SmartScriptMgr.h:871
SAIBool reputation
Definition SmartScriptMgr.h:1502
uint32 stepAngle
Definition SmartScriptMgr.h:1437
struct SmartAction::@75::@153 sendTargetToTarget
uint32 reactState
Definition SmartScriptMgr.h:1031
uint32 speedInteger
Definition SmartScriptMgr.h:1396
struct SmartAction::@75::@77 talk
uint32 index
Definition SmartScriptMgr.h:1413
struct SmartAction::@75::@123 wpPause
struct SmartAction::@75::@83 music
uint32 actionId
Definition SmartScriptMgr.h:1378
struct SmartAction::@75::@169 randomTimedEvent
uint32 despawnTime
Definition SmartScriptMgr.h:1014
struct SmartAction::@75::@128 setFly
uint32 goRespawnTime
Definition SmartScriptMgr.h:1191
struct SmartAction::@75::@115 ingamePhaseMask
uint32 factionID
Definition SmartScriptMgr.h:761
uint32 eventId
Definition SmartScriptMgr.h:1484
struct SmartAction::@75::@189 followGroup
uint32 pathId
Definition SmartScriptMgr.h:1465
SAIBool move
Definition SmartScriptMgr.h:887
struct SmartAction::@75::@178 doAction
struct SmartAction::@75::@149 moveToPos
std::array< uint32, MAX_EQUIPMENT_ITEMS > slots
Definition SmartScriptMgr.h:1116
struct SmartAction::@75::@127 setRun
struct SmartAction::@75::@187 radialSummon
struct SmartAction::@75::@99 setEventPhase
struct SmartAction::@75::@107 setInstanceData
uint32 questID
Definition SmartScriptMgr.h:816
uint32 bp3
Definition SmartScriptMgr.h:1363
uint32 pathID
Definition SmartScriptMgr.h:1027
uint32 emote
Definition SmartScriptMgr.h:806
struct SmartAction::@75::@102 removeAura
uint32 id
Definition SmartScriptMgr.h:1021
uint32 minId
Definition SmartScriptMgr.h:1312
uint32 phase
Definition SmartScriptMgr.h:892
uint32 sheath
Definition SmartScriptMgr.h:969
uint32 isNegative
Definition SmartScriptMgr.h:1379
uint32 creditType
Definition SmartScriptMgr.h:918
struct SmartAction::@75::@141 randTimedActionList
struct SmartAction::@75::@154 setRangedMovement
struct SmartAction::@75::@184 setGuid
Definition SmartScriptMgr.h:205
uint32 repeatMin
Definition SmartScriptMgr.h:216
uint32 repeatMax
Definition SmartScriptMgr.h:217
bool runOnce
Definition SmartScriptMgr.h:1984
uint32 link
Definition SmartScriptMgr.h:1967
bool IsAreatriggerScript() const
Definition SmartScriptMgr.h:1979
uint32 event_id
Definition SmartScriptMgr.h:1966
int32 entryOrGuid
Definition SmartScriptMgr.h:1964
uint32 GetScriptType() const
Definition SmartScriptMgr.h:1974
uint32 GetTargetType() const
Definition SmartScriptMgr.h:1977
uint32 GetActionType() const
Definition SmartScriptMgr.h:1976
float o
Definition SmartScriptMgr.h:1582
uint32 maxDist
Definition SmartScriptMgr.h:1588
uint32 range
Definition SmartScriptMgr.h:1709
float x
Definition SmartScriptMgr.h:1582
uint32 self
Definition SmartScriptMgr.h:1711
struct SmartTarget::@197::@218 randomPoint
uint32 amount
Definition SmartScriptMgr.h:1710
float y
Definition SmartScriptMgr.h:1582
float z
Definition SmartScriptMgr.h:1582
struct SmartTarget::@197::@201 unitRange
Definition WaypointMgr.h:38
float z
Definition WaypointMgr.h:40
float x
Definition WaypointMgr.h:40
float y
Definition WaypointMgr.h:40