diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Outland/TempestKeep/arcatraz/boss_zereketh_the_unbound.cpp | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_zereketh_the_unbound.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_zereketh_the_unbound.cpp index bc6793779f2..ca22bda6fbe 100644 --- a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_zereketh_the_unbound.cpp +++ b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_zereketh_the_unbound.cpp @@ -17,6 +17,8 @@ #include "ScriptMgr.h" #include "ScriptedCreature.h" +#include "SpellInfo.h" +#include "SpellMgr.h" #include "arcatraz.h" enum ZerekethTexts @@ -49,12 +51,22 @@ struct boss_zereketh_the_unbound : public BossAI void JustEngagedWith(Unit* who) override { BossAI::JustEngagedWith(who); - events.ScheduleEvent(EVENT_VOID_ZONE, 6s, 10s); - events.ScheduleEvent(EVENT_SHADOW_NOVA, 6s, 10s); - events.ScheduleEvent(EVENT_SEED_OF_CORRUPTION, 12s, 20s); + events.ScheduleEvent(EVENT_VOID_ZONE, 10s, 15s); + events.ScheduleEvent(EVENT_SHADOW_NOVA, 15s, 20s); + events.ScheduleEvent(EVENT_SEED_OF_CORRUPTION, 5s, 10s); Talk(SAY_AGGRO); } + void OnSpellCast(SpellInfo const* spell) override + { + if (spell->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_SHADOW_NOVA, me)) + if (roll_chance_i(50)) + Talk(SAY_SHADOW_NOVA); + } + + // Do not despawn Void Zone + void JustSummoned(Creature* /*summon*/) override { } + void KilledUnit(Unit* /*victim*/) override { Talk(SAY_SLAY); @@ -81,19 +93,18 @@ struct boss_zereketh_the_unbound : public BossAI switch (eventId) { case EVENT_VOID_ZONE: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 100, true)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) DoCast(target, SPELL_VOID_ZONE); - events.Repeat(6s, 10s); + events.Repeat(15s); break; case EVENT_SHADOW_NOVA: - DoCastVictim(SPELL_SHADOW_NOVA); - Talk(SAY_SHADOW_NOVA); - events.Repeat(6s, 10s); + DoCastSelf(SPELL_SHADOW_NOVA); + events.Repeat(15s, 20s); break; case EVENT_SEED_OF_CORRUPTION: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 100, true)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) DoCast(target, SPELL_SEED_OF_CORRUPTION); - events.Repeat(12s, 20s); + events.Repeat(15s, 20s); break; default: break; |