diff options
-rw-r--r-- | src/server/scripts/Outland/TempestKeep/arcatraz/boss_dalliah_the_doomsayer.cpp | 48 | ||||
-rw-r--r-- | src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp | 44 |
2 files changed, 85 insertions, 7 deletions
diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_dalliah_the_doomsayer.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_dalliah_the_doomsayer.cpp index 20cfb2f07f8..eacd5b3835e 100644 --- a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_dalliah_the_doomsayer.cpp +++ b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_dalliah_the_doomsayer.cpp @@ -17,8 +17,8 @@ /* ScriptData SDName: boss_dalliah_the_doomsayer -SD%Complete: 95% -SDComment: soccothrates death left to script +SD%Complete: 100% +SDComment: SDCategory: Tempest Keep, The Arcatraz EndScriptData */ @@ -33,7 +33,7 @@ enum Say SAY_WHIRLWIND = 3, SAY_HEAL = 4, SAY_DEATH = 5, - SAY_SOCCOTHRATES_DEATH = 7, // To be scripted + SAY_SOCCOTHRATES_DEATH = 7, // boss_wrath_scryer_soccothrates SAY_AGGRO_DALLIAH_FIRST = 0, @@ -54,7 +54,8 @@ enum Events EVENT_WHIRLWIND = 2, EVENT_HEAL = 3, EVENT_SHADOW_WAVE = 4, // Heroic only - EVENT_ME_FIRST = 5 + EVENT_ME_FIRST = 5, + EVENT_SOCCOTHRATES_DEATH = 6 }; class boss_dalliah_the_doomsayer : public CreatureScript @@ -69,12 +70,17 @@ class boss_dalliah_the_doomsayer : public CreatureScript void Reset() OVERRIDE { _Reset(); + soccothratesDeath = false; } void JustDied(Unit* /*killer*/) OVERRIDE { _JustDied(); Talk(SAY_DEATH); + + if (Creature* soccothrates = me->GetCreature(*me, soccothratesGUID)) + if (soccothrates->IsAlive() && !soccothrates->IsInCombat()) + soccothrates->AI()->SetData(1, 1); } void EnterCombat(Unit* /*who*/) OVERRIDE @@ -96,10 +102,43 @@ class boss_dalliah_the_doomsayer : public CreatureScript Talk(SAY_SLAY); } + void SetData(uint32 /*type*/, uint32 data) OVERRIDE + { + switch (data) + { + case 1: + events.ScheduleEvent(EVENT_SOCCOTHRATES_DEATH, 6000); + soccothratesDeath = true; + break; + break; + default: + break; + } + } + void UpdateAI(uint32 diff) OVERRIDE { if (!UpdateVictim()) + { + if (soccothratesDeath) + { + events.Update(diff); + + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_SOCCOTHRATES_DEATH: + Talk(SAY_SOCCOTHRATES_DEATH); + break; + default: + break; + } + } + } + return; + } events.Update(diff); @@ -150,6 +189,7 @@ class boss_dalliah_the_doomsayer : public CreatureScript private: bool soccothratesTaunt; + bool soccothratesDeath; uint64 soccothratesGUID; }; diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp index cef8a8b8e2d..8d4b18b4d47 100644 --- a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp +++ b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp @@ -17,8 +17,8 @@ /* ScriptData SDName: boss_wrath_scryer_soccothrates -SD%Complete: 85% -SDComment: charge and dalliah death left to script +SD%Complete: 95% +SDComment: charge left to script SDCategory: Tempest Keep, The Arcatraz EndScriptData */ @@ -33,7 +33,7 @@ enum Say SAY_SLAY = 2, SAY_KNOCK_AWAY = 3, SAY_DEATH = 4, - SAY_DALLIAH_DEATH = 6, // To be scripted + SAY_DALLIAH_DEATH = 6, SAY_SOCCOTHRATES_CONVO_1 = 7, SAY_SOCCOTHRATES_CONVO_2 = 8, SAY_SOCCOTHRATES_CONVO_3 = 9, @@ -72,6 +72,7 @@ enum Events EVENT_PREFIGHT_8 = 10, EVENT_PREFIGHT_9 = 11, EVENT_ME_FIRST = 12, + EVENT_DALLIAH_DEATH = 13 }; class boss_wrath_scryer_soccothrates : public CreatureScript @@ -88,6 +89,7 @@ class boss_wrath_scryer_soccothrates : public CreatureScript _Reset(); preFight = false; dalliahTaunt = false; + dalliahDeath = false; DoCast(me, SPELL_FEL_IMMOLATION); } @@ -95,6 +97,10 @@ class boss_wrath_scryer_soccothrates : public CreatureScript { _JustDied(); Talk(SAY_DEATH); + + if (Creature* dalliah = me->GetCreature(*me, dalliahGUID)) + if (dalliah->IsAlive() && !dalliah->IsInCombat()) + dalliah->AI()->SetData(1, 1); } void EnterCombat(Unit* /*who*/) OVERRIDE @@ -131,6 +137,20 @@ class boss_wrath_scryer_soccothrates : public CreatureScript } } + void SetData(uint32 /*type*/, uint32 data) OVERRIDE + { + switch (data) + { + case 1: + events.ScheduleEvent(EVENT_DALLIAH_DEATH, 6000); + dalliahDeath = true; + break; + break; + default: + break; + } + } + void UpdateAI(uint32 diff) OVERRIDE { if (!UpdateVictim()) @@ -195,6 +215,23 @@ class boss_wrath_scryer_soccothrates : public CreatureScript } } + if (dalliahDeath) + { + events.Update(diff); + + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_DALLIAH_DEATH: + Talk(SAY_DALLIAH_DEATH); + break; + default: + break; + } + } + } + return; } @@ -239,6 +276,7 @@ class boss_wrath_scryer_soccothrates : public CreatureScript private: bool preFight; bool dalliahTaunt; + bool dalliahDeath; uint64 dalliahGUID; }; |