fix(Scripts/HallsOfReflection): Halls of Reflection - Fix Alliance side, text broadcasts and hardcodes. (#15227)

This commit is contained in:
avarishd
2023-03-04 22:39:34 +02:00
committed by GitHub
parent e3ed2e99e6
commit ea19c7f808
6 changed files with 575 additions and 132 deletions

View File

@@ -19,12 +19,11 @@
enum Yells
{
SAY_AGGRO = 50,
SAY_SLAY_1 = 51,
SAY_SLAY_2 = 52,
SAY_DEATH = 53,
SAY_IMPENDING_DESPAIR = 54,
SAY_DEFILING_HORROR = 55,
SAY_AGGRO = 0,
SAY_SLAY = 1,
SAY_DEATH = 2,
SAY_IMPENDING_DESPAIR = 3,
SAY_DEFILING_HORROR = 4,
};
enum Spells
@@ -161,7 +160,7 @@ public:
void KilledUnit(Unit* who) override
{
if (who->GetTypeId() == TYPEID_PLAYER)
Talk(RAND(SAY_SLAY_1, SAY_SLAY_2));
Talk(SAY_SLAY);
}
void EnterEvadeMode(EvadeReason why) override

View File

@@ -19,12 +19,11 @@
enum Yells
{
SAY_AGGRO = 60,
SAY_SLAY_1 = 61,
SAY_SLAY_2 = 62,
SAY_DEATH = 63,
SAY_CORRUPTED_FLESH_1 = 64,
SAY_CORRUPTED_FLESH_2 = 65,
SAY_AGGRO = 0,
SAY_SLAY = 1,
SAY_DEATH = 2,
SAY_CORRUPTED_FLESH = 3,
SAY_CORRUPTED_WELL = 4,
};
enum Spells
@@ -121,12 +120,13 @@ public:
events.ScheduleEvent(EVENT_OBLITERATE, 3000);
break;
case EVENT_WELL_OF_CORRUPTION:
Talk(SAY_CORRUPTED_WELL);
if (Unit* target = SelectTargetFromPlayerList(40.0f, 0, true))
me->CastSpell(target, SPELL_WELL_OF_CORRUPTION, false);
events.ScheduleEvent(EVENT_WELL_OF_CORRUPTION, 13000);
break;
case EVENT_CORRUPTED_FLESH:
Talk(RAND(SAY_CORRUPTED_FLESH_1, SAY_CORRUPTED_FLESH_2));
Talk(SAY_CORRUPTED_FLESH);
me->CastSpell((Unit*)nullptr, SPELL_CORRUPTED_FLESH, false);
events.ScheduleEvent(EVENT_CORRUPTED_FLESH, 20000);
break;
@@ -150,7 +150,7 @@ public:
void KilledUnit(Unit* who) override
{
if (who->GetTypeId() == TYPEID_PLAYER)
Talk(RAND(SAY_SLAY_1, SAY_SLAY_2));
Talk(SAY_SLAY);
}
void EnterEvadeMode(EvadeReason why) override

View File

@@ -84,6 +84,15 @@ enum Events
EVENT_INTRO_END_SET,
};
enum Gossips
{
GOSSIP_MENU_SYLVANAS = 10950,
GOSISP_MENU_JAINA = 11031,
GOSSIP_OPTION_START = 0,
GOSSIP_OPTION_START_SKIP = 1,
};
class npc_hor_leader : public CreatureScript
{
public:
@@ -107,27 +116,19 @@ public:
{
QuestStatus status = player->GetQuestStatus(creature->GetEntry() == NPC_SYLVANAS_PART1 ? QUEST_DELIVRANCE_FROM_THE_PIT_H2 : QUEST_DELIVRANCE_FROM_THE_PIT_A2);
if (status == QUEST_STATUS_COMPLETE || status == QUEST_STATUS_REWARDED)
AddGossipItemFor(player, 0, "Can you remove the sword?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
{
AddGossipItemFor(player, creature->GetEntry() == NPC_SYLVANAS_PART1 ? GOSSIP_MENU_SYLVANAS : GOSISP_MENU_JAINA, GOSSIP_OPTION_START, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
}
// once last quest is completed, she offers this shortcut of the starting event
status = player->GetQuestStatus(creature->GetEntry() == NPC_SYLVANAS_PART1 ? QUEST_WRATH_OF_THE_LICH_KING_H2 : QUEST_WRATH_OF_THE_LICH_KING_A2);
if (status == QUEST_STATUS_COMPLETE || status == QUEST_STATUS_REWARDED)
{
if (creature->GetEntry() == NPC_SYLVANAS_PART1)
AddGossipItemFor(player, 0, "Dark Lady, I think I hear Arthas coming. Whatever you're going to do, do it quickly.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
else
AddGossipItemFor(player, 0, "My Lady, I think I hear Arthas coming. Whatever you're going to do, do it quickly.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
AddGossipItemFor(player, creature->GetEntry() == NPC_SYLVANAS_PART1 ? GOSSIP_MENU_SYLVANAS : GOSISP_MENU_JAINA, GOSSIP_OPTION_START_SKIP, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
}
}
if (creature->GetEntry() == NPC_SYLVANAS_PART1)
{
SendGossipMenuFor(player, 15215, creature->GetGUID());
}
else if (creature->GetEntry() == NPC_JAINA_PART1)
{
SendGossipMenuFor(player, 15339, creature->GetGUID());
}
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
@@ -703,6 +704,14 @@ public:
events.ScheduleEvent(EVENT_DARK_MENDING, 8000);
}
void JustDied(Unit* /*killer*/) override
{
if (!urand(0,9))
{
Talk(SAY_WAVE_DEATH);
}
}
void AttackStart(Unit* who) override
{
if (!me->IsVisible() || me->HasUnitFlag(UNIT_FLAG_NOT_SELECTABLE))
@@ -803,6 +812,14 @@ public:
events.ScheduleEvent(EVENT_HALLUCINATION, 40000);
}
void JustDied(Unit* /*killer*/) override
{
if (!urand(0,9))
{
Talk(SAY_WAVE_DEATH);
}
}
void AttackStart(Unit* who) override
{
if (!me->IsVisible() || me->HasUnitFlag(UNIT_FLAG_NOT_SELECTABLE))
@@ -949,6 +966,14 @@ public:
events.ScheduleEvent(EVENT_KIDNEY_SHOT, 5000);
}
void JustDied(Unit* /*killer*/) override
{
if (!urand(0,9))
{
Talk(SAY_WAVE_DEATH);
}
}
void AttackStart(Unit* who) override
{
if (!me->IsVisible() || me->HasUnitFlag(UNIT_FLAG_NOT_SELECTABLE))
@@ -1046,6 +1071,14 @@ public:
events.ScheduleEvent(EVENT_TORTURED_ENRAGE, 15000);
}
void JustDied(Unit* /*killer*/) override
{
if (!urand(0,9))
{
Talk(SAY_WAVE_DEATH);
}
}
void AttackStart(Unit* who) override
{
if (!me->IsVisible() || me->HasUnitFlag(UNIT_FLAG_NOT_SELECTABLE))
@@ -1132,6 +1165,14 @@ public:
events.ScheduleEvent(EVENT_ICE_SHOT, 15000);
}
void JustDied(Unit* /*killer*/) override
{
if (!urand(0,9))
{
Talk(SAY_WAVE_DEATH);
}
}
void AttackStart(Unit* who) override
{
if (!me->IsVisible() || me->HasUnitFlag(UNIT_FLAG_NOT_SELECTABLE))
@@ -1542,7 +1583,7 @@ public:
me->CastSpell((Unit*)nullptr, SPELL_FURY_OF_FROSTMOURNE, false);
}
break;
case EVENT_LK_START_FOLLOWING:
case EVENT_LK_START_FOLLOWING: /// @todo: LK Moves too fast at the begining and too slow after and the leaders (Sylvana/Jaina) should be running instead of walking.
{
me->SetSpeed(MOVE_RUN, 9.0f / 7.0f);
Movement::PointsArray path;
@@ -1555,7 +1596,7 @@ public:
case EVENT_LK_REMORSELESS_WINTER:
{
me->SetSpeed(MOVE_RUN, me->GetCreatureTemplate()->speed_run);
Talk(SAY_LK_IW_1_SUMMON);
Talk(SAY_LK_WINTER);
me->CastSpell(me, SPELL_REMORSELESS_WINTER, true);
Movement::PointsArray path;
path.push_back(G3D::Vector3(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ()));
@@ -1755,7 +1796,7 @@ public:
if (Player* p = itr->GetSource())
p->KilledMonsterCredit(me->GetEntry()); // for quest
Talk(me->GetEntry() == NPC_JAINA_PART2 ? SAY_JAINA_LEAVE : SAY_SYLVANAS_LEAVE);
Talk(me->GetEntry() == NPC_JAINA_PART2 ? SAY_JAINA_AGGRO : SAY_SYLVANA_AGGRO);
me->GetMotionMaster()->MovePoint(0, LeaderEscapePos);
events.ScheduleEvent(EVENT_ADD_GOSSIP, 8000);
}
@@ -1797,11 +1838,9 @@ public:
textId = SAY_SYLVANAS_IW_4;
break;
case 5:
textId = SAY_SYLVANAS_END;
textId = (me->GetEntry() == NPC_JAINA_PART2 ? SAY_JAINA_TRAP : SAY_SYLVANA_TRAP);
break;
}
if (me->GetEntry() == NPC_JAINA_PART2)
textId += 10;
Talk(textId);
if (currentStopPoint <= 4)
me->CastSpell((Unit*)nullptr, (me->GetEntry() == NPC_JAINA_PART2 ? SPELL_DESTROY_WALL_JAINA : SPELL_DESTROY_WALL_SYLVANAS), false);
@@ -1813,7 +1852,7 @@ public:
}
break;
case EVENT_SAY_OPENING:
Talk(me->GetEntry() == NPC_JAINA_PART2 ? SAY_JAINA_OPENING : SAY_SYLVANAS_OPENING);
Talk(me->GetEntry() == NPC_JAINA_PART2 ? SAY_JAINA_ESCAPE_01 : SAY_SYLVANA_ESCAPE_01);
break;
}
}

View File

@@ -68,12 +68,13 @@ enum Creatures
NPC_DARK_RANGER_LORALEN = 37779,
NPC_ARCHMAGE_KORELN = 37582,
// Wave mobs
NPC_WAVE_PRIEST = 38175,
NPC_WAVE_MAGE = 38172,
NPC_PHANTOM_HALLUCINATION = 38567, // Doesn't talk
NPC_WAVE_MERCENARY = 38177,
NPC_WAVE_FOOTMAN = 38173,
NPC_WAVE_RIFLEMAN = 38176,
NPC_WAVE_PRIEST = 38175,
NPC_WAVE_MAGE = 38172,
NPC_PHANTOM_HALLUCINATION = 38567,
NPC_FROSTSWORN_GENERAL = 36723,
NPC_SPIRITUAL_REFLECTION = 37068,
@@ -124,94 +125,122 @@ enum BatteredHiltStatusFlags
enum hYells
{
SAY_JAINA_INTRO_1 = 1,
SAY_JAINA_INTRO_2 = 2,
SAY_JAINA_INTRO_3 = 3,
SAY_JAINA_INTRO_4 = 4,
SAY_UTHER_INTRO_A2_1 = 5,
SAY_JAINA_INTRO_5 = 6,
SAY_UTHER_INTRO_A2_2 = 7,
SAY_JAINA_INTRO_6 = 8,
SAY_UTHER_INTRO_A2_3 = 9,
SAY_JAINA_INTRO_7 = 10,
SAY_UTHER_INTRO_A2_4 = 11,
SAY_JAINA_INTRO_8 = 12,
SAY_UTHER_INTRO_A2_5 = 13,
SAY_JAINA_INTRO_9 = 14,
SAY_UTHER_INTRO_A2_6 = 15,
SAY_UTHER_INTRO_A2_7 = 16,
SAY_JAINA_INTRO_10 = 17,
SAY_UTHER_INTRO_A2_8 = 18,
SAY_JAINA_INTRO_11 = 19,
SAY_UTHER_INTRO_A2_9 = 20,
// Part 1
// Alliance
SAY_JAINA_INTRO_1 = 0,
SAY_JAINA_INTRO_2 = 1,
SAY_JAINA_INTRO_3 = 2,
SAY_JAINA_INTRO_4 = 3,
SAY_UTHER_INTRO_A2_1 = 0,
SAY_JAINA_INTRO_5 = 4,
SAY_UTHER_INTRO_A2_2 = 1,
SAY_JAINA_INTRO_6 = 5,
SAY_UTHER_INTRO_A2_3 = 2,
SAY_JAINA_INTRO_7 = 6,
SAY_UTHER_INTRO_A2_4 = 3,
SAY_JAINA_INTRO_8 = 7,
SAY_UTHER_INTRO_A2_5 = 4,
SAY_JAINA_INTRO_9 = 8,
SAY_UTHER_INTRO_A2_6 = 5,
SAY_UTHER_INTRO_A2_7 = 6,
SAY_JAINA_INTRO_10 = 9,
SAY_UTHER_INTRO_A2_8 = 7,
SAY_JAINA_INTRO_11 = 10,
SAY_UTHER_INTRO_A2_9 = 8,
SAY_SYLVANAS_INTRO_1 = 21,
SAY_SYLVANAS_INTRO_2 = 22,
SAY_SYLVANAS_INTRO_3 = 23,
SAY_UTHER_INTRO_H2_1 = 24,
SAY_SYLVANAS_INTRO_4 = 25,
SAY_UTHER_INTRO_H2_2 = 26,
SAY_SYLVANAS_INTRO_5 = 27,
SAY_UTHER_INTRO_H2_3 = 28,
SAY_SYLVANAS_INTRO_6 = 29,
SAY_UTHER_INTRO_H2_4 = 30,
SAY_SYLVANAS_INTRO_7 = 31,
SAY_UTHER_INTRO_H2_5 = 32,
SAY_UTHER_INTRO_H2_6 = 33,
SAY_SYLVANAS_INTRO_8 = 34,
SAY_UTHER_INTRO_H2_7 = 35,
// Horde
SAY_SYLVANAS_INTRO_1 = 0,
SAY_SYLVANAS_INTRO_2 = 1,
SAY_SYLVANAS_INTRO_3 = 2,
SAY_UTHER_INTRO_H2_1 = 9,
SAY_SYLVANAS_INTRO_4 = 3,
SAY_UTHER_INTRO_H2_2 = 10,
SAY_SYLVANAS_INTRO_5 = 4,
SAY_UTHER_INTRO_H2_3 = 11,
SAY_SYLVANAS_INTRO_6 = 5,
SAY_UTHER_INTRO_H2_4 = 12,
SAY_SYLVANAS_INTRO_7 = 6,
SAY_UTHER_INTRO_H2_5 = 13,
SAY_UTHER_INTRO_H2_6 = 14,
SAY_SYLVANAS_INTRO_8 = 7,
SAY_UTHER_INTRO_H2_7 = 15,
SAY_LK_INTRO_1 = 36,
SAY_LK_INTRO_2 = 37,
SAY_LK_INTRO_3 = 38,
SAY_FALRIC_INTRO_1 = 39,
SAY_MARWYN_INTRO_1 = 40,
SAY_FALRIC_INTRO_2 = 41,
// The Lich King Event
SAY_LK_INTRO_1 = 0,
SAY_LK_INTRO_2 = 1,
SAY_LK_INTRO_3 = 2,
SAY_FALRIC_INTRO_1 = 5,
SAY_MARWYN_INTRO_1 = 5,
SAY_FALRIC_INTRO_2 = 6,
SAY_JAINA_INTRO_END = 42,
SAY_SYLVANAS_INTRO_END = 43,
SAY_JAINA_INTRO_END = 11,
SAY_SYLVANAS_INTRO_END = 8,
SAY_FROSTSWORN_GENERAL_AGGRO = 98,
SAY_FROSTSWORN_GENERAL_DEATH = 99,
// Wave mobs
SAY_WAVE_DEATH = 0,
SAY_LK_AGGRO_HORDE = 100,
SAY_LK_AGGRO_ALLY = 101,
SAY_SYLVANAS_LEAVE = 102,
SAY_JAINA_LEAVE = 103,
SAY_LK_IW_1 = 104,
SAY_LK_IW_2 = 105,
SAY_LK_IW_3 = 106,
SAY_LK_IW_4 = 107,
SAY_LK_IW_1_SUMMON = 108,
SAY_SYLVANAS_IW_1 = 109,
SAY_SYLVANAS_IW_2 = 110,
SAY_SYLVANAS_IW_3 = 111,
SAY_SYLVANAS_IW_4 = 112,
SAY_SYLVANAS_OPENING = 113,
SAY_SYLVANAS_END = 114,
SAY_LK_NOWHERE_TO_RUN = 115,
SAY_FIRE_HORDE = 116,
SAY_ONBOARD_HORDE = 117,
SAY_FINAL_HORDE = 118,
SAY_JAINA_IW_1 = 119,
SAY_JAINA_IW_2 = 120,
SAY_JAINA_IW_3 = 121,
SAY_JAINA_IW_4 = 122,
SAY_JAINA_OPENING = 123,
SAY_JAINA_END = 124,
SAY_FIRE_ALLY = 125,
SAY_ONBOARD_ALLY = 126,
SAY_FINAL_ALLY = 127,
SAY_FINAL_ALLY_SECOND = 128,
// Frostsworn General - Big add after Falrick and Marwyn
SAY_FROSTSWORN_GENERAL_AGGRO = 0,
SAY_FROSTSWORN_GENERAL_DEATH = 1,
SAY_BATTERED_HILT_HALT = 200,
SAY_BATTERED_HILT_LEAP = 201,
SAY_BATTERED_HILT_REALIZE = 202,
SAY_BATTERED_HILT_PREPARE = 203,
SAY_BATTERED_HILT_OUTRO1 = 204,
SAY_BATTERED_HILT_OUTRO2 = 205,
SAY_BATTERED_HILT_OUTRO3 = 206,
SAY_BATTERED_HILT_OUTRO4 = 207,
// Part 2
// The Lich King Boss
SAY_LK_AGGRO_ALLY = 0,
SAY_LK_AGGRO_HORDE = 1,
SAY_LK_IW_1 = 2,
SAY_LK_IW_2 = 3,
SAY_LK_IW_3 = 4,
SAY_LK_IW_4 = 5,
//SAY_LK_GHOUL = 6, // Unused
//SAY_LK_ABON = 7, // Unused
SAY_LK_WINTER = 8,
SAY_LK_NOWHERE_TO_RUN = 9,
// Horde
SAY_SYLVANA_AGGRO = 0,
SAY_SYLVANAS_IW_1 = 1,
SAY_SYLVANAS_IW_2 = 2,
SAY_SYLVANAS_IW_3 = 3,
SAY_SYLVANAS_IW_4 = 4,
SAY_SYLVANA_ESCAPE_01 = 5,
//SAY_SYLVANA_ESCAPE_02 = 6, // Unused
SAY_SYLVANA_TRAP = 7,
SAY_SYLVANA_FINAL = 8,
// (H) Ship Captain 30824
SAY_FIRE_HORDE = 0,
SAY_ONBOARD_HORDE = 1,
// Alliance
SAY_JAINA_AGGRO = 0,
SAY_JAINA_IW_1 = 1,
SAY_JAINA_IW_2 = 2,
SAY_JAINA_IW_3 = 3,
SAY_JAINA_IW_4 = 4,
SAY_JAINA_ESCAPE_01 = 5,
SAY_JAINA_TRAP = 6,
SAY_JAINA_FINAL_1 = 7,
SAY_JAINA_FINAL_2 = 8,
// (A) Ship Captain 30344
SAY_FIRE_ALLY = 0,
SAY_ONBOARD_ALLY = 1,
// Battered Hilt - Quest: The Halls Of Reflection
// Uther
SAY_BATTERED_HILT_HALT = 16,
EMOTE_QUEL_SPAWN = 0, // "Quel'Delar leeps to life in the presence of Frostmourne!"
SAY_BATTERED_HILT_REALIZE = 17,
EMOTE_QUEL_PREPARE = 1, // "Quel'Delar prepares to attack!"
SAY_BATTERED_HILT_OUTRO1 = 18,
SAY_BATTERED_HILT_OUTRO2 = 19,
SAY_BATTERED_HILT_OUTRO3 = 20,
SAY_BATTERED_HILT_OUTRO4 = 21,
// Marwin - Said when starting after a wipe
EMOTE_MARWYN_INTRO_SPIRIT = 6,
// Marwin - Wipe between wave 6 and 9
SAY_MARWYN_WIPE_AFTER_FALRIC = 7,
};
enum hMisc
@@ -264,6 +293,9 @@ enum hMisc
SPELL_SUMMON_LUMBERING_ABOMINATION = 69835,
SPELL_GUNSHIP_CANNON_FIRE_PERIODIC = 70017,
SPELL_ACHIEVEMENT_CHECK = 72830,
// Battered Hilt - Summon Quel'Delar
SPELL_SUMMON_EVIL_QUEL = 69966,
};
const uint32 allowedCompositions[8][5] =
@@ -339,12 +371,12 @@ const Position CannonFirePos[2][3] =
const Position StairsPos[2][3] =
{
{
{ // Alliance stairs
{5226.36f, 1640.87f, 785.737f, 5.56137f},
{5213.76f, 1626.21f, 798.068f, 5.56534f},
{5213.76f, 1626.21f, 798.068f, 5.56534f}, /// @todo: Issue with the clipping on the top most part, probably needs a positional sniff.
{0.0f, 0.0f, 0.0f, 0.0f}
},
{
{ // Horde stairs
{5233.61f, 1607.48f, 796.5f, 5.77774f},
{5223.32f, 1589.24f, 809.0f, 5.76989f},
{5243.42f, 1624.8f, 784.361f, 5.76592f}

View File

@@ -40,10 +40,14 @@ public:
_owner.AI()->Talk(SAY_BATTERED_HILT_HALT);
break;
case 3:
_owner.CastSpell((Unit*)nullptr, 69966, true);
_owner.CastSpell((Unit*)nullptr, SPELL_SUMMON_EVIL_QUEL, true);
_owner.AI()->Talk(SAY_BATTERED_HILT_REALIZE);
if (InstanceScript* instance = _owner.GetInstanceScript())
instance->SetData(DATA_BATTERED_HILT, 4);
if (Creature* quel = _owner.FindNearestCreature(NPC_QUEL_DELAR, 50))
{
quel->AI()->Talk(EMOTE_QUEL_SPAWN);
}
_owner.m_Events.AddEvent(new UtherBatteredHiltEvent(_owner, 4), _owner.m_Events.CalculateTime(3500));
break;
case 4:
@@ -62,8 +66,13 @@ public:
break;
case 7:
if (InstanceScript* instance = _owner.GetInstanceScript())
{
instance->SetData(DATA_BATTERED_HILT, 7);
_owner.AI()->Talk(SAY_BATTERED_HILT_PREPARE);
}
if (Creature* quel = _owner.FindNearestCreature(NPC_QUEL_DELAR, 50))
{
quel->AI()->Talk(EMOTE_QUEL_PREPARE);
}
_owner.m_Events.AddEvent(new UtherBatteredHiltEvent(_owner, 8), _owner.m_Events.CalculateTime(4000));
break;
case 8:
@@ -606,8 +615,7 @@ public:
BatteredHiltStatus |= BHSF_THROWN;
if (Creature* c = instance->GetCreature(NPC_UtherGUID))
{
c->AI()->Talk(SAY_BATTERED_HILT_LEAP);
c->m_Events.AddEvent(new UtherBatteredHiltEvent(*c, 3), c->m_Events.CalculateTime(1500));
c->m_Events.AddEvent(new UtherBatteredHiltEvent(*c, 3), c->m_Events.CalculateTime(5500));
}
break;
case 4:
@@ -980,7 +988,7 @@ public:
{
if (ResumeFirstEventTimer <= diff)
{
switch (ResumeFirstEventStep)
switch (ResumeFirstEventStep) // After a wipe
{
case 0:
if (Creature* pFalric = instance->GetCreature(NPC_FalricGUID))
@@ -1007,14 +1015,27 @@ public:
a->SetDuration(8000);
}
pMarwyn->TextEmote("Spirits appear and surround the altar!", nullptr, true);
pMarwyn->AI()->Talk(EMOTE_MARWYN_INTRO_SPIRIT);
}
++ResumeFirstEventStep;
ResumeFirstEventTimer = 7500;
break;
case 1:
if (Creature* pFalric = instance->GetCreature(NPC_FalricGUID))
pFalric->AI()->Talk(SAY_FALRIC_INTRO_2);
{
if (pFalric->IsAlive())
{
pFalric->AI()->Talk(SAY_FALRIC_INTRO_2); // Between wave 1 and 4
}
else
{
if (Creature* marwyn = instance->GetCreature(NPC_MarwynGUID))
{
marwyn->AI()->Talk(SAY_MARWYN_WIPE_AFTER_FALRIC); // Between wave 6 and 9
}
}
}
SetData(ACTION_SHOW_TRASH, 1);
ResumeFirstEventStep = 0;
ResumeFirstEventTimer = 0;
@@ -1154,7 +1175,7 @@ public:
break;
case 9:
if (Creature* c = instance->GetCreature(NPC_LeaderGUID))
c->AI()->Talk(TeamIdInInstance == TEAM_ALLIANCE ? SAY_FINAL_ALLY : SAY_FINAL_HORDE);
c->AI()->Talk(TeamIdInInstance == TEAM_ALLIANCE ? SAY_JAINA_FINAL_1 : SAY_SYLVANA_FINAL);
HandleGameObject(GO_CaveInGUID, true);
++outroStep;
outroTimer = 11000;
@@ -1168,7 +1189,7 @@ public:
if (TeamIdInInstance == TEAM_ALLIANCE)
if (Creature* c = instance->GetCreature(NPC_LeaderGUID))
{
c->AI()->Talk(SAY_FINAL_ALLY_SECOND);
c->AI()->Talk(SAY_JAINA_FINAL_2);
outroTimer = 10000;
}
break;