fix(Scripts/Naxxramas): Add post-Gothik Four Horsemen introduction (#20550)

This commit is contained in:
Jelle Meeus 2025-02-16 23:14:09 +01:00 committed by GitHub
parent 2c7cf4832e
commit 30f273e593
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 67 additions and 3 deletions

View File

@ -0,0 +1,13 @@
--
SET @ZELIEK = 16063;
UPDATE `creature_text` SET `Comment` = 'zeliek SAY_ZELI_DIALOG1' WHERE (`CreatureID` = @ZELIEK) AND (`GroupID` = 5);
UPDATE `creature_text` SET `Comment` = 'zeliek SAY_ZELI_DIALOG2' WHERE (`CreatureID` = @ZELIEK) AND (`GroupID` = 6);
SET @KORTHAZZ = 16064;
UPDATE `creature_text` SET `Comment` = 'korthazz SAY_KORT_DIALOG1' WHERE (`CreatureID` = @KORTHAZZ) AND (`GroupID` = 5);
UPDATE `creature_text` SET `Comment` = 'korthazz SAY_KORT_DIALOG2' WHERE (`CreatureID` = @KORTHAZZ) AND (`GroupID` = 6);
SET @BLAUMEUX = 16065;
UPDATE `creature_text` SET `Comment` = 'blaumeux SAY_BLAU_DIALOG1' WHERE (`CreatureID` = @BLAUMEUX) AND (`GroupID` = 5);
UPDATE `creature_text` SET `Comment` = 'blaumeux SAY_BLAU_DIALOG2' WHERE (`CreatureID` = @BLAUMEUX) AND (`GroupID` = 6);
SET @RIVENDARE = 30549;
UPDATE `creature_text` SET `Comment` = 'rivendare SAY_RIVE_DIALOG1' WHERE (`CreatureID` = @RIVENDARE) AND (`GroupID` = 5);
UPDATE `creature_text` SET `Comment` = 'rivendare SAY_RIVE_DIALOG2' WHERE (`CreatureID` = @RIVENDARE) AND (`GroupID` = 6);

View File

@ -101,7 +101,7 @@ public:
_screamTimer = 2 * MINUTE * IN_MILLISECONDS;
_hadThaddiusGreet = false;
_currentWingTaunt = SAY_FIRST_WING_TAUNT;
_horsemanLoaded = 0;
_currentHorsemenLine = 0;
// Achievements
abominationsKilled = 0;
@ -174,6 +174,7 @@ public:
bool _hadThaddiusGreet;
EventMap events;
uint8 _currentWingTaunt;
uint8 _currentHorsemenLine;
uint8 _horsemanLoaded;
// Achievements
@ -943,6 +944,7 @@ public:
{
go->SetGoState(GO_STATE_ACTIVE);
}
events.ScheduleEvent(EVENT_HORSEMEN_INTRO, 10s);
break;
case BOSS_SAPPHIRON:
events.ScheduleEvent(EVENT_FROSTWYRM_WATERFALL_DOOR, 5s);
@ -1071,6 +1073,52 @@ public:
go->SetGoState(GO_STATE_ACTIVE);
}
break;
case EVENT_HORSEMEN_INTRO:
switch (_currentHorsemenLine)
{
case 0: // To arms, ye roustabouts! We've got company!
if (Creature* korthazz = instance->GetCreature(_korthazzGUID))
korthazz->AI()->Talk(SAY_HORSEMEN_DIALOG1);
events.ScheduleEvent(EVENT_HORSEMEN_INTRO, 4500ms);
break;
case 1: // Invaders, cease this foolish venture at once! Turn away while you still can!
if (Creature* zeliek = instance->GetCreature(_zeliekGUID))
zeliek->AI()->Talk(SAY_HORSEMEN_DIALOG1);
events.ScheduleEvent(EVENT_HORSEMEN_INTRO, 6500ms);
break;
case 2: // Come, Zeliek, do not drive them out. Not before we've had our fun!
if (Creature* blaumeux = instance->GetCreature(_blaumeuxGUID))
blaumeux->AI()->Talk(SAY_HORSEMEN_DIALOG1);
events.ScheduleEvent(EVENT_HORSEMEN_INTRO, 6500ms);
break;
case 3: // Enough prattling. Let them come. We shall grind their bones to dust.
if (Creature* rivendare = instance->GetCreature(_rivendareGUID))
rivendare->AI()->Talk(SAY_HORSEMEN_DIALOG1);
events.ScheduleEvent(EVENT_HORSEMEN_INTRO, 6500ms);
break;
case 4: // I do hope they stay alive long enough for me to... introduce myself.
if (Creature* blaumeux = instance->GetCreature(_blaumeuxGUID))
blaumeux->AI()->Talk(SAY_HORSEMEN_DIALOG2);
events.ScheduleEvent(EVENT_HORSEMEN_INTRO, 6500ms);
break;
case 5: // Perhaps they will come to their senses... and run away as fast as they can.
if (Creature* zeliek = instance->GetCreature(_zeliekGUID))
zeliek->AI()->Talk(SAY_HORSEMEN_DIALOG2);
events.ScheduleEvent(EVENT_HORSEMEN_INTRO, 6500ms);
break;
case 6: // I've heard about enough a' yer snivelin'! Shut yer flytrap before I shut it for ye'!
if (Creature* korthazz = instance->GetCreature(_korthazzGUID))
korthazz->AI()->Talk(SAY_HORSEMEN_DIALOG2);
events.ScheduleEvent(EVENT_HORSEMEN_INTRO, 6500ms);
break;
case 7: // Conserve your anger. Harness your rage. You will all have outlets for your frustrations soon enough.
if (Creature* rivendare = instance->GetCreature(_rivendareGUID))
rivendare->AI()->Talk(SAY_HORSEMEN_DIALOG2);
events.ScheduleEvent(EVENT_HORSEMEN_INTRO, 6500ms);
break;
}
++_currentHorsemenLine;
break;
}
}

View File

@ -190,14 +190,17 @@ enum NXSays
SAY_SAPP_DIALOG5 = 4,
SAY_SAPP_DIALOG6 = 20,
SAY_CAT_DIED = 5,
SAY_FIRST_WING_TAUNT = 16
SAY_FIRST_WING_TAUNT = 16,
SAY_HORSEMEN_DIALOG1 = 5,
SAY_HORSEMEN_DIALOG2 = 6
};
enum NXEvents
{
EVENT_THADDIUS_SCREAMS = 0,
EVENT_KELTHUZAD_WING_TAUNT = 1,
EVENT_FROSTWYRM_WATERFALL_DOOR = 2
EVENT_FROSTWYRM_WATERFALL_DOOR = 2,
EVENT_HORSEMEN_INTRO = 3
};
template <class AI, class T>