diff --git a/sql/updates/world/4.3.4/WIP/vanessa.sql b/sql/updates/world/4.3.4/WIP/vanessa.sql index bed942a0305..a1e21db062b 100644 --- a/sql/updates/world/4.3.4/WIP/vanessa.sql +++ b/sql/updates/world/4.3.4/WIP/vanessa.sql @@ -53,7 +53,61 @@ 21:32:49.629 -- ihr habt den mechanischen 21:32:51.891 -- vanessa despawn -21:32:51.891 + +21:33:21.937 -- foe reaper aggro +21:33:24.745 -- spirit strike +21:33:27.818 -- spirit strike +21:33:31.016 -- spirit strike +21:33:34.230 + +21:33:53.215 -- reaper dead + +21:33:55.789 -- cancel nightmare aura mechanical +21:33:55.836 -- despawn platters + +21:33:55.992 -- der alptraum wandelt sich +21:33:56.834 -- reaper despawn +21:33:58.441 -- spawn ripsnarl and vanessa + +21:34:00.656 -- ripsnarl wasnt always +21:34:07.895 -- his name was james harrington +21:34:12.497 -- cancel nightmare aura +21:34:12.699 -- announce nightmare +21:34:12.887 -- open door + + +21:34:14.899 -- vanessa casts adrenaline +21:34:15.227 -- despawn vanessa and ripsnarl + +21:34:12.887 -- spawn emme harrington +21:34:12.887 -- emme casts group taunt +21:34:24.524 -- group taunt 2 + + +21:34:16.303 -- rette emme harrington + +21:34:35.164 -- emme casts adrenaline +21:34:35.164 -- despawn emme + +21:34:39.173 -- announce save erik +21:34:40.982 -- spawn worgen and erik +21:34:59.625 -- erik despawn + +21:34:59.827 -- spawn calissa +21:35:03.259 -- announce save + +21:35:15.287 -- james, please, I love you +21:35:16.504 + +21:35:24.897 -- announce calissa dies + +21:35:27.190 -- ripsnarl death +21:35:27.096 -- cancel nightmare elixir +21:35:27.346 -- announce + +21:35:29.530 -- despawn both + +21:35:31.527 -- spawn boss */ @@ -82,6 +136,10 @@ UPDATE `creature_template` SET `ScriptName`= 'npc_deadmines_glubtok_nightmare' W UPDATE `creature_template` SET `unit_flags`= 33600, `ScriptName`= 'npc_deadmines_helix_nightmare' WHERE `entry`= 49674; -- Lightning Platters UPDATE `creature_template` SET `InhabitType`= 4, `flags_extra`= 128 WHERE `entry` IN (49520, 49521); +-- Foe Reaper 5000 Illusion +UPDATE `creature_template` SET `ScriptName`= 'npc_deadmines_foe_reaper_5000_nightmare' WHERE `entry`= 49681; +-- James Harrington +UPDATE `creature_template` SET `VehicleId`= 1403 WHERE `entry`= 49539; -- Template Addons DELETE FROM `creature_template_addon` WHERE `entry` IN (49564, 51594, 49671, 49670, 92201); @@ -102,7 +160,7 @@ INSERT INTO `gossip_menu_option` (`MenuId`, `OptionID`, `OptionIcon`, `OptionTex (12504, 0, 0, 'Continue reading... ', 49641, 1, 1, 12505); -- Texts -DELETE FROM `creature_text` WHERE `CreatureID` IN (49429, 49564, 49454, 49671, 49674); +DELETE FROM `creature_text` WHERE `CreatureID` IN (49429, 49564, 49454, 49671, 49674, 49539, 49536, 49541); DELETE FROM `creature_text` WHERE `CreatureID`= 45979 AND `GroupID` NOT IN (0, 1, 2, 3); INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `Comment`) VALUES -- Vanessa VanCleef Intro @@ -120,9 +178,18 @@ INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Lan -- General Purpose Bunny JMF (45979, 4, 0, 'The Nightmare Elixir takes hold!', 41, 0, 100, 0, 0, 0, 49705, 'General Purpose Bunny JMF to Steam Valve'), (45979, 5, 0, 'The nightmare shifts!', 41, 0, 100, 0, 0, 0, 49707, 'General Purpose Bunny JMF to Player'), +(45979, 6, 0, 'Save Emme Harrington!', 41, 0, 100, 0, 0, 0, 49711, 'General Purpose Bunny JMF to Player'), +(45979, 7, 0, 'Save Erik Harrington!', 41, 0, 100, 0, 0, 0, 49712, 'General Purpose Bunny JMF'), +(45979, 8, 0, 'Save Calissa Harrington!', 41, 0, 100, 0, 0, 0, 49713, 'General Purpose Bunny JMF'), +(45979, 9, 0, 'The Nightmare Elixir wears off!', 41, 0, 100, 0, 0, 0, 49714, 'General Purpose Bunny JMF'), -- Helix Gearbreaker (49674, 0, 0, 'You have entered Helix''s nightmare!', 41, 0, 100, 0, 0, 0, 49708, 'Helix Gearbreaker to Player'), (49674, 1, 0, 'Nightmare spiders appear in the darkness! Kill Helix before his nightmare overwhelms you!', 41, 0, 100, 0, 0, 0, 50871, 'Helix Geabreaker to Player'), +-- James Harrington +(49539, 0, 0, 'Calissa...I am so sorry...', 12, 0, 100, 0, 0, 0, 49761, 'James Harrington'), +-- Calissa Harrington +(49536, 0, 0, 'James...please...I love you...', 12, 0, 100, 0, 0, 0, 49762, 'Calissa Harrington'), +(49536, 1, 0, 'Calissa is dying!', 41, 0, 100, 0, 0, 0, 49763, 'Calissa Harrington'), -- Vanessa VanCleef Nightmare (49671, 0, 0, 'Poor Glubtok. When his powers manifested, his own ogre mound was the first to burn.', 12, 0, 100, 1, 0, 24602, 49715, 'Vanessa van Cleef to Steam Valve'), (49671, 1, 0, 'Deep within his soul, the one thing he feared most of all was...himself.', 12, 0, 100, 1, 0, 24603, 49716, 'Vanessa van Cleef to Steam Valve'), @@ -132,7 +199,22 @@ INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Lan (49671, 5, 0, 'You never know what skitters in the darkness.', 12, 0, 100, 1, 0, 24605, 49724, 'Vanessa van Cleef to Player'), (49671, 6, 0, 'Can you imagine the life of a machine?', 12, 0, 100, 1, 0, 24606, 49725, 'Vanessa van Cleef to Player'), (49671, 7, 0, 'A simple spark can mean the difference between life...and death.', 12, 0, 100, 1, 0, 24607, 49726, 'Vanessa van Cleef to Player'), -(49671, 8, 0, 'You have entered the mechanical nightmare!', 41, 0, 100, 0, 0, 0, 49709, 'Vanessa van Cleef to Player'); +(49671, 8, 0, 'You have entered the mechanical nightmare!', 41, 0, 100, 0, 0, 0, 49709, 'Vanessa van Cleef to Player'), +(49671, 9, 0, 'Ripsnarl wasn''t always a bloodthirsty savage. Once, he even had a family.', 12, 0, 100, 1, 0, 24608, 49742, 'Vanessa van Cleef to Player'), +(49671, 10, 0, 'He was called James Harrington. A tragedy in three parts.', 12, 0, 100, 1, 0, 24609, 49745, 'Vanessa van Cleef to Player'), +(49671, 11, 0, 'You have entered Ripsnarl''s nightmare!', 41, 0, 100, 0, 0, 0, 49710, 'Vanessa van Cleef to Player'), +-- Vanessa VanCleef +(49541, 0, 0, 'I will not share my father''s fate! Your tale ends here!', 14, 0, 100, 0, 0, 24599, 49748, 'Vanessa van Cleef to Player'), +(49541, 1, 0, 'The first of many.', 14, 0, 100, 0, 0, 24620, 49749, 'Vanessa van Cleef'), +(49541, 2, 0, 'Did you really think I would come to this fight alone?', 14, 0, 100, 0, 0, 24620, 49750, 'Vanessa van Cleef'), +(49541, 3, 0, 'Fools! This entire ship is rigged with explosives! Enjoy your fiery deaths!', 14, 0, 100, 0, 0, 24621, 49751, 'Vanessa van Cleef'), +(49541, 4, 0, 'Vanessa has detonated charges on the ship! Get to the ropes at the side of the boat!', 41, 0, 100, 0, 0, 0, 49755, 'Vanessa van Cleef'), +(49541, 5, 0, 'You didn''t honestly think I would only plant ONE set of explosives, did you?', 14, 0, 100, 0, 0, 24622, 50706, 'Vanessa van Cleef'), +(49541, 6, 0, 'Vanessa is detonating more charges! Get to the ropes at the side of the boat!', 41, 0, 100, 0, 0, 0, 49756, 'Vanessa van Cleef'), +(49541, 7, 0, 'ENOUGH! I will not give you the pleasure!', 14, 0, 100, 274, 0, 24610, 49753, 'Vanessa van Cleef'), +(49541, 8, 0, 'If I''m going to die, I''m taking you all with me!', 14, 0, 100, 15, 0, 24611, 49752, 'Vanessa van Cleef'), +(49541, 9, 0, 'Vanessa pulls out a final barrel of mining powder and ignites it! RUN!', 41, 0, 100, 0, 0, 0, 49757, 'Vanessa van Cleef'), +(49541, 10, 0, 'MY FATE IS MY OWN!', 14, 0, 100, 397, 0, 24612, 49754, 'Vanessa van Cleef'); UPDATE `creature_template` SET `npcflag`= 16777216 WHERE `entry`= 49520; @@ -177,36 +259,29 @@ INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_ (@ENTRY, 0, 1, 2, 60, 0, 100, 1, 3200, 3200, 0, 0, 11, 92201, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Every 0 and 0 ms (for the first time, timer between 3200 and 3200 ms) - Self: Cast spell Icicle (92201) on Self // "), (@ENTRY, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 92202, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, " Linked - Self: Cast spell Icicle (92202) on Self // "); +-- Creature Emme Harrington 49534 SAI +SET @ENTRY := 49534; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`= @ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(@ENTRY, 0, 0, 0, 60, 0, 100, 0, 1, 1, 5000, 5000, 11, 92308, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Every 5000 and 5000 ms (for the first time, timer between 1 and 1 ms) - Self: Cast spell Group Taunt (92308) on Self // "); +-- Creature Erik Harrington 49535 SAI +SET @ENTRY := 49535; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`= @ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(@ENTRY, 0, 0, 0, 60, 0, 100, 0, 1, 1, 5000, 5000, 11, 92308, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Every 5000 and 5000 ms (for the first time, timer between 1 and 1 ms) - Self: Cast spell Group Taunt (92308) on Self // "); -/* -(49454, @GROUP_ID+0, @ID+, 'Aktiviert die Dampfventile, um Euch zu befreien!', 41, 0, 100, 0, 0, 0, UNKNOWN, 'Vanessa''s Trap Bunny to Player'), -(49536, @GROUP_ID+0, @ID+, 'James... bitte... Ich liebe dich...', 12, 0, 100, 0, 0, 0, UNKNOWN, 'Calissa Harrington'), -(49536, @GROUP_ID+1, @ID+, 'Calissa stirbt!', 41, 0, 100, 0, 0, 0, UNKNOWN, 'Calissa Harrington'), -(49539, @GROUP_ID+0, @ID+, 'Calissa... Es tut mir so leid...', 12, 0, 100, 0, 0, 0, UNKNOWN, 'James Harrington'), -(49541, @GROUP_ID+0, @ID+, 'Ich werde meines Vaters Schicksal nicht teilen! Eure Geschichte endet hier!', 14, 0, 100, 0, 0, 24599, UNKNOWN, 'Vanessa van Cleef to Player'), -(49541, @GROUP_ID+1, @ID+, 'Habt Ihr wirklich gedacht, ich würde allein zu diesem Kampf erscheinen?', 14, 0, 100, 0, 0, 24620, UNKNOWN, 'Vanessa van Cleef'), -(49541, @GROUP_ID+2, @ID+, 'Narren! Hahahah! Das ganze Schiff ist mit Sprengstoff gespickt! Erfreut Euch an Eurem feurigen Tod!', 14, 0, 100, 0, 0, 24621, UNKNOWN, 'Vanessa van Cleef'), -(49541, @GROUP_ID+3, @ID+, 'Vanessa hat Sprengladungen auf dem Schiff detonieren lassen! Los, schnell zu den Seilen an Steuerbord!', 41, 0, 100, 0, 0, 0, UNKNOWN, 'Vanessa van Cleef'), -(49541, @GROUP_ID+4, @ID+, 'Ha! Ihr hattet doch nicht wirklich gedacht, dass ich nur EINE Reihe Sprengstoff legen würde, oder?', 14, 0, 100, 0, 0, 24622, UNKNOWN, 'Vanessa van Cleef'), -(49541, @GROUP_ID+5, @ID+, 'Vanessa lässt weitere Sprengsätze detonieren! Los, schnell zu den Seilen an Steuerbord!', 41, 0, 100, 0, 0, 0, UNKNOWN, 'Vanessa van Cleef'), -(49541, @GROUP_ID+6, @ID+, 'GENUG! Diese Freude werde ich Euch nicht machen!', 14, 0, 100, 274, 0, 24610, UNKNOWN, 'Vanessa van Cleef'), -(49541, @GROUP_ID+7, @ID+, 'Wenn ich schon sterbe, werde ich Euch alle mitnehmen!', 14, 0, 100, 15, 0, 24611, UNKNOWN, 'Vanessa van Cleef'), -(49541, @GROUP_ID+8, @ID+, 'Vanessa zieht ein letztes Fass mit Bergbausprengstoff hervor und entzündet es! RENNT!', 41, 0, 100, 0, 0, 0, UNKNOWN, 'Vanessa van Cleef'), -(49541, @GROUP_ID+9, @ID+, 'ÜBER MEIN SCHICKSAL ENTSCHEIDE NUR ICH!', 14, 0, 100, 397, 0, 24612, UNKNOWN, 'Vanessa van Cleef'), -(49564, @GROUP_ID+0, @ID+, 'Eine Notiz fällt zu Boden!', 41, 0, 100, 0, 0, 0, UNKNOWN, 'Eine Nachricht von Vanessa to Player'), -(49671, @GROUP_ID+0, @ID+, 'Armer Glubtok. Als sich seine Kräfte manifestierten, war sein Ogerhort der erste, der brannte.', 12, 0, 100, 1, 0, 24602, UNKNOWN, 'Vanessa van Cleef to Dampfventil'), -(49671, @GROUP_ID+1, @ID+, 'In den Tiefen seiner Seele war das, was er am meisten fürchtete... er selbst.', 12, 0, 100, 1, 0, 24603, UNKNOWN, 'Vanessa van Cleef to Dampfventil'), -(49671, @GROUP_ID+2, @ID+, 'Ihr habt Glubtoks Alptraum betreten!', 41, 0, 100, 0, 0, 0, UNKNOWN, 'Vanessa van Cleef to Dampfventil'), -(49671, @GROUP_ID+3, @ID+, 'Geht zum Schiff zurück!', 41, 0, 100, 0, 0, 0, UNKNOWN, 'Vanessa van Cleef to Dampfventil'), -(49671, @GROUP_ID+4, @ID+, 'Die meisten Schurken bevorzugen die Schatten, Helix jedoch nicht.', 12, 0, 100, 1, 0, 24604, UNKNOWN, 'Vanessa van Cleef to Player'), -(49671, @GROUP_ID+5, @ID+, 'Man weiß nie, was in der Dunkelheit rumkriecht.', 12, 0, 100, 1, 0, 24605, UNKNOWN, 'Vanessa van Cleef to Player'), -(49671, @GROUP_ID+6, @ID+, 'Könnt Ihr Euch das Leben einer Maschine vorstellen?', 12, 0, 100, 1, 0, 24606, UNKNOWN, 'Vanessa van Cleef to Player'), -(49671, @GROUP_ID+7, @ID+, 'Ein einzelner Funke... kann den Unterschied zwischen Leben und Tod ausmachen.', 12, 0, 100, 1, 0, 24607, UNKNOWN, 'Vanessa van Cleef to Player'), -(49671, @GROUP_ID+8, @ID+, 'Ihr habt den mechanischen Alptraum betreten!', 41, 0, 100, 0, 0, 0, UNKNOWN, 'Vanessa van Cleef to Player'), -(49671, @GROUP_ID+9, @ID+, 'Knurrreißer war nicht immer ein blutrünstiger Wilder. Er hatte früher sogar mal eine Familie.', 12, 0, 100, 1, 0, 24608, UNKNOWN, 'Vanessa van Cleef to Player'), -(49671, @GROUP_ID+10, @ID+, 'Sein Name war James Harrington. Eine Tragödie in drei Akten.', 12, 0, 100, 1, 0, 24609, UNKNOWN, 'Vanessa van Cleef to Player'), -(49671, @GROUP_ID+11, @ID+, 'Ihr habt Knurrreißers Alptraum betreten!', 41, 0, 100, 0, 0, 0, UNKNOWN, 'Vanessa van Cleef to Player'), -(49674, @GROUP_ID+0, @ID+, 'Ihr habt Helix'' Alptraum betreten!', 41, 0, 100, 0, 0, 0, UNKNOWN, 'Helix Ritzelbrecher to Player'), -(49674, @GROUP_ID+1, @ID+, 'Alptraumspinnen erscheinen in der Finsternis! Tötet Helix, bevor sein Alptraum Euch überwältigt!', 41, 0, 100, 0, 0, 0, UNKNOWN, 'Helix Ritzelbrecher to Player'); -*/ \ No newline at end of file +-- Creature Calissa Harrington 49536 SAI +SET @ENTRY := 49536; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`= @ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(@ENTRY, 0, 0, 0, 60, 0, 100, 1, 15400, 15400, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Every 0 and 0 ms (for the first time, timer between 15400 and 15400 ms) - Self: Talk 0 // "), +(@ENTRY, 0, 1, 0, 60, 0, 100, 1, 25000, 25000, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Every 0 and 0 ms (for the first time, timer between 25000 and 25000 ms) - Self: Talk 1 // "), +(@ENTRY, 0, 2, 0, 60, 0, 100, 1, 16700, 16700, 0, 0, 1, 0, 0, 0, 0, 0, 0, 11, 49539, 10, 0, 0, 0, 0, 0, "Every 0 and 0 ms (for the first time, timer between 16700 and 16700 ms) - Creature James Harrington (49539) in 10 yd: Talk 0 // "); + +-- Creature James Harrington 49539 SAI +SET @ENTRY := 49539; +UPDATE `creature_template` SET `AIName`="0" WHERE `entry`= @ENTRY; diff --git a/src/server/scripts/EasternKingdoms/Deadmines/boss_foe_reaper_5000.cpp b/src/server/scripts/EasternKingdoms/Deadmines/boss_foe_reaper_5000.cpp index 458f4ed1f40..436691879fd 100644 --- a/src/server/scripts/EasternKingdoms/Deadmines/boss_foe_reaper_5000.cpp +++ b/src/server/scripts/EasternKingdoms/Deadmines/boss_foe_reaper_5000.cpp @@ -46,7 +46,6 @@ enum Spells // Foe Reaper 5000 SPELL_ENERGIZE = 89132, SPELL_ON_LINE = 89198, - SPELL_OFF_LINE = 88348, SPELL_RED_EYES = 24263, SPELL_ON_LINE_2 = 89121, SPELL_REAPER_STRIKE = 88490, diff --git a/src/server/scripts/EasternKingdoms/Deadmines/boss_vanessa_van_cleef.cpp b/src/server/scripts/EasternKingdoms/Deadmines/boss_vanessa_van_cleef.cpp index 965f2616e3a..ff0f5d366c7 100644 --- a/src/server/scripts/EasternKingdoms/Deadmines/boss_vanessa_van_cleef.cpp +++ b/src/server/scripts/EasternKingdoms/Deadmines/boss_vanessa_van_cleef.cpp @@ -26,6 +26,9 @@ enum Texts { // Vanessa VanCleef + SAY_AGGRO = 0, + + // Vanessa VanCleef Intro SAY_ANNOUNCE_NOISE_FROM_ABOVE = 0, SAY_INTRO_1 = 1, SAY_INTRO_2 = 2, @@ -90,16 +93,14 @@ class boss_vanessa_van_cleef : public CreatureScript void Reset() override { _Reset(); - } - - void IsSummonedBy(Unit* /*summoner*/) override - { - + instance->SetBossState(DATA_VANESSA_VAN_CLEEF, NOT_STARTED); } void JustEngagedWith(Unit* /*who*/) override { + Talk(SAY_AGGRO); _JustEngagedWith(); + instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me); } void JustDied(Unit* /*killer*/) override @@ -157,6 +158,7 @@ class npc_vanessa_vanessa_van_cleef : public CreatureScript void Reset() override { + _instance->SetBossState(DATA_VANESSA_VAN_CLEEF, IN_PROGRESS); _events.ScheduleEvent(EVENT_ANNOUNCE_NOISE_FROM_ABOVE, Seconds(2) + Milliseconds(500)); } diff --git a/src/server/scripts/EasternKingdoms/Deadmines/deadmines.cpp b/src/server/scripts/EasternKingdoms/Deadmines/deadmines.cpp index a0f082f5f66..edea585705f 100644 --- a/src/server/scripts/EasternKingdoms/Deadmines/deadmines.cpp +++ b/src/server/scripts/EasternKingdoms/Deadmines/deadmines.cpp @@ -283,6 +283,9 @@ enum VanessaVanCleef SAY_MECHANICAL_INTRO_1 = 6, SAY_MECHANICAL_INTRO_2 = 7, SAY_ANNOUNCE_MECHANICAL_NIGHTMARE = 8, + SAY_RIPSNARL_INTRO_1 = 9, + SAY_RIPSNARL_INTRO_2 = 10, + SAY_ANNOUNCE_RIPSNARL_NIGHTMARE = 11, EVENT_TALK_GLUBTOKS_NIGHTMARE_1 = 1, EVENT_TALK_GLUBTOKS_NIGHTMARE_2, @@ -296,11 +299,17 @@ enum VanessaVanCleef EVENT_TALK_MECHANICAL_NIGHTMARE_2, EVENT_CANCEL_NIGHTMARE_AURA_HELIX, EVENT_ANNOUNCE_ENTERED_MECHANICAL_NIGHTMARE, + EVENT_TALK_RIPSNARL_NIGHTMARE_1, + EVENT_TALK_RIPSNARL_NIGHTMARE_2, + EVENT_CANCEL_NIGHTMARE_AURA_MECHANICAL, + EVENT_ANNOUNCE_ENTERED_RIPSNARL_NIGHTMARE, + EVENT_ADRENALINE, SPELL_CANCEL_NIGHTMARE_AURA = 92583, SPELL_NIGHTMARE_AURA_GLUBTOK = 92565, SPELL_NIGHTMARE_AURA_HELIX = 92566, SPELL_NIGHTMARE_AURA_MECHANICAL = 92567, + SPELL_NIGHTMARE_AURA_RIPSNARL = 92568, }; class npc_deadmines_vanessa_van_cleef_nightmare : public CreatureScript @@ -320,7 +329,8 @@ class npc_deadmines_vanessa_van_cleef_nightmare : public CreatureScript _events.ScheduleEvent(EVENT_TALK_HELIX_NIGHTMARE_1, Seconds(1)); else if (_instance->GetData(DATA_VANESSA_VAN_CLEEF_ENCOUNTER) == NIGHTMARE_STAGE_FOE_REAPER) _events.ScheduleEvent(EVENT_TALK_MECHANICAL_NIGHTMARE_1, Seconds(1)); - + else if (_instance->GetData(DATA_VANESSA_VAN_CLEEF_ENCOUNTER) == NIGHTMARE_STAGE_RIPSNARL) + _events.ScheduleEvent(EVENT_TALK_RIPSNARL_NIGHTMARE_1, Seconds(2) + Milliseconds(200)); } void UpdateAI(uint32 diff) override @@ -386,6 +396,29 @@ class npc_deadmines_vanessa_van_cleef_nightmare : public CreatureScript reaper->DespawnOrUnsummon(Seconds(2) + Milliseconds(200)); me->DespawnOrUnsummon(Seconds(2) + Milliseconds(200)); break; + case EVENT_TALK_RIPSNARL_NIGHTMARE_1: + Talk(SAY_RIPSNARL_INTRO_1); + _events.ScheduleEvent(EVENT_TALK_RIPSNARL_NIGHTMARE_2, Seconds(7) + Milliseconds(150)); + break; + case EVENT_TALK_RIPSNARL_NIGHTMARE_2: + Talk(SAY_RIPSNARL_INTRO_2); + _events.ScheduleEvent(EVENT_CANCEL_NIGHTMARE_AURA_MECHANICAL, Seconds(4) + Milliseconds(600)); + break; + case EVENT_CANCEL_NIGHTMARE_AURA_MECHANICAL: + DoCastAOE(SPELL_CANCEL_NIGHTMARE_AURA, true); + DoCastAOE(SPELL_NIGHTMARE_AURA_RIPSNARL, true); + _events.ScheduleEvent(EVENT_ANNOUNCE_ENTERED_RIPSNARL_NIGHTMARE, Milliseconds(200)); + break; + case EVENT_ANNOUNCE_ENTERED_RIPSNARL_NIGHTMARE: + Talk(SAY_ANNOUNCE_RIPSNARL_NIGHTMARE); + _events.ScheduleEvent(EVENT_ADRENALINE, Seconds(2)); + break; + case EVENT_ADRENALINE: + DoCastAOE(SPELL_ADRENALINE, true); + if (Creature* reaper = me->FindNearestCreature(NPC_RIPSNARL_NIGHTMARE, 20.0f, true)) + reaper->DespawnOrUnsummon(Milliseconds(300)); + me->DespawnOrUnsummon(Milliseconds(300)); + break; default: break; } @@ -559,6 +592,60 @@ class npc_deadmines_helix_nightmare : public CreatureScript } }; +class npc_deadmines_foe_reaper_5000_nightmare : public CreatureScript +{ + public: + npc_deadmines_foe_reaper_5000_nightmare() : CreatureScript("npc_deadmines_foe_reaper_5000_nightmare") { } + + struct npc_deadmines_foe_reaper_5000_nightmareAI : public ScriptedAI + { + npc_deadmines_foe_reaper_5000_nightmareAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) { } + + void JustEngagedWith(Unit* /*who*/) override + { + _events.ScheduleEvent(EVENT_SPIRIT_STRIKE, Seconds(2) + Milliseconds(800)); + } + + void JustDied(Unit* /*killer*/) override + { + me->DespawnOrUnsummon(Seconds(3) + Milliseconds(600)); + _instance->SetData(DATA_VANESSA_VAN_CLEEF_ENCOUNTER, NIGHTMARE_STAGE_RIPSNARL); + } + + void UpdateAI(uint32 diff) override + { + _events.Update(diff); + + while (uint32 eventId = _events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_SPIRIT_STRIKE: + DoCastVictim(SPELL_SPIRIT_STRIKE); + _events.Repeat(Seconds(3) + Milliseconds(100)); + break; + default: + break; + } + } + DoMeleeAttackIfReady(); + } + private: + EventMap _events; + InstanceScript* _instance; + }; + + CreatureAI* GetAI(Creature* creature) const override + { + return GetDeadminesAI(creature); + } +}; + +enum RipsnarlNightmare +{ + SPELL_GROUP_TAUNT = 92308, +}; + enum DefiasCannon { // GroupID 0 and 1 are used by Foe Reaper 5000 @@ -697,6 +784,7 @@ void AddSC_deadmines() new npc_deadmines_vanessa_van_cleef_nightmare(); new npc_deadmines_glubtok_nightmare(); new npc_deadmines_helix_nightmare(); + new npc_deadmines_foe_reaper_5000_nightmare(); new go_deadmines_defias_cannon(); new spell_deadmines_on_fire(); new spell_deadmines_ride_magma_vehicle(); diff --git a/src/server/scripts/EasternKingdoms/Deadmines/deadmines.h b/src/server/scripts/EasternKingdoms/Deadmines/deadmines.h index 0dec7af3204..12ec391eb77 100644 --- a/src/server/scripts/EasternKingdoms/Deadmines/deadmines.h +++ b/src/server/scripts/EasternKingdoms/Deadmines/deadmines.h @@ -47,6 +47,10 @@ enum DMDataTypes DATA_VANESSA_ANCHOR_BUNNY = 18, DATA_ACTIVATED_VENT = 19, DATA_FOUNDRY_DOOR = 20, + DATA_VANESSA_VAN_CLEEF_NIGHTMARE = 21, + DATA_EMME_HARRINGTON = 22, + DATA_ERIK_HARRINGTON = 23, + DATA_CALISSA_HARRINGTON = 24 }; enum DMCreatures @@ -107,24 +111,27 @@ enum DMCreatures NPC_ROTTEN_LOAF = 48299, NPC_BUN = 48301, NPC_ROTTEN_BUN = 48302, - NPC_A_NOTE_FROM_VANESSA = 49564, NPC_VANESSA_VAN_CLEEF_INTRO = 49429, NPC_VANESSAS_TRAP_BUNNY = 49454, NPC_VANESSA_ANCHOR_BUNNY_JMF = 51624, NPC_STEAM_VALVE = 49457, - NPC_VANESSA_VANCLEEF_NIGHTMARE = 49671, NPC_GLUBTOK_NIGHTMARE_FIRE_BUNNY = 51594, NPC_GLUBTOK_NIGHTMARE = 49670, - NPC_HELIX_GEARBREAKER_NIGHTMARE = 49674, NPC_NIGHTMARE_SKITTERLING = 49493, NPC_DARKWEB_DEVOURER = 49494, NPC_CHATTERING_HORROR = 49495, - NPC_FOE_REAPER_5000_NIGHTMARE = 49681, NPC_VANESSA_LIGHTNING_PLATTER = 49520, + NPC_RIPSNARL_NIGHTMARE = 49682, + NPC_EMME_HARRINGTON = 49534, + NPC_ERIK_HARRINGTON = 49535, + NPC_ENRAGED_WORGEN = 49532, + NPC_JAMES_HARRINGTON = 49539, + NPC_CALISSA_HARRINGTON = 49536, + }; enum DMGameObjects @@ -147,18 +154,25 @@ enum DMActions enum DMSpells { // -- Admiral Ripsnarl Encounter - SPELL_FOG = 88768, + SPELL_FOG = 88768, // -- Vanessa VanCleef Encounter - SPELL_RIDE_MAGMA_VEHICLE = 92378, - SPELL_MOLTEN_MAGMA = 92424, - SPELL_FORCE_MAGMA_TRAP_THROW = 92489, - - // Vanessas Anchor Bunny JMF - SPELL_ROPE_BEAM = 43785, - - // Steam Valve - SPELL_STEAM_VENT = 92399, + SPELL_RIDE_MAGMA_VEHICLE = 92378, + SPELL_MOLTEN_MAGMA = 92424, + SPELL_FORCE_MAGMA_TRAP_THROW = 92489, + SPELL_ROPE_BEAM = 43785, + SPELL_STEAM_VENT = 92399, + SPELL_ADRENALINE = 92604, + SPELL_NIGHTMARE_SLOW = 92559, + SPELL_NIGHTMARE_AURA = 92563, + SPELL_CANCEL_NIGHTMARE_AURA_GLUBTOK = 92584, + SPELL_CANCEL_NIGHTMARE_AURA_HELIX = 92585, + SPELL_CANCEL_NIGHTMARE_AURA_MECHANICAL = 92586, + SPELL_CANCEL_NIGHTMARE_AURA_RIPSNARL = 92587, + SPELL_SUMMON_ICICLE = 92189, + SPELL_OFF_LINE = 88348, + SPELL_NIGHTMARES_END = 92603, + SPELL_CANCEL_NIGHTMARE_ELIXIR = 92609, }; enum DMVanessasNightmareStages @@ -168,10 +182,12 @@ enum DMVanessasNightmareStages NIGHTMARE_STAGE_GLUBTOK = 4, NIGHTMARE_STAGE_HELIX = 5, NIGHTMARE_STAGE_FOE_REAPER = 6, - NIGHTMARE_STAGE_RIPSNARL = 7 + NIGHTMARE_STAGE_RIPSNARL = 7, + NIGHTMARE_STAGE_DONE = 8 }; Position const captainCookieSpawnPos = { -88.13194f, -819.3299f, 39.23453f }; +Position const bossVanessaVanCleefSpawnPos = { -79.44965f, -819.8351f, 39.89838f, 0.01745329f }; Position const noteFromVanessaSpawnPos = { -74.36111f, -820.0139f, 40.37145f, 4.014257f }; Position const vanessaVanCleefSpawnPos = { -75.58507f, -819.9636f, 47.06727f, 6.178465f }; @@ -181,6 +197,7 @@ Position const vanessaVanCleefNightmareSpawnPos[] = { -230.717f, -563.0139f, 51.31293f, 1.047198f }, { -172.809f, -576.9114f, 19.39756f, 4.817109f }, { -159.3924f, -580.5174f, 19.39817f, 6.195919f }, + { -98.5816f, -662.6632f, 7.498006f, 3.490659f } }; Position const GlubtokNightmareIntroSpawnPos = { -229.3403f, -560.3629f, 51.31293f, 5.742133f }; @@ -192,6 +209,27 @@ Position const GeneralPurposeBunnyPos = { -205.4688f, -567.2049f, 21.06016f }; Position const FoeReaperNightmareIntroSpawnPos = { -155.4705f, -580.6945f, 19.39779f }; Position const FoeReaperNightmareSpawnPos = { -101.4549f, -663.6493f, 7.505813f, 1.850049f }; +Position const RipsnarlNightmareIntroSpawnPos = { -101.2135f, -663.4531f, 7.504823f, 1.867502f }; +Position const EmmeHarringtonSpawnPos = { -98.63194f, -721.6268f, 8.547067f, 1.53589f }; +Position const EnragedWorgenEmmeSpawnPos[] = +{ + {-97.79166f, -717.8542f, 8.668088f, 4.520403f }, + { -94.40278f, -719.7274f, 8.598646f, 3.560472f }, + { -101.9167f, -718.7552f, 8.726379f, 5.51524f }, +}; + +Position const ErikHarringtonSpawnPos = { 5.239583f, -763.0868f, 9.800426f, 2.007129f }; + +Position const EnragedWorgenErikSpawnPos[] = +{ + { 3.326038f, -760.3063f, 9.713999f, 5.31516f }, + { 8.798013f, -762.2252f, 9.625132f, 3.379143f }, + { 4.232807f, -766.6125f, 9.804724f, 1.292649f } +}; + +Position const CalissaHarringtonSpawnPos = { -83.86406f, -775.2837f, 28.37906f, 1.710423f }; +Position const JamesHarringtonSpawnPos = { -83.16319f, -774.9636f, 26.90351f, 1.710423f }; + Position const glubtokNightmareFireBunnyPos[] = { { -192.2031f, -595.9636f, 36.37407f, 2.80998f }, diff --git a/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp b/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp index 8a51c52e4cf..dda994c8f25 100644 --- a/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp +++ b/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp @@ -25,9 +25,11 @@ enum EventIds { EVENT_SUMMON_CAPTAIN_COOKIE = 1, + EVENT_SUMMON_NOTE_FROM_VANESSA, EVENT_CAST_NIGHTMARE_AURA_1, EVENT_CAST_NIGHTMARE_AURA_2, EVENT_CAST_NIGHTMARE_AURA_3, + EVENT_CAST_NIGHTMARE_AURA_4, EVENT_ANNOUNCE_NIGHTMARE_ELIXIR_TAKES_HOLD, EVENT_SETUP_GLUBTOKS_NIGHTMARE, EVENT_SUMMON_ICICLES, @@ -38,6 +40,17 @@ enum EventIds EVENT_DESPAWN_NIGHTMARE_SPIDERS, EVENT_SETUP_MECHANICAL_NIGHTMARE, EVENT_SUMMON_FOE_REAPER, + EVENT_DESPAWN_LIGHTNING_PLATTERS, + EVENT_SETUP_RIPSNARL_NIGHTMARE, + EVENT_NIGHTMARE_SHIFTS_2, + EVENT_OPEN_IRON_CLAD_DOOR, + EVENT_SUMMON_ERIK_HARRINGTON, + EVENT_SUMMON_JAMES_HARRINGTON, + EVENT_ANNOUNCE_SAVE_EMME_HARRINGTON, + EVENT_ANNOUNCE_SAVE_ERIK_HARRINGTON, + EVENT_ANNOUNCE_SAVE_CALISSA_HARRINGTON, + EVENT_ANNOUNCE_ELIXIR_WEARS_OFF, + EVENT_SUMMON_VANESSA_VANCLEEF_BOSS, }; enum TextsIds @@ -47,36 +60,30 @@ enum TextsIds SAY_ANNOUNCE_SHADOWY_FIGURE = 3, SAY_ANNOUNCE_NIGHTMARE_ELIXIR_TAKES_HOLD = 4, SAY_ANNOUNCE_NIGHTMARE_SHIFTS = 5, -}; - -enum Spells -{ - SPELL_NIGHTMARE_SLOW = 92559, - SPELL_NIGHTMARE_AURA = 92563, - - SPELL_CANCEL_NIGHTMARE_AURA_GLUBTOK = 92584, - SPELL_CANCEL_NIGHTMARE_AURA_HELIX = 92585, - SPELL_CANCEL_NIGHTMARE_AURA_MECHANICAL = 92586, - SPELL_CANCEL_NIGHTMARE_AURA_RIPSNARL = 92587, - - SPELL_SUMMON_ICICLE = 92189, - SPELL_OFF_LINE = 88348 + SAY_ANNOUNCE_SAVE_EMME_HARRINGTON = 6, + SAY_ANNOUNCE_SAVE_ERIK_HARRINGTON = 7, + SAY_ANNOUNCE_SAVE_CALISSA_HARRINGTON = 8, + SAY_ANNOUNCE_NIGHTMARE_ELIXIR_WEARS_OFF = 9, }; ObjectData const creatureData[] = { - { BOSS_GLUBTOK, DATA_GLUBTOK }, - { BOSS_HELIX_GEARBREAKER, DATA_HELIX_GEARBREAKER }, - { BOSS_FOE_REAPER_5000, DATA_FOE_REAPER_5000 }, - { BOSS_ADMIRAL_RIPSNARL, DATA_ADMIRAL_RIPSNARL }, - { BOSS_CAPTAIN_COOKIE, DATA_CAPTAIN_COOKIE }, - { BOSS_VANESSA_VAN_CLEEF, DATA_VANESSA_VAN_CLEEF }, - { NPC_LUMBERING_OAF, DATA_LUMBERING_OAF }, - { NPC_FOE_REAPER_TARGETING_BUNNY, DATA_FOE_REAPER_BUNNY }, - { NPC_PROTOTYPE_REAPER, DATA_PROTOTYPE_REAPER }, - { NPC_VANESSAS_TRAP_BUNNY, DATA_VANESSAS_TRAP_BUNNY }, - { NPC_VANESSA_ANCHOR_BUNNY_JMF, DATA_VANESSA_ANCHOR_BUNNY }, - { 0, 0 } // END + { BOSS_GLUBTOK, DATA_GLUBTOK }, + { BOSS_HELIX_GEARBREAKER, DATA_HELIX_GEARBREAKER }, + { BOSS_FOE_REAPER_5000, DATA_FOE_REAPER_5000 }, + { BOSS_ADMIRAL_RIPSNARL, DATA_ADMIRAL_RIPSNARL }, + { BOSS_CAPTAIN_COOKIE, DATA_CAPTAIN_COOKIE }, + { BOSS_VANESSA_VAN_CLEEF, DATA_VANESSA_VAN_CLEEF }, + { NPC_LUMBERING_OAF, DATA_LUMBERING_OAF }, + { NPC_FOE_REAPER_TARGETING_BUNNY, DATA_FOE_REAPER_BUNNY }, + { NPC_PROTOTYPE_REAPER, DATA_PROTOTYPE_REAPER }, + { NPC_VANESSAS_TRAP_BUNNY, DATA_VANESSAS_TRAP_BUNNY }, + { NPC_VANESSA_ANCHOR_BUNNY_JMF, DATA_VANESSA_ANCHOR_BUNNY }, + { NPC_VANESSA_VANCLEEF_NIGHTMARE, DATA_VANESSA_VAN_CLEEF_NIGHTMARE }, + { NPC_EMME_HARRINGTON, DATA_EMME_HARRINGTON }, + { NPC_ERIK_HARRINGTON, DATA_ERIK_HARRINGTON }, + { NPC_CALISSA_HARRINGTON, DATA_CALISSA_HARRINGTON }, + { 0, 0 } // END }; ObjectData const gameobjectData[] = @@ -112,7 +119,9 @@ class instance_deadmines : public InstanceMapScript _foeReaper5000Intro = 0; _ironCladDoorState = 0; _vanessaVanCleefEncounterState = 0; + _deadPlayers = 0; _activatedVentCounter = 0; + _deadEnragedWorgen = 0; _firstCookieSpawn = true; } @@ -222,6 +231,20 @@ class instance_deadmines : public InstanceMapScript case NPC_GENERAL_PURPOSE_DUMMY_JMF: if (_vanessaVanCleefEncounterState == NIGHTMARE_STAGE_HELIX) _helixNightmareGuidSet.insert(creature->GetGUID()); + else + _generalPurposeBunnyJMFGuidSet.insert(creature->GetGUID()); + break; + case NPC_FOE_REAPER_5000_NIGHTMARE: + case NPC_VANESSA_LIGHTNING_PLATTER: + _mechanicalNightmareGuidSet.insert(creature->GetGUID()); + break; + case NPC_RIPSNARL_NIGHTMARE: + case NPC_EMME_HARRINGTON: + case NPC_ERIK_HARRINGTON: + case NPC_CALISSA_HARRINGTON: + case NPC_JAMES_HARRINGTON: + case NPC_ENRAGED_WORGEN: + _ripsnarlNightareGuidSet.insert(creature->GetGUID()); break; default: break; @@ -261,6 +284,10 @@ class instance_deadmines : public InstanceMapScript if (instance->IsHeroic()) instance->SummonCreature(NPC_A_NOTE_FROM_VANESSA, noteFromVanessaSpawnPos); break; + case DATA_VANESSA_VAN_CLEEF: + if (state == FAIL) + ResetVanessasNightmare(); + break; default: break; } @@ -269,7 +296,112 @@ class instance_deadmines : public InstanceMapScript void OnUnitDeath(Unit* unit) override { + if (unit->GetTypeId() == TYPEID_PLAYER && _vanessaVanCleefEncounterState != NOT_STARTED && _vanessaVanCleefEncounterState != NIGHTMARE_STAGE_DONE) + { + _deadPlayers++; + if (_deadPlayers == instance->GetPlayersCountExceptGMs()) + ResetVanessasNightmare(); + } + else + { + switch (unit->GetEntry()) + { + case NPC_ENRAGED_WORGEN: + _deadEnragedWorgen++; + unit->ToCreature()->DespawnOrUnsummon(Seconds(5)); + if (_deadEnragedWorgen == 3) + { + if (Creature* emme = GetCreature(DATA_EMME_HARRINGTON)) + { + emme->CastSpell(emme, SPELL_ADRENALINE, true); + emme->DespawnOrUnsummon(); + _deadEnragedWorgen = 0; + events.ScheduleEvent(EVENT_ANNOUNCE_SAVE_ERIK_HARRINGTON, Seconds(4)); + } + else if (Creature* erik = GetCreature(DATA_ERIK_HARRINGTON)) + { + erik->CastSpell(emme, SPELL_ADRENALINE, true); + erik->DespawnOrUnsummon(); + events.ScheduleEvent(EVENT_SUMMON_JAMES_HARRINGTON, Milliseconds(200)); + } + } + break; + case NPC_JAMES_HARRINGTON: + if (Creature* dummy = unit->FindNearestCreature(NPC_GENERAL_PURPOSE_DUMMY_JMF, 50.0f, true)) + { + dummy->CastSpell(dummy, SPELL_CANCEL_NIGHTMARE_AURA_RIPSNARL, true); + dummy->CastSpell(dummy, SPELL_CANCEL_NIGHTMARE_ELIXIR, true); + } + unit->ToCreature()->DespawnOrUnsummon(Seconds(2) + Milliseconds(300)); + SetData(DATA_VANESSA_VAN_CLEEF_ENCOUNTER, NIGHTMARE_STAGE_DONE); + events.ScheduleEvent(EVENT_ANNOUNCE_ELIXIR_WEARS_OFF, Milliseconds(250)); + break; + case NPC_EMME_HARRINGTON: + case NPC_ERIK_HARRINGTON: + case NPC_CALISSA_HARRINGTON: + unit->CastSpell(unit, SPELL_NIGHTMARES_END, true); + ResetVanessasNightmare(); + break; + default: + break; + } + } + } + void ResetVanessasNightmare() + { + SetData(DATA_VANESSA_VAN_CLEEF_ENCOUNTER, NOT_STARTED); + events.Reset(); + events.ScheduleEvent(EVENT_SUMMON_NOTE_FROM_VANESSA, Seconds(30)); + _deadPlayers = 0; + _activatedVentCounter = 0; + _deadEnragedWorgen = 0; + + if (Creature* trapBunny = GetCreature(DATA_VANESSAS_TRAP_BUNNY)) + trapBunny->DespawnOrUnsummon(0, Seconds(30)); + + if (Creature* anchorBunny = GetCreature(DATA_VANESSA_ANCHOR_BUNNY)) + anchorBunny->DespawnOrUnsummon(0, Seconds(30)); + + if (!_steamValveGuidSet.empty()) + for (auto itr = _steamValveGuidSet.begin(); itr != _steamValveGuidSet.end(); itr++) + if (Creature* creature = instance->GetCreature(*itr)) + creature->DespawnOrUnsummon(); + + if (!_glubtokNightmareGuidSet.empty()) + for (auto itr = _glubtokNightmareGuidSet.begin(); itr != _glubtokNightmareGuidSet.end(); itr++) + if (Creature* creature = instance->GetCreature(*itr)) + creature->DespawnOrUnsummon(); + + if (!_helixNightmareGuidSet.empty()) + for (auto itr = _helixNightmareGuidSet.begin(); itr != _helixNightmareGuidSet.end(); itr++) + if (Creature* creature = instance->GetCreature(*itr)) + creature->DespawnOrUnsummon(); + + if (!_mechanicalNightmareGuidSet.empty()) + for (auto itr = _mechanicalNightmareGuidSet.begin(); itr != _mechanicalNightmareGuidSet.end(); itr++) + if (Creature* creature = instance->GetCreature(*itr)) + creature->DespawnOrUnsummon(); + + if (!_ripsnarlNightareGuidSet.empty()) + for (auto itr = _ripsnarlNightareGuidSet.begin(); itr != _ripsnarlNightareGuidSet.end(); itr++) + if (Creature* creature = instance->GetCreature(*itr)) + creature->DespawnOrUnsummon(); + + if (Creature* vanessa = GetCreature(DATA_VANESSA_VAN_CLEEF_NIGHTMARE)) + vanessa->DespawnOrUnsummon(); + + _steamValveGuidSet.clear(); + _glubtokNightmareGuidSet.clear(); + _helixNightmareGuidSet.clear(); + _mechanicalNightmareGuidSet.clear(); + _ripsnarlNightareGuidSet.clear(); + + if (GameObject* foundryDoor = GetGameObject(DATA_FOUNDRY_DOOR)) + foundryDoor->SetGoState(GO_STATE_ACTIVE); + + if (GameObject* foundryDoor = GetGameObject(DATA_IRON_CLAD_DOOR)) + foundryDoor->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE); } void SetData(uint32 type, uint32 data) override @@ -316,15 +448,17 @@ class instance_deadmines : public InstanceMapScript { case IN_PROGRESS: instance->SummonCreature(NPC_VANESSA_VAN_CLEEF_INTRO, vanessaVanCleefSpawnPos); + if (GameObject* foundryDoor = GetGameObject(DATA_FOUNDRY_DOOR)) + foundryDoor->SetGoState(GO_STATE_READY); + + if (GameObject* foundryDoor = GetGameObject(DATA_IRON_CLAD_DOOR)) + foundryDoor->SetGoState(GO_STATE_READY); + break; case NIGHTMARE_STATE_PREPARE_TRAP: if (Creature* trapBunny = GetCreature(DATA_VANESSAS_TRAP_BUNNY)) if (Creature* anchorBunny = GetCreature(DATA_VANESSA_ANCHOR_BUNNY)) - { - trapBunny->Respawn(); - anchorBunny->Respawn(); anchorBunny->CastSpell(trapBunny, SPELL_ROPE_BEAM, true); - } break; case NIGHTMARE_STAGE_MAGMA_TRAP: if (Creature* trapBunny = GetCreature(DATA_VANESSAS_TRAP_BUNNY)) @@ -341,6 +475,9 @@ class instance_deadmines : public InstanceMapScript case NIGHTMARE_STAGE_FOE_REAPER: events.ScheduleEvent(EVENT_DESPAWN_NIGHTMARE_SPIDERS, Seconds(2)); break; + case NIGHTMARE_STAGE_RIPSNARL: + events.ScheduleEvent(EVENT_CAST_NIGHTMARE_AURA_4, Seconds(2) + Milliseconds(500)); + break; default: break; } @@ -411,6 +548,9 @@ class instance_deadmines : public InstanceMapScript _firstCookieSpawn = false; } break; + case EVENT_SUMMON_NOTE_FROM_VANESSA: + instance->SummonCreature(NPC_A_NOTE_FROM_VANESSA, noteFromVanessaSpawnPos); + break; case EVENT_CAST_NIGHTMARE_AURA_1: if (Creature* trapBunny = GetCreature(DATA_VANESSAS_TRAP_BUNNY)) if (Creature* purposeBunny = trapBunny->FindNearestCreature(NPC_GENERAL_PURPOSE_DUMMY_JMF, 50.0f, true)) @@ -523,6 +663,95 @@ class instance_deadmines : public InstanceMapScript reaper->RemoveAurasDueToSpell(SPELL_OFF_LINE); } break; + case EVENT_CAST_NIGHTMARE_AURA_4: + if (GameObject* door = GetGameObject(DATA_IRON_CLAD_DOOR)) + if (Creature* purposeBunny = door->FindNearestCreature(NPC_GENERAL_PURPOSE_DUMMY_JMF, 50.0f, true)) + { + purposeBunny->CastSpell(purposeBunny, SPELL_CANCEL_NIGHTMARE_AURA_MECHANICAL, true); + purposeBunny->CastSpell(purposeBunny, SPELL_NIGHTMARE_AURA, true); + purposeBunny->CastSpell(purposeBunny, SPELL_NIGHTMARE_SLOW, true); + } + events.ScheduleEvent(EVENT_DESPAWN_LIGHTNING_PLATTERS, Milliseconds(50)); + break; + case EVENT_DESPAWN_LIGHTNING_PLATTERS: + for (auto itr = _mechanicalNightmareGuidSet.begin(); itr != _mechanicalNightmareGuidSet.end(); itr++) + if (Creature* creature = instance->GetCreature(*itr)) + if (creature->GetEntry() != NPC_FOE_REAPER_5000_NIGHTMARE) + creature->DespawnOrUnsummon(); + events.ScheduleEvent(EVENT_NIGHTMARE_SHIFTS_2, Milliseconds(150)); + events.ScheduleEvent(EVENT_SETUP_RIPSNARL_NIGHTMARE, Seconds(2) + Milliseconds(600)); + break; + case EVENT_SETUP_RIPSNARL_NIGHTMARE: + instance->SummonCreature(NPC_RIPSNARL_NIGHTMARE, RipsnarlNightmareIntroSpawnPos); + instance->SummonCreature(NPC_VANESSA_VANCLEEF_NIGHTMARE, vanessaVanCleefNightmareSpawnPos[3]); + events.ScheduleEvent(EVENT_OPEN_IRON_CLAD_DOOR, Seconds(14) + Milliseconds(400)); + break; + case EVENT_NIGHTMARE_SHIFTS_2: + if (GameObject* door = GetGameObject(DATA_IRON_CLAD_DOOR)) + if (Creature* purposeBunny = door->FindNearestCreature(NPC_GENERAL_PURPOSE_DUMMY_JMF, 50.0f, true)) + purposeBunny->AI()->Talk(SAY_ANNOUNCE_NIGHTMARE_SHIFTS); + break; + case EVENT_OPEN_IRON_CLAD_DOOR: + if (GameObject* door = GetGameObject(DATA_IRON_CLAD_DOOR)) + door->SetGoState(GO_STATE_ACTIVE); + + instance->SummonCreature(NPC_EMME_HARRINGTON, EmmeHarringtonSpawnPos); + for (uint8 i = 0; i < 3; i++) + instance->SummonCreature(NPC_ENRAGED_WORGEN, EnragedWorgenEmmeSpawnPos[i]); + + events.ScheduleEvent(EVENT_ANNOUNCE_SAVE_EMME_HARRINGTON, Seconds(3) + Milliseconds(500)); + break; + case EVENT_ANNOUNCE_SAVE_EMME_HARRINGTON: + if (GameObject* door = GetGameObject(DATA_IRON_CLAD_DOOR)) + if (Creature* purposeBunny = door->FindNearestCreature(NPC_GENERAL_PURPOSE_DUMMY_JMF, 20.0f, true)) + purposeBunny->AI()->Talk(SAY_ANNOUNCE_SAVE_EMME_HARRINGTON); + break; + case EVENT_ANNOUNCE_SAVE_ERIK_HARRINGTON: + for (auto itr = _generalPurposeBunnyJMFGuidSet.begin(); itr != _generalPurposeBunnyJMFGuidSet.end(); itr++) + if (Creature* purposeBunny = instance->GetCreature(*itr)) + if (purposeBunny->GetDistance(EmmeHarringtonSpawnPos) <= 40.0f) + { + purposeBunny->AI()->Talk(SAY_ANNOUNCE_SAVE_ERIK_HARRINGTON); + events.ScheduleEvent(EVENT_SUMMON_ERIK_HARRINGTON, Seconds(1) + Milliseconds(800)); + break; + } + break; + case EVENT_SUMMON_ERIK_HARRINGTON: + instance->SummonCreature(NPC_ERIK_HARRINGTON, ErikHarringtonSpawnPos); + for (uint8 i = 0; i < 3; i++) + instance->SummonCreature(NPC_ENRAGED_WORGEN, EnragedWorgenErikSpawnPos[i]); + break; + case EVENT_SUMMON_JAMES_HARRINGTON: + if (Creature* james = instance->SummonCreature(NPC_JAMES_HARRINGTON, JamesHarringtonSpawnPos)) + if (Creature* calissa = instance->SummonCreature(NPC_CALISSA_HARRINGTON, CalissaHarringtonSpawnPos)) + { + james->SetReactState(REACT_PASSIVE); + calissa->CastSpell(james, VEHICLE_SPELL_RIDE_HARDCODED, true); + calissa->SetInCombatWith(james); + } + events.ScheduleEvent(EVENT_ANNOUNCE_SAVE_CALISSA_HARRINGTON, Seconds(3) + Milliseconds(400)); + break; + case EVENT_ANNOUNCE_SAVE_CALISSA_HARRINGTON: + for (auto itr = _generalPurposeBunnyJMFGuidSet.begin(); itr != _generalPurposeBunnyJMFGuidSet.end(); itr++) + if (Creature* purposeBunny = instance->GetCreature(*itr)) + if (purposeBunny->GetDistance(CalissaHarringtonSpawnPos) <= 100.0f) + { + purposeBunny->AI()->Talk(SAY_ANNOUNCE_SAVE_CALISSA_HARRINGTON); + break; + } + break; + case EVENT_ANNOUNCE_ELIXIR_WEARS_OFF: + if (Creature* calissa = GetCreature(DATA_ADMIRAL_RIPSNARL)) + if (Creature* purposeBunny = calissa->FindNearestCreature(NPC_GENERAL_PURPOSE_DUMMY_JMF, 100.0f, true)) + { + purposeBunny->AI()->Talk(SAY_ANNOUNCE_NIGHTMARE_ELIXIR_WEARS_OFF); + calissa->DespawnOrUnsummon(Seconds(2) + Milliseconds(200)); + } + events.ScheduleEvent(EVENT_SUMMON_VANESSA_VANCLEEF_BOSS, Seconds(2)); + break; + case EVENT_SUMMON_VANESSA_VANCLEEF_BOSS: + instance->SummonCreature(BOSS_VANESSA_VAN_CLEEF, bossVanessaVanCleefSpawnPos); + break; default: break; } @@ -532,14 +761,19 @@ class instance_deadmines : public InstanceMapScript protected: EventMap events; uint8 _activatedVentCounter; + uint8 _deadPlayers; + uint8 _deadEnragedWorgen; uint32 _teamInInstance; uint32 _foeReaper5000Intro; uint32 _ironCladDoorState; uint32 _vanessaVanCleefEncounterState; GuidSet _generalPurposeBunnyJMF2GuidSet; + GuidSet _generalPurposeBunnyJMFGuidSet; GuidSet _steamValveGuidSet; GuidSet _glubtokNightmareGuidSet; GuidSet _helixNightmareGuidSet; + GuidSet _mechanicalNightmareGuidSet; + GuidSet _ripsnarlNightareGuidSet; bool _firstCookieSpawn; };