TrinityCore
boss_muru.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#include "ScriptMgr.h"
19#include "InstanceScript.h"
20#include "ObjectAccessor.h"
21#include "ScriptedCreature.h"
22#include "SpellAuraEffects.h"
23#include "SpellScript.h"
24#include "sunwell_plateau.h"
25
27{
28 // Muru's spells
37 SPELL_ENRAGE = 26662,
50
51 // Entropius's spells
57
58 // Myruu's Portal Target
67
68 //Dark Fiend Spells
72
73 // Void Sentinel's spells
76
77 //Black Hole Spells
82};
83
85{
87 PHASE_TWO = 2
88};
89
90enum Misc
91{
95};
96
98{
107};
108
110{
115};
116
118{
119 public:
120 explicit VoidSpawnSummon(Creature* owner)
121 : _owner(owner)
122 {
123 }
124
125 bool Execute(uint64 /*time*/, uint32 /*diff*/)
126 {
128 return true;
129 }
130
131 private:
133};
134
135struct boss_entropius : public BossAI
136{
137 boss_entropius(Creature* creature) : BossAI(creature, DATA_MURU) { }
138
139 void Reset() override
140 {
141 _Reset();
143 }
144
145 void ScheduleTasks() override
146 {
147 scheduler.Schedule(Milliseconds(2000), [this](TaskContext /*context*/)
148 {
151 });
152
153 scheduler.Schedule(Seconds(15), [this](TaskContext context)
154 {
157
158 context.Repeat();
159 });
160 }
161
162 void JustSummoned(Creature* summon) override
163 {
164 switch (summon->GetEntry())
165 {
166 case NPC_DARK_FIENDS:
167 summon->CastSpell(summon, SPELL_DARKFIEND_VISUAL);
168 break;
169 case NPC_DARKNESS:
171 summon->CastSpell(summon, SPELL_BLACKHOLE);
172 summon->CastSpell(summon, SPELL_SUMMON_DARKFIEND_E, true);
173 break;
174 }
175 summons.Summon(summon);
176 }
177
178 void EnterEvadeMode(EvadeReason /*why*/) override
179 {
181 muru->AI()->EnterEvadeMode();
182
186 }
187
188 void JustDied(Unit* /*killer*/) override
189 {
190 _JustDied();
191
193 muru->DisappearAndDie();
194 }
195
196 void UpdateAI(uint32 diff) override
197 {
198 if (!UpdateVictim())
199 return;
200
201 scheduler.Update(diff);
202 }
203
205 {
206 std::list<Creature*> portals;
208 for (Creature* portal : portals)
209 portal->RemoveAllAuras();
210 }
211};
212
213struct boss_muru : public BossAI
214{
215 boss_muru(Creature* creature) : BossAI(creature, DATA_MURU)
216 {
217 Initialize();
218 SetCombatMovement(false);
219 }
220
222 {
223 _hasEnraged = false;
226 }
227
228 void Reset() override
229 {
230 _Reset();
231 Initialize();
232 me->SetUninteractible(false);
233 me->SetVisible(true);
234 }
235
236 void EnterEvadeMode(EvadeReason /*why*/) override
237 {
240 entropius->AI()->EnterEvadeMode();
241 }
242
243 void ScheduleTasks() override
244 {
245 scheduler.Schedule(Minutes(10), [this](TaskContext /*context*/)
246 {
248 entropius->CastSpell(entropius, SPELL_ENRAGE);
250 _hasEnraged = true;
251 });
252
253 scheduler.Schedule(Seconds(10), [this](TaskContext /*context*/)
254 {
257 });
258 }
259
260 void JustEngagedWith(Unit* who) override
261 {
266 }
267
268 void DamageTaken(Unit* /*done_by*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
269 {
270 if (damage >= me->GetHealth())
271 {
272 damage = me->GetHealth() - 1;
273 if (_phase != PHASE_ONE)
274 return;
275
279 me->SetUninteractible(true);
280
281 scheduler.Schedule(Seconds(6), [this](TaskContext /*context*/)
282 {
284 });
285 }
286 }
287
288 void JustSummoned(Creature* summon) override
289 {
290 if (summon->GetEntry() == NPC_ENTROPIUS)
291 {
292 me->SetVisible(false);
293 _entropiusGUID = summon->GetGUID();
294 DoZoneInCombat(summon);
295 if (_hasEnraged)
296 summon->CastSpell(summon, SPELL_ENRAGE, true);
297 return;
298 }
299 BossAI::JustSummoned(summon);
300 }
301
302 void UpdateAI(uint32 diff) override
303 {
304 if (!UpdateVictim())
305 return;
306
307 scheduler.Update(diff);
308 }
309
310private:
314};
315
317{
318 npc_muru_portal(Creature* creature) : ScriptedAI(creature) { }
319
320 void JustSummoned(Creature* summon) override
321 {
323
324 summon->m_Events.AddEvent(new VoidSpawnSummon(summon), summon->m_Events.CalculateTime(1500ms));
325 }
326
327 void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
328 {
329 switch (spellInfo->Id)
330 {
334 break;
337 _scheduler.Schedule(Seconds(6), [this](TaskContext /*context*/)
338 {
340 });
341 break;
342 default:
343 break;
344 }
345 }
346
347 void UpdateAI(uint32 diff) override
348 {
349 _scheduler.Update(diff);
350 }
351
352private:
354};
355
357{
358 npc_dark_fiend(Creature* creature) : ScriptedAI(creature)
359 {
360 Initialize();
361 }
362
364 {
368
369 _scheduler.Schedule(Seconds(2), [this](TaskContext /*context*/)
370 {
372 me->SetUninteractible(false);
373
375 if (Unit* target = _summoner->AI()->SelectTarget(SelectTargetMethod::Random, 0))
376 AttackStart(target);
377 });
378
379 _scheduler.Schedule(Seconds(3), [this](TaskContext context)
380 {
382 {
383 DoCastAOE(SPELL_DARKFIEND_DAMAGE, false);
384 me->DisappearAndDie();
385 }
386
387 context.Repeat(Milliseconds(500));
388 });
389 }
390
391 void IsSummonedBy(WorldObject* summoner) override
392 {
393 _summonerGUID = summoner->GetGUID();
394 }
395
396 bool CanAIAttack(Unit const* /*target*/) const override
397 {
399 }
400
401 void UpdateAI(uint32 diff) override
402 {
403 _scheduler.Update(diff);
404 }
405
406private:
409};
410
412{
413 npc_void_sentinel(Creature* creature) : ScriptedAI(creature)
414 {
416 }
417
418 void IsSummonedBy(WorldObject* /*summoner*/) override
419 {
421 muru->AI()->JustSummoned(me);
422 }
423
424 void JustEngagedWith(Unit* /*who*/) override
425 {
427
428 _scheduler.Schedule(Seconds(45), [this](TaskContext context)
429 {
431
432 context.Repeat();
433 });
434 }
435
436 void JustDied(Unit* /*killer*/) override
437 {
438 for (uint8 i = 0; i < MAX_VOID_SPAWNS; ++i)
440 }
441
442 void UpdateAI(uint32 diff) override
443 {
444 _scheduler.Update(diff);
445 }
446
447private:
450};
451
453{
454 npc_blackhole(Creature* creature) : ScriptedAI(creature)
455 {
456 _instance = creature->GetInstanceScript();
457 }
458
459 void Reset() override
460 {
463
464 _scheduler.Schedule(Seconds(15), [this](TaskContext /*context*/)
465 {
467 });
468
469 _scheduler.Schedule(Seconds(1), [this](TaskContext context)
470 {
471 switch (context.GetRepeatCounter())
472 {
473 case 0:
474 me->SetReactState(REACT_AGGRESSIVE);
475 DoCast(SPELL_BLACKHOLE_SUMMON_VISUAL_2);
476 if (Unit* victim = ObjectAccessor::GetUnit(*me, _instance->GetGuidData(DATA_PLAYER_GUID)))
477 AttackStart(victim);
478 context.Repeat(Milliseconds(1200));
479 break;
480 case 1:
481 DoCast(SPELL_BLACKHOLE_SUMMON_VISUAL);
482 context.Repeat(Seconds(2));
483 break;
484 case 2:
485 DoCast(SPELL_BLACKHOLE_PASSIVE);
486 DoCast(SPELL_BLACK_HOLE_VISUAL_2);
487 break;
488 default:
489 break;
490 }
491 });
492 }
493
494 void UpdateAI(uint32 diff) override
495 {
496 _scheduler.Update(diff);
497 }
498
499private:
502};
503
504// 46050 - Summon Blood Elves Script
506{
507 bool Validate(SpellInfo const* /*spell*/) override
508 {
510 }
511
512 void HandleScript(SpellEffIndex /*effIndex*/)
513 {
514 for (uint8 i = 0; i < MAX_SUMMON_BLOOD_ELVES; ++i)
515 GetCaster()->CastSpell(nullptr, SummonBloodElvesSpells[urand(0,3)], true);
516 }
517
518 void Register() override
519 {
521 }
522};
523
524// 45996 - Darkness
526{
527 bool Validate(SpellInfo const* /*spell*/) override
528 {
530 }
531
533 {
534 for (uint8 i = 0; i < MAX_SUMMON_DARK_FIEND; ++i)
535 GetCaster()->CastSpell(nullptr, SummonDarkFiendSpells[i], true);
536 }
537
538 void Register() override
539 {
541 }
542};
543
544// 45934 - Dark Fiend
546{
547 void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
548 {
549 if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_ENEMY_SPELL)
550 return;
551
552 if (Creature* target = GetTarget()->ToCreature())
553 {
554 target->SetReactState(REACT_PASSIVE);
555 target->AttackStop();
556 target->StopMoving();
557 target->CastSpell(target, SPELL_DARKFIEND_VISUAL, true);
558 target->DespawnOrUnsummon(3s);
559 }
560 }
561
562 void Register() override
563 {
565 }
566};
567
568// 46205 - Transform Visual Missile Periodic
570{
571 void OnPeriodic(AuraEffect const* /*aurEff*/)
572 {
574 }
575
576 void Register() override
577 {
579 }
580};
581
582// 46041 - Summon Blood Elves Periodic
584{
585 void OnPeriodic(AuraEffect const* /*aurEff*/)
586 {
588 }
589
590 void Register() override
591 {
593 }
594};
595
596// 46284 - Negative Energy Periodic
598{
599 bool Validate(SpellInfo const* spellInfo) override
600 {
601 return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo({ spellInfo->GetEffect(EFFECT_0).TriggerSpell });
602 }
603
604 void PeriodicTick(AuraEffect const* aurEff)
605 {
607
608 CastSpellExtraArgs args(aurEff);
609 args.AddSpellMod(SPELLVALUE_MAX_TARGETS, aurEff->GetTickNumber() / 10 + 1);
610 GetTarget()->CastSpell(nullptr, aurEff->GetSpellEffectInfo().TriggerSpell, args);
611 }
612
613 void Register() override
614 {
616 }
617};
618
620{
633}
First const & RAND(First const &first, Second const &second, Rest const &... rest)
uint8_t uint8
Definition: Define.h:144
uint64_t uint64
Definition: Define.h:141
uint32_t uint32
Definition: Define.h:142
std::chrono::seconds Seconds
Seconds shorthand typedef.
Definition: Duration.h:32
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
Definition: Duration.h:29
std::chrono::minutes Minutes
Minutes shorthand typedef.
Definition: Duration.h:35
Spells
Definition: PlayerAI.cpp:32
uint32 urand(uint32 min, uint32 max)
Definition: Random.cpp:42
#define RegisterSpellScript(spell_script)
Definition: ScriptMgr.h:1369
SpellEffIndex
Definition: SharedDefines.h:29
@ EFFECT_0
Definition: SharedDefines.h:30
@ SPELL_EFFECT_SCRIPT_EFFECT
AuraEffectHandleModes
@ AURA_EFFECT_HANDLE_REAL
@ AURA_REMOVE_BY_ENEMY_SPELL
@ SPELL_AURA_DUMMY
@ SPELL_AURA_PERIODIC_DUMMY
@ SPELL_AURA_PERIODIC_TRIGGER_SPELL
@ SPELLVALUE_MAX_TARGETS
Definition: SpellDefines.h:230
#define SpellEffectFn(F, I, N)
Definition: SpellScript.h:842
#define AuraEffectPeriodicFn(F, I, N)
Definition: SpellScript.h:2046
#define SpellCastFn(F)
Definition: SpellScript.h:825
#define AuraEffectRemoveFn(F, I, N, M)
Definition: SpellScript.h:2040
EvadeReason
Definition: UnitAICommon.h:30
@ REACT_PASSIVE
Definition: UnitDefines.h:506
@ REACT_AGGRESSIVE
Definition: UnitDefines.h:508
DamageEffectType
Definition: UnitDefines.h:131
@ MAX_SUMMON_DARK_FIEND
Definition: boss_muru.cpp:94
@ MAX_VOID_SPAWNS
Definition: boss_muru.cpp:92
@ MAX_SUMMON_BLOOD_ELVES
Definition: boss_muru.cpp:93
@ SPELL_OPEN_PORTAL_PERIODIC
Definition: boss_muru.cpp:29
@ SPELL_DARKNESS_E
Definition: boss_muru.cpp:53
@ SPELL_ENTROPIUS_COSMETIC_SPAWN
Definition: boss_muru.cpp:52
@ SPELL_SUMMON_DARKFIEND_E
Definition: boss_muru.cpp:56
@ SPELL_SUMMON_DARK_FIEND_1
Definition: boss_muru.cpp:39
@ SPELL_ENRAGE
Definition: boss_muru.cpp:37
@ SPELL_VOID_BLAST
Definition: boss_muru.cpp:75
@ SPELL_SUMMON_ENTROPIUS
Definition: boss_muru.cpp:36
@ TRANSFORM_VISUAL_MISSILE_2
Definition: boss_muru.cpp:64
@ SPELL_BLACKHOLE_PASSIVE
Definition: boss_muru.cpp:80
@ SPELL_SUMMON_VOID_SENTINEL_SUMMONER
Definition: boss_muru.cpp:59
@ SPELL_SUMMON_BLOOD_ELVES_SCRIPT
Definition: boss_muru.cpp:33
@ SPELL_NEGATIVE_ENERGY_PERIODIC
Definition: boss_muru.cpp:31
@ SPELL_DARKFIEND_DAMAGE
Definition: boss_muru.cpp:69
@ SPELL_SUMMON_DARK_FIEND_3
Definition: boss_muru.cpp:41
@ SPELL_OPEN_PORTAL_2
Definition: boss_muru.cpp:66
@ SPELL_SUMMON_DARK_FIEND_6
Definition: boss_muru.cpp:44
@ SPELL_BLACKHOLE
Definition: boss_muru.cpp:55
@ SPELL_DARKNESS_PERIODIC
Definition: boss_muru.cpp:30
@ SPELL_SUMMON_FURY_MAGE_2
Definition: boss_muru.cpp:49
@ TRANSFORM_VISUAL_MISSILE_1
Definition: boss_muru.cpp:63
@ SPELL_BLACK_HOLE_VISUAL_2
Definition: boss_muru.cpp:81
@ SPELL_SUMMON_BLOOD_ELVES_PERIODIC
Definition: boss_muru.cpp:34
@ SPELL_OPEN_ALL_PORTALS
Definition: boss_muru.cpp:35
@ SPELL_SUMMON_VOID_SENTINEL
Definition: boss_muru.cpp:61
@ SPELL_BLACKHOLE_SUMMON_VISUAL_2
Definition: boss_muru.cpp:79
@ SPELL_SUMMON_FURY_MAGE
Definition: boss_muru.cpp:48
@ SPELL_OPEN_PORTAL
Definition: boss_muru.cpp:65
@ SPELL_SUMMON_DARK_FIEND_7
Definition: boss_muru.cpp:45
@ SPELL_SUMMON_BERSERKER_2
Definition: boss_muru.cpp:47
@ SPELL_SUMMON_VOID_SENTINEL_SUMMONER_VISUAL
Definition: boss_muru.cpp:60
@ SPELL_NEGATIVE_ENERGY_PERIODIC_E
Definition: boss_muru.cpp:54
@ SPELL_SUMMON_VOID_SPAWN
Definition: boss_muru.cpp:32
@ SPELL_SUMMON_DARK_FIEND_5
Definition: boss_muru.cpp:43
@ SPELL_TRANSFORM_VISUAL_MISSILE
Definition: boss_muru.cpp:62
@ SPELL_SUMMON_DARK_FIEND_4
Definition: boss_muru.cpp:42
@ SPELL_SUMMON_BERSERKER
Definition: boss_muru.cpp:46
@ SPELL_SHADOW_PULSE_PERIODIC
Definition: boss_muru.cpp:74
@ SPELL_DARKFIEND_VISUAL
Definition: boss_muru.cpp:70
@ SPELL_DARKFIEND_SKIN
Definition: boss_muru.cpp:71
@ SPELL_SUMMON_DARK_FIEND_2
Definition: boss_muru.cpp:40
@ SPELL_SUMMON_DARK_FIEND_0
Definition: boss_muru.cpp:38
@ SPELL_BLACKHOLE_SUMMON_VISUAL
Definition: boss_muru.cpp:78
@ PHASE_ONE
Definition: boss_muru.cpp:86
@ PHASE_TWO
Definition: boss_muru.cpp:87
void AddSC_boss_muru()
Definition: boss_muru.cpp:619
uint32 const SummonDarkFiendSpells[MAX_SUMMON_DARK_FIEND]
Definition: boss_muru.cpp:97
uint32 const SummonBloodElvesSpells[MAX_SUMMON_BLOOD_ELVES]
Definition: boss_muru.cpp:109
uint32 GetTickNumber() const
SpellEffectInfo const & GetSpellEffectInfo() const
void PreventDefaultAction()
AuraApplication const * GetTargetApplication() const
HookList< EffectApplyHandler > AfterEffectRemove
Definition: SpellScript.h:2039
HookList< EffectPeriodicHandler > OnEffectPeriodic
Definition: SpellScript.h:2045
Unit * GetTarget() const
InstanceScript *const instance
void JustEngagedWith(Unit *who) override
void JustSummoned(Creature *summon) override
TaskScheduler scheduler
SummonList summons
void _JustDied()
void DoZoneInCombat()
Definition: CreatureAI.h:161
virtual void EnterEvadeMode(EvadeReason why=EvadeReason::Other)
Definition: CreatureAI.cpp:219
bool UpdateVictim()
Definition: CreatureAI.cpp:245
Creature *const me
Definition: CreatureAI.h:61
void SetDisplayFromModel(uint32 modelIdx)
Definition: Creature.cpp:3413
void SetReactState(ReactStates st)
Definition: Creature.h:160
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
Definition: Creature.cpp:2415
void DisappearAndDie()
Definition: Creature.h:83
void AddEvent(BasicEvent *event, Milliseconds e_time, bool set_addtime=true)
Milliseconds CalculateTime(Milliseconds t_offset) const
Creature * GetCreature(uint32 type)
void Clear()
Definition: ObjectGuid.h:286
uint32 GetEntry() const
Definition: Object.h:161
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:159
uint32 TriggerSpell
Definition: SpellInfo.h:237
uint32 const Id
Definition: SpellInfo.h:325
SpellEffectInfo const & GetEffect(SpellEffIndex index) const
Definition: SpellInfo.h:577
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
Definition: SpellScript.h:162
static bool ValidateSpellEffect(std::initializer_list< std::pair< uint32, SpellEffIndex > > effects)
Definition: SpellScript.h:173
HookList< CastHandler > AfterCast
Definition: SpellScript.h:824
Unit * GetCaster() const
HookList< EffectHandler > OnEffectHitTarget
Definition: SpellScript.h:840
void Summon(Creature const *summon)
TaskContext & Repeat(std::chrono::duration< Rep, Period > duration)
TaskScheduler::repeated_t GetRepeatCounter() const
Returns the repeat counter which increases every time the task is repeated.
TaskScheduler & Schedule(std::chrono::duration< Rep, Period > time, task_handler_t task)
TaskScheduler & Update(success_t const &callback=nullptr)
SpellCastResult DoCastVictim(uint32 spellId, CastSpellExtraArgs const &args={})
Definition: UnitAI.cpp:180
SpellCastResult DoCastAOE(uint32 spellId, CastSpellExtraArgs const &args={})
Definition: UnitAI.h:161
SpellCastResult DoCast(uint32 spellId)
Definition: UnitAI.cpp:89
Definition: Unit.h:627
void SetVisible(bool x)
Definition: Unit.cpp:8351
void SetUninteractible(bool apply)
Definition: Unit.cpp:8147
uint64 GetHealth() const
Definition: Unit.h:776
Unit * GetVictim() const
Definition: Unit.h:715
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
Definition: Unit.cpp:4664
void RemoveAllAuras()
Definition: Unit.cpp:4242
Creature * _owner
Definition: boss_muru.cpp:132
VoidSpawnSummon(Creature *owner)
Definition: boss_muru.cpp:120
bool Execute(uint64, uint32)
Definition: boss_muru.cpp:125
InstanceScript * GetInstanceScript() const
Definition: Object.cpp:1042
void GetCreatureListWithEntryInGrid(Container &creatureContainer, uint32 entry, float maxSearchRange=250.0f) const
Definition: Object.cpp:3312
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
Definition: Object.cpp:2896
EventProcessor m_Events
Definition: Object.h:777
bool IsWithinDist(WorldObject const *obj, float dist2compare, bool is3D=true, bool incOwnRadius=true, bool incTargetRadius=true) const
Definition: Object.cpp:1142
void Register() override
Definition: boss_muru.cpp:562
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
Definition: boss_muru.cpp:547
void Register() override
Definition: boss_muru.cpp:538
bool Validate(SpellInfo const *) override
Definition: boss_muru.cpp:527
void PeriodicTick(AuraEffect const *aurEff)
Definition: boss_muru.cpp:604
bool Validate(SpellInfo const *spellInfo) override
Definition: boss_muru.cpp:599
void OnPeriodic(AuraEffect const *)
Definition: boss_muru.cpp:585
bool Validate(SpellInfo const *) override
Definition: boss_muru.cpp:507
void HandleScript(SpellEffIndex)
Definition: boss_muru.cpp:512
void OnPeriodic(AuraEffect const *)
Definition: boss_muru.cpp:571
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
CastSpellExtraArgs & AddSpellMod(SpellValueMod mod, int32 val)
Definition: SpellDefines.h:474
void AttackStart(Unit *) override
== Triggered Actions Requested ==================
void SetCombatMovement(bool allowMovement)
void ScheduleTasks() override
Definition: boss_muru.cpp:145
void JustSummoned(Creature *summon) override
Definition: boss_muru.cpp:162
boss_entropius(Creature *creature)
Definition: boss_muru.cpp:137
void DoResetPortals()
Definition: boss_muru.cpp:204
void UpdateAI(uint32 diff) override
Definition: boss_muru.cpp:196
void EnterEvadeMode(EvadeReason) override
Definition: boss_muru.cpp:178
void Reset() override
Definition: boss_muru.cpp:139
void JustDied(Unit *) override
Definition: boss_muru.cpp:188
void Reset() override
Definition: boss_muru.cpp:228
void JustEngagedWith(Unit *who) override
Definition: boss_muru.cpp:260
bool _hasEnraged
Definition: boss_muru.cpp:312
void Initialize()
Definition: boss_muru.cpp:221
ObjectGuid _entropiusGUID
Definition: boss_muru.cpp:311
boss_muru(Creature *creature)
Definition: boss_muru.cpp:215
void JustSummoned(Creature *summon) override
Definition: boss_muru.cpp:288
void UpdateAI(uint32 diff) override
Definition: boss_muru.cpp:302
uint8 _phase
Definition: boss_muru.cpp:313
void DamageTaken(Unit *, uint32 &damage, DamageEffectType, SpellInfo const *) override
Definition: boss_muru.cpp:268
void ScheduleTasks() override
Definition: boss_muru.cpp:243
void EnterEvadeMode(EvadeReason) override
Definition: boss_muru.cpp:236
npc_blackhole(Creature *creature)
Definition: boss_muru.cpp:454
void UpdateAI(uint32 diff) override
Definition: boss_muru.cpp:494
InstanceScript * _instance
Definition: boss_muru.cpp:501
TaskScheduler _scheduler
Definition: boss_muru.cpp:500
void Reset() override
Definition: boss_muru.cpp:459
void IsSummonedBy(WorldObject *summoner) override
Definition: boss_muru.cpp:391
TaskScheduler _scheduler
Definition: boss_muru.cpp:407
bool CanAIAttack(Unit const *) const override
Definition: boss_muru.cpp:396
void Initialize()
Definition: boss_muru.cpp:363
npc_dark_fiend(Creature *creature)
Definition: boss_muru.cpp:358
void UpdateAI(uint32 diff) override
Definition: boss_muru.cpp:401
ObjectGuid _summonerGUID
Definition: boss_muru.cpp:408
void JustSummoned(Creature *summon) override
Definition: boss_muru.cpp:320
TaskScheduler _scheduler
Definition: boss_muru.cpp:353
npc_muru_portal(Creature *creature)
Definition: boss_muru.cpp:318
void UpdateAI(uint32 diff) override
Definition: boss_muru.cpp:347
void SpellHit(WorldObject *, SpellInfo const *spellInfo) override
Definition: boss_muru.cpp:327
void UpdateAI(uint32 diff) override
Definition: boss_muru.cpp:442
void IsSummonedBy(WorldObject *) override
Definition: boss_muru.cpp:418
npc_void_sentinel(Creature *creature)
Definition: boss_muru.cpp:413
TaskScheduler _scheduler
Definition: boss_muru.cpp:448
void JustDied(Unit *) override
Definition: boss_muru.cpp:436
void JustEngagedWith(Unit *) override
Definition: boss_muru.cpp:424
InstanceScript * _instance
Definition: boss_muru.cpp:449
#define RegisterSunwellPlateauCreatureAI(ai_name)
@ DATA_MURU
@ NPC_DARK_FIENDS
@ NPC_DARKNESS
@ NPC_MURU_PORTAL_TARGET
@ NPC_ENTROPIUS