57 {5492.91f, -2404.61f, 1462.63f},
58 {5531.76f, -2460.87f, 1469.55f},
59 {5554.58f, -2514.66f, 1476.12f},
60 {5554.16f, -2567.23f, 1479.90f},
61 {5540.67f, -2625.99f, 1480.89f},
62 {5508.16f, -2659.20f, 1480.15f},
63 {5489.62f, -2704.05f, 1482.18f},
64 {5457.04f, -2726.26f, 1485.10f}
68 {4896.08f, -1576.35f, 1333.65f},
69 {4898.68f, -1615.02f, 1329.48f},
70 {4907.12f, -1667.08f, 1321.00f},
71 {4963.18f, -1699.35f, 1340.51f},
72 {4989.16f, -1716.67f, 1335.74f},
73 {5026.27f, -1736.89f, 1323.02f},
74 {5037.77f, -1770.56f, 1324.36f},
75 {5067.23f, -1789.95f, 1321.17f}
80 {5580.82f, -2628.83f, 1528.28f},
81 {5550.90f, -2667.16f, 1505.45f},
82 {5459.64f, -2725.91f, 1484.83f}
87 {5533.66f, -2634.32f, 1495.33f},
88 {5517.88f, -2712.05f, 1490.54f},
89 {5459.64f, -2725.91f, 1484.83f}
94 {5531.96f, -2772.83f, 1516.68f},
95 {5498.32f, -2734.84f, 1497.01f},
96 {5456.67f, -2725.48f, 1493.08f}
101 {4976.37f, -1708.02f, 1339.43f},
102 {4994.83f, -1725.52f, 1333.25f},
103 {4982.92f, -1753.7f, 1330.69f},
104 {4996.75f, -1721.47f, 1332.95f},
105 {5015.74f, -1755.05f, 1322.49f},
106 {4998.68f, -1773.44f, 1329.59f},
107 {4994.83f, -1725.52f, 1333.25f},
108 {5022.8f, -1735.46f, 1323.53f},
109 {5052.15f, -1729.02f, 1320.88f},
110 {5082.43f, -1726.29f, 1327.87f},
111 {4994.83f, -1725.52f, 1333.25f},
112 {5018.92f, -1751.14f, 1322.19f},
113 {5040.09f, -1792.09f, 1322.1f},
114 {4994.83f, -1725.52f, 1333.25f},
115 {5023.47f, -1748.1f, 1322.51f},
116 {5013.43f, -1842.39f, 1322.07f},
117 {4994.83f, -1725.52f, 1333.25f},
118 {5020.8f, -1756.86f, 1322.2f},
119 {5019.53f, -1824.6f, 1321.96f},
120 {5043.42f, -1853.75f, 1324.52f},
121 {5053.02f, -1864.13f, 1330.36f},
122 {5062.49f, -1852.47f, 1330.49f},
123 {5015.27f, -1738.77f, 1324.83f},
124 {5027.97f, -1775.25f, 1321.87f},
125 {5015.94f, -1821.24f, 1321.86f},
126 {4983.25f, -1857.4f, 1320.48f},
127 {4981.51f, -1883.7f, 1322.34f},
128 {5002.33f, -1893.98f, 1325.88f},
129 {5049.32f, -1886.54f, 1331.69f},
130 {5089.68f, -1846.88f, 1328.99f},
131 {5127.90f, -1825.14f, 1335.58f},
132 {5163.27f, -1789.08f, 1337.04f},
133 {5138.97f, -1755.88f, 1334.57f},
134 {5096.63f, -1742.22f, 1329.61f},
135 {5065.81f, -1729.43f, 1325.66f},
136 {5049.32f, -1726.31f, 1320.64f},
137 {5081.07f, -1902.10f, 1346.36f},
138 {5107.65f, -1912.03f, 1356.49f},
139 {5132.83f, -1927.07f, 1362.42f},
140 {5147.78f, -1954.41f, 1365.98f},
141 {5164.96f, -1966.48f, 1367.04f},
142 {5189.04f, -1961.06f, 1367.90f},
143 {5212.27f, -1975.30f, 1365.58f},
144 {5221.82f, -1994.18f, 1364.97f},
145 {5202.23f, -1994.94f, 1367.59f},
146 {5279.94f, -2049.68f, 1311.38f},
147 {5289.15f, -2219.06f, 1291.12f},
148 {5202.07f, -2136.10f, 1305.07f},
149 {5071.52f, -2425.63f, 1454.48f},
150 {5120.65f, -2467.92f, 1463.93f},
151 {5283.04f, -2043.26f, 1300.11f},
152 {5313.22f, -2207.60f, 1290.06f},
153 {5180.41f, -2121.87f, 1292.62f},
154 {5088.68f, -2432.04f, 1441.73f},
155 {5111.26f, -2454.73f, 1449.63f}
161 {5490.72f, -2702.94f, 1482.14f},
162 {5469.77f, -2741.34f, 1486.95f},
163 {5439.47f, -2771.02f, 1494.59f},
164 {5408.85f, -2811.92f, 1505.68f},
165 {5423.87f, -2857.80f, 1515.55f},
166 {5428.19f, -2898.15f, 1524.61f},
167 {5394.59f, -2930.05f, 1528.23f},
168 {5351.11f, -2935.80f, 1532.24f},
169 {5312.37f, -2959.06f, 1536.21f},
170 {5264.93f, -2989.80f, 1545.70f},
171 {5256.63f, -3056.16f, 1559.24f},
172 {5267.32f, -3119.55f, 1575.36f},
173 {5305.61f, -3139.88f, 1586.38f},
174 {5330.56f, -3135.37f, 1588.58f},
175 {5365.87f, -3139.78f, 1583.96f},
176 {5389.39f, -3163.57f, 1582.57f},
177 {5500.86f, -2669.89f, 1481.04f},
178 {5472.08f, -2715.14f, 1483.55f},
179 {5450.11f, -2721.47f, 1485.61f},
180 {5433.25f, -2712.93f, 1493.02f},
181 {5429.91f, -2718.44f, 1493.42f}
223 for (
uint8 i = 0; i < 4; ++i)
272 for (
uint8 i = 22; i < 36; ++i)
283 for (
uint8 i = 0; i < 4; ++i)
345 for (
uint8 i = 22; i < 36; ++i)
358 for (
uint8 i = 0; i < 6; ++i)
383 for (
uint8 i = 0; i < 16; ++i)
393 for (
uint8 i = 0; i < 6; ++i)
395 for (
uint8 i = 0; i < 16; ++i)
462 if (target && target->
IsAlive())
483 trigger->SetDisableGravity(
true);
498 if (target && target->
IsAlive())
537 return GetHyjalAI<npc_giant_infernalAI>(creature);
548 return GetHyjalAI<npc_abominationAI>(creature);
579 if (target && target->
IsAlive())
585 if (target && target->
IsAlive())
612 for (
uint8 i = 0; i < 8; ++i)
618 for (
uint8 i = 0; i < 8; ++i)
646 return GetHyjalAI<npc_ghoulAI>(creature);
681 if (target && target->
IsAlive())
687 if (target && target->
IsAlive())
715 for (
uint8 i = 0; i < 8; ++i)
721 for (
uint8 i = 0; i < 8; ++i)
747 return GetHyjalAI<npc_necromancerAI>(creature);
778 summon->
Attack(target,
false);
794 if (target && target->
IsAlive())
800 if (target && target->
IsAlive())
847 for (
uint8 i = 0; i < 8; ++i)
853 for (
uint8 i = 0; i < 8; ++i)
881 return GetHyjalAI<npc_bansheeAI>(creature);
917 if (target && target->
IsAlive())
923 if (target && target->
IsAlive())
954 for (
uint8 i = 0; i < 8; ++i)
960 for (
uint8 i = 0; i < 8; ++i)
996 return GetHyjalAI<npc_crypt_fiendAI>(creature);
1028 if (target && target->
IsAlive())
1034 if (target && target->
IsAlive())
1054 for (
uint8 i = 0; i < 8; ++i)
1060 for (
uint8 i = 0; i < 8; ++i)
1086 return GetHyjalAI<npc_fel_stalkerAI>(creature);
1118 if (target && target->
IsAlive())
1124 if (target && target->
IsAlive())
1144 for (
uint8 i = 0; i < 8; ++i)
1150 for (
uint8 i = 0; i < 8; ++i)
1176 return GetHyjalAI<npc_frost_wyrmAI>(creature);
1208 if (target && target->
IsAlive())
1247 for (
uint8 i = 0; i < 3; ++i)
1252 for (
uint8 i = 0; i < 3; ++i)
1298 return GetHyjalAI<npc_gargoyleAI>(creature);
1307 for (
uint8 i = 0; i < 3; ++i)
1336 if (target && target->
IsAlive())
1370 for (
uint8 i = 0; i < 3; ++i)
1373 for (
uint8 i = 0; i < 3; ++i)
1444 return GetHyjalAI<alliance_riflemanAI>(creature);
First const & RAND(First const &first, Second const &second, Rest const &... rest)
@ TEMPSUMMON_TIMED_DESPAWN
int32 irand(int32 min, int32 max)
uint32 urand(uint32 min, uint32 max)
@ EMOTE_ONESHOT_ATTACK_UNARMED
@ UNIT_FLAG_NON_ATTACKABLE
virtual void EnterEvadeMode(EvadeReason why=EvadeReason::Other)
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
void SetHomePosition(float x, float y, float z, float o)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
void SetDisplayId(uint32 displayId, bool setNative=false) override
virtual ObjectGuid GetGuidData(uint32 type) const override
void MoveChase(Unit *target, Optional< ChaseRange > dist={}, Optional< ChaseAngle > angle={})
void MovePoint(uint32 id, Position const &pos, bool generatePath=true, Optional< float > finalOrient={}, Optional< float > speed={}, MovementWalkRunSpeedSelectionMode speedSelectionMode=MovementWalkRunSpeedSelectionMode::Default, Optional< float > closeEnoughDistance={})
void RemoveDynamicFlag(uint32 flag)
void Despawn(Creature const *summon)
void Summon(Creature const *summon)
SpellCastResult DoCastVictim(uint32 spellId, CastSpellExtraArgs const &args={})
Unit * SelectTarget(SelectTargetMethod targetType, uint32 offset=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
SpellCastResult DoCast(uint32 spellId)
MotionMaster * GetMotionMaster()
void SetUninteractible(bool apply)
Unit * EnsureVictim() const
void SetEmoteState(Emote emote)
virtual bool UpdatePosition(float x, float y, float z, float ang, bool teleport=false)
uint32 GetNativeDisplayId() const
bool Attack(Unit *victim, bool meleeAttack)
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
void RemoveUnitFlag(UnitFlags flags)
InstanceScript * GetInstanceScript() const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
bool IsValidAttackTarget(WorldObject const *target, SpellInfo const *bySpell=nullptr) const
TempSummon * SummonCreature(uint32 entry, Position const &pos, TempSummonType despawnType=TEMPSUMMON_MANUAL_DESPAWN, Milliseconds despawnTime=0s, uint32 vehId=0, uint32 spellId=0, ObjectGuid privateObjectOwner=ObjectGuid::Empty)
void UpdateGroundPositionZ(float x, float y, float &z) const
bool IsWithinDistInMap(WorldObject const *obj, float dist2compare, bool is3D=true, bool incOwnRadius=true, bool incTargetRadius=true) const
bool IsWithinDist(WorldObject const *obj, float dist2compare, bool is3D=true, bool incOwnRadius=true, bool incTargetRadius=true) const
virtual uint32 GetData(uint32) const
virtual void SetData(uint32, uint32)
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
float AllianceOverrunWP[55][3]
float HordeOverrunWP[21][3]
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
void Start(bool isActiveAttacker=true, ObjectGuid playerGUID=ObjectGuid::Empty, Quest const *quest=nullptr, bool instantRespawn=false, bool canLoopPath=false)
void AddWaypoint(uint32 id, float x, float y, float z, bool run)
void SetDespawnAtEnd(bool despawn)
void UpdateAI(uint32 diff) override
Position GetPositionWithOffset(Position const &offset) const
constexpr void GetPosition(float &x, float &y) const
void AttackStart(Unit *) override
== Triggered Actions Requested ==================
void SetCombatMovement(bool allowMovement)
Creature * DoSpawnCreature(uint32 entry, float offsetX, float offsetY, float offsetZ, float angle, uint32 type, Milliseconds despawntime)
void AddThreat(Unit *victim, float amount, Unit *who=nullptr)
void MoveInLineOfSight(Unit *who) override
void JustDied(Unit *) override
alliance_riflemanAI(Creature *creature)
void JustEngagedWith(Unit *) override
void UpdateAI(uint32 diff) override
void DamageTaken(Unit *done_by, uint32 &damage, DamageEffectType, SpellInfo const *) override
void UpdateAI(uint32 diff) override
void JustDied(Unit *) override
InstanceScript * instance
hyjal_trashAI(Creature *creature)
void WaypointReached(uint32 waypointId, uint32) override
npc_abominationAI(Creature *creature)
void JustEngagedWith(Unit *) override
void UpdateAI(uint32 diff) override
void JustEngagedWith(Unit *) override
void JustDied(Unit *killer) override
void WaypointReached(uint32 waypointId, uint32) override
void KilledUnit(Unit *) override
void UpdateAI(uint32 diff) override
npc_bansheeAI(Creature *creature)
void WaypointReached(uint32 waypointId, uint32) override
void JustEngagedWith(Unit *) override
void UpdateAI(uint32 diff) override
npc_crypt_fiendAI(Creature *creature)
void WaypointReached(uint32 waypointId, uint32) override
void JustEngagedWith(Unit *) override
npc_fel_stalkerAI(Creature *creature)
void UpdateAI(uint32 diff) override
void WaypointReached(uint32 waypointId, uint32) override
void UpdateAI(uint32 diff) override
void JustDied(Unit *) override
npc_frost_wyrmAI(Creature *creature)
void JustEngagedWith(Unit *) override
npc_gargoyleAI(Creature *creature)
void JustDied(Unit *killer) override
void WaypointReached(uint32 waypointId, uint32) override
void UpdateAI(uint32 diff) override
void UpdateAI(uint32 diff) override
void JustEngagedWith(Unit *) override
void WaypointReached(uint32 waypointId, uint32) override
npc_ghoulAI(Creature *creature)
npc_giant_infernalAI(Creature *creature)
void JustEngagedWith(Unit *) override
void UpdateAI(uint32 diff) override
void WaypointReached(uint32 waypointId, uint32) override
void JustSummoned(Creature *summon) override
npc_necromancerAI(Creature *creature)
void KilledUnit(Unit *) override
void WaypointReached(uint32 waypointId, uint32) override
void JustDied(Unit *killer) override
void JustEngagedWith(Unit *) override
void SummonedCreatureDespawn(Creature *summon) override
void UpdateAI(uint32 diff) override