mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-29 00:23:48 +00:00
Scripts/OldHisbradFoothills): Improved Escape from Durnholde Keep event. (#15189)
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
--
|
||||
DELETE FROM `creature_text` WHERE `CreatureID`=17876 AND `groupid` IN (21,22,23);
|
||||
INSERT INTO `creature_text` VALUES
|
||||
(17876,21,0,'Thrall startles the horse with a fierce yell!',16,0,100,0,0,0,0,0,'Thrall Horse Emote'),
|
||||
(17876,22,0,'Thrall tries to calm the horse down.',16,0,100,0,0,0,0,0,'Thrall Horse Emote 2'),
|
||||
(17876,23,0,'Taretha isn\'t here. Let\'s head into town.',12,0,100,0,0,0,0,0,'Thrall Say Lead');
|
||||
|
||||
UPDATE `creature_text` SET `groupid`=8 WHERE `CreatureID`=18096 AND `GroupId`=6;
|
||||
UPDATE `creature_text` SET `groupid`=7 WHERE `CreatureID`=18096 AND `GroupId`=5;
|
||||
UPDATE `creature_text` SET `groupid`=6 WHERE `CreatureID`=18096 AND `GroupId`=4;
|
||||
UPDATE `creature_text` SET `groupid`=5 WHERE `CreatureID`=18096 AND `GroupId`=3;
|
||||
UPDATE `creature_text` SET `groupid`=4 WHERE `CreatureID`=18096 AND `GroupId`=2;
|
||||
UPDATE `creature_text` SET `groupid`=3 WHERE `CreatureID`=18096 AND `GroupId`=1;
|
||||
UPDATE `creature_text` SET `groupid`=2 WHERE `CreatureID`=18096 AND `GroupId`=0 AND `id`=2;
|
||||
UPDATE `creature_text` SET `groupid`=1 WHERE `CreatureID`=18096 AND `GroupId`=0 AND `id`=1;
|
||||
|
||||
UPDATE `script_waypoint` SET `waitTime`=13000 WHERE `entry`=17876 AND `pointid`=10;
|
||||
UPDATE `script_waypoint` SET `waitTime`=20000 WHERE `entry`=17876 AND `pointid`=67;
|
||||
|
||||
DELETE FROM `waypoints` WHERE `entry` IN (180920,180921,180930,180940);
|
||||
INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `position_z`) VALUES
|
||||
(180920,1,2498.1045,695.5946,55.63158),
|
||||
(180920,2,2495.6223,694.5012,55.63158),
|
||||
(180920,3,2492.622,693.5881,55.699432),
|
||||
(180920,4,2490.3777,695.98254,55.72346),
|
||||
(180920,5,2490.0405,699.02325,55.73774),
|
||||
(180920,6,2489.702,702.07544,55.759163),
|
||||
(180920,7,2489.3306,702.90985,55.765854),
|
||||
(180920,8,2488.1714,702.7047,55.77027),
|
||||
|
||||
(180921,1,2496.374,695.5221,55.63158),
|
||||
(180921,2,2493.9353,694.89294,55.699627),
|
||||
(180921,3,2490.935,693.97974,55.711452),
|
||||
(180921,4,2491.0732,697.56885,55.724335),
|
||||
(180921,5,2490.736,700.60956,55.741653),
|
||||
(180921,6,2490.3975,703.66174,55.76295),
|
||||
(180921,7,2487.7026,703.5013,55.777214),
|
||||
|
||||
(180930,1,2497.1765,697.05707,55.63158),
|
||||
(180930,2,2495.118,696.15826,55.63158),
|
||||
(180930,3,2492.1177,695.24506,55.70963),
|
||||
(180930,4,2492.099,696.17346,55.713726),
|
||||
(180930,5,2491.762,699.2142,55.728592),
|
||||
(180930,6,2491.4233,702.26636,55.751934),
|
||||
(180930,7,2489.0288,704.6154,55.77536),
|
||||
(180930,8,2487.8696,704.4103,55.780678),
|
||||
|
||||
(180940,1,2495.4795,694.95447,55.63158),
|
||||
(180940,2,2491.4536,694.1376,55.70895),
|
||||
(180940,3,2490.363,703.972,55.764732);
|
||||
|
||||
UPDATE `smart_scripts` SET `link`=4 WHERE `entryorguid`=18092 AND `source_type`=0 AND `id`=3;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=18092 AND `source_type`=0 AND `id` IN (4,5,6);
|
||||
INSERT INTO `smart_scripts` VALUES
|
||||
(18092,0,4,0,61,0,100,0,0,0,0,0,0,53,0,180920,0,0,0,2,1,0,0,0,0,0,0,0,0,'Tarren Mill Guardsman - Do Action - Start WP'),
|
||||
(18092,0,5,6,72,0,100,0,2,0,0,0,0,19,768,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Tarren Mill Guardsman - Do Action - Remove Unit Flag'),
|
||||
(18092,0,6,0,61,0,100,0,0,0,0,0,0,53,0,180921,0,0,0,2,1,0,0,0,0,0,0,0,0,'Tarren Mill Guardsman - Do Action - Start WP');
|
||||
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=18092 AND `SourceId` IN (4,6);
|
||||
INSERT INTO `conditions` VALUES
|
||||
(22,0,18092,4,0,1,1,22805,0,0,0,0,0,'','Exeucte SAI if aura present'),
|
||||
(22,0,18092,6,0,1,1,22805,0,0,1,0,0,'','Exeucte SAI if aura not present');
|
||||
|
||||
UPDATE `smart_scripts` SET `link`=8 WHERE `entryorguid`=18093 AND `source_type`=0 AND `id`=7;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=18093 AND `source_type`=0 AND `id`=8;
|
||||
INSERT INTO `smart_scripts` VALUES
|
||||
(18093,0,8,0,61,0,100,0,0,0,0,0,0,53,0,180930,0,0,0,2,1,0,0,0,0,0,0,0,0,'Tarren Mill Protector - Do Action - Start WP');
|
||||
|
||||
UPDATE `smart_scripts` SET `link`=6 WHERE `entryorguid`=18094 AND `source_type`=0 AND `id`=5;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=18094 AND `source_type`=0 AND `id`=6;
|
||||
INSERT INTO `smart_scripts` VALUES
|
||||
(18094,0,6,0,61,0,100,0,0,0,0,0,0,53,0,180940,0,0,0,2,1,0,0,0,0,0,0,0,0,'Tarren Mill Lookout - Do Action - Start WP');
|
||||
@@ -118,12 +118,16 @@ public:
|
||||
}
|
||||
else if (id == 2)
|
||||
{
|
||||
me->SummonCreature(NPC_SKARLOC_MOUNT, 2049.12f, 252.31f, 62.855f, me->GetOrientation(), TEMPSUMMON_MANUAL_DESPAWN);
|
||||
me->Dismount();
|
||||
me->SetWalk(true);
|
||||
for (SummonList::const_iterator itr = summons.begin(); itr != summons.end(); ++itr)
|
||||
if (Creature* summon = ObjectAccessor::GetCreature(*me, *itr))
|
||||
summon->SetWalk(true);
|
||||
if (Creature* mount = me->SummonCreature(NPC_SKARLOC_MOUNT, 2049.12f, 252.31f, 62.855f, me->GetOrientation(), TEMPSUMMON_MANUAL_DESPAWN))
|
||||
{
|
||||
mount->SetImmuneToNPC(true);
|
||||
mount->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
}
|
||||
|
||||
if (me->movespline->Finalized())
|
||||
|
||||
@@ -21,10 +21,10 @@
|
||||
|
||||
enum EpochHunter
|
||||
{
|
||||
SAY_AGGRO = 3,
|
||||
SAY_SLAY = 4,
|
||||
SAY_BREATH = 5,
|
||||
SAY_DEATH = 6,
|
||||
SAY_AGGRO = 5,
|
||||
SAY_SLAY = 6,
|
||||
SAY_BREATH = 7,
|
||||
SAY_DEATH = 8,
|
||||
|
||||
SPELL_SAND_BREATH = 31914,
|
||||
SPELL_IMPENDING_DEATH = 31916,
|
||||
|
||||
@@ -54,6 +54,9 @@ enum Says
|
||||
SAY_ENTER_CHURCH = 18,
|
||||
SAY_GREET_TARETHA = 19,
|
||||
SAY_CHAT_TARETHA1 = 20,
|
||||
SAY_EMOTE_HORSE = 21,
|
||||
SAY_EMOTE_HORSE_2 = 22,
|
||||
SAY_LEAD = 23,
|
||||
|
||||
SAY_TARETHA_FREE = 0,
|
||||
SAY_TARETHA_ESCAPED = 1,
|
||||
@@ -87,7 +90,10 @@ enum Spells
|
||||
|
||||
SPELL_TELEPORT = 34776,
|
||||
SPELL_MEMORY_WIPE = 33336,
|
||||
SPELL_MEMORY_WIPE_RESUME = 33337
|
||||
SPELL_MEMORY_WIPE_RESUME = 33337,
|
||||
SPELL_KNOCKOUT_ARMORER = 32890,
|
||||
SPELL_SALVATION = 33790,
|
||||
SPELL_DUMMY_AURA = 22805
|
||||
};
|
||||
|
||||
enum Npcs
|
||||
@@ -133,8 +139,10 @@ enum Events
|
||||
EVENT_START_WP = 7,
|
||||
|
||||
EVENT_SET_FACING = 9,
|
||||
EVENT_KILL_ARMORER = 10,
|
||||
EVENT_TALK_KILL_ARMORER = 11,
|
||||
EVENT_ARMORER_SAY = 10,
|
||||
EVENT_THRALL_EMOTE = 11,
|
||||
EVENT_KILL_ARMORER = 12,
|
||||
EVENT_TALK_KILL_ARMORER = 13,
|
||||
|
||||
EVENT_DRESSING_KNEEL = 20,
|
||||
EVENT_DRESSING_ARMOR = 21,
|
||||
@@ -149,12 +157,14 @@ enum Events
|
||||
EVENT_LOOK_1 = 40,
|
||||
EVENT_MOVE_AROUND = 41,
|
||||
EVENT_LOOK_2 = 42,
|
||||
EVENT_LOOK_3 = 43,
|
||||
EVENT_SUMMON_GUARDS = 44,
|
||||
EVENT_SUMMON_GUARDS = 43,
|
||||
EVENT_LOOK_3 = 44,
|
||||
EVENT_SUMMON_TALK1 = 45,
|
||||
EVENT_SUMMON_TALK2 = 46,
|
||||
EVENT_LOOK_4 = 46,
|
||||
EVENT_SUMMON_TALK2 = 47,
|
||||
EVENT_GUARDS_MOVING = 48,
|
||||
|
||||
EVENT_LOOK_4 = 50,
|
||||
EVENT_LOOK_5 = 50,
|
||||
EVENT_SUMMON_GUARDS_2 = 51,
|
||||
EVENT_SUMMON_TALK3 = 52,
|
||||
|
||||
@@ -186,7 +196,8 @@ enum Events
|
||||
EVENT_EROZION_TALK_3 = 89,
|
||||
EVENT_THRALL_TALK_6 = 90,
|
||||
EVENT_THRALL_RUN_AWAY = 91,
|
||||
EVENT_TARETHA_TALK_2 = 92
|
||||
EVENT_TARETHA_TALK_2 = 92,
|
||||
EVENT_EROZION_FLAGS = 93
|
||||
};
|
||||
|
||||
class npc_thrall_old_hillsbrad : public CreatureScript
|
||||
@@ -238,6 +249,8 @@ public:
|
||||
npc_thrall_old_hillsbradAI(Creature* creature) : npc_escortAI(creature), summons(me)
|
||||
{
|
||||
instance = creature->GetInstanceScript();
|
||||
_barnWave = false;
|
||||
_churchWave = false;
|
||||
}
|
||||
|
||||
void DoAction(int32 param) override
|
||||
@@ -258,7 +271,7 @@ public:
|
||||
events.ScheduleEvent(EVENT_SUMMON_CHRONO, 0);
|
||||
events.ScheduleEvent(EVENT_THRALL_TALK_2, 6000);
|
||||
events.ScheduleEvent(EVENT_TARETHA_FALL, 11000);
|
||||
events.ScheduleEvent(EVENT_THRALL_TALK_3, 14000);
|
||||
events.ScheduleEvent(EVENT_THRALL_TALK_3, 15000);
|
||||
events.ScheduleEvent(EVENT_THRALL_MOVE_DOWN, 17000);
|
||||
break;
|
||||
case NPC_TARETHA:
|
||||
@@ -268,13 +281,14 @@ public:
|
||||
events.ScheduleEvent(EVENT_THRALL_TALK_5, 17000);
|
||||
events.ScheduleEvent(EVENT_SUMMON_EROZION, 17500);
|
||||
events.ScheduleEvent(EVENT_EROZION_TALK_1, 18000);
|
||||
events.ScheduleEvent(EVENT_EROZION_ACTION_1, 26000);
|
||||
events.ScheduleEvent(EVENT_EROZION_ACTION_1, 24000);
|
||||
events.ScheduleEvent(EVENT_EROZION_TALK_2, 29000);
|
||||
events.ScheduleEvent(EVENT_EROZION_TALK_3, 42000);
|
||||
events.ScheduleEvent(EVENT_EROZION_ACTION_2, 47000);
|
||||
events.ScheduleEvent(EVENT_EROZION_TALK_3, 40000);
|
||||
events.ScheduleEvent(EVENT_EROZION_ACTION_2, 46000);
|
||||
events.ScheduleEvent(EVENT_THRALL_TALK_6, 48000);
|
||||
events.ScheduleEvent(EVENT_THRALL_RUN_AWAY, 51000);
|
||||
events.ScheduleEvent(EVENT_TARETHA_TALK_2, 53000);
|
||||
events.ScheduleEvent(EVENT_EROZION_FLAGS, 56000);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -298,11 +312,13 @@ public:
|
||||
break;
|
||||
case 8:
|
||||
events.ScheduleEvent(EVENT_SET_FACING, 500);
|
||||
events.ScheduleEvent(EVENT_ARMORER_SAY, 700);
|
||||
events.ScheduleEvent(EVENT_THRALL_EMOTE, 1300);
|
||||
break;
|
||||
case 9:
|
||||
SetRun(false);
|
||||
events.ScheduleEvent(EVENT_KILL_ARMORER, 500);
|
||||
events.ScheduleEvent(EVENT_TALK_KILL_ARMORER, 4000);
|
||||
events.ScheduleEvent(EVENT_TALK_KILL_ARMORER, 3000);
|
||||
break;
|
||||
case 10:
|
||||
SetRun(true);
|
||||
@@ -313,35 +329,33 @@ public:
|
||||
events.ScheduleEvent(EVENT_DRESSING_SHIELD, 9000);
|
||||
events.ScheduleEvent(EVENT_DRESSING_TALK, 12000);
|
||||
break;
|
||||
case 13:
|
||||
me->SummonCreature(NPC_DURNHOLDE_SENTRY, 2200.28f, 137.37f, 87.93f, 5.07f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
me->SummonCreature(NPC_DURNHOLDE_SENTRY, 2197.44f, 131.83f, 87.93f, 0.78f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
me->SummonCreature(NPC_DURNHOLDE_MAGE, 2203.62f, 135.40f, 87.93f, 3.70f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
me->SummonCreature(NPC_DURNHOLDE_VETERAN, 2200.75f, 130.13f, 87.93f, 1.48f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
break;
|
||||
case 16:
|
||||
me->SummonCreature(NPC_DURNHOLDE_SENTRY, 2147.43f, 122.194f, 76.422f, 0.67f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
me->SummonCreature(NPC_DURNHOLDE_SENTRY, 2146.27f, 126.13f, 76.241f, 0.60f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
me->SummonCreature(NPC_DURNHOLDE_MAGE, 2142.62f, 120.38f, 75.862f, 0.48f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
me->SummonCreature(NPC_DURNHOLDE_VETERAN, 2141.74f, 123.95f, 75.732f, 0.24f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
break;
|
||||
case 18:
|
||||
me->SummonCreature(NPC_DURNHOLDE_SENTRY, 2138.37f, 167.98f, 66.23f, 2.59f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
me->SummonCreature(NPC_DURNHOLDE_WARDEN, 2142.76f, 173.62f, 66.23f, 2.59f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
me->SummonCreature(NPC_DURNHOLDE_MAGE, 2140.96f, 168.64f, 66.23f, 2.59f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
me->SummonCreature(NPC_DURNHOLDE_VETERAN, 2142.53f, 171.03f, 66.23f, 2.59f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
break;
|
||||
case 22:
|
||||
me->SummonCreature(NPC_DURNHOLDE_SENTRY, 2108.73f, 190.43f, 66.23f, 5.56f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
me->SummonCreature(NPC_DURNHOLDE_MAGE, 2109.74f, 195.29f, 66.23f, 5.56f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
me->SummonCreature(NPC_DURNHOLDE_MAGE, 2107.74f, 192.59f, 66.23f, 5.56f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
me->SummonCreature(NPC_DURNHOLDE_SENTRY, 2112.26f, 195.13f, 66.23f, 5.56f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
if (Creature* warden = me->SummonCreature(NPC_DURNHOLDE_WARDEN, 2149.4634f, 104.97559f, 73.632385f, 1.9065f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS))
|
||||
{
|
||||
warden->SetWalk(true);
|
||||
warden->GetMotionMaster()->MovePoint(0, 2144.9893f, 117.81233f, 75.98518f);
|
||||
}
|
||||
if (Creature* veteran = me->SummonCreature(NPC_DURNHOLDE_VETERAN, 2147.3281f, 106.72353f, 74.34447f, 1.6904f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS))
|
||||
{
|
||||
veteran->SetWalk(true);
|
||||
veteran->GetMotionMaster()->MovePoint(0, 2145.2092f, 124.361f, 76.13655f);
|
||||
}
|
||||
if (Creature* veteran = me->SummonCreature(NPC_DURNHOLDE_VETERAN, 2149.212f, 107.20052f, 74.15676f, 1.9887f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS))
|
||||
{
|
||||
veteran->SetWalk(true);
|
||||
veteran->GetMotionMaster()->MovePoint(0, 2143.7898f, 119.41281f, 75.96626f);
|
||||
}
|
||||
if (Creature* mage = me->SummonCreature(NPC_DURNHOLDE_MAGE, 2147.624f, 104.61046f, 73.909294f, 1.6186f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS))
|
||||
{
|
||||
mage->SetWalk(true);
|
||||
mage->GetMotionMaster()->MovePoint(0, 2146.975f, 118.05078f, 76.098465f);
|
||||
}
|
||||
break;
|
||||
case 27:
|
||||
instance->SetData(DATA_ESCORT_PROGRESS, ENCOUNTER_PROGRESS_AMBUSHES_1);
|
||||
break;
|
||||
case 28:
|
||||
me->SummonCreature(NPC_CAPTAIN_SKARLOC, 1995.78f, 277.46f, 66.64f, 0.74f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
me->SummonCreature(NPC_CAPTAIN_SKARLOC, 1995.78f, 277.46f, 66.64f, 0.74f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 2 * MINUTE * IN_MILLISECONDS);
|
||||
break;
|
||||
case 29:
|
||||
SetEscortPaused(true);
|
||||
@@ -353,34 +367,45 @@ public:
|
||||
break;
|
||||
case 59:
|
||||
instance->SetData(DATA_ESCORT_PROGRESS, ENCOUNTER_PROGRESS_TARREN_MILL);
|
||||
me->SummonCreature(NPC_SKARLOC_MOUNT, 2488.64f, 625.77f, 58.26f, 4.71f, TEMPSUMMON_TIMED_DESPAWN, 7000);
|
||||
if (Creature* mount = me->SummonCreature(NPC_SKARLOC_MOUNT, 2488.64f, 625.77f, 58.26f, 4.71f, TEMPSUMMON_TIMED_DESPAWN, 7000))
|
||||
{
|
||||
mount->SetImmuneToNPC(true);
|
||||
mount->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
UnMountSelf();
|
||||
_mounted = false;
|
||||
SetRun(false);
|
||||
me->SetFacingTo(6.0388f);
|
||||
break;
|
||||
case 60:
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION);
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_CHEER);
|
||||
if (Creature* horse = me->FindNearestCreature(NPC_SKARLOC_MOUNT, 10.0f))
|
||||
{
|
||||
horse->GetMotionMaster()->MovePoint(0, 2501.15f, 572.14f, 54.13f);
|
||||
|
||||
horse->DespawnOrUnsummon(30 * IN_MILLISECONDS);
|
||||
}
|
||||
Talk(SAY_EMOTE_HORSE);
|
||||
SetEscortPaused(true);
|
||||
SetRun(true);
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
me->SetFacingTo(4.1364f);
|
||||
break;
|
||||
case 64:
|
||||
SetRun(false);
|
||||
break;
|
||||
case 67:
|
||||
events.ScheduleEvent(EVENT_LOOK_1, 500);
|
||||
events.ScheduleEvent(EVENT_LOOK_1, 1200);
|
||||
events.ScheduleEvent(EVENT_MOVE_AROUND, 3500);
|
||||
events.ScheduleEvent(EVENT_LOOK_2, 5000);
|
||||
events.ScheduleEvent(EVENT_LOOK_3, 6700);
|
||||
events.ScheduleEvent(EVENT_SUMMON_GUARDS, 6000);
|
||||
events.ScheduleEvent(EVENT_SUMMON_TALK1, 6500);
|
||||
events.ScheduleEvent(EVENT_SUMMON_TALK2, 12000);
|
||||
events.ScheduleEvent(EVENT_SUMMON_GUARDS, 5100);
|
||||
events.ScheduleEvent(EVENT_LOOK_3, 7000);
|
||||
events.ScheduleEvent(EVENT_SUMMON_TALK1, 12000);
|
||||
events.ScheduleEvent(EVENT_LOOK_4, 17000);
|
||||
events.ScheduleEvent(EVENT_SUMMON_TALK2, 19000);
|
||||
events.ScheduleEvent(EVENT_GUARDS_MOVING, 21000);
|
||||
break;
|
||||
case 82:
|
||||
events.ScheduleEvent(EVENT_LOOK_4, 500);
|
||||
events.ScheduleEvent(EVENT_LOOK_5, 500);
|
||||
events.ScheduleEvent(EVENT_SUMMON_GUARDS_2, 1000);
|
||||
events.ScheduleEvent(EVENT_SUMMON_TALK3, 1500);
|
||||
break;
|
||||
@@ -401,8 +426,11 @@ public:
|
||||
SetRun(true);
|
||||
instance->SetData(DATA_ESCORT_PROGRESS, ENCOUNTER_PROGRESS_TARETHA_MEET);
|
||||
if (Creature* Taretha = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_TARETHA_GUID)))
|
||||
{
|
||||
Taretha->HandleEmoteCommand(EMOTE_ONESHOT_CHEER);
|
||||
Taretha->AI()->Talk(SAY_TARETHA_ESCAPED);
|
||||
events.ScheduleEvent(EVENT_THRALL_TALK, 2000);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_THRALL_TALK, 4000);
|
||||
break;
|
||||
case 101:
|
||||
SetEscortPaused(true);
|
||||
@@ -412,8 +440,6 @@ public:
|
||||
events.ScheduleEvent(EVENT_START_WAVE_1, 25000);
|
||||
break;
|
||||
case 103:
|
||||
if (Creature* erozion = summons.GetCreatureWithEntry(NPC_EROZION))
|
||||
erozion->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
|
||||
instance->SetData(DATA_ESCORT_PROGRESS, ENCOUNTER_PROGRESS_FINISHED);
|
||||
me->SetVisible(false);
|
||||
break;
|
||||
@@ -476,6 +502,20 @@ public:
|
||||
ReorderInstance(data);
|
||||
}
|
||||
|
||||
void JustReachedHome() override
|
||||
{
|
||||
if (_barnWave)
|
||||
{
|
||||
_barnWave = false;
|
||||
Talk(SAY_LEAD);
|
||||
}
|
||||
else if (_churchWave)
|
||||
{
|
||||
_churchWave = false;
|
||||
Talk(SAY_CHURCH_END);
|
||||
}
|
||||
}
|
||||
|
||||
void KilledUnit(Unit*) override
|
||||
{
|
||||
Talk(SAY_RANDOM_KILL);
|
||||
@@ -517,6 +557,13 @@ public:
|
||||
case EVENT_OPEN_DOORS:
|
||||
if (GameObject* doors = me->FindNearestGameObject(GO_PRISON_DOOR, 10.0f))
|
||||
doors->SetGoState(GO_STATE_ACTIVE);
|
||||
me->SummonCreature(NPC_DURNHOLDE_SENTRY, 2142.372f, 174.2907f, 66.30494f, 2.5656f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
|
||||
me->SummonCreature(NPC_DURNHOLDE_SENTRY, 2138.178f, 168.6046f, 66.30494f, 2.4783f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
|
||||
me->SummonCreature(NPC_DURNHOLDE_VETERAN, 2140.1458f, 169.23643f, 66.30494f, 2.4958f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
|
||||
me->SummonCreature(NPC_DURNHOLDE_VETERAN, 2107.9377f, 192.07530f, 66.30494f, 2.5481f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
|
||||
me->SummonCreature(NPC_DURNHOLDE_MAGE, 2142.3633f, 172.42600f, 66.30494f, 2.5481f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
|
||||
me->SummonCreature(NPC_DURNHOLDE_MAGE, 2109.8518f, 195.14030f, 66.30493f, 2.4260f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
|
||||
me->SummonCreature(NPC_DURNHOLDE_MAGE, 2108.4856f, 189.93457f, 66.30494f, 2.6878f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
|
||||
break;
|
||||
case EVENT_START_WP:
|
||||
Start(true, true);
|
||||
@@ -525,15 +572,28 @@ public:
|
||||
case EVENT_SET_FACING:
|
||||
if (Creature* armorer = me->FindNearestCreature(NPC_DURNHOLDE_ARMORER, 30.0f))
|
||||
{
|
||||
armorer->AI()->Talk(SAY_ARMORER_THRALL);
|
||||
armorer->GetMotionMaster()->Clear();
|
||||
armorer->GetMotionMaster()->MoveIdle();
|
||||
armorer->SetFacingToObject(me);
|
||||
me->SetFacingToObject(armorer);
|
||||
}
|
||||
break;
|
||||
case EVENT_ARMORER_SAY:
|
||||
if (Creature* armorer = me->FindNearestCreature(NPC_DURNHOLDE_ARMORER, 30.0f))
|
||||
{
|
||||
armorer->AI()->Talk(SAY_ARMORER_THRALL);
|
||||
}
|
||||
break;
|
||||
case EVENT_THRALL_EMOTE:
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION);
|
||||
break;
|
||||
case EVENT_KILL_ARMORER:
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_ATTACK_UNARMED);
|
||||
if (Creature* armorer = me->FindNearestCreature(NPC_DURNHOLDE_ARMORER, 30.0f))
|
||||
{
|
||||
DoCast(armorer, SPELL_KNOCKOUT_ARMORER, true);
|
||||
armorer->SetStandState(UNIT_STAND_STATE_DEAD);
|
||||
}
|
||||
break;
|
||||
case EVENT_TALK_KILL_ARMORER:
|
||||
Talk(SAY_KILL_ARMORER);
|
||||
@@ -557,7 +617,29 @@ public:
|
||||
break;
|
||||
case EVENT_DRESSING_TALK:
|
||||
instance->SetData(DATA_ESCORT_PROGRESS, ENCOUNTER_PROGRESS_THRALL_ARMORED);
|
||||
DoCastSelf(SPELL_SALVATION);
|
||||
me->SetFacingTo(5.6897f);
|
||||
Talk(SAY_GO_ARMORED);
|
||||
if (Creature* sentry = me->SummonCreature(NPC_DURNHOLDE_SENTRY, 2185.916f, 140.38835f, 88.299866f, 5.9238f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS))
|
||||
{
|
||||
sentry->SetWalk(true);
|
||||
sentry->GetMotionMaster()->MovePoint(0, 2191.9712f, 138.11394f, 88.2125f);
|
||||
}
|
||||
if (Creature* warden = me->SummonCreature(NPC_DURNHOLDE_WARDEN, 2188.5586f, 138.88553f, 88.299866f, 1.6031f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS))
|
||||
{
|
||||
warden->SetWalk(true);
|
||||
warden->GetMotionMaster()->MovePoint(0, 2188.5068f, 140.48346f, 88.21251f);
|
||||
}
|
||||
if (Creature* veteran = me->SummonCreature(NPC_DURNHOLDE_VETERAN, 2186.9856f, 142.199f, 88.299866f, 5.9049f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS))
|
||||
{
|
||||
veteran->SetWalk(true);
|
||||
veteran->GetMotionMaster()->MovePoint(0, 2190.48f, 140.81056f, 88.21251f);
|
||||
}
|
||||
if (Creature* mage = me->SummonCreature(NPC_DURNHOLDE_MAGE, 2189.7336f, 140.64551f, 88.299866f, 3.9532f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS))
|
||||
{
|
||||
mage->SetWalk(true);
|
||||
mage->GetMotionMaster()->MovePoint(0, 2187.8035f, 138.61118f, 88.21251f);
|
||||
}
|
||||
break;
|
||||
case EVENT_ENTER_MOUNT:
|
||||
MountSelf();
|
||||
@@ -571,43 +653,60 @@ public:
|
||||
Talk(SAY_MOUNTS_UP);
|
||||
break;
|
||||
case EVENT_LOOK_1:
|
||||
me->SetFacingTo(5.058f);
|
||||
me->SetFacingTo(5.0090f);
|
||||
me->SetImmuneToNPC(true);
|
||||
break;
|
||||
case EVENT_MOVE_AROUND:
|
||||
me->GetMotionMaster()->MovePoint(0, 2477.146f, 695.041f, 55.801f);
|
||||
break;
|
||||
case EVENT_LOOK_2:
|
||||
me->SetFacingTo(2.297f);
|
||||
break;
|
||||
case EVENT_LOOK_3:
|
||||
me->SetFacingTo(0.64f);
|
||||
me->SetFacingTo(2.0071f);
|
||||
break;
|
||||
case EVENT_SUMMON_GUARDS:
|
||||
SetRun(true);
|
||||
me->SummonCreature(NPC_TM_PROTECTOR, 2501.34f, 700.80f, 55.573f, 3.92f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
me->SummonCreature(NPC_TM_LOOKOUT, 2503.02f, 699.11f, 55.57f, 3.92f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
me->SummonCreature(NPC_TM_GUARDSMAN, 2503.04f, 702.495f, 50.63f, 3.92f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
me->SummonCreature(NPC_TM_GUARDSMAN, 2504.72f, 700.806f, 55.62f, 3.92f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
me->SummonCreature(NPC_TM_PROTECTOR, 2501.5708f, 699.38086f, 55.64138f, 3.8571f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
|
||||
me->SummonCreature(NPC_TM_LOOKOUT, 2500.7002f, 698.26746f, 55.618248f, 3.7350f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
|
||||
if (Creature* guardsman = me->SummonCreature(NPC_TM_GUARDSMAN, 2500.0908f, 699.9389f, 55.629555f, 4.2935f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS))
|
||||
{
|
||||
guardsman->CastSpell(guardsman, SPELL_DUMMY_AURA, true);
|
||||
}
|
||||
me->SummonCreature(NPC_TM_GUARDSMAN, 2499.0579f, 698.99725f, 55.611156f, 4.5727f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
|
||||
summons.DoAction(ACTION_SET_IMMUNE_FLAG);
|
||||
break;
|
||||
case EVENT_LOOK_3:
|
||||
me->SetFacingTo(0.3490f);
|
||||
break;
|
||||
case EVENT_SUMMON_TALK1:
|
||||
if (Creature* summon = summons.GetCreatureWithEntry(NPC_TM_LOOKOUT))
|
||||
summon->AI()->Talk(SAY_LOOKOUT_SAW);
|
||||
break;
|
||||
case EVENT_SUMMON_TALK2:
|
||||
if (Creature* summon = summons.GetCreatureWithEntry(NPC_TM_LOOKOUT))
|
||||
summon->AI()->Talk(SAY_LOOKOUT_GO);
|
||||
summons.DoAction(ACTION_REMOVE_IMMUNE_FLAG);
|
||||
me->SetFacingTo(0.4363f);
|
||||
break;
|
||||
case EVENT_LOOK_4:
|
||||
me->SetFacingTo(0.41f);
|
||||
me->SetFacingTo(4.7510f);
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_NO);
|
||||
Talk(SAY_EMOTE_HORSE_2);
|
||||
break;
|
||||
case EVENT_SUMMON_TALK2:
|
||||
me->SetFacingTo(0.4363f);
|
||||
if (Creature* summon = summons.GetCreatureWithEntry(NPC_TM_LOOKOUT))
|
||||
summon->AI()->Talk(SAY_LOOKOUT_GO);
|
||||
me->SetImmuneToNPC(true);
|
||||
break;
|
||||
case EVENT_GUARDS_MOVING:
|
||||
me->SetImmuneToNPC(false);
|
||||
summons.DoAction(ACTION_REMOVE_IMMUNE_FLAG);
|
||||
_barnWave = true;
|
||||
break;
|
||||
case EVENT_LOOK_5:
|
||||
me->SetFacingTo(0.4886f);
|
||||
Talk(SAY_ENTER_CHURCH);
|
||||
break;
|
||||
case EVENT_SUMMON_GUARDS_2:
|
||||
me->SummonCreature(NPC_TM_PROTECTOR, 2630.75f, 664.80f, 54.28f, 4.37f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
me->SummonCreature(NPC_TM_LOOKOUT, 2632.20f, 661.98f, 54.30f, 4.37f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
me->SummonCreature(NPC_TM_GUARDSMAN, 2630.02f, 662.75f, 54.28f, 4.37f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
me->SummonCreature(NPC_TM_GUARDSMAN, 2632.86f, 664.05f, 54.31f, 4.37f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
me->SummonCreature(NPC_TM_PROTECTOR, 2630.75f, 664.80f, 54.28f, 4.37f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
|
||||
me->SummonCreature(NPC_TM_LOOKOUT, 2632.20f, 661.98f, 54.30f, 4.37f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
|
||||
me->SummonCreature(NPC_TM_GUARDSMAN, 2630.02f, 662.75f, 54.28f, 4.37f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
|
||||
me->SummonCreature(NPC_TM_GUARDSMAN, 2632.86f, 664.05f, 54.31f, 4.37f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
|
||||
_churchWave = true;
|
||||
break;
|
||||
case EVENT_SUMMON_TALK3:
|
||||
if (Creature* summon = summons.GetCreatureWithEntry(NPC_TM_LOOKOUT))
|
||||
@@ -625,7 +724,7 @@ public:
|
||||
}
|
||||
break;
|
||||
case EVENT_THRALL_TALK_2:
|
||||
me->SetFacingTo(2.67f);
|
||||
me->SetFacingTo(2.60f);
|
||||
Talk(SAY_EPOCH_WONDER);
|
||||
break;
|
||||
case EVENT_TARETHA_FALL:
|
||||
@@ -638,16 +737,22 @@ public:
|
||||
}
|
||||
break;
|
||||
case EVENT_THRALL_TALK_3:
|
||||
me->SetFacingTo(5.78f);
|
||||
if (Creature* Taretha = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_TARETHA_GUID)))
|
||||
{
|
||||
me->SetFacingToObject(Taretha);
|
||||
}
|
||||
Talk(SAY_EPOCH_KILL_TARETHA);
|
||||
break;
|
||||
case EVENT_THRALL_MOVE_DOWN:
|
||||
SetEscortPaused(false);
|
||||
break;
|
||||
case EVENT_EPOCH_INTRO:
|
||||
me->SetFacingTo(1.33f);
|
||||
if (Creature* epoch = summons.GetCreatureWithEntry(NPC_EPOCH_HUNTER))
|
||||
{
|
||||
me->SetFacingToObject(epoch);
|
||||
epoch->SetFacingToObject(me);
|
||||
epoch->AI()->Talk(SAY_EPOCH_ENTER3);
|
||||
}
|
||||
break;
|
||||
case EVENT_SUMMON_INFINITES:
|
||||
me->SummonCreature(NPC_EPOCH_LOOKOUT, 2647.57f, 701.17f, 56.215f, 4.3f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
@@ -715,15 +820,24 @@ public:
|
||||
if (Player* player = itr->GetSource())
|
||||
player->KilledMonsterCredit(20156);
|
||||
|
||||
me->SetFacingTo(5.76f);
|
||||
if (Creature* Taretha = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_TARETHA_GUID)))
|
||||
{
|
||||
me->SetFacingToObject(Taretha);
|
||||
}
|
||||
me->SetImmuneToNPC(true);
|
||||
break;
|
||||
}
|
||||
case EVENT_THRALL_TALK_4:
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_TALK);
|
||||
Talk(SAY_GREET_TARETHA);
|
||||
break;
|
||||
case EVENT_TARETHA_TALK_1:
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE);
|
||||
if (Creature* Taretha = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_TARETHA_GUID)))
|
||||
{
|
||||
Taretha->HandleEmoteCommand(EMOTE_ONESHOT_TALK);
|
||||
Taretha->AI()->Talk(SAY_TARETHA_TALK1);
|
||||
}
|
||||
break;
|
||||
case EVENT_THRALL_TALK_5:
|
||||
Talk(SAY_CHAT_TARETHA1);
|
||||
@@ -766,10 +880,14 @@ public:
|
||||
case EVENT_TARETHA_TALK_2:
|
||||
if (Creature* Taretha = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_TARETHA_GUID)))
|
||||
{
|
||||
Taretha->SetFacingTo(4.233f);
|
||||
Taretha->SetFacingToObject(me);
|
||||
Taretha->AI()->Talk(SAY_TARETHA_TALK2);
|
||||
}
|
||||
break;
|
||||
case EVENT_EROZION_FLAGS:
|
||||
if (Creature* erozion = summons.GetCreatureWithEntry(NPC_EROZION))
|
||||
erozion->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -832,7 +950,11 @@ public:
|
||||
SetNextWaypoint(27, false);
|
||||
break;
|
||||
case ENCOUNTER_PROGRESS_SKARLOC_KILLED:
|
||||
me->SummonCreature(NPC_SKARLOC_MOUNT, 2049.12f, 252.31f, 62.855f, me->GetOrientation(), TEMPSUMMON_MANUAL_DESPAWN);
|
||||
if (Creature* mount = me->SummonCreature(NPC_SKARLOC_MOUNT, 2049.12f, 252.31f, 62.855f, me->GetOrientation(), TEMPSUMMON_MANUAL_DESPAWN))
|
||||
{
|
||||
mount->SetImmuneToNPC(true);
|
||||
mount->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
SetNextWaypoint(30, false);
|
||||
break;
|
||||
case ENCOUNTER_PROGRESS_TARREN_MILL:
|
||||
@@ -853,6 +975,8 @@ public:
|
||||
SummonList summons;
|
||||
|
||||
bool _mounted;
|
||||
bool _barnWave;
|
||||
bool _churchWave;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -50,8 +50,8 @@ enum NpcIds
|
||||
NPC_DURNHOLDE_ARMORER = 18764,
|
||||
NPC_DURNHOLDE_WARDEN = 17833,
|
||||
NPC_DURNHOLDE_VETERAN = 17860,
|
||||
NPC_DURNHOLDE_MAGE = 17860,
|
||||
NPC_DURNHOLDE_SENTRY = 17860,
|
||||
NPC_DURNHOLDE_MAGE = 18934,
|
||||
NPC_DURNHOLDE_SENTRY = 17819,
|
||||
|
||||
NPC_CAPTAIN_SKARLOC = 17862,
|
||||
NPC_SKARLOC_MOUNT = 18798,
|
||||
|
||||
Reference in New Issue
Block a user