TrinityCore
boss_alar.cpp
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18/* ScriptData
19SDName: boss_alar
20SD%Complete: 95
21SDComment:
22SDCategory: Tempest Keep, The Eye
23EndScriptData */
24
25#include "ScriptMgr.h"
26#include "InstanceScript.h"
27#include "MotionMaster.h"
28#include "ObjectAccessor.h"
29#include "ScriptedCreature.h"
30#include "SpellInfo.h"
31#include "SpellScript.h"
32#include "TemporarySummon.h"
33#include "the_eye.h"
34
36{
37 SPELL_FLAME_BUFFET = 34121, // Flame Buffet - every 1, 5 secs in phase 1 if there is no victim in melee range and after Dive Bomb in phase 2 with same conditions
38 SPELL_FLAME_QUILLS = 34229, // Randomly after changing position in phase after watching tons of movies, set probability 20%
39 SPELL_REBIRTH = 34342, // Rebirth - beginning of second phase(after losing all health in phase 1)
40 SPELL_REBIRTH_2 = 35369, // Rebirth(another, without healing to full HP) - after Dive Bomb in phase 2
41 SPELL_MELT_ARMOR = 35410, // Melt Armor - every 60 sec in phase 2
42 SPELL_CHARGE = 35412, // Charge - 30 sec cooldown
43 SPELL_DIVE_BOMB_VISUAL = 35367, // Bosskillers says 30 sec cooldown, wowwiki says 30 sec colldown, DBM and BigWigs addons says ~47 sec
44 SPELL_DIVE_BOMB = 35181, // after watching tonns of movies, set cooldown to 40+rand()%5.
45 SPELL_BERSERK = 45078, // 10 minutes after phase 2 starts(id is wrong, but proper id is unknown)
46
47 CREATURE_EMBER_OF_ALAR = 19551, // Al'ar summons one Ember of Al'ar every position change in phase 1 and two after Dive Bomb. Also in phase 2 when Ember of Al'ar dies, boss loses 3% health.
48 SPELL_EMBER_BLAST = 34133, // When Ember of Al'ar dies, it casts Ember Blast
49
50 CREATURE_FLAME_PATCH_ALAR = 20602, // Flame Patch - every 30 sec in phase 2
52};
53
54static float waypoint[6][3] =
55{
56 {340.15f, 58.65f, 17.71f},
57 {388.09f, 31.54f, 20.18f},
58 {388.18f, -32.85f, 20.18f},
59 {340.29f, -60.19f, 17.72f},
60 {332.0f, 0.01f, 39.0f}, // better not use the same xy coord
61 {331.0f, 0.01f, -2.39f}
62};
63
65{
70 WE_DIE = 4,
76 WE_SUMMON = 10
77};
78
80{
81 34269,
82 34270,
83 34271,
84 34272,
85 34273,
86 34274,
87 34275,
88 34276,
89 34277,
90 34278,
91 34279,
92 34280,
93 34281,
94 34282,
95 34283,
96 34284,
97 34285,
98 34286,
99 34287,
100 34288,
101 34289,
102 34314,
103 34315,
104 34316
105};
106
107struct boss_alar : public BossAI
108{
109 boss_alar(Creature* creature) : BossAI(creature, DATA_ALAR)
110 {
111 Initialize();
113 DiveBomb_Timer = 0;
114 MeltArmor_Timer = 0;
115 Charge_Timer = 0;
117 }
118
120 {
121 Berserk_Timer = 1200000;
123
124 Phase1 = true;
126 WaitTimer = 0;
127 AfterMoving = false;
128 ForceMove = false;
129 ForceTimer = 5000;
130
131 cur_wp = 4;
132 }
133
136
138
145
147
148 bool Phase1;
151
153
154 void Reset() override
155 {
156 Initialize();
157 _Reset();
158
161 //me->SetFloatValue(UNIT_FIELD_BOUNDINGRADIUS, 10);
162 //me->SetFloatValue(UNIT_FIELD_COMBATREACH, 10);
163 me->SetDisableGravity(true);
165 me->setActive(false);
166 }
167
168 void JustEngagedWith(Unit* who) override
169 {
171 me->SetDisableGravity(true); // after enterevademode will be set walk movement
172 me->setActive(true);
173 }
174
175 void JustSummoned(Creature* summon) override
176 {
177 if (summon->GetEntry() == CREATURE_EMBER_OF_ALAR)
179 summon->AI()->AttackStart(target);
180 }
181
182 void MoveInLineOfSight(Unit* /*who*/) override { }
183
184 void AttackStart(Unit* who) override
185 {
186 if (Phase1)
188 else
190 }
191
192 void DamageTaken(Unit* /*killer*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
193 {
194 if (damage >= me->GetHealth() && Phase1)
195 {
196 damage = 0;
197 if (!WaitEvent)
198 {
200 WaitTimer = 0;
201 me->SetHealth(0);
205 me->AttackStop();
207 me->SetSpeedRate(MOVE_RUN, 5.0f);
209 me->GetMotionMaster()->MovePoint(0, waypoint[5][0], waypoint[5][1], waypoint[5][2]);
210 }
211 }
212 }
213
214 void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
215 {
216 if (spellInfo->Id == SPELL_DIVE_BOMB_VISUAL)
217 {
218 me->SetDisplayId(11686);
219 //me->SendUpdateObjectToAllExcept(nullptr);
220 }
221 }
222
223 void MovementInform(uint32 type, uint32 /*id*/) override
224 {
225 if (type == POINT_MOTION_TYPE)
226 {
227 WaitTimer = 1;
228 AfterMoving = true;
229 ForceMove = false;
230 }
231 }
232
233 void UpdateAI(uint32 diff) override
234 {
235 if (!me->IsEngaged())
236 return;
237
238 if (Berserk_Timer <= diff)
239 {
240 DoCast(me, SPELL_BERSERK, true);
241 Berserk_Timer = 60000;
242 }
243 else
244 Berserk_Timer -= diff;
245
246 if (ForceMove)
247 {
248 if (ForceTimer <= diff)
249 {
251 ForceTimer = 5000;
252 }
253 else
254 ForceTimer -= diff;
255
256 }
257 if (WaitEvent)
258 {
259 if (WaitTimer)
260 {
261 if (WaitTimer <= diff)
262 {
263 if (AfterMoving)
264 {
266 AfterMoving = false;
267 }
268
269 switch (WaitEvent)
270 {
271 case WE_PLATFORM:
272 Platforms_Move_Timer = 30000 + rand32() % 5000;
273 break;
274 case WE_QUILL:
277 WaitTimer = 10000;
279 return;
280 case WE_DIE:
281 ForceMove = false;
283 WaitTimer = 5000;
285 return;
286 case WE_REVIVE:
288 me->SetFullHealth();
292 DoCast(me, SPELL_REBIRTH, true);
293 MeltArmor_Timer = 60000;
294 Charge_Timer = 7000;
295 DiveBomb_Timer = 40000 + rand32() % 5000;
296 FlamePatch_Timer = 30000;
297 Phase1 = false;
298 break;
299 case WE_METEOR:
302 WaitTimer = 4000;
303 return;
304 case WE_DIVE:
306 {
308 DoCast(target, SPELL_DIVE_BOMB, true);
309 float dist = 3.0f;
310 if (me->IsWithinDist3d(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 5.0f))
311 dist = 5.0f;
312 WaitTimer = 1000 + uint32(floor(dist / 80 * 1000.0f));
313 me->UpdatePosition(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0.0f);
314 me->StopMoving();
316 return;
317 }
318 else
319 {
321 return;
322 }
323 case WE_LAND:
325 WaitTimer = 2000;
326 return;
327 case WE_SUMMON:
328 for (uint8 i = 0; i < 2; ++i)
331 me->SetUninteractible(false);
333 DoCast(me, SPELL_REBIRTH_2, true);
334 break;
335 case WE_DUMMY:
336 default:
337 break;
338 }
339
341 WaitTimer = 0;
342 }
343 else
344 WaitTimer -= diff;
345 }
346 return;
347 }
348
349 if (Phase1)
350 {
351 if (!me->IsThreatened())
352 {
354 return;
355 }
356
357 if (Platforms_Move_Timer <= diff)
358 {
359 if (cur_wp == 4)
360 {
361 cur_wp = 0;
363 }
364 else
365 {
366 if (urand(0, 4)) // next platform
367 {
369 if (cur_wp == 3)
370 cur_wp = 0;
371 else
372 ++cur_wp;
374 }
375 else // flame quill
376 {
377 cur_wp = 4;
379 }
380 }
381 ForceMove = true;
382 ForceTimer = 5000;
384 WaitTimer = 0;
385 return;
386 }
387 else
388 Platforms_Move_Timer -= diff;
389 }
390 else
391 {
392 if (Charge_Timer <= diff)
393 {
394 Unit* target= SelectTarget(SelectTargetMethod::Random, 1, 100, true);
395 if (target)
396 DoCast(target, SPELL_CHARGE);
397 Charge_Timer = 30000;
398 }
399 else
400 Charge_Timer -= diff;
401
402 if (MeltArmor_Timer <= diff)
403 {
405 MeltArmor_Timer = 60000;
406 }
407 else
408 MeltArmor_Timer -= diff;
409
410 if (DiveBomb_Timer <= diff)
411 {
412 me->AttackStop();
413 me->GetMotionMaster()->MovePoint(6, waypoint[4][0], waypoint[4][1], waypoint[4][2]);
414 me->SetUninteractible(true);
417 WaitTimer = 0;
418 DiveBomb_Timer = 40000 + rand32() % 5000;
419 return;
420 }
421 else
422 DiveBomb_Timer -= diff;
423
424 if (FlamePatch_Timer <= diff)
425 {
427 {
428 Creature* Summoned = me->SummonCreature(CREATURE_FLAME_PATCH_ALAR, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 2min);
429 if (Summoned)
430 {
431 Summoned->SetUninteractible(true);
432 Summoned->SetObjectScale(Summoned->GetObjectScale() * 2.5f);
433 Summoned->SetDisplayId(11686);
434 Summoned->SetFaction(me->GetFaction());
435 Summoned->SetLevel(me->GetLevel());
436 Summoned->CastSpell(Summoned, SPELL_FLAME_PATCH, false);
437 }
438 }
439 FlamePatch_Timer = 30000;
440 }
441 else
442 FlamePatch_Timer -= diff;
443 }
444
445 if (me->isAttackReady() && !me->IsNonMeleeSpellCast(false))
446 {
448 {
450 AttackStart(target);
451 else
452 {
455 }
456 }
457 }
458 }
459};
460
462{
463 npc_ember_of_alar(Creature* creature) : ScriptedAI(creature)
464 {
465 Initialize();
466 instance = creature->GetInstanceScript();
467 creature->SetDisableGravity(true);
468 }
469
471 {
472 toDie = false;
473 }
474
476 bool toDie;
477
478 void Reset() override
479 {
480 Initialize();
481 }
482
483 void JustEngagedWith(Unit* /*who*/) override
484 {
486 }
487
488 void EnterEvadeMode(EvadeReason /*why*/) override
489 {
491 }
492
493 void DamageTaken(Unit* killer, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
494 {
495 if (damage >= me->GetHealth() && killer != me && !toDie)
496 {
497 damage = 0;
499 me->SetDisplayId(11686);
500 me->SetUninteractible(true);
502 {
504 {
505 int32 AlarHealth = int32(Alar->GetHealth()) - int32(Alar->CountPctFromMaxHealth(3));
506 if (AlarHealth > 0)
507 Alar->SetHealth(AlarHealth);
508 else
509 Alar->SetHealth(1);
510 }
511 }
512 toDie = true;
513 }
514 }
515
516 void UpdateAI(uint32 /*diff*/) override
517 {
518 if (!UpdateVictim())
519 return;
520
521 if (toDie)
522 {
523 me->KillSelf();
524 //me->SetVisibility(VISIBILITY_OFF);
525 }
526 }
527};
528
530{
531 npc_flame_patch_alar(Creature* creature) : ScriptedAI(creature) { }
532 void Reset() override { }
533 void JustEngagedWith(Unit* /*who*/) override { }
534 void AttackStart(Unit* /*who*/) override { }
535 void MoveInLineOfSight(Unit* /*who*/) override { }
536
537 void UpdateAI(uint32 /*diff*/) override { }
538};
539
540// 34229 - Flame Quills
542{
543 bool Validate(SpellInfo const* /*spellInfo*/) override
544 {
546 }
547
548 bool Load() override
549 {
551 }
552
553 void PeriodicTick(AuraEffect const* aurEff)
554 {
556
557 // cast 24 spells 34269-34289, 34314-34316
558 for (uint32 spellId : flameQuillsSpells)
559 GetTarget()->CastSpell(nullptr, spellId, aurEff);
560 }
561
562 void Register() override
563 {
565 }
566};
567
569{
574}
TC_GAME_API bool InstanceHasScript(WorldObject const *obj, char const *scriptName)
uint8_t uint8
Definition: Define.h:144
int8_t int8
Definition: Define.h:140
int32_t int32
Definition: Define.h:138
uint32_t uint32
Definition: Define.h:142
@ IN_PROGRESS
@ POINT_MOTION_TYPE
@ TEMPSUMMON_TIMED_DESPAWN
Definition: ObjectDefines.h:65
@ TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT
Definition: ObjectDefines.h:66
Spells
Definition: PlayerAI.cpp:32
uint32 urand(uint32 min, uint32 max)
Definition: Random.cpp:42
uint32 rand32()
Definition: Random.cpp:70
#define RegisterSpellScript(spell_script)
Definition: ScriptMgr.h:1369
@ EFFECT_0
Definition: SharedDefines.h:30
@ BASE_ATTACK
@ SPELL_AURA_PERIODIC_TRIGGER_SPELL
#define AuraEffectPeriodicFn(F, I, N)
Definition: SpellScript.h:2046
EvadeReason
Definition: UnitAICommon.h:30
@ MOVE_RUN
Definition: UnitDefines.h:118
@ UNIT_STAND_STATE_DEAD
Definition: UnitDefines.h:49
@ UNIT_STAND_STATE_STAND
Definition: UnitDefines.h:42
DamageEffectType
Definition: UnitDefines.h:131
@ UNIT_FLAG_NON_ATTACKABLE
Definition: UnitDefines.h:145
@ JUST_DIED
Definition: Unit.h:247
void AddSC_boss_alar()
Definition: boss_alar.cpp:568
uint32 const flameQuillsSpells[]
Definition: boss_alar.cpp:79
@ SPELL_DIVE_BOMB
Definition: boss_alar.cpp:44
@ SPELL_CHARGE
Definition: boss_alar.cpp:42
@ SPELL_REBIRTH
Definition: boss_alar.cpp:39
@ SPELL_FLAME_QUILLS
Definition: boss_alar.cpp:38
@ SPELL_FLAME_PATCH
Definition: boss_alar.cpp:51
@ CREATURE_FLAME_PATCH_ALAR
Definition: boss_alar.cpp:50
@ SPELL_REBIRTH_2
Definition: boss_alar.cpp:40
@ CREATURE_EMBER_OF_ALAR
Definition: boss_alar.cpp:47
@ SPELL_BERSERK
Definition: boss_alar.cpp:45
@ SPELL_DIVE_BOMB_VISUAL
Definition: boss_alar.cpp:43
@ SPELL_MELT_ARMOR
Definition: boss_alar.cpp:41
@ SPELL_FLAME_BUFFET
Definition: boss_alar.cpp:37
@ SPELL_EMBER_BLAST
Definition: boss_alar.cpp:48
WaitEventType
Definition: boss_alar.cpp:65
@ WE_REVIVE
Definition: boss_alar.cpp:71
@ WE_DUMMY
Definition: boss_alar.cpp:67
@ WE_LAND
Definition: boss_alar.cpp:75
@ WE_METEOR
Definition: boss_alar.cpp:73
@ WE_DIVE
Definition: boss_alar.cpp:74
@ WE_DIE
Definition: boss_alar.cpp:70
@ WE_NONE
Definition: boss_alar.cpp:66
@ WE_PLATFORM
Definition: boss_alar.cpp:68
@ WE_SUMMON
Definition: boss_alar.cpp:76
@ WE_QUILL
Definition: boss_alar.cpp:69
@ WE_CHARGE
Definition: boss_alar.cpp:72
static float waypoint[6][3]
Definition: boss_alar.cpp:54
void PreventDefaultAction()
HookList< EffectPeriodicHandler > OnEffectPeriodic
Definition: SpellScript.h:2045
Unit * GetTarget() const
Unit * GetUnitOwner() const
void JustEngagedWith(Unit *who) override
void DoZoneInCombat()
Definition: CreatureAI.h:161
virtual void EnterEvadeMode(EvadeReason why=EvadeReason::Other)
Definition: CreatureAI.cpp:219
bool UpdateVictim()
Definition: CreatureAI.cpp:245
void AttackStart(Unit *victim) override
== Triggered Actions Requested ==================
Definition: CreatureAI.cpp:328
Creature *const me
Definition: CreatureAI.h:61
void setDeathState(DeathState s) override
Definition: Creature.cpp:2197
void SetObjectScale(float scale) override
Definition: Creature.cpp:3391
bool IsEngaged() const override
Definition: Creature.cpp:3601
void SetTarget(ObjectGuid const &guid) override
Definition: Creature.cpp:3419
void SetDisplayId(uint32 displayId, bool setNative=false) override
Definition: Creature.cpp:3402
Unit * SelectNearestTargetInAttackDistance(float dist=0) const
Definition: Creature.cpp:2506
CreatureAI * AI() const
Definition: Creature.h:214
virtual ObjectGuid GetGuidData(uint32 type) const override
EncounterState GetBossState(uint32 id) const
void MovePoint(uint32 id, Position const &pos, bool generatePath=true, Optional< float > finalOrient={}, Optional< float > speed={}, MovementWalkRunSpeedSelectionMode speedSelectionMode=MovementWalkRunSpeedSelectionMode::Default, Optional< float > closeEnoughDistance={})
static ObjectGuid const Empty
Definition: ObjectGuid.h:274
float GetObjectScale() const
Definition: Object.h:164
uint32 GetEntry() const
Definition: Object.h:161
uint32 const Id
Definition: SpellInfo.h:325
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
Definition: SpellScript.h:162
SpellCastResult DoCastVictim(uint32 spellId, CastSpellExtraArgs const &args={})
Definition: UnitAI.cpp:180
Unit * SelectTarget(SelectTargetMethod targetType, uint32 offset=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
Definition: UnitAI.cpp:79
SpellCastResult DoCast(uint32 spellId)
Definition: UnitAI.cpp:89
Definition: Unit.h:627
bool IsWithinMeleeRange(Unit const *obj) const
Definition: Unit.h:699
void SetHealth(uint64 val)
Definition: Unit.cpp:9346
void SetFullHealth()
Definition: Unit.h:790
void SetStandState(UnitStandStateType state, uint32 animKitID=0)
Definition: Unit.cpp:10100
void SetFaction(uint32 faction) override
Definition: Unit.h:859
void InterruptNonMeleeSpells(bool withDelayed, uint32 spellid=0, bool withInstant=true)
Definition: Unit.cpp:3089
MotionMaster * GetMotionMaster()
Definition: Unit.h:1652
bool IsNonMeleeSpellCast(bool withDelayed, bool skipChanneled=false, bool skipAutorepeat=false, bool isAutoshoot=false, bool skipInstant=true) const
Definition: Unit.cpp:3059
void StopMoving()
Definition: Unit.cpp:10049
bool SetDisableGravity(bool disable, bool updateAnimTier=true)
Definition: Unit.cpp:12725
void SetUninteractible(bool apply)
Definition: Unit.cpp:8147
void SetBoundingRadius(float boundingRadius)
Definition: Unit.h:697
bool IsThreatened() const
Definition: Unit.cpp:8163
virtual bool UpdatePosition(float x, float y, float z, float ang, bool teleport=false)
Definition: Unit.cpp:12392
uint32 GetNativeDisplayId() const
Definition: Unit.h:1570
uint64 GetHealth() const
Definition: Unit.h:776
uint32 GetFaction() const override
Definition: Unit.h:858
void setAttackTimer(WeaponAttackType type, uint32 time)
Definition: Unit.h:687
float GetSpeedRate(UnitMoveType mtype) const
Definition: Unit.h:1644
Unit * GetVictim() const
Definition: Unit.h:715
void SetSpeedRate(UnitMoveType mtype, float rate)
Definition: Unit.cpp:8525
void SetLevel(uint8 lvl, bool sendUpdate=true)
Definition: Unit.cpp:9329
void RemoveAllAuras()
Definition: Unit.cpp:4242
void SetUnitFlag(UnitFlags flags)
Definition: Unit.h:833
bool isAttackReady(WeaponAttackType type=BASE_ATTACK) const
Definition: Unit.h:690
void KillSelf(bool durabilityLoss=true, bool skipSettingDeathState=false)
Definition: Unit.h:921
bool AttackStop()
Definition: Unit.cpp:5781
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Definition: Unit.cpp:3831
uint8 GetLevel() const
Definition: Unit.h:746
void RemoveUnitFlag(UnitFlags flags)
Definition: Unit.h:834
bool IsWithinDist3d(float x, float y, float z, float dist) const
Definition: Object.cpp:1122
InstanceScript * GetInstanceScript() const
Definition: Object.cpp:1042
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
Definition: Object.cpp:2896
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)
Definition: Object.cpp:2025
void setActive(bool isActiveObject)
Definition: Object.cpp:922
bool Load() override
Definition: boss_alar.cpp:548
void PeriodicTick(AuraEffect const *aurEff)
Definition: boss_alar.cpp:553
bool Validate(SpellInfo const *) override
Definition: boss_alar.cpp:543
void Register() override
Definition: boss_alar.cpp:562
TC_GAME_API Unit * GetUnit(WorldObject const &, ObjectGuid const &guid)
void AttackStart(Unit *) override
== Triggered Actions Requested ==================
void AttackStartNoMove(Unit *target)
Creature * DoSpawnCreature(uint32 entry, float offsetX, float offsetY, float offsetZ, float angle, uint32 type, Milliseconds despawntime)
void DamageTaken(Unit *, uint32 &damage, DamageEffectType, SpellInfo const *) override
Definition: boss_alar.cpp:192
bool AfterMoving
Definition: boss_alar.cpp:137
void MoveInLineOfSight(Unit *) override
Definition: boss_alar.cpp:182
bool Phase1
Definition: boss_alar.cpp:148
boss_alar(Creature *creature)
Definition: boss_alar.cpp:109
uint32 DiveBomb_Timer
Definition: boss_alar.cpp:140
uint32 Platforms_Move_Timer
Definition: boss_alar.cpp:139
void Reset() override
Definition: boss_alar.cpp:154
WaitEventType WaitEvent
Definition: boss_alar.cpp:134
void MovementInform(uint32 type, uint32) override
Definition: boss_alar.cpp:223
void JustSummoned(Creature *summon) override
Definition: boss_alar.cpp:175
bool ForceMove
Definition: boss_alar.cpp:149
void Initialize()
Definition: boss_alar.cpp:119
float DefaultMoveSpeedRate
Definition: boss_alar.cpp:146
void AttackStart(Unit *who) override
== Triggered Actions Requested ==================
Definition: boss_alar.cpp:184
void UpdateAI(uint32 diff) override
Definition: boss_alar.cpp:233
uint32 MeltArmor_Timer
Definition: boss_alar.cpp:141
uint32 Charge_Timer
Definition: boss_alar.cpp:142
uint32 WaitTimer
Definition: boss_alar.cpp:135
uint32 FlamePatch_Timer
Definition: boss_alar.cpp:143
uint32 ForceTimer
Definition: boss_alar.cpp:150
uint32 Berserk_Timer
Definition: boss_alar.cpp:144
void SpellHit(WorldObject *, SpellInfo const *spellInfo) override
Definition: boss_alar.cpp:214
int8 cur_wp
Definition: boss_alar.cpp:152
void JustEngagedWith(Unit *who) override
Definition: boss_alar.cpp:168
void UpdateAI(uint32) override
Definition: boss_alar.cpp:516
void Reset() override
Definition: boss_alar.cpp:478
void JustEngagedWith(Unit *) override
Definition: boss_alar.cpp:483
InstanceScript * instance
Definition: boss_alar.cpp:475
void DamageTaken(Unit *killer, uint32 &damage, DamageEffectType, SpellInfo const *) override
Definition: boss_alar.cpp:493
void EnterEvadeMode(EvadeReason) override
Definition: boss_alar.cpp:488
npc_ember_of_alar(Creature *creature)
Definition: boss_alar.cpp:463
void Reset() override
Definition: boss_alar.cpp:532
void JustEngagedWith(Unit *) override
Definition: boss_alar.cpp:533
void MoveInLineOfSight(Unit *) override
Definition: boss_alar.cpp:535
npc_flame_patch_alar(Creature *creature)
Definition: boss_alar.cpp:531
void UpdateAI(uint32) override
Definition: boss_alar.cpp:537
void AttackStart(Unit *) override
== Triggered Actions Requested ==================
Definition: boss_alar.cpp:534
#define TheEyeScriptName
Definition: the_eye.h:23
#define RegisterTheEyeCreatureAI(ai_name)
Definition: the_eye.h:74
@ DATA_ALAR
Definition: the_eye.h:31