fix(Scripts/HallsOfReflection): Improve Halls of Reflection Events (Horde) (#16165)
* fix(DB/Creature): Grunda Bronzewing is now mounted Grunda Bronzewing is now mounted * Update Fix-Grunda Bronzewing in Honor Hold is not riding on a golden gryphon.sql Grunda Bronzewing is now mounted * Rename Fix-Grunda Bronzewing in Honor Hold is not riding on a golden gryphon.sql to Fix-Grunda.sql Grunda Bronzewing is now mounted * Delete Fix-Grunda.sql * Create Fix-NPCs_Halls_Off_Reflection.sql * Fix-events_Halls_of_Reflection(HORDE) * Rename Fix-NPCs_Halls_Off_Reflection.sql to Fix-NPCs_Halls_of_Reflection.sql * Rename halls_of_reflection.cpp to fix halls_of_reflection.cpp * Rename halls_of_reflection.h to fix halls_of_reflection.h * Rename instance_halls_of_reflection.cpp to fix instance_halls_of_reflection.cpp * Update fix halls_of_reflection.h * Update and rename fix halls_of_reflection.cpp to halls_of_reflection.cpp * Update and rename fix instance_halls_of_reflection.cpp to instance_halls_of_reflection.cpp * Update instance_halls_of_reflection.cpp * Update instance_halls_of_reflection.cpp * Update instance_halls_of_reflection.cpp * Update and rename fix halls_of_reflection.h to halls_of_reflection.h * Update instance_halls_of_reflection.cpp * Update halls_of_reflection.h * Update Fix-NPCs_Halls_of_Reflection.sql * Update halls_of_reflection.cpp * Update halls_of_reflection.cpp * Update halls_of_reflection.cpp * Update halls_of_reflection.cpp * Update halls_of_reflection.cpp * Update halls_of_reflection.cpp * Update halls_of_reflection.cpp * Update halls_of_reflection.cpp * Update halls_of_reflection.cpp * Update instance_halls_of_reflection.cpp * Update halls_of_reflection.h * Update instance_halls_of_reflection.cpp * Update halls_of_reflection.cpp * Update halls_of_reflection.cpp * Update halls_of_reflection.cpp * Update halls_of_reflection.cpp * Update halls_of_reflection.cpp * Update halls_of_reflection.cpp * Update Fix-NPCs_Halls_of_Reflection.sql * Update halls_of_reflection.cpp * Update halls_of_reflection.cpp * Update and rename Fix-NPCs_Halls_of_Reflection.sql to Fix_NPCs_Halls_of_Reflection.sql * Update halls_of_reflection.cpp * Update halls_of_reflection.cpp * Update Fix_NPCs_Halls_of_Reflection.sql * Update Fix_NPCs_Halls_of_Reflection.sql * Update Fix_NPCs_Halls_of_Reflection.sql * Update Fix_NPCs_Halls_of_Reflection.sql * Update Fix_NPCs_Halls_of_Reflection.sql * Update Fix_NPCs_Halls_of_Reflection.sql * Update Fix_NPCs_Halls_of_Reflection.sql * Update src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp * Update src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp * Update src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp * Apply suggestions from code review * Update src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp * Update src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp ---------
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
|
||||
-- SQL Dark Ranger Loralen emote
|
||||
DELETE FROM `creature_template_addon` WHERE (`entry` = 37779);
|
||||
INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
|
||||
(37779, 0, 0, 0, 2, 0, 0, '');
|
||||
-- SQL LK Boss final
|
||||
DELETE FROM `creature` WHERE (`id1` = 36954);
|
||||
INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES
|
||||
(1972025, 36954, 0, 0, 668, 0, 0, 3, 1, 1, 5552.77, 2262.57, 733.012, 4.15523, 86400, 0, 0, 27890000, 0, 0, 0, 0, 0, '', 48999);
|
||||
-- SQL LK Sylvanas final
|
||||
DELETE FROM `creature` WHERE (`id1` = 37554);
|
||||
INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES
|
||||
(1972026, 37554, 0, 0, 668, 0, 0, 3, 1, 1, 5549.51, 2257.59, 733.011, 0.99299, 86400, 0, 0, 5040000, 881400, 0, 0, 0, 0, '', 48999);
|
||||
-- Add Gossip Sylvanas Final
|
||||
DELETE FROM `gossip_menu` WHERE (`MenuID` = 10931);
|
||||
INSERT INTO `gossip_menu` (`MenuID`, `TextID`) VALUES (10931, 15190);
|
||||
+362
-91
@@ -26,8 +26,13 @@ enum Events
|
||||
EVENT_PRE_INTRO_2,
|
||||
EVENT_PRE_INTRO_3,
|
||||
|
||||
EVENT_TALK_LEADER_1,
|
||||
EVENT_EMOTE_LEADER_1,
|
||||
|
||||
EVENT_START_INTRO,
|
||||
EVENT_SKIP_INTRO,
|
||||
EVENT_LORALEN_MOVE_1,
|
||||
EVENT_LORALEN_MOVE_2,
|
||||
|
||||
EVENT_INTRO_A2_1,
|
||||
EVENT_INTRO_A2_2,
|
||||
@@ -51,7 +56,10 @@ enum Events
|
||||
|
||||
EVENT_INTRO_H2_1,
|
||||
EVENT_INTRO_H2_2,
|
||||
EVENT_INTRO_H2_2_1,
|
||||
EVENT_INTRO_H2_3,
|
||||
EVENT_INTRO_H2_3_1,
|
||||
EVENT_INTRO_H2_3_2,
|
||||
EVENT_INTRO_H2_4,
|
||||
EVENT_INTRO_H2_5,
|
||||
EVENT_INTRO_H2_6,
|
||||
@@ -65,20 +73,31 @@ enum Events
|
||||
EVENT_INTRO_H2_14,
|
||||
EVENT_INTRO_H2_15,
|
||||
|
||||
//BATTLE SYLVANAS X LK//
|
||||
BATTLE_SYLVANAS_PART1,
|
||||
|
||||
EVENT_INTRO_LK_1,
|
||||
EVENT_INTRO_LK_1_1,
|
||||
EVENT_INTRO_LK_1_2,
|
||||
EVENT_INTRO_LK_1_3,
|
||||
EVENT_INTRO_LK_2,
|
||||
EVENT_INTRO_LK_2_1,
|
||||
EVENT_INTRO_LK_3,
|
||||
EVENT_INTRO_LK_4,
|
||||
EVENT_INTRO_LK_4_2,
|
||||
EVENT_INTRO_LK_4_3,
|
||||
EVENT_INTRO_LK_5,
|
||||
EVENT_INTRO_LK_5_1,
|
||||
EVENT_INTRO_LK_5_2,
|
||||
EVENT_INTRO_LK_5_3,
|
||||
EVENT_INTRO_LK_6,
|
||||
EVENT_INTRO_LK_7,
|
||||
EVENT_INTRO_LK_8,
|
||||
EVENT_INTRO_LK_9,
|
||||
EVENT_INTRO_LK_10,
|
||||
EVENT_INTRO_LK_11,
|
||||
EVENT_INTRO_LK_12,
|
||||
EVENT_INTRO_LK_13,
|
||||
|
||||
EVENT_INTRO_END,
|
||||
EVENT_INTRO_END_SET,
|
||||
@@ -92,6 +111,18 @@ enum Gossips
|
||||
GOSSIP_OPTION_START = 0,
|
||||
GOSSIP_OPTION_START_SKIP = 1,
|
||||
};
|
||||
Position const NpcJainaOrSylvanasEscapeRoute[] =
|
||||
{
|
||||
{ 5601.217285f, 2207.652832f, 731.541931f, 5.223304f }, // leave the throne room
|
||||
{ 5607.224375f, 2173.913330f, 731.126038f, 2.608723f }, // adjust route
|
||||
{ 5583.427246f, 2138.784180f, 731.150391f, 4.260901f }, // stop for talking
|
||||
{ 5560.281738f, 2104.025635f, 731.410889f, 4.058383f }, // attack the first icewall
|
||||
{ 5510.990723f, 2000.772217f, 734.716064f, 3.973213f }, // attack the second icewall
|
||||
{ 5452.641113f, 1905.762329f, 746.530579f, 4.118834f }, // attack the third icewall
|
||||
{ 5338.126953f, 1768.429810f, 767.237244f, 3.855189f }, // attack the fourth icewall
|
||||
{ 5259.06f, 1669.27f, 784.3008f, 0.0f }, // trap (sniffed)
|
||||
{ 5265.53f, 1681.6f, 784.2947f, 4.13643f } // final position (sniffed)
|
||||
};
|
||||
|
||||
class npc_hor_leader : public CreatureScript
|
||||
{
|
||||
@@ -198,7 +229,9 @@ public:
|
||||
first = false;
|
||||
events.ScheduleEvent(EVENT_PRE_INTRO_1, 10s);
|
||||
events.ScheduleEvent(EVENT_PRE_INTRO_2, 11s);
|
||||
events.ScheduleEvent(EVENT_PRE_INTRO_3, 17s);
|
||||
events.ScheduleEvent(EVENT_EMOTE_LEADER_1, 16s);
|
||||
events.ScheduleEvent(EVENT_TALK_LEADER_1, 16s);
|
||||
events.ScheduleEvent(EVENT_PRE_INTRO_3, 19s);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -218,45 +251,68 @@ public:
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
events.Update(diff);
|
||||
switch(events.ExecuteEvent())
|
||||
switch (events.ExecuteEvent())
|
||||
{
|
||||
case EVENT_PRE_INTRO_1:
|
||||
if (pInstance)
|
||||
{
|
||||
|
||||
me->SetSheath(SHEATH_STATE_MELEE);
|
||||
me->SetVisible(true);
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_DARK_RANGER_LORALEN)))
|
||||
c->SetVisible(true);
|
||||
|
||||
}
|
||||
break;
|
||||
case EVENT_PRE_INTRO_2:
|
||||
if (me->GetEntry() == NPC_JAINA_PART1)
|
||||
{
|
||||
Talk(SAY_JAINA_INTRO_1);
|
||||
}
|
||||
me->GetMotionMaster()->MovePoint(0, SpawnPos);
|
||||
break;
|
||||
case EVENT_TALK_LEADER_1:
|
||||
me->SetSheath(SHEATH_STATE_UNARMED);
|
||||
Talk(me->GetEntry() == NPC_JAINA_PART1 ? SAY_JAINA_INTRO_2 : SAY_SYLVANAS_INTRO_1);
|
||||
break;
|
||||
case EVENT_EMOTE_LEADER_1:
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION);
|
||||
break;
|
||||
case EVENT_PRE_INTRO_3:
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
|
||||
Talk(me->GetEntry() == NPC_JAINA_PART1 ? SAY_JAINA_INTRO_2 : SAY_SYLVANAS_INTRO_1);
|
||||
me->SetFacingTo(0.89f);
|
||||
me->SetSheath(SHEATH_STATE_MELEE);
|
||||
break;
|
||||
|
||||
case EVENT_START_INTRO:
|
||||
shortver = false;
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
|
||||
me->GetMotionMaster()->MovePoint(0, MoveThronePos);
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_DARK_RANGER_LORALEN)))
|
||||
c->GetMotionMaster()->MovePoint(0, LoralenFollowPos);
|
||||
if (Creature* pLoralen = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_DARK_RANGER_LORALEN)))
|
||||
{
|
||||
pLoralen->LoadEquipment(true);
|
||||
pLoralen->SetVisible(true);
|
||||
pLoralen->SetWalk(true);
|
||||
pLoralen->GetMotionMaster()->MovePoint(0, LoralenMidleFollowPos);
|
||||
|
||||
}
|
||||
// Begining of intro is differents between factions as the speech sequence and timers are differents.
|
||||
if (me->GetEntry() == NPC_JAINA_PART1)
|
||||
{
|
||||
events.ScheduleEvent(EVENT_INTRO_A2_1, 10s);
|
||||
}
|
||||
else
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_2, 10s);
|
||||
{
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_2, 9s);
|
||||
events.ScheduleEvent(EVENT_LORALEN_MOVE_1, 24s);
|
||||
events.ScheduleEvent(EVENT_LORALEN_MOVE_2, 32s);
|
||||
}
|
||||
break;
|
||||
|
||||
case EVENT_SKIP_INTRO:
|
||||
shortver = true;
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, (me->GetEntry() == NPC_JAINA_PART1 ? EMOTE_STATE_READY2H : EMOTE_STATE_READY1H));
|
||||
me->GetMotionMaster()->MovePoint(0, MoveThronePos);
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_DARK_RANGER_LORALEN)))
|
||||
c->GetMotionMaster()->MovePoint(0, LoralenFollowPos);
|
||||
if (Creature* pLoralen = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_DARK_RANGER_LORALEN)))
|
||||
{
|
||||
pLoralen->GetMotionMaster()->MovePoint(0, LoralenFollowPos);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_1, 0ms);
|
||||
break;
|
||||
|
||||
@@ -272,7 +328,7 @@ public:
|
||||
case EVENT_INTRO_A2_3:
|
||||
pInstance->HandleGameObject(pInstance->GetGuidData(GO_FROSTMOURNE), true);
|
||||
me->CastSpell(me, SPELL_FROSTMOURNE_SPAWN_SOUND, true);
|
||||
me->CastSpell(me, SPELL_ARCANE_CAST_VISUAL, false);
|
||||
//me->CastSpell(me, SPELL_ARCANE_CAST_VISUAL, false);// the sniff is missing from the alliance
|
||||
events.ScheduleEvent(EVENT_INTRO_A2_4, 10s);
|
||||
break;
|
||||
case EVENT_INTRO_A2_4:
|
||||
@@ -287,8 +343,10 @@ public:
|
||||
break;
|
||||
case EVENT_INTRO_A2_5:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
{
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_A2_1);
|
||||
events.ScheduleEvent(EVENT_INTRO_A2_6, 3s);
|
||||
}
|
||||
break;
|
||||
case EVENT_INTRO_A2_6:
|
||||
Talk(SAY_JAINA_INTRO_5);
|
||||
@@ -296,7 +354,9 @@ public:
|
||||
break;
|
||||
case EVENT_INTRO_A2_7:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
{
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_A2_2);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_A2_8, 6500ms);
|
||||
break;
|
||||
case EVENT_INTRO_A2_8:
|
||||
@@ -305,7 +365,9 @@ public:
|
||||
break;
|
||||
case EVENT_INTRO_A2_9:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
{
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_A2_3);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_A2_10, 9s);
|
||||
break;
|
||||
case EVENT_INTRO_A2_10:
|
||||
@@ -314,7 +376,9 @@ public:
|
||||
break;
|
||||
case EVENT_INTRO_A2_11:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
{
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_A2_4);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_A2_12, 11s);
|
||||
break;
|
||||
case EVENT_INTRO_A2_12:
|
||||
@@ -323,7 +387,9 @@ public:
|
||||
break;
|
||||
case EVENT_INTRO_A2_13:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
{
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_A2_5);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_A2_14, 12s + 500ms);
|
||||
break;
|
||||
case EVENT_INTRO_A2_14:
|
||||
@@ -332,7 +398,9 @@ public:
|
||||
break;
|
||||
case EVENT_INTRO_A2_15:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
{
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_A2_6);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_A2_16, 24s);
|
||||
break;
|
||||
case EVENT_INTRO_A2_16:
|
||||
@@ -347,7 +415,7 @@ public:
|
||||
case EVENT_INTRO_A2_18:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
{
|
||||
pUther->HandleEmoteCommand(EMOTE_ONESHOT_NO);
|
||||
pUther->HandleEmoteCommand(EMOTE_ONESHOT_TALK);
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_A2_8);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_A2_19, 11s);
|
||||
@@ -358,77 +426,131 @@ public:
|
||||
break;
|
||||
|
||||
// H2 Intro Events
|
||||
case EVENT_INTRO_H2_2:
|
||||
Talk(SAY_SYLVANAS_INTRO_2);
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_3, 6s);
|
||||
case EVENT_LORALEN_MOVE_1:
|
||||
if (Creature* pLoralen = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_DARK_RANGER_LORALEN)))
|
||||
{
|
||||
pLoralen->GetMotionMaster()->MovePoint(0, LoralenFollowPos);
|
||||
}
|
||||
break;
|
||||
case EVENT_INTRO_H2_3:
|
||||
|
||||
case EVENT_LORALEN_MOVE_2:
|
||||
if (Creature* pLoralen = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_DARK_RANGER_LORALEN)))
|
||||
{
|
||||
pLoralen->HandleEmoteCommand(EMOTE_ONESHOT_KNEEL);
|
||||
}
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_H2_2:
|
||||
me->SetSheath(SHEATH_STATE_UNARMED);
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_QUESTION);
|
||||
Talk(SAY_SYLVANAS_INTRO_2);
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_2_1, 7s + 500ms);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_H2_2_1:
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_TALK);
|
||||
Talk(SAY_SYLVANAS_INTRO_3);
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_3, 2s);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_H2_3:
|
||||
me->CastSpell(me, SPELL_SUMMON_SOULS, false);
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_3_1, 5s);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_H2_3_1:
|
||||
me->CastSpell(me, SPELL_FROSTMOURNE_SPAWN_SOUND, false);
|
||||
pInstance->HandleGameObject(pInstance->GetGuidData(GO_FROSTMOURNE), true);
|
||||
me->CastSpell(me, SPELL_FROSTMOURNE_SPAWN_SOUND, true);
|
||||
me->CastSpell(me, SPELL_ARCANE_CAST_VISUAL, false);
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_4, 6s);
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_3_2, 3s);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_H2_3_2:
|
||||
me->RemoveAurasDueToSpell(SPELL_SUMMON_SOULS);
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_4, 2s);
|
||||
break;
|
||||
case EVENT_INTRO_H2_4:
|
||||
if (Creature* pUther = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_UTHER)))
|
||||
{
|
||||
pUther->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
|
||||
pUther->SetVisible(true);
|
||||
if (Aura* a = pUther->AddAura(SPELL_SHADOWMOURNE_VISUAL, pUther))
|
||||
{
|
||||
a->SetDuration(8000);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_5, 2s);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_5, 7s);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_H2_5:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
{
|
||||
pUther->HandleEmoteCommand(EMOTE_ONESHOT_TALK);
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_H2_1);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_6, 11s);
|
||||
break;
|
||||
case EVENT_INTRO_H2_6:
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_TALK);
|
||||
Talk(SAY_SYLVANAS_INTRO_4);
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_7, 3s);
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_7, 2s + 500ms);
|
||||
break;
|
||||
case EVENT_INTRO_H2_7:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
{
|
||||
pUther->HandleEmoteCommand(EMOTE_ONESHOT_TALK);
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_H2_2);
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_8, 6s);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_8, 9s);//
|
||||
break;
|
||||
case EVENT_INTRO_H2_8:
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_TALK);
|
||||
Talk(SAY_SYLVANAS_INTRO_5);
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_9, 5s);
|
||||
break;
|
||||
case EVENT_INTRO_H2_9:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
{
|
||||
pUther->HandleEmoteCommand(EMOTE_ONESHOT_TALK);
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_H2_3);
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_10, 19s);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_10, 20s);
|
||||
break;
|
||||
case EVENT_INTRO_H2_10:
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_TALK);
|
||||
Talk(SAY_SYLVANAS_INTRO_6);
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_11, 1500ms);
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_11, 3s);
|
||||
break;
|
||||
case EVENT_INTRO_H2_11:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
{
|
||||
pUther->HandleEmoteCommand(EMOTE_ONESHOT_TALK);
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_H2_4);
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_12, 19s + 500ms);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_12, 21s + 500ms);
|
||||
break;
|
||||
case EVENT_INTRO_H2_12:
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_QUESTION);
|
||||
Talk(SAY_SYLVANAS_INTRO_7);
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_13, 2s);
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_13, 3s + 500ms);
|
||||
break;
|
||||
case EVENT_INTRO_H2_13:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
{
|
||||
pUther->HandleEmoteCommand(EMOTE_ONESHOT_NO);
|
||||
pUther->HandleEmoteCommand(EMOTE_ONESHOT_TALK);
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_H2_5);
|
||||
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_14, 12s);
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_14, 12s + 500ms);
|
||||
break;
|
||||
case EVENT_INTRO_H2_14:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
{
|
||||
pUther->HandleEmoteCommand(EMOTE_ONESHOT_TALK);
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_H2_6);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_15, 8s);
|
||||
break;
|
||||
case EVENT_INTRO_H2_15:
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_QUESTION);
|
||||
Talk(SAY_SYLVANAS_INTRO_8);
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_1, 2s);
|
||||
break;
|
||||
@@ -437,29 +559,46 @@ public:
|
||||
case EVENT_INTRO_LK_1:
|
||||
if (Creature* pLichKing = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_EVENT)))
|
||||
{
|
||||
|
||||
pInstance->HandleGameObject(pInstance->GetGuidData(GO_ARTHAS_DOOR), true);
|
||||
pLichKing->SetVisible(true);
|
||||
pLichKing->GetMotionMaster()->MovePoint(0, LichKingMoveThronePos, false);
|
||||
|
||||
pLichKing->GetMotionMaster()->MovePoint(0, LichKingMoveMidlelThronePos, false);
|
||||
|
||||
}
|
||||
|
||||
if (!shortver)
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
{
|
||||
pUther->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION);
|
||||
if (me->GetEntry() == NPC_JAINA_PART1)
|
||||
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_A2_9);
|
||||
else
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_H2_7);
|
||||
}
|
||||
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_1_2, 2s);
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_1_3, 4s);
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_2, 11s);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_1_1, 9s);
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_1_2, 3s);
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_1_3, 6s);
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_2, 12s);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_LK_1_1:
|
||||
if (Creature* pLichKing = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_LICH_KING_EVENT)))
|
||||
{
|
||||
pLichKing->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION);
|
||||
pLichKing->AI()->Talk(SAY_LK_INTRO_1);
|
||||
}
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_LK_1_2:
|
||||
if (!shortver)
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
{
|
||||
pUther->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_COWER);
|
||||
pUther->SetFacingTo(0.89f);
|
||||
}
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_LK_1_3:
|
||||
@@ -469,20 +608,38 @@ public:
|
||||
case EVENT_INTRO_LK_2:
|
||||
if (!shortver)
|
||||
if (Creature* pLichKing = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_LICH_KING_EVENT)))
|
||||
pLichKing->AI()->Talk(SAY_LK_INTRO_1);
|
||||
{
|
||||
pLichKing->SetVisible(true);
|
||||
pLichKing->GetMotionMaster()->MovePoint(0, LichKingMoveThronePos, false);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_2_1, 1s);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_LK_2_1:
|
||||
if (!shortver)
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
{
|
||||
pUther->SendPlaySpellVisual(SPELL_UTHER_DESPAWN);
|
||||
pUther->CastSpell(pUther, SPELL_UTHER_DESPAWN, true);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_3, 2s);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_LK_3:
|
||||
if (!shortver)
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
{
|
||||
pUther->SetVisible(false);
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_4, 4s);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_4, 6s);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_LK_4:
|
||||
if (Creature* pLichKing = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_LICH_KING_EVENT)))
|
||||
{
|
||||
pLichKing->HandleEmoteCommand(EMOTE_ONESHOT_QUESTION);
|
||||
pLichKing->AI()->Talk(SAY_LK_INTRO_2);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_4_2, 10s);
|
||||
break;
|
||||
|
||||
@@ -527,66 +684,132 @@ public:
|
||||
a->SetDuration(8000);
|
||||
}
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_5_1, 0s);
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_5_2, 7s);
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_5_3, 0s);
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_6, 11s);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_LK_5_1:
|
||||
if (Creature* pLichKing = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_LICH_KING_EVENT)))
|
||||
{
|
||||
pLichKing->HandleEmoteCommand(EMOTE_ONESHOT_TALK);
|
||||
pLichKing->AI()->Talk(SAY_LK_INTRO_3);
|
||||
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_5_2, 5s);
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_6, 8s);
|
||||
}
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_LK_5_2:
|
||||
if (Creature* pLichKing = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_LICH_KING_EVENT)))
|
||||
{
|
||||
pLichKing->GetMotionMaster()->MovePoint(0, LichKingMoveAwayPos, false);
|
||||
}
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_LK_5_3:
|
||||
me->SetSpeed(MOVE_RUN, 1.6);
|
||||
me->SetSheath(SHEATH_STATE_MELEE);
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_READY1H);
|
||||
if (Creature* pLoralen = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_DARK_RANGER_LORALEN)))
|
||||
{
|
||||
pLoralen->SetSheath(SHEATH_STATE_MELEE);
|
||||
pLoralen->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_READY1H);
|
||||
pLoralen->SetWalk(false);
|
||||
pLoralen->LoadEquipment(true);
|
||||
}
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_LK_6:
|
||||
if (Creature* pFalric = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(DATA_FALRIC)))
|
||||
{
|
||||
pFalric->HandleEmoteCommand(EMOTE_ONESHOT_BOW);
|
||||
pFalric->AI()->Talk(SAY_FALRIC_INTRO_1);
|
||||
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_7, 2s);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_LK_7:
|
||||
if (Creature* pMarwyn = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(DATA_MARWYN)))
|
||||
{
|
||||
pMarwyn->HandleEmoteCommand(EMOTE_ONESHOT_BOW);
|
||||
pMarwyn->AI()->Talk(SAY_MARWYN_INTRO_1);
|
||||
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_8, 2s);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_8, 3s);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_LK_8:
|
||||
if (Creature* pFalric = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(DATA_FALRIC)))
|
||||
{
|
||||
pFalric->AI()->Talk(SAY_FALRIC_INTRO_2);
|
||||
pInstance->SetData(ACTION_SHOW_TRASH, 1);
|
||||
|
||||
pInstance->HandleGameObject(pInstance->GetGuidData(GO_ARTHAS_DOOR), true);
|
||||
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_9, 5s);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_9, 6s);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_LK_9:
|
||||
if (me->GetEntry() == NPC_JAINA_PART1)
|
||||
{
|
||||
Talk(SAY_JAINA_INTRO_END);
|
||||
}
|
||||
else
|
||||
{
|
||||
Talk(SAY_SYLVANAS_INTRO_END);
|
||||
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION);
|
||||
me->GetMotionMaster()->MovePoint(0, LichKingMoveAwayPos, false);
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_DARK_RANGER_LORALEN)))
|
||||
c->GetMotionMaster()->MovePoint(0, LichKingMoveAwayPos, false);
|
||||
events.ScheduleEvent(EVENT_INTRO_END, 14s);
|
||||
}
|
||||
if (Creature* pLoralen = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_DARK_RANGER_LORALEN)))
|
||||
{
|
||||
pLoralen->GetMotionMaster()->MovePoint(0, LoralenFollowLk1, false);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_10, 1s + 500ms);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_LK_10:
|
||||
if (Creature* pLoralen = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_DARK_RANGER_LORALEN)))
|
||||
{
|
||||
pLoralen->GetMotionMaster()->MovePoint(0, LoralenFollowLk2, false);
|
||||
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_11, 2s);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_LK_11:
|
||||
if (Creature* pLoralen = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_DARK_RANGER_LORALEN)))
|
||||
{
|
||||
pLoralen->GetMotionMaster()->MovePoint(0, LoralenFollowLk3, false);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_12, 5s + 500ms);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_LK_12:
|
||||
if (Creature* pLichKing = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_LICH_KING_EVENT)))
|
||||
{
|
||||
pLichKing->SetVisible(false);
|
||||
}
|
||||
if (Creature* pLoralen = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_DARK_RANGER_LORALEN)))
|
||||
{
|
||||
pLoralen->GetMotionMaster()->MovePoint(0, LoralenFollowLkFinal, false);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_13, 2s);
|
||||
break;
|
||||
case EVENT_INTRO_LK_13:
|
||||
me->SetVisible(false);
|
||||
events.ScheduleEvent(EVENT_INTRO_END, 2s +500ms);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_END:
|
||||
pInstance->HandleGameObject(pInstance->GetGuidData(GO_ARTHAS_DOOR), false);
|
||||
pInstance->HandleGameObject(pInstance->GetGuidData(GO_FRONT_DOOR), false);
|
||||
events.ScheduleEvent(EVENT_INTRO_END_SET, 10s);
|
||||
events.ScheduleEvent(EVENT_INTRO_END_SET, 3s);
|
||||
break;
|
||||
case EVENT_INTRO_END_SET:
|
||||
if (Creature* pLichKing = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_LICH_KING_EVENT)))
|
||||
pLichKing->SetVisible(false);
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_DARK_RANGER_LORALEN)))
|
||||
c->SetVisible(false);
|
||||
me->SetVisible(false);
|
||||
if (Creature* pLoralen = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_DARK_RANGER_LORALEN)))
|
||||
{
|
||||
pLoralen->UpdatePosition(5369.71289f, 2083.6330f, 707.695129f, 0.188739f, true);
|
||||
pLoralen->StopMovingOnCurrentPos();
|
||||
pLoralen->SetVisible(true);
|
||||
pLoralen->KillSelf(pLoralen);
|
||||
}
|
||||
pInstance->SetData(DATA_INTRO, DONE);
|
||||
break;
|
||||
}
|
||||
@@ -1391,6 +1614,10 @@ enum eFightEvents
|
||||
{
|
||||
EVENT_EMPTY = 0,
|
||||
EVENT_LK_SAY_AGGRO,
|
||||
EVENT_LK_BATTLE_1,
|
||||
EVENT_LK_BATTLE_2,
|
||||
EVENT_LK_BATTLE_3,
|
||||
EVENT_LK_BATTLE_4,
|
||||
EVENT_JAINA_IMMOBILIZE_LK,
|
||||
EVENT_SYLVANAS_IMMOBILIZE_JUMP,
|
||||
EVENT_SYLVANAS_DARK_BINDING,
|
||||
@@ -1444,7 +1671,6 @@ public:
|
||||
events.Reset();
|
||||
events.RescheduleEvent(EVENT_LK_CHECK_COMBAT, 1s);
|
||||
}
|
||||
|
||||
void DoAction(int32 a) override
|
||||
{
|
||||
if (a == ACTION_START_LK_FIGHT_REAL)
|
||||
@@ -1463,7 +1689,6 @@ public:
|
||||
}
|
||||
else
|
||||
me->RemoveAura(SPELL_REMORSELESS_WINTER);
|
||||
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_SYLVANAS_PART2)))
|
||||
c->AI()->DoAction(ACTION_INFORM_WALL_DESTROYED);
|
||||
}
|
||||
@@ -1480,9 +1705,10 @@ public:
|
||||
{
|
||||
Talk(SAY_LK_IW_1);
|
||||
me->SetOrientation(4.15f);
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_ICE_WALL_TARGET)))
|
||||
if (Creature* icewall = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_ICE_WALL_TARGET)))
|
||||
{
|
||||
me->CastSpell(c, SPELL_SUMMON_ICE_WALL, false);
|
||||
me->SetFacingToObject(icewall);
|
||||
me->CastSpell(icewall, SPELL_SUMMON_ICE_WALL, false);
|
||||
events.ScheduleEvent(EVENT_LK_REMORSELESS_WINTER, 4s);
|
||||
}
|
||||
}
|
||||
@@ -1496,6 +1722,7 @@ public:
|
||||
|
||||
void JustSummoned(Creature* s) override
|
||||
{
|
||||
|
||||
++reqKillCount;
|
||||
if (events.GetNextEventTime(EVENT_DECREASE_REQ_COUNT_BY_100))
|
||||
events.RescheduleEvent(EVENT_DECREASE_REQ_COUNT_BY_100, 10s);
|
||||
@@ -1583,7 +1810,7 @@ public:
|
||||
me->CastSpell((Unit*)nullptr, SPELL_FURY_OF_FROSTMOURNE, false);
|
||||
}
|
||||
break;
|
||||
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.
|
||||
case EVENT_LK_START_FOLLOWING:
|
||||
{
|
||||
me->SetSpeed(MOVE_RUN, 9.0f / 7.0f);
|
||||
Movement::PointsArray path;
|
||||
@@ -1703,6 +1930,7 @@ public:
|
||||
pInstance = me->GetInstanceScript();
|
||||
if (!pInstance)
|
||||
me->IsAIEnabled = false;
|
||||
|
||||
}
|
||||
|
||||
InstanceScript* pInstance;
|
||||
@@ -1714,13 +1942,16 @@ public:
|
||||
currentStopPoint = 0;
|
||||
events.Reset();
|
||||
}
|
||||
|
||||
void DoAction(int32 actionId) override
|
||||
|
||||
{
|
||||
switch(actionId)
|
||||
{
|
||||
case ACTION_START_INTRO:
|
||||
events.ScheduleEvent(EVENT_LK_SAY_AGGRO, 0ms);
|
||||
events.ScheduleEvent(EVENT_LK_BATTLE_1, 2s +500ms);
|
||||
events.ScheduleEvent(EVENT_LK_BATTLE_2, 3s);
|
||||
events.ScheduleEvent(me->GetEntry() == NPC_JAINA_PART2 ? EVENT_JAINA_IMMOBILIZE_LK : EVENT_SYLVANAS_IMMOBILIZE_JUMP, 9s);
|
||||
break;
|
||||
case ACTION_START_LK_FIGHT_REAL:
|
||||
events.ScheduleEvent(EVENT_START_RUN, 0ms);
|
||||
@@ -1741,8 +1972,11 @@ public:
|
||||
|
||||
void MoveToNextStopPoint()
|
||||
{
|
||||
me->SetSpeed(MOVE_RUN, me->GetCreatureTemplate()->speed_run);
|
||||
me->InterruptNonMeleeSpells(true);
|
||||
me->SetSheath(SHEATH_STATE_MELEE);
|
||||
++currentStopPoint;
|
||||
me->SetWalk(false);
|
||||
Movement::PointsArray path;
|
||||
path.push_back(G3D::Vector3(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ()));
|
||||
for (uint8 i = WP_STOP[currentStopPoint - 1] + (currentStopPoint == 1 ? 0 : 1); i <= WP_STOP[currentStopPoint]; ++i)
|
||||
@@ -1762,43 +1996,72 @@ public:
|
||||
switch(events.ExecuteEvent())
|
||||
{
|
||||
case EVENT_LK_SAY_AGGRO:
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
c->AI()->Talk(me->GetEntry() == NPC_JAINA_PART2 ? SAY_LK_AGGRO_ALLY : SAY_LK_AGGRO_HORDE);
|
||||
events.ScheduleEvent(me->GetEntry() == NPC_JAINA_PART2 ? EVENT_JAINA_IMMOBILIZE_LK : EVENT_SYLVANAS_IMMOBILIZE_JUMP, 12s);
|
||||
if (Creature* lkboss = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
{
|
||||
me->Attack(lkboss, true),
|
||||
lkboss->AI()->Talk(me->GetEntry() == NPC_JAINA_PART2 ? SAY_LK_AGGRO_ALLY : SAY_LK_AGGRO_HORDE);
|
||||
}
|
||||
break;
|
||||
case EVENT_LK_BATTLE_1:
|
||||
if (Creature* lkboss = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
{
|
||||
lkboss->CastSpell(lkboss, SPELL_SOUL_REAPER, false);
|
||||
}
|
||||
break;
|
||||
case EVENT_LK_BATTLE_2:
|
||||
//horda
|
||||
if (Creature* leader = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_SYLVANAS_PART2)))
|
||||
{
|
||||
leader->CastSpell(leader, SPELL_EVASION, true);
|
||||
}
|
||||
if (Creature* lkboss = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
{
|
||||
lkboss->SetFacingToObject(me);
|
||||
}
|
||||
if (Creature* lkboss = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
{
|
||||
lkboss->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_ATTACK2HTIGHT);
|
||||
me->SetFacingToObject(lkboss);
|
||||
}
|
||||
break;
|
||||
case EVENT_JAINA_IMMOBILIZE_LK:
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
if (Creature* lkboss = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
{
|
||||
c->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
|
||||
lkboss->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY_SPELL_OMNI);
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
|
||||
me->CastSpell(c, SPELL_JAINA_ICE_PRISON, false);
|
||||
me->CastSpell(lkboss, SPELL_JAINA_ICE_PRISON, false);
|
||||
events.ScheduleEvent(EVENT_SAY_LEAVE, 5s);
|
||||
}
|
||||
break;
|
||||
case EVENT_SYLVANAS_IMMOBILIZE_JUMP:
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
if (Creature* lkboss = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
{
|
||||
c->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
|
||||
me->AttackStop();
|
||||
me->SetSheath(SHEATH_STATE_MELEE);
|
||||
lkboss->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY_SPELL_OMNI);
|
||||
lkboss->CastSpell(me, SPELL_BLIDING_RETREAT, false);
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
|
||||
me->KnockbackFrom(c->GetPositionX(), c->GetPositionY(), 10.0f, 3.0f);
|
||||
events.ScheduleEvent(EVENT_SYLVANAS_DARK_BINDING, 1500ms);
|
||||
me->KnockbackFrom(lkboss->GetPositionX(), lkboss->GetPositionY(), 34.3f, 4.0f);
|
||||
events.ScheduleEvent(EVENT_SYLVANAS_DARK_BINDING, 2s +500ms);
|
||||
}
|
||||
break;
|
||||
case EVENT_SYLVANAS_DARK_BINDING:
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
me->CastSpell(c, SPELL_SYLVANAS_DARK_BINDING, false);
|
||||
events.ScheduleEvent(EVENT_SAY_LEAVE, 3500ms);
|
||||
if (Creature* lkboss = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
me->CastSpell(lkboss, SPELL_SYLVANAS_DARK_BINDING, false);
|
||||
events.ScheduleEvent(EVENT_SAY_LEAVE, 2s);
|
||||
break;
|
||||
case EVENT_SAY_LEAVE:
|
||||
{
|
||||
Map::PlayerList const& pl = pInstance->instance->GetPlayers();
|
||||
for (Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr)
|
||||
if (Player* p = itr->GetSource())
|
||||
p->KilledMonsterCredit(me->GetEntry()); // for quest
|
||||
|
||||
p->KilledMonsterCredit(me->GetEntry()); //for quest
|
||||
Talk(me->GetEntry() == NPC_JAINA_PART2 ? SAY_JAINA_AGGRO : SAY_SYLVANA_AGGRO);
|
||||
me->SetSheath(SHEATH_STATE_MELEE);
|
||||
me->SetWalk(false);
|
||||
me->SetSpeed(MOVE_RUN, me->GetCreatureTemplate()->speed_run);
|
||||
me->GetMotionMaster()->MovePoint(0, LeaderEscapePos);
|
||||
events.ScheduleEvent(EVENT_ADD_GOSSIP, 8s);
|
||||
events.ScheduleEvent(EVENT_ADD_GOSSIP, 7s);
|
||||
}
|
||||
break;
|
||||
case EVENT_ADD_GOSSIP:
|
||||
@@ -1811,12 +2074,12 @@ public:
|
||||
pInstance->SetData(ACTION_START_LK_FIGHT, 1);
|
||||
me->setActive(true);
|
||||
MoveToNextStopPoint();
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
if (Creature* lkboss = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
{
|
||||
c->setActive(true);
|
||||
c->SetInCombatWithZone();
|
||||
c->RemoveAura(me->GetEntry() == NPC_JAINA_PART2 ? SPELL_JAINA_ICE_PRISON : SPELL_SYLVANAS_DARK_BINDING);
|
||||
c->AI()->DoAction(ACTION_START_LK_FIGHT_REAL);
|
||||
lkboss->setActive(true);
|
||||
lkboss->SetInCombatWithZone();
|
||||
lkboss->RemoveAura(me->GetEntry() == NPC_JAINA_PART2 ? SPELL_JAINA_ICE_PRISON : SPELL_SYLVANAS_DARK_BINDING);
|
||||
lkboss->AI()->DoAction(ACTION_START_LK_FIGHT_REAL);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -1855,6 +2118,7 @@ public:
|
||||
Talk(me->GetEntry() == NPC_JAINA_PART2 ? SAY_JAINA_ESCAPE_01 : SAY_SYLVANA_ESCAPE_01);
|
||||
break;
|
||||
}
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
};
|
||||
@@ -1898,8 +2162,8 @@ public:
|
||||
{
|
||||
me->SetCorpseDelay(10);
|
||||
if (InstanceScript* pInstance = me->GetInstanceScript())
|
||||
if (Creature* lk = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
lk->AI()->DoAction(ACTION_INFORM_TRASH_DIED);
|
||||
if (Creature* lkboss = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
lkboss->AI()->DoAction(ACTION_INFORM_TRASH_DIED);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1967,8 +2231,10 @@ public:
|
||||
{
|
||||
me->SetCorpseDelay(10);
|
||||
if (InstanceScript* pInstance = me->GetInstanceScript())
|
||||
if (Creature* lk = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
lk->AI()->DoAction(ACTION_INFORM_TRASH_DIED);
|
||||
if (Creature* lkboss = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
{
|
||||
lkboss->AI()->DoAction(ACTION_INFORM_TRASH_DIED);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2023,8 +2289,9 @@ public:
|
||||
}
|
||||
|
||||
if (me->GetVictim() && me->isAttackReady() && me->IsWithinMeleeRange(me->GetVictim()) && !me->HasUnitState(UNIT_STATE_CASTING))
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), 40505, false);
|
||||
|
||||
}
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
@@ -2032,8 +2299,10 @@ public:
|
||||
{
|
||||
me->SetCorpseDelay(10);
|
||||
if (InstanceScript* pInstance = me->GetInstanceScript())
|
||||
if (Creature* lk = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
lk->AI()->DoAction(ACTION_INFORM_TRASH_DIED);
|
||||
if (Creature* lkboss = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
{
|
||||
lkboss->AI()->DoAction(ACTION_INFORM_TRASH_DIED);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2057,8 +2326,10 @@ public:
|
||||
PreventDefaultAction();
|
||||
if (Unit* caster = GetCaster())
|
||||
if (Creature* c = caster->SummonCreature(WORLD_TRIGGER, CannonFirePos[caster->GetEntry() == NPC_JAINA_PART2 ? 0 : 1][urand(0, 2)], TEMPSUMMON_TIMED_DESPAWN, 1))
|
||||
{
|
||||
c->CastSpell((Unit*)nullptr, 70021, true);
|
||||
}
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
|
||||
@@ -50,6 +50,7 @@ enum Data
|
||||
ACTION_STOP_LK_FIGHT,
|
||||
ACTION_DELETE_ICE_WALL,
|
||||
DATA_WAVE_NUMBER,
|
||||
DATA_LK_BATTLE,// in progress
|
||||
};
|
||||
|
||||
enum Creatures
|
||||
@@ -84,6 +85,7 @@ enum Creatures
|
||||
NPC_SKY_REAVER_KORM_BLACKSKAR = 30824,
|
||||
NPC_ALTAR_BUNNY = 37704,
|
||||
NPC_QUEL_DELAR = 37158,
|
||||
|
||||
};
|
||||
|
||||
enum GameObjects
|
||||
@@ -263,8 +265,14 @@ enum hMisc
|
||||
SPELL_HOR_START_QUEST_ALLY = 71351,
|
||||
SPELL_HOR_START_QUEST_HORDE = 71542,
|
||||
SPELL_SHADOWMOURNE_VISUAL = 72523,
|
||||
SPELL_ARCANE_CAST_VISUAL = 65633,
|
||||
SPELL_UTHER_DESPAWN = 70693, //Sniffed
|
||||
SPELL_WELL_OF_SOULS_VISUAL = 72630,
|
||||
SPELL_SUMMON_SOULS = 72711, //Sniffed Sylvanas
|
||||
|
||||
//Battle of LK
|
||||
SPELL_BLIDING_RETREAT = 70199, //Sniffed LK
|
||||
SPELL_SOUL_REAPER = 69410, //Sniffed LK
|
||||
SPELL_EVASION = 70190, //Sniffed Sylvanas
|
||||
|
||||
// Frostsworn General
|
||||
EVENT_ACTIVATE_REFLECTIONS = 1,
|
||||
@@ -311,17 +319,23 @@ const uint32 allowedCompositions[8][5] =
|
||||
};
|
||||
|
||||
const Position CenterPos = {5309.459473f, 2006.478516f, 711.595459f, 0.0f};
|
||||
const Position SpawnPos = {5262.540527f, 1949.693726f, 707.695007f, 0.808736f}; // Jaina/Sylvanas Beginning Position
|
||||
const Position LoralenFollowPos = {5283.234863f, 1990.946777f, 707.695679f, 0.929097f};
|
||||
const Position MoveThronePos = {5306.952148f, 1998.499023f, 709.341431f, 1.277278f}; // Jaina/Sylvanas walks to throne
|
||||
const Position UtherSpawnPos = {5308.310059f, 2003.857178f, 709.341431f, 4.650315f};
|
||||
const Position SpawnPos = {5263.22412f, 1950.95544f, 707.695862f, 0.808736f}; // Jaina/Sylvanas Beginning Position
|
||||
const Position LoralenMidleFollowPos = {5274.25634f, 1976.04760f, 707.694763f, 0.929097f}; // Sniffed
|
||||
const Position LoralenFollowPos = {5283.29296f, 1992.43078f, 707.694763f, 0.549238f}; // Sniffed
|
||||
const Position LoralenFollowLk1 = {5292.94921f, 2008.25451f, 707.695801f, 1.047967f}; // Sniffed
|
||||
const Position LoralenFollowLk2 = {5298.94335f, 2016.37097f, 707.695801f, 0.694538f}; // Sniffed
|
||||
const Position LoralenFollowLk3 = {5336.94044f, 2040.21814f, 707.695801f, 0.439284f}; // Sniffed
|
||||
const Position LoralenFollowLkFinal = {5361.96777f, 2065.68310f, 707.693848f, 0.831989f}; // Sniffed
|
||||
const Position LoralenDeadPos = {5369.71289f, 2083.6330f, 707.695129f, 0.188739f}; // Sniffed
|
||||
const Position MoveThronePos = {5306.98535f, 1998.10302f, 709.341187f, 1.277278f}; // Jaina/Sylvanas walks to throne
|
||||
const Position UtherSpawnPos = {5308.310059f, 2003.857178f, 709.341431f, 4.650315f}; // Uther starting position
|
||||
const Position LichKingSpawnPos = {5362.917480f, 2062.307129f, 707.695374f, 3.945812f};
|
||||
const Position LichKingMoveThronePos = {5312.080566f, 2009.172119f, 709.341431f, 3.973301f}; // Lich King walks to throne
|
||||
const Position LichKingMoveAwayPos = {5400.069824f, 2102.7131689f, 707.69525f, 0.843803f}; // Lich King walks away
|
||||
const Position LichKingMoveMidlelThronePos = {5333.48437f, 2032.02648f, 707.695679f, 3.973301f}; // Lich King moves and hits Uther [sniff]
|
||||
const Position LichKingMoveThronePos = {5312.79638f, 2010.07141f, 709.3942183f, 3.973301f}; // Lich King walks to throne [sniff]
|
||||
const Position LichKingMoveAwayPos = {5400.069824f, 2102.7131689f, 707.69525f, 0.843803f}; // Lich King walks away [sniff]
|
||||
const Position FalricMovePos = {5284.161133f, 2030.691650f, 709.319336f, 5.489386f};
|
||||
const Position MarwynMovePos = {5335.330078f, 1982.376221f, 709.319580f, 2.339942f};
|
||||
const Position SylvanasFightPos = {5557.508301f, 2263.920654f, 733.011230f, 3.624075f};
|
||||
const Position LeaderEscapePos = {5577.654785f, 2235.347412f, 733.011230f, 2.359576f};
|
||||
const Position LeaderEscapePos = {5576.80566f, 2235.55004f, 733.012268f, 2.782125f}; //Sniff
|
||||
const Position ShipMasterSummonPos = {5262.773926f, 1669.980103f, 715.000000f, 0.000000f};
|
||||
const Position WalkCaveInPos = {5267.594238f, 1678.750000f, 784.302856f, 1.041739f};
|
||||
const Position AllyPortalPos = {5205.015625f, 1605.680298f, 806.444458f, 0.884375f};
|
||||
|
||||
+15
-22
@@ -230,6 +230,7 @@ public:
|
||||
{
|
||||
case NPC_SYLVANAS_PART1:
|
||||
creature->SetVisible(false);
|
||||
creature->SetSpeed(MOVE_RUN, 1.1);
|
||||
NPC_LeaderIntroGUID = creature->GetGUID();
|
||||
if (TeamIdInInstance == TEAM_ALLIANCE)
|
||||
creature->UpdateEntry(NPC_JAINA_PART1);
|
||||
@@ -296,12 +297,8 @@ public:
|
||||
creature->SetVisible(false);
|
||||
if (!(EncounterMask & (1 << DATA_LK_INTRO)))
|
||||
{
|
||||
creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_ATTACK2HTIGHT);
|
||||
if (TeamIdInInstance != TEAM_ALLIANCE)
|
||||
{
|
||||
creature->StopMoving();
|
||||
creature->SetFacingTo(creature->GetAngle(&SylvanasFightPos));
|
||||
}
|
||||
creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_ATTACK2HTIGHT); //the fight cannot be in the form of an emote, it is causing bugs
|
||||
creature->CastSpell(creature, SPELL_SOUL_REAPER, true);
|
||||
}
|
||||
else if (!(EncounterMask & (1 << DATA_LICH_KING)))
|
||||
creature->AddAura(TeamIdInInstance == TEAM_ALLIANCE ? SPELL_JAINA_ICE_PRISON : SPELL_SYLVANAS_DARK_BINDING, creature);
|
||||
@@ -316,22 +313,20 @@ public:
|
||||
if (!creature->IsAlive())
|
||||
creature->Respawn();
|
||||
NPC_LeaderGUID = creature->GetGUID();
|
||||
creature->SetWalk(false);
|
||||
creature->SetSheath(SHEATH_STATE_MELEE);
|
||||
if (TeamIdInInstance == TEAM_ALLIANCE)
|
||||
creature->UpdateEntry(NPC_JAINA_PART2);
|
||||
creature->SetWalk(false);
|
||||
creature->SetHealth(creature->GetMaxHealth() / 20);
|
||||
|
||||
if (!(EncounterMask & (1 << DATA_FROSTSWORN_GENERAL)))
|
||||
creature->SetVisible(false);
|
||||
if (!(EncounterMask & (1 << DATA_LK_INTRO)))
|
||||
{
|
||||
creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, TeamIdInInstance == TEAM_ALLIANCE ? EMOTE_ONESHOT_ATTACK2HTIGHT : EMOTE_ONESHOT_ATTACK1H);
|
||||
creature->SetSheath(SHEATH_STATE_MELEE);
|
||||
creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, TeamIdInInstance == TEAM_ALLIANCE ? EMOTE_ONESHOT_ATTACK2HTIGHT : EMOTE_ONESHOT_ATTACK1H); //the fight cannot be in the form of an emote, it is causing bugs.
|
||||
creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
|
||||
creature->CastSpell(creature, TeamIdInInstance == TEAM_ALLIANCE ? SPELL_JAINA_ICE_BARRIER : SPELL_SYLVANAS_CLOAK_OF_DARKNESS, true);
|
||||
if (TeamIdInInstance != TEAM_ALLIANCE)
|
||||
{
|
||||
creature->UpdatePosition(SylvanasFightPos, true);
|
||||
creature->StopMovingOnCurrentPos();
|
||||
}
|
||||
}
|
||||
else if (!(EncounterMask & (1 << DATA_LICH_KING)))
|
||||
{
|
||||
@@ -346,6 +341,7 @@ public:
|
||||
creature->UpdatePosition(PathWaypoints[PATH_WP_COUNT - 1], true);
|
||||
creature->StopMovingOnCurrentPos();
|
||||
}
|
||||
creature->SetSheath(SHEATH_STATE_MELEE);
|
||||
creature->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
break;
|
||||
case NPC_ICE_WALL_TARGET:
|
||||
@@ -444,8 +440,13 @@ public:
|
||||
if (Creature* c = instance->GetCreature(NPC_FrostswornGeneralGUID))
|
||||
{
|
||||
c->SetVisible(true);
|
||||
c->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
|
||||
c->SetReactState(REACT_AGGRESSIVE);
|
||||
}
|
||||
if (Creature* c = instance->GetCreature(NPC_FrostswornGeneralGUID))
|
||||
{
|
||||
c->HandleEmoteCommand(EMOTE_ONESHOT_EMERGE);
|
||||
}
|
||||
WaveNumber = 0;
|
||||
DoUpdateWorldState(WORLD_STATE_HOR_COUNTER, 0);
|
||||
|
||||
@@ -712,7 +713,6 @@ public:
|
||||
case GO_FRONT_DOOR:
|
||||
return GO_FrontDoorGUID;
|
||||
}
|
||||
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
@@ -772,7 +772,6 @@ public:
|
||||
++ur;
|
||||
}
|
||||
}
|
||||
|
||||
if (bFinished5Waves)
|
||||
{
|
||||
for (; WaveNumber < 4; ++WaveNumber)
|
||||
@@ -860,9 +859,7 @@ public:
|
||||
num_to_activate = 3;
|
||||
else if (WaveNumber <= 4)
|
||||
num_to_activate = 4;
|
||||
|
||||
reqKillCount += num_to_activate;
|
||||
|
||||
for (uint8 i = 0; i < num_to_activate; ++i)
|
||||
{
|
||||
uint32 entry = chosenComposition[WaveNumber - (WaveNumber > 5 ? 2 : 1)][i];
|
||||
@@ -910,7 +907,6 @@ public:
|
||||
c->StopMovingOnCurrentPos();
|
||||
}
|
||||
memset(&TrashActive, 0, sizeof(TrashActive));
|
||||
|
||||
if (Creature* falric = instance->GetCreature(NPC_FalricGUID))
|
||||
falric->AI()->EnterEvadeMode();
|
||||
if (Creature* marwyn = instance->GetCreature(NPC_MarwynGUID))
|
||||
@@ -1014,7 +1010,6 @@ public:
|
||||
if (Aura* a = pMarwyn->AddAura(SPELL_SHADOWMOURNE_VISUAL, pMarwyn))
|
||||
a->SetDuration(8000);
|
||||
}
|
||||
|
||||
pMarwyn->AI()->Talk(EMOTE_MARWYN_INTRO_SPIRIT);
|
||||
}
|
||||
++ResumeFirstEventStep;
|
||||
@@ -1035,7 +1030,6 @@ public:
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SetData(ACTION_SHOW_TRASH, 1);
|
||||
ResumeFirstEventStep = 0;
|
||||
ResumeFirstEventTimer = 0;
|
||||
@@ -1057,7 +1051,6 @@ public:
|
||||
else
|
||||
ResumeFirstEventTimer -= diff;
|
||||
}
|
||||
|
||||
if (outroStep)
|
||||
{
|
||||
if (outroTimer <= diff)
|
||||
@@ -1153,7 +1146,6 @@ public:
|
||||
if (StairsPos[index][i].GetPositionX())
|
||||
if (GameObject* go = leader->SummonGameObject(TeamIdInInstance == TEAM_ALLIANCE ? GO_STAIRS_ALLIANCE : GO_STAIRS_HORDE, StairsPos[index][i].GetPositionX(), StairsPos[index][i].GetPositionY(), StairsPos[index][i].GetPositionZ(), StairsPos[index][i].GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 86400, false))
|
||||
go->SetGameObjectFlag(GO_FLAG_INTERACT_COND | GO_FLAG_NOT_SELECTABLE);
|
||||
|
||||
//Position pos = TeamIdInInstance == TEAM_ALLIANCE ? AllyPortalPos : HordePortalPos;
|
||||
//leader->SummonGameObject(GO_PORTAL_TO_DALARAN, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 86400);
|
||||
//pos = TeamIdInInstance == TEAM_ALLIANCE ? AllyChestPos : HordeChestPos;
|
||||
@@ -1169,6 +1161,7 @@ public:
|
||||
{
|
||||
c->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
c->GetMotionMaster()->MovePoint(0, WalkCaveInPos);
|
||||
c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); // need gossip ID 10931
|
||||
}
|
||||
++outroStep;
|
||||
outroTimer = 6000;
|
||||
|
||||
Reference in New Issue
Block a user