diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Outland/BlackTemple/black_temple.h | 4 | ||||
-rw-r--r-- | src/server/scripts/Outland/BlackTemple/boss_illidan.cpp | 50 |
2 files changed, 51 insertions, 3 deletions
diff --git a/src/server/scripts/Outland/BlackTemple/black_temple.h b/src/server/scripts/Outland/BlackTemple/black_temple.h index a4a8f6913e9..adff4d2e618 100644 --- a/src/server/scripts/Outland/BlackTemple/black_temple.h +++ b/src/server/scripts/Outland/BlackTemple/black_temple.h @@ -106,7 +106,9 @@ enum BTCreatureIds NPC_GLAIVE_TARGET = 23448, NPC_GLAIVE_WORLD_TRIGGER = 22515, NPC_DEMON_FIRE = 23069, - NPC_PARASITIC_SHADOWFIEND = 23498 + NPC_PARASITIC_SHADOWFIEND = 23498, + NPC_BLAZE = 23259, + NPC_FLAME_CRASH = 23336 }; enum BTGameObjectIds diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp index 2584e48df69..71753c34ddc 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp @@ -189,7 +189,16 @@ enum IllidanSpells SPELL_CAGED_TRAP_TELEPORT = 40693, SPELL_CAGE_TRAP = 40760, SPELL_CAGED_DEBUFF = 40695, - SPELL_EYE_BLAST = 39908 + SPELL_EYE_BLAST = 39908, + + // Blaze + SPELL_BLAZE = 40610, + + // Demon Fire + SPELL_DEMON_FIRE = 40029, + + // Flame Crash + SPELL_FLAME_CRASH_GROUND = 40836 }; enum IllidanMisc @@ -1375,7 +1384,7 @@ struct npc_parasitic_shadowfiend : public ScriptedAI if (Creature* illidan = _instance->GetCreature(DATA_ILLIDAN_STORMRAGE)) illidan->AI()->JustSummoned(me); - me->SetReactState(REACT_DEFENSIVE); + me->SetReactState(REACT_PASSIVE); _scheduler.Schedule(Seconds(2), [this](TaskContext /*context*/) { me->SetReactState(REACT_AGGRESSIVE); @@ -1797,6 +1806,42 @@ private: InstanceScript* _instance; }; +struct npc_illidan_generic_fire : public ScriptedAI +{ + npc_illidan_generic_fire(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) + { + SetCombatMovement(false); + } + + void Reset() override + { + if (Creature* illidan = _instance->GetCreature(DATA_ILLIDAN_STORMRAGE)) + illidan->AI()->JustSummoned(me); + + me->SetReactState(REACT_PASSIVE); + switch (me->GetEntry()) + { + case NPC_DEMON_FIRE: + DoCastSelf(SPELL_DEMON_FIRE, true); + break; + case NPC_BLAZE: + DoCastSelf(SPELL_BLAZE, true); + DoCastSelf(SPELL_BIRTH, true); + break; + case NPC_FLAME_CRASH: + DoCastSelf(SPELL_FLAME_CRASH_GROUND, true); + break; + default: + break; + } + } + + void UpdateAI(uint32 /*diff*/) override { } + +private: + InstanceScript* _instance; +}; + // 41077 - Akama Teleport class spell_illidan_akama_teleport : public SpellScript { @@ -2299,6 +2344,7 @@ void AddSC_boss_illidan() RegisterBlackTempleCreatureAI(npc_shadow_demon); RegisterBlackTempleCreatureAI(npc_cage_trap_trigger); RegisterBlackTempleCreatureAI(npc_illidari_elite); + RegisterBlackTempleCreatureAI(npc_illidan_generic_fire); RegisterSpellScript(spell_illidan_akama_teleport); RegisterAuraScript(spell_illidan_akama_door_channel); RegisterSpellScript(spell_illidan_draw_soul); |