Script/DM: finished initial work on Nightmare phases

*todo: fix calissas resque and nightmare offwearing message and reset nightmare when vanessa evades
This commit is contained in:
Ovahlord
2018-03-26 01:14:03 +02:00
parent b60589fa9f
commit d473c1f0b8
6 changed files with 522 additions and 86 deletions

View File

@@ -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... <Note: This will alert Vanessa to your presence!>', 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');
*/
-- 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;

View File

@@ -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,

View File

@@ -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));
}

View File

@@ -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<npc_deadmines_foe_reaper_5000_nightmareAI>(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();

View File

@@ -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 },

View File

@@ -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;
};