aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMalcrom <malcromdev@gmail.com>2024-02-24 14:46:46 -0400
committerGitHub <noreply@github.com>2024-02-24 19:46:46 +0100
commitc4f896f5910ba64f2bfa4fe575c562deac06e9fb (patch)
tree908c9f684411722bec6051ef2213e6d3b9621649
parentf6646739908215311f110842ed41055a54dae1f0 (diff)
Scripts/ExilesReach: Implemented Ride SE Boar, Re-Deather and Stocking Up quest (#29670)
Co-authored-by: ModoX <moardox@gmail.com>
-rw-r--r--sql/updates/world/master/2024_02_24_01_world.sql638
-rw-r--r--src/server/scripts/ExilesReach/zone_exiles_reach.cpp1202
2 files changed, 1818 insertions, 22 deletions
diff --git a/sql/updates/world/master/2024_02_24_01_world.sql b/sql/updates/world/master/2024_02_24_01_world.sql
new file mode 100644
index 00000000000..4942310d6bc
--- /dev/null
+++ b/sql/updates/world/master/2024_02_24_01_world.sql
@@ -0,0 +1,638 @@
+SET @CGUID := 8000041;
+SET @OGUID := 8000014;
+
+-- Add missing Creature Spawns
+DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID AND @CGUID+17;
+INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `phaseUseFlags`, `PhaseId`, `PhaseGroup`, `terrainSwapMap`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `ScriptName`, `StringId`, `VerifiedBuild`) VALUES
+-- Alliance
+(@CGUID,162817,2175,10424,10529,'0',0,14663,0,0,0,0,243.55556,-2242.9185,83.88086,4.5683498,120,0,0,1,0,0,NULL,NULL,NULL,NULL,'',NULL,52649), -- Torgok <Binder of Souls>
+(@CGUID+1,150245,2175,10424,10529,'0',0,13794,0,0,0,0,169.23438,-2297.9983,82.15651,2.54967,120,0,0,1,0,0,NULL,NULL,NULL,NULL,'',NULL,52649), -- Lindie Springstock
+(@CGUID+2,156800,2175,10424,10529,'0',0,13794,0,0,0,0,186.51042,-2284.6216,81.91817,3.558244,120,0,0,1,0,0,NULL,NULL,NULL,NULL,'',NULL,52649), -- Quartermaster Richter <Supplies>
+(@CGUID+3,156807,2175,10424,10529,'0',0,13835,0,0,0,0,185.90625,-2288.927,81.77783,1.908762,120,0,0,1,0,0,NULL,NULL,NULL,NULL,'',NULL,52649), -- Captain Garrick
+(@CGUID+4,156808,2175,10424,10529,'0',0,13794,0,0,0,0,169.73827,-2293.4995,82.96085,2.618248,120,0,0,1,0,0,NULL,NULL,NULL,NULL,'',NULL,52649), -- Small Boar
+-- Horde
+(@CGUID+5,167142,2175,10424,10588,'0',0,15331,0,0,0,0,107.87153,-2414.177,95.44844,0,120,0,0,1,0,0,NULL,NULL,NULL,NULL,'',NULL,52808), -- Choppy Booster Mk. 5
+(@CGUID+6,167212,2175,10424,10529,'0',0,15485,0,0,0,0,185.70660400390625,-2282.98095703125,81.93126678466796875,3.950360536575317382,120,0,0,1,0,0,NULL,NULL,NULL,NULL,'',NULL,52808), -- Warlord Breka Grimaxe
+(@CGUID+7,167216,2175,10424,10529,'0',0,15447,0,0,0,0,183.4184112548828125,-2278.020751953125,81.93170166015625,1.636933207511901855,120,0,0,1,0,0,NULL,NULL,NULL,NULL,'',NULL,52808), -- Grunt Throg
+(@CGUID+8,167217,2175,10424,10529,'0',0,15330,0,0,0,0,177.1770782470703125,-2295.96875,81.96833038330078125,0,120,0,0,1,0,0,NULL,NULL,NULL,NULL,'',NULL,52808), -- Cork Fizzlepop
+(@CGUID+9,167213,2175,10424,10529,'0',0,15330,0,0,0,0,178.4184112548828125,-2292.552001953125,81.93624114990234375,0.398178786039352416,120,0,0,1,0,0,NULL,NULL,NULL,NULL,'',NULL,52808), -- Provisioner Jin'hake
+(@CGUID+10,167219,2175,10424,10529,'0',0,15353,0,0,0,0,257.260406494140625,-2337.651123046875,81.06317138671875,5.754884243011474609,120,0,0,1,0,0,NULL,NULL,NULL,NULL,'',NULL,52808), -- Shuja Grimaxe
+(@CGUID+11,167222,2175,10424,10529,'0',0,15338,0,0,0,0,160.5868072509765625,-2310.088623046875,84.49564361572265625,3.033173322677612304,120,0,0,1,0,0,NULL,NULL,NULL,NULL,'',NULL,52808), -- Won'sa
+(@CGUID+12,167221,2175,10424,10529,'0',0,15338,0,0,0,0,160.5989532470703125,-2307.404541015625,84.11737060546875,2.955642223358154296,120,0,0,1,0,0,NULL,NULL,NULL,NULL,'',NULL,52808), -- Lana Jordan
+(@CGUID+13,167215,2175,10424,10529,'0',0,15377,0,0,0,0,183.6805572509765625,-2295.94091796875,82.250396728515625,4.669465065002441406,120,0,0,1,0,0,NULL,NULL,NULL,NULL,'',NULL,52808), -- Mithdran Dawntracker <Stable Master>
+(@CGUID+14,167290,2175,10424,10528,'0',0,15354,0,0,0,0,392.46875,-2440.225830078125,125.4717788696289062,4.147569179534912109,120,0,0,1,0,0,NULL,NULL,NULL,NULL,'',NULL,53212), -- Shuja Grimaxe "Harpy area"
+(@CGUID+15,167291,2175,10424,10588,'0',0,15354,0,0,0,0,391.211822509765625,-2443.717041015625,125.1890335083007812,0.829528868198394775,120,0,0,1,0,0,NULL,NULL,NULL,NULL,'',NULL,53212), -- Bo "Harpy area"
+(@CGUID+16,167225,2175,10424,10527,'0',0,15337,0,0,0,0,92.015625,-2246.911376953125,94.49737548828125,2.622560739517211914,120,0,0,1,0,0,NULL,NULL,NULL,NULL,'',NULL,53212), -- Lana Jordan "Pit Area"
+(@CGUID+17,167226,2175,10424,10527,'0',0,15337,0,0,0,0,89.265625,-2248.960205078125,94.74571990966796875,1.861210823059082031,120,0,0,1,0,0,NULL,NULL,NULL,NULL,'',NULL,53212); -- Won'sa "Pit Area"
+
+DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+18 AND @CGUID+21;
+INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `VerifiedBuild`) VALUES
+(@CGUID+18, 167926, 2175, 10424, 10529, '0', 15558, 0, 0, 1, 232.1614532470703125, -2292.53466796875, 80.9791717529296875, 4.706853866577148437, 120, 0, 0, 224, 0, 0, NULL, NULL, NULL, NULL, 53262), -- Warlord Breka Grimaxe (Area: Ogre Ruins - Difficulty: 0) CreateObject1
+(@CGUID+19, 167126, 2175, 10424, 10529, '0', 15558, 0, 0, 0, 230.795135498046875, -2297.085205078125, 80.9791717529296875, 1.356228590011596679, 120, 0, 0, 119, 0, 0, 2, NULL, NULL, NULL, 53262), -- Shuja Grimaxe (Area: Ogre Ruins - Difficulty: 0) CreateObject1
+(@CGUID+20, 156799, 2175, 10424, 10529, '0', 13795, 0, 0, 0, 230.795135498046875, -2297.085205078125, 80.9791717529296875, 1.356228590011596679, 120, 0, 0, 95, 382, 0, NULL, NULL, NULL, NULL, 53262), -- Henry Garrick (Area: Ogre Ruins - Difficulty: 0) CreateObject1
+(@CGUID+21, 156807, 2175, 10424, 10529, '0', 13795, 0, 0, 1, 232.1614532470703125, -2292.53466796875, 80.9791717529296875, 4.706853866577148437, 120, 0, 0, 357, 0, 0, NULL, NULL, NULL, NULL, 53262); -- Captain Garrick (Area: Ogre Ruins - Difficulty: 0) CreateObject1
+
+-- Add missing Creature Spawns
+DELETE FROM `gameobject` WHERE `guid`=@OGUID;
+INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES
+-- Horde
+(@OGUID, 351765, 2175, 10424, 10529, '0', 15330, 0, 162.796875, -2303.585205078125, 81.78006744384765625, 0.724311470985412597, 0, 0, 0.354290962219238281, 0.935135245323181152, 7200, 255, 1, 53212);
+
+-- Fix campfire at ogre ruins
+UPDATE `gameobject_template_addon` SET `flags` = 4 WHERE `entry` = 342365;
+
+-- Ride of the Scientifically Enhanced Boar
+
+-- Pathing for Small Boar Entry: 156808
+SET @NPC := @CGUID+4;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=165.30946,`position_y`=-2298.7698,`position_z`=82.51129 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`PathId`,`mount`,`StandState`,`SheathState`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, '');
+DELETE FROM `waypoint_path` WHERE `PathId`=@PATH;
+INSERT INTO `waypoint_path` (`PathId`,`MoveType`,`Flags`,`Comment`) VALUES
+(@PATH,1,0,'Small Boar Ogre Ruins');
+DELETE FROM `waypoint_path_node` WHERE `PathId`=@PATH;
+INSERT INTO `waypoint_path_node` (`PathId`,`NodeId`,`PositionX`,`PositionY`,`PositionZ`,`Orientation`,`Delay`) VALUES
+(@PATH,1,165.30946,-2298.7698,82.51129,NULL,0),
+(@PATH,2,170.00575,-2301.923,82.05885,NULL,0),
+(@PATH,3,173.15572,-2298.7876,81.85623,NULL,0),
+(@PATH,4,168.463,-2294.0735,81.95101,NULL,0);
+
+-- Pathing for Henry Garrick Ogre Ruins
+SET @NPC := 8000023;
+SET @PATH := @NPC * 10;
+DELETE FROM `waypoint_path` WHERE `PathId`=@PATH;
+INSERT INTO `waypoint_path` (`PathId`,`MoveType`,`Flags`,`Comment`) VALUES
+(@PATH,1,0,'Henry Garrick Ogre Ruins');
+DELETE FROM `waypoint_path_node` WHERE `PathId` IN (@PATH);
+INSERT INTO `waypoint_path_node` (`PathId`,`NodeId`,`PositionX`,`PositionY`,`PositionZ`,`Orientation`,`Delay`) VALUES
+(@PATH,1,231.05,-2297.1802,87.1176,NULL,0),
+(@PATH,2,230.88,-2297.09,84.0067,NULL,0),
+(@PATH,3,230.71,-2297,80.8958,NULL,0),
+(@PATH,4,230.71,-2297,80.8958,1.396685,0);
+
+UPDATE `creature` SET `StringId`= "captain_garrick_plains" WHERE `guid`=8000018;
+UPDATE `creature` SET `StringId` = 'henry_garrick_ogre_ruins_prisoner' WHERE `guid`=8000023;
+
+UPDATE `creature_template` SET `faction`=1, `ScriptName`="npc_captain_garrick_q55879" WHERE `entry`=174955;
+UPDATE `creature_template` SET `ScriptName`="npc_giant_boar_vehicle_q55879" WHERE `entry`=156267;
+UPDATE `creature_template` SET `ScriptName`="npc_torgok_q55879" WHERE `entry`=162817;
+UPDATE `creature_template` SET `ScriptName`="npc_prisoner_q55879" WHERE `entry`=156799;
+UPDATE `creature_template` SET `npcflag`=16777216 WHERE entry IN (156595);
+UPDATE `creature_template` SET `VehicleId`=6832 WHERE `entry`=156267;
+UPDATE `creature_template` SET `npcflag`=2 WHERE `entry` IN (156799,156807);
+UPDATE `creature_template` SET `npcflag`=641 WHERE `entry` IN (156800);
+
+DELETE FROM `creature_template_addon` WHERE `entry` IN (162817);
+INSERT INTO `creature_template_addon` (`entry`,`visibilityDistanceType`,`emote`,`auras`) VALUES
+(162817,3,617, ''); -- Torgok
+
+-- Henry Garrick & Shuja Grimaxe
+UPDATE `creature_template_movement` SET `Ground`=1, `Swim`=1 WHERE `CreatureId` IN (156799,167126);
+
+DELETE FROM `npc_vendor` WHERE (`entry`=156800 AND `item`=168100 AND `ExtendedCost`=0 AND `type`=1) OR (`entry`=156800 AND `item`=117 AND `ExtendedCost`=0 AND `type`=1);
+INSERT INTO `npc_vendor` (`entry`, `slot`, `item`, `maxcount`, `ExtendedCost`, `type`, `PlayerConditionID`, `IgnoreFiltering`, `VerifiedBuild`) VALUES
+(156800, 2, 168100, 0, 0, 1, 0, 0, 53040), -- 168100
+(156800, 1, 117, 0, 0, 1, 0, 1, 53040); -- 117
+
+DELETE FROM `creature_template_gossip` WHERE `CreatureID`=156800;
+INSERT INTO `creature_template_gossip` (`CreatureID`, `MenuID`, `VerifiedBuild`) VALUES
+(156800, 24885, 53040); -- 156800
+
+DELETE FROM `gossip_menu` WHERE (`MenuID`=24885 AND `TextID`=201865);
+INSERT INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES
+(24885, 201865, 53040); -- 156800
+
+DELETE FROM `gossip_menu_option` WHERE `MenuID` IN (24885);
+INSERT INTO `gossip_menu_option` (`MenuID`, `GossipOptionID`, `OptionID`, `OptionNpc`, `OptionText`, `OptionBroadcastTextID`, `Language`, `Flags`, `ActionMenuID`, `ActionPoiID`, `GossipNpcOptionID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `SpellID`, `OverrideIconID`, `VerifiedBuild`) VALUES
+(24885, 49522, 0, 1, 'Let me browse your goods.', 0, 0, 0, 0, 0, NULL, 0, 0, NULL, 0, NULL, NULL, 53040);
+
+DELETE FROM `creature_text` WHERE `CreatureID`=162817;
+INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
+(162817, 0, 0, 'We take soul for ritual, you no stop!', 12, 0, 100, 0, 0, 0, 0, 0, 'Torgok aggro'),
+(162817, 1, 0, 'Me never get... to see... ritual...', 12, 0, 100, 0, 0, 0, 0, 0, 'Torgok death');
+
+-- Add Scenes for Ride of the Scientifically Enhanced Boar
+DELETE FROM `scene_template` WHERE `SceneId` IN (2338,2341,2423,2422,2421,2420);
+INSERT INTO `scene_template` (`SceneId`,`Flags`,`ScriptPackageID`,`Encrypted`,`ScriptName`) VALUES
+(2338,16,2712,0,'scene_darkmaul_plains_skeleton_army_alliance'),
+(2341,17,2933,0,''),
+(2423,16,2825,0,''),
+(2422,16,2824,0,''),
+(2421,16,2823,0,''),
+(2420,16,2822,0,'');
+
+-- Summon data for Captain Garrick
+DELETE FROM `creature_summoned_data` WHERE `CreatureID` IN (174955, 167126);
+INSERT INTO `creature_summoned_data` (`CreatureID`,`CreatureIDVisibleToSummoner`,`GroundMountDisplayID`,`FlyingMountDisplayID`, `DespawnOnQuestsRemoved`) VALUES
+(174955,156781,NULL,NULL,''),
+(167126,NULL,NULL,NULL,'59942');
+
+DELETE FROM `creature_equip_template` WHERE `CreatureID`=174955;
+INSERT INTO `creature_equip_template` (`CreatureID`, `ID`, `ItemID1`, `AppearanceModID1`, `ItemVisual1`, `ItemID2`, `AppearanceModID2`, `ItemVisual2`, `ItemID3`, `AppearanceModID3`, `ItemVisual3`, `VerifiedBuild`) VALUES
+(174955, 1, 163887, 0, 0, 163891, 0, 0, 0, 0, 0, 52808);
+
+-- Spell Click
+DELETE FROM `npc_spellclick_spells` WHERE `npc_entry` IN (156595);
+INSERT INTO `npc_spellclick_spells` (`npc_entry`,`spell_id`,`cast_flags`,`user_type`) VALUES
+(156595,305068,1,0);
+
+-- Spell Target Position
+DELETE FROM `spell_target_position` WHERE `ID` IN (305069);
+INSERT INTO `spell_target_position` (`ID`,`EffectIndex`,`MapID`,`PositionX`,`PositionY`,`PositionZ`,`VerifiedBuild`) VALUES
+(305069,0,2175,116.44965,-2430.3699,90.6546,52649);
+
+-- Condition for Spell click event condition type Queststate
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=18 AND `SourceGroup` IN (156595) AND `SourceEntry` IN (305068) AND `SourceId`=0;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(18, 156595, 305068, 0, 0, 47, 0, 55879, 8, 0, 0, 0, 0, '', 'Spellclick unit Giant Boar will cast spell Summon Darkmaul Plains Questgivers (DNT) on player if quest Ride of the Scientifically Enhanced Boar queststate is INCOMPLETE');
+
+-- Condition for source Spell implicit target condition type Object entry guid
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceGroup`=1 AND `SourceEntry`=325406 AND `SourceId`=0;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(13, 1, 325406, 0, 0, 31, 0, 3, 162817, 0, 0, 0, 0, '', 'Spell Necrotic Ritual (effect 0) will hit the potential target of the spell if target is unit Torgok.');
+
+-- Condition for Spell Ping Garrick (DNT)
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceGroup`=1 AND `SourceEntry`=316982 AND `SourceId`=0;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(13, 1, 316982, 0, 0, 31, 0, 3, 174955, 0, 0, 0, 0, '', 'Spell Ping Garrick (DNT) (effect 0) will hit unit Alliance Captain.'),
+(13, 1, 316982, 0, 1, 31, 0, 3, 167146, 0, 0, 0, 0, '', 'Spell Ping Garrick (DNT) (effect 0) will hit unit Horde Warrior.');
+
+DELETE FROM `spell_script_names` WHERE `spell_id` IN (305779,173426,306357,296843,325368);
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(305779,'spell_summon_darkmaul_plains_questgivers_q55879'),
+(173426,'spell_riding_giant_boar_q55879'),
+(306357,'spell_knockback_hint_q56034'),
+(296843,'spell_gear_repaired_aura_q55194'),
+(325368, 'spell_re_sizer_slaughter');
+
+-- Phase Area
+DELETE FROM `phase_area` WHERE `AreaId`=10424 AND `PhaseId` IN (14663,13835);
+INSERT INTO `phase_area` (`AreaId`,`PhaseId`,`Comment`) VALUES
+(10424,14663, 'Cosmetic - NPE - See Torgok <Binder of Souls>'),
+(10424,13835, 'Cosmetic - NPE - See Captain Garrick, Lindie Springstock, Quartermaster Richter Ogre Ruins');
+
+-- Phase Names
+DELETE FROM `phase_name` WHERE `ID` IN (14663,13835);
+INSERT INTO `phase_name` (`ID`,`Name`) VALUES
+(14663,'Cosmetic - NPE - See Torgok <Binder of Souls>'),
+(13835,'Cosmetic - NPE - See Captain Garrick, Lindie Springstock, Quartermaster Richter Ogre Ruins');
+
+-- Phase Conditions
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=26 AND `SourceGroup` IN (13775,13783) AND `ConditionValue1`=321670;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=26 AND `SourceGroup` IN (13784,13779,13785,13780,13776,13766,13775) AND `ConditionValue1`=55879;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=26 AND `SourceGroup` IN (13835,13794) AND `SourceEntry`=10424;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=26 AND `SourceGroup` IN (14663) AND `SourceEntry`=10424 AND `ElseGroup`=0;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(26,13775,10588, 0, 0, 1, 0, 321670, 0, 0, 1, 0, 0, '', 'See Re-sized Boar at Plains if quest Ride if player does not have aura'),
+(26,13783,10529, 0, 0, 1, 0, 321670, 0, 0, 1, 0, 0, '', 'See See the Army of Undead if quest Ride if player does not have aura'),
+(26,13784,10424, 0, 0, 47, 0, 55879, 66, 0, 1, 0, 0, '', 'See Henry Garrick at Ogre Ruins if quest Ride of the Scientifically Enhanced Boar is not completed | rewarded'),
+(26,13779,10588, 0, 0, 47, 0, 55879, 74, 0, 1, 0, 0, '', 'See Captain Garrick at Plains if quest Ride of the Scientifically Enhanced Boar is not taken | completed | rewarded'),
+(26,13785,10588, 0, 0, 47, 0, 55879, 64, 0, 1, 0, 0, '', 'See The Scout-o-Matic 5000 at Plains if quest Ride of the Scientifically Enhanced Boar is not rewarded'),
+(26,13780,10588, 0, 0, 47, 0, 55879, 64, 0, 1, 0, 0, '', 'See Austin Huxworth at Darkmaul Plains if quest Ride of the Scientifically Enhanced Boar is not rewarded'),
+(26,13780,10588, 0, 1, 47, 0, 55879, 64, 0, 1, 0, 0, '', 'See Austin Huxworth at Darkmaul Plains if quest Ride of the Scientifically Enhanced Boar is not rewarded'),
+(26,13776,10588, 0, 0, 47, 0, 55879, 64, 0, 1, 0, 0, '', 'See Lindie Springstock at Darkmaul Plains if quest Ride of the Scientifically Enhanced Boar is not rewarded'),
+(26,13766,10588, 0, 0, 47, 0, 55879, 64, 0, 1, 0, 0, '', 'See Alliance crew at Darkmaul Plains if quest Ride of the Scientifically Enhanced Boar is not rewarded'),
+(26,13775,10588, 0, 0, 47, 0, 55879, 64, 0, 1, 0, 0, '', 'See Re-sized Boar at Plains if quest Ride of the Scientifically Enhanced Boar is not rewarded'),
+(26,14663,10424, 0, 0, 47, 0, 55879, 64, 0, 1, 0, 0, '', 'See Torgok <Binder of Souls> if quest Ride of the Scientifically Enhanced Boar is not rewarded'),
+(26,14663,10424, 0, 0, 48, 0, 396499, 0, 8, 0, 0, 0, '', 'See Torgok <Binder of Souls> if quest Ride if player has objective complete'),
+(26,13835,10424, 0, 0, 47, 0, 55879, 64, 0, 0, 0, 0, '', 'See Garrick at ogre ruins if quest Ride of the Scientifically Enhanced Boar is rewarded'),
+(26,13794,10424, 0, 0, 47, 0, 55879, 64, 0, 0, 0, 0, '', 'See Lindie and Richter at ogre ruins if quest Ride of the Scientifically Enhanced Boar is rewarded');
+
+-- Quest data
+DELETE FROM `creature_queststarter` WHERE `id`=156280 AND `quest`=55879;
+DELETE FROM `creature_queststarter` WHERE `id`=156807 AND `quest`=55194;
+INSERT INTO `creature_queststarter` (`id`, `quest`, `VerifiedBuild`) VALUES
+(156280, 55879, 52649), -- Ride of the Scientifically Enhanced Boar accept from Captain Garrick
+(156807, 55194, 52649); -- Stocking Up on Supplies accept from Captain Garrick
+
+DELETE FROM `creature_questender` WHERE `id`=156799 AND `quest`=55879;
+DELETE FROM `creature_questender` WHERE `id`=156807 AND `quest`=55194;
+INSERT INTO `creature_questender` (`id`, `quest`, `VerifiedBuild`) VALUES
+(156799, 55879, 52649), -- Ride of the Scientifically Enhanced Boar turn in to Henry Garrick
+(156807, 55194, 52649); -- Stocking Up on Supplies turn in to Captain Garrick
+
+DELETE FROM `quest_template_addon` WHERE `ID` IN (55879,55194);
+INSERT INTO `quest_template_addon` (`ID`,`AllowableClasses`,`PrevQuestID`,`NextQuestID`,`ScriptName`) VALUES
+(55879,0,56034,0,'quest_ride_of_the_scientifically_enhanced_boar'), -- Ride of the Scientifically Enhanced Boar
+(55194,0,55879,0,''); -- Stocking Up on Supplies
+
+-- Conversation
+DELETE FROM `conversation_template` WHERE `Id` IN (12090,12091,12092,12164,15615);
+INSERT INTO `conversation_template` (`Id`,`FirstLineId`,`TextureKitId`,`ScriptName`,`VerifiedBuild`) VALUES
+(12090,29443,0,'',52649),
+(12091,29446,0,'',52649),
+(12092,29447,0,'',52649),
+(12164,29660,0,'',52649),
+(15615,39167,0,'',52649);
+
+DELETE FROM `conversation_actors` WHERE `ConversationId` IN (12090,12091,12092,12164,15615);
+INSERT INTO `conversation_actors` (`ConversationId`,`ConversationActorId`,`ConversationActorGuid`,`Idx`,`CreatureId`,`CreatureDisplayInfoId`,`NoActorObject`,`ActivePlayerObject`,`VerifiedBuild`) VALUES
+(12090,0,0,0,0,0,0,1,52649), -- Player
+(12090,71372,0,1,0,0,0,0,52649), -- Captain Garrick
+(12091,71587,8000023,0,0,0,0,0,52649), -- Henry Garrick
+(12092,0,0,0,0,0,0,1,52649), -- Player
+(12092,71372,0,1,0,0,0,0,52649), -- Captain Garrick
+(12164,71372,0,0,0,0,0,0,52649), -- Captain Garrick
+(15615,71372,0,0,0,0,0,0,52649), -- Captain Garrick
+(15615,78493,0,1,0,0,0,0,52649); -- Henry Garrick
+
+DELETE FROM `conversation_line_template` WHERE `Id` IN (29443,29444,29446,29660,29447,29448,29450,39167,39163,39164,39165,39166);
+INSERT INTO `conversation_line_template` (`Id`,`UiCameraID`,`ActorIdx`,`Flags`,`VerifiedBuild`) VALUES
+(29443,0,0,0,52649),
+(29444,0,1,0,52649),
+(29446,0,0,0,52649),
+(29660,0,0,0,52649),
+(29447,0,0,0,52649),
+(29448,0,1,0,52649),
+(29450,0,1,0,52649),
+(39167,0,0,0,52649),
+(39163,0,1,0,52649),
+(39164,0,0,0,52649),
+(39165,0,0,0,52649),
+(39166,0,1,0,52649);
+
+-- Lindie Springstock SAI 'Ogre Ruins'
+SET @ENTRY := 150245;
+UPDATE `creature_template` SET `AIName` = 'SmartAI', `ScriptName` = '' WHERE `entry` = @ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryOrGuid` = @ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `Difficulties`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@ENTRY, 0, 0, 1, '', 1, 0, 100, 0, 8000, 10000, 8000, 10000, 66, 0, 0, 0, 0, 0, 0, 19, 156808, 10, 0, 0, 0, 0, 0, 'Every 8 - 10 seconds (OOC) - Self: Look at Closest alive creature Small Boar (156808) in 10 yards'),
+(@ENTRY, 0, 1, 0, '', 61, 0, 100, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Every 8 - 10 seconds (OOC) - Self: Play emote 4');
+
+-- Captain Garrick SAI 'Ogre Ruins'
+SET @ENTRY := 156807;
+UPDATE `creature_template` SET `AIName` = 'SmartAI', `ScriptName` = '' WHERE `entry` = @ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryOrGuid` = @ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `Difficulties`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@ENTRY, 0, 0, 0, '', 47, 0, 100, 0, 55194, 0, 0, 0, 11, 296845, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'On quest accepted - Self: Cast spell 296845 on Player who accepted');
+
+-- Loot for Torgok
+SET @ID := 162817;
+UPDATE `creature_template_difficulty` SET `LootID`=@ID, GoldMin=4, GoldMax=20 WHERE `Entry` IN (@ID);
+DELETE FROM `creature_loot_template` WHERE `Entry` IN (@ID);
+INSERT INTO `creature_loot_template` (`Entry`,`Item`,`Reference`,`Chance`,`QuestRequired`,`LootMode`,`GroupId`,`MinCount`,`MaxCount`,`Comment`) VALUES
+(@ID,176398,0,100,0,1,0,1,1,'Torgok - Torgok\'s Reagent Pouch'),
+(@ID,175245,0,5,0,1,0,1,1,'Torgok - Runetusk Necklace'),
+(@ID,0,10100,10,0,1,0,1,1,'Torgok - Poor Quality Table Level 1 to 5');
+
+-- Conditions for class loot
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=1 AND `SourceGroup`=@ID;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(1,@ID,176398,0,0,47,0,59610,64,0,1,0,0,'','Item drops if quest 59610 is not rewarded');
+
+DELETE FROM `quest_template` WHERE `ID`=59610;
+INSERT INTO `quest_template` (`ID`,`QuestType`,`RewardXPMultiplier`,`RewardMoneyMultiplier`,`RewardArtifactXPMultiplier`,`Flags`,`LogTitle`) VALUES
+(59610,2,1,1,1,1024, '[Hidden Tracker] Torgok\'s Reagent Pouch Dropped');
+
+-- Add missing scene spells "This will be updated in the future with end quest"
+DELETE FROM `spell_area` WHERE `spell` IN (312605) AND `area` IN (10527);
+DELETE FROM `spell_area` WHERE `spell` IN (321690,321691,321692,321693,325429) AND `area` IN (10424);
+INSERT INTO `spell_area` (`spell`,`area`,`quest_start`,`quest_end`,`aura_spell`,`racemask`,`gender`,`flags`,`quest_start_status`,`quest_end_status`) VALUES
+(312605,10527,55879,0,0,0,2,3,64,0),
+(312605,10527,59942,0,0,0,2,3,64,0),
+(321690,10424,55879,0,0,0,2,3,64,0),
+(321690,10424,59942,0,0,0,2,3,64,0),
+(321691,10424,55879,0,0,0,2,3,64,0),
+(321691,10424,59942,0,0,0,2,3,64,0),
+(321692,10424,55879,0,0,0,2,3,64,0),
+(321692,10424,59942,0,0,0,2,3,64,0),
+(321693,10424,55879,0,0,0,2,3,64,0),
+(321693,10424,59942,0,0,0,2,3,64,0),
+(325429,10424,59942,0,0,0,2,3,10,0);
+
+DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 17) AND (`SourceEntry` IN (325429));
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ConditionStringValue1`, `NegativeCondition`, `Comment`) VALUES
+(17, 0, 325429, 0, 0, 48, 0, 397279, 0, 8, '', 0, 'Caster of the spell has quest objective 397279 == 8 (but hasn\'t rewarded quest yet)');
+
+-- Re-Deather
+
+UPDATE `creature` SET `StringId` = 'shuja_grimaxe_ogre_ruins_prisoner' WHERE `guid`=8000024;
+UPDATE `creature_template` SET `ScriptName`="npc_warlord_grimaxe_q59942" WHERE `entry`=167146;
+UPDATE `creature_template` SET `ScriptName`="npc_prisoner_q55879" WHERE `entry`=167126;
+UPDATE `creature_template` SET `npcflag`=16777216 WHERE entry IN (167142);
+
+DELETE FROM `creature_equip_template` WHERE `CreatureID`=167146;
+INSERT INTO `creature_equip_template` (`CreatureID`, `ID`, `ItemID1`, `AppearanceModID1`, `ItemVisual1`, `ItemID2`, `AppearanceModID2`, `ItemVisual2`, `ItemID3`, `AppearanceModID3`, `ItemVisual3`, `VerifiedBuild`) VALUES
+(167146, 1, 165616, 0, 0, 0, 0, 0, 0, 0, 0, 52808);
+
+DELETE FROM `creature_template_movement` WHERE `CreatureId` IN (167142);
+INSERT INTO `creature_template_movement` (`CreatureId`,`Ground`,`Swim`,`Flight`,`Rooted`,`Chase`,`Random`,`InteractionPauseTimer`) VALUES
+(167142,0,0,1,0,0,0,0); -- Choppy Booster Mk. 5
+
+DELETE FROM `npc_vendor` WHERE `entry`=167213;
+INSERT INTO `npc_vendor` (`entry`, `slot`, `item`, `maxcount`, `ExtendedCost`, `type`, `PlayerConditionID`, `IgnoreFiltering`, `VerifiedBuild`) VALUES
+(167213, 2, 178120, 0, 0, 1, 0, 0, 52808),
+(167213, 1, 117, 0, 0, 1, 0, 1, 52808);
+
+-- Quest data
+DELETE FROM `creature_queststarter` WHERE `id`=167019 AND `quest`=59942;
+DELETE FROM `creature_queststarter` WHERE `id`=167212 AND `quest`=59950;
+INSERT INTO `creature_queststarter` (`id`, `quest`, `VerifiedBuild`) VALUES
+(167019, 59942, 52649), -- The Re-Deather accept from Cork Fizzlepop
+(167212, 59950, 52649); -- Stocking Up on Supplies accept from Warlord Breka Grimaxe
+
+DELETE FROM `creature_questender` WHERE `id`=167126 AND `quest`=59942;
+DELETE FROM `creature_questender` WHERE `id`=167212 AND `quest`=59950;
+INSERT INTO `creature_questender` (`id`, `quest`, `VerifiedBuild`) VALUES
+(167126, 59942, 52649), -- The Re-Deather turn in to Shuja Grimaxe
+(167212, 59950, 52649); -- Stocking Up on Supplies turn in to Warlord Breka Grimaxe
+
+DELETE FROM `quest_template_addon` WHERE `ID` IN (59942,59950);
+INSERT INTO `quest_template_addon` (`ID`,`AllowableClasses`,`PrevQuestID`,`NextQuestID`,`ScriptName`) VALUES
+(59942,0,59941,0,'quest_the_re_deather'), -- The Re-Deather
+(59950,0,59942,0,''); -- Stocking Up on Supplies
+
+-- Phase Area
+DELETE FROM `phase_area` WHERE `AreaId`=10588 AND `PhaseId` IN (15331);
+DELETE FROM `phase_area` WHERE `AreaId`=10424 AND `PhaseId` IN (15485,15447,15353,15338,15377);
+INSERT INTO `phase_area` (`AreaId`,`PhaseId`,`Comment`) VALUES
+(10588,15331, 'Cosmetic - NPE - See Choppy Booster Mk. 5 for Re-Deather'),
+(10424,15485, 'Cosmetic - NPE - See Warlord Breka Grimaxe at Ogre Ruins'),
+(10424,15447, 'Cosmetic - NPE - See Grunt Throg at Ogre Ruins'),
+(10424,15353, 'Cosmetic - NPE - See Shuja Grimaxe at Ogre Ruins pre quest at Ogre Ruins'),
+(10424,15338, 'Cosmetic - NPE - See Won\'sa and Lana Jordan at Ogre Ruins pre quest at Ogre Ruins'),
+(10424,15377, 'Cosmetic - NPE - See Mithdran Dawntracker at Ogre Ruins pre quest at Ogre Ruins');
+
+-- Phase Names
+DELETE FROM `phase_name` WHERE `ID` IN (15331,15485,15447,15353,15338,15377);
+INSERT INTO `phase_name` (`ID`,`Name`) VALUES
+(15331,'Cosmetic - NPE - See Choppy Booster Mk. 5 for Re-Deather'),
+(15485,'Cosmetic - NPE - See Warlord Breka Grimaxe at Ogre Ruins'),
+(15447,'Cosmetic - NPE - See Grunt Throg at Ogre Ruins'),
+(15353,'Cosmetic - NPE - See Shuja Grimaxe at Ogre Ruins pre quest at Ogre Ruins'),
+(15338,'Cosmetic - NPE - See Won\'sa and Lana Jordan at Ogre Ruins pre quest at Ogre Ruins'),
+(15377,'Cosmetic - NPE - See Mithdran Dawntracker at Ogre Ruins pre quest at Ogre Ruins');
+
+-- Phase Conditions
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=26 AND `SourceGroup` IN (15331) AND `SourceEntry`=10588;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=26 AND `SourceGroup` IN (15319) AND `ConditionValue1`=59942;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=26 AND `SourceGroup` IN (13783) AND `ConditionValue1`=325368;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=26 AND `SourceGroup` IN (15485,15447,15353,15338,15377,15553,15316,15315,15318) AND `ConditionValue1`=59942;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=26 AND `SourceGroup` IN (15316) AND `SourceEntry`=0;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=26 AND `SourceGroup` IN (14663,15327) AND `ConditionValue1`=59942;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=26 AND `SourceGroup` IN (14663) AND `ConditionValue1`=397279;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(26,15331,10588, 0, 0, 47, 0, 59942, 8, 0, 0, 0, 0, '', 'Choppy Booster Mk. 5 if quest The Re-Deather is inprogress'),
+(26,15331,10588, 0, 0, 1, 0, 325368, 0, 0, 1, 0, 0, '', 'See Choppy Booster Mk. 5 if player does not have aura'),
+(26,15331,10588, 0, 0, 48, 0, 397279, 0, 0, 0, 0, 0, '', 'Player has quest objective 397279 == 0 (but hasn\'t rewarded quest yet)'),
+(26,15319,10588, 0, 0, 47, 0, 59942, 1, 0, 0, 0, 0, '', 'Choppy Booster Mk. 5 if quest The Re-Deather is not taken'),
+(26,13783,10529, 0, 0, 1, 0, 325368, 0, 0, 1, 0, 0, '', 'See See the Army of Undead if player does not have aura'),
+(26,15485,10424, 0, 0, 47, 0, 59942, 64, 0, 0, 0, 0, '', 'See Warlord Breka Grimaxe at Ogre Ruins if quest The Re-Deather is rewarded'),
+(26,15447,10424, 0, 0, 47, 0, 59942, 64, 0, 0, 0, 0, '', 'See Grunt Throg at Ogre Ruins if quest The Re-Deather is rewarded'),
+(26,15353,10424, 0, 0, 47, 0, 59942, 64, 0, 0, 0, 0, '', 'See Shuja Grimaxe at Ogre Ruins pre quest if quest The Re-Deather is rewarded'),
+(26,15338,10424, 0, 0, 47, 0, 59942, 64, 0, 0, 0, 0, '', 'See Won\'sa and Lana Jordan at Ogre Ruins pre quest if quest The Re-Deather is rewarded'),
+(26,15377,10424, 0, 0, 47, 0, 59942, 64, 0, 0, 0, 0, '', 'See Mithdran Dawntracker at Ogre Ruins pre quest if quest The Re-Deather is rewarded'),
+(26,15553,10588, 0, 0, 47, 0, 59942, 64, 0, 1, 0, 0, '', 'See Horde Crew at Darkmaul Plains if quest The Re-Deather is not rewarded'),
+(26,15316,10588, 0, 0, 47, 0, 59942, 64, 0, 1, 0, 0, '', 'See Mithran Dawntracker at Darkmaul Plains if quest The Re-Deather is not rewarded'),
+(26,15316,10588, 0, 1, 47, 0, 59942, 64, 0, 1, 0, 0, '', 'See Mithran Dawntracker at Darkmaul Plains if quest The Re-Deather is not rewarded'),
+(26,15315,10588, 0, 0, 47, 0, 59942, 64, 0, 1, 0, 0, '', 'See Warlord Breka Grimaxe at Darkmaul Plains if quest The Re-Deather is not rewarded'),
+(26,15318,10588, 0, 0, 47, 0, 59942, 64, 0, 1, 0, 0, '', 'See Cork Fizzlepop at Darkmaul Plains if quest The Re-Deather is not rewarded'),
+(26,14663,10424, 0, 1, 47, 0, 59942, 64, 0, 1, 0, 0, '', 'See Torgok <Binder of Souls> if quest The Re-Deather is not rewarded'),
+(26,14663,10424, 0, 1, 48, 0, 397279, 0, 8, 0, 0, 0, '', 'See Torgok <Binder of Souls> if quest Ride if player has objective complete'),
+(26,15327,10424, 0, 0, 47, 0, 59942, 66, 0, 1, 0, 0, '', 'AND0 See Shuja Grimaxe at Ogre Ruins if quest The Re-Deather is not completed | rewarded Horde.');
+
+-- Add Scenes for The Re-Deather
+DELETE FROM `scene_template` WHERE `SceneId` IN (2489,2489,2497,2423,2422,2421,2420);
+INSERT INTO `scene_template` (`SceneId`,`Flags`,`ScriptPackageID`,`Encrypted`,`ScriptName`) VALUES
+(2489,17,2896,0,'scene_darkmaul_plains_skeleton_army_horde'),
+(2497,17,2933,0,''),
+(2423,16,2825,0,''),
+(2422,16,2824,0,''),
+(2421,16,2823,0,''),
+(2420,16,2822,0,'');
+
+-- Spell Click
+DELETE FROM `npc_spellclick_spells` WHERE `npc_entry` IN (167142);
+INSERT INTO `npc_spellclick_spells` (`npc_entry`,`spell_id`,`cast_flags`,`user_type`) VALUES
+(167142,325368,1,0);
+
+-- Condition for Spell click event condition type Queststate
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=18 AND `SourceGroup` IN (167142) AND `SourceEntry` IN (325368) AND `SourceId`=0;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(18, 167142, 325368, 0, 0, 47, 0, 59942, 8, 0, 0, 0, 0, '', 'Spellclick unit Choppy Booster Mk. 5 will cast spell Riding Choppy Booster Mk 5 (DNT) on player if quest The Choppy Booster Mk. 5 queststate is INCOMPLETE');
+
+-- Spell Target Position
+DELETE FROM `spell_target_position` WHERE `ID` IN (325368);
+INSERT INTO `spell_target_position` (`ID`,`EffectIndex`,`MapID`,`PositionX`,`PositionY`,`PositionZ`,`VerifiedBuild`) VALUES
+(325368,0,2175,107.87153,-2414.177,95.44844,52649);
+
+-- Spell Target Position
+DELETE FROM `spell_target_position` WHERE `ID` IN (325401);
+INSERT INTO `spell_target_position` (`ID`,`EffectIndex`,`MapID`,`PositionX`,`PositionY`,`PositionZ`,`VerifiedBuild`) VALUES
+(325401,0,2175,233.55,-2332.52,80.84,52649);
+
+-- Summon data for Warlord Grimaxe
+DELETE FROM `creature_summoned_data` WHERE `CreatureID` IN (167146);
+INSERT INTO `creature_summoned_data` (`CreatureID`,`CreatureIDVisibleToSummoner`,`GroundMountDisplayID`,`FlyingMountDisplayID`, `DespawnOnQuestsRemoved`) VALUES
+(167146,167145,NULL,NULL,'');
+
+-- Conversation
+DELETE FROM `conversation_template` WHERE `Id` IN (14525,14526,14527,15618);
+INSERT INTO `conversation_template` (`Id`,`FirstLineId`,`TextureKitId`,`ScriptName`,`VerifiedBuild`) VALUES
+(14525,36400,0,'',52649),
+(14526,36402,0,'',52649),
+(14527,36403,0,'',52649),
+(15618,39171,0,'',52649);
+
+DELETE FROM `conversation_actors` WHERE `ConversationId` IN (14525,14526,14527,15618);
+INSERT INTO `conversation_actors` (`ConversationId`,`ConversationActorId`,`ConversationActorGuid`,`Idx`,`CreatureId`,`CreatureDisplayInfoId`,`NoActorObject`,`ActivePlayerObject`,`VerifiedBuild`) VALUES
+(14525,75979,8000016,0,0,0,0,0,52649), -- Cork Fizzlepop
+(14526,75979,0,0,167915,96314,0,0,52649), -- Cork Fizzlepop
+(14527,76004,0,0,0,0,0,0,52649),
+(14527,76357,0,1,0,0,0,0,52649),
+(15618,76357,0,0,0,0,0,0,52649),
+(15618,78501,0,1,0,0,0,0,52649);
+
+DELETE FROM `conversation_line_template` WHERE `Id` IN (36400,36402,36403,36404,39171,39172,39173,39174,39175);
+INSERT INTO `conversation_line_template` (`Id`,`UiCameraID`,`ActorIdx`,`Flags`,`VerifiedBuild`) VALUES
+(36400,0,0,0,52649),
+(36402,114,0,0,52649),
+(36403,0,0,0,52649),
+(36404,0,1,0,52649),
+(39171,0,0,0,52649),
+(39172,0,1,0,52649),
+(39173,0,0,0,52649),
+(39174,0,0,0,52649),
+(39175,0,1,0,52649);
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=26 AND `SourceGroup`=14663 AND `ElseGroup`=1;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(26,14663,10424, 0, 1, 47, 0, 59942, 64, 0, 1, 0, 0, '', 'See Torgok <Binder of Souls> if quest The Re-Deather is not rewarded'),
+(26,14663,10424, 0, 1, 48, 0, 397279, 0, 8, 0, 0, 0, '', 'See Torgok <Binder of Souls> if quest Ride if player has objective complete');
+
+-- Westward Bound
+
+UPDATE `creature` SET `StringId`= "bjorn_stouthands_pit_pre_quest" WHERE `guid`=1051890;
+UPDATE `creature` SET `StringId`= "alaria_pit_pre_quest" WHERE `guid`=1051889;
+UPDATE `creature` SET `StringId`= "lana_joran_pit_pre_quest" WHERE `guid`=8000057;
+UPDATE `creature` SET `StringId`= "wonsa_pit_pre_quest" WHERE `guid`=8000058;
+
+UPDATE `creature_template` SET `npcflag`=2 WHERE `entry` IN (154300,156891,167225);
+UPDATE `creature_template` SET `ScriptName`="npc_bjorn_stouthands_q55965" WHERE `entry`=156891;
+UPDATE `creature_template` SET `ScriptName`="npc_alaria_q55965" WHERE `entry`=156803;
+UPDATE `creature_template` SET `ScriptName`="npc_lana_jordan_q59948" WHERE `entry`=167225;
+UPDATE `creature_template` SET `ScriptName`="npc_wonsa_q59948" WHERE `entry`=167226;
+
+DELETE FROM `creature_template_addon` WHERE `entry` IN (156891,158803,167225,167226);
+INSERT INTO `creature_template_addon` (`entry`,`visibilityDistanceType`,`emote`,`auras`) VALUES
+(156891,3,0, ''), -- Bjorn Stouthands
+(158803,3,0, ''), -- Alaria
+(167225,3,0, ''), -- Lana Jordan
+(167226,3,0, ''); -- Won'sa
+
+DELETE FROM `creature_text` WHERE `CreatureID` IN (156891,167225);
+INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
+(156891,0,0,'All right, let\'s see what we can find.', 12, 0, 100, 0, 0, 153011, 178906, 0, 'Bjorn Stouthands to Player'),
+(156891,1,0,'Well... I think we can say we found somethin\'.', 12, 0, 100, 0, 0, 153012, 178907, 0, 'Bjorn Stouthands to Player'),
+(167225,0,0,'Let\'s see if we can find one of those rituals.', 12, 0, 100, 0, 0, 155935, 196409, 0, 'Lana Jordan to Player'),
+(167225,1,0,'A dark pit and darker magic. I think we found the ritual.', 12, 0, 100, 0, 0, 155936, 196410, 0, 'Lana Jordan to Player');
+
+-- Pathing for Bjorn Stouthands Entry: 156891
+SET @NPC := 1051890;
+SET @PATH := @NPC * 10;
+DELETE FROM `waypoint_path` WHERE `PathId`=@PATH;
+INSERT INTO `waypoint_path` (`PathId`,`MoveType`,`Flags`,`Comment`) VALUES
+(@PATH,1,0,'Bjorn Stouthands Ogre Ruins');
+DELETE FROM `waypoint_path_node` WHERE `PathId`=@PATH;
+INSERT INTO `waypoint_path_node` (`PathId`,`NodeId`,`PositionX`,`PositionY`,`PositionZ`,`Orientation`,`Delay`) VALUES
+(@PATH,1,143.74654,-2304.6077,89.66764,NULL,0),
+(@PATH,2,129.32639,-2291.981,94.09912,NULL,0),
+(@PATH,3,119.19444,-2285.2258,96.639084,NULL,0),
+(@PATH,4,111.0816,-2275.9983,97.39326,NULL,0),
+(@PATH,5,102.78819,-2265.302,96.73692,NULL,0),
+(@PATH,6,89.68403,-2249.264,94.694824,NULL,0),
+(@PATH,7,89.68403,-2249.264,94.694824,1.939347267150878906,0);
+
+-- Pathing for Alaria Entry: 156803
+SET @NPC := 1051889;
+SET @PATH := @NPC * 10;
+DELETE FROM `waypoint_path` WHERE `PathId`=@PATH;
+INSERT INTO `waypoint_path` (`PathId`,`MoveType`,`Flags`,`Comment`) VALUES
+(@PATH,1,0,'Alaria Ogre Ruins');
+DELETE FROM `waypoint_path_node` WHERE `PathId`=@PATH;
+INSERT INTO `waypoint_path_node` (`PathId`,`NodeId`,`PositionX`,`PositionY`,`PositionZ`,`Orientation`,`Delay`) VALUES
+(@PATH,1,165.59766,-2308.5781,83.23175,NULL,0),
+(@PATH,2,153.73611,-2305.8403,86.4088,NULL,0),
+(@PATH,3,140.17014,-2296.8699,90.521965,NULL,0),
+(@PATH,4,129.96355,-2287.9636,95.05551,NULL,0),
+(@PATH,5,91.98264,-2246.8298,94.39893,NULL,0),
+(@PATH,6,91.98264,-2246.8298,94.39893,2.024514675140380859,0);
+
+-- Pathing for Lana Jordan Entry: 167225
+SET @NPC := @CGUID+16;
+SET @PATH := @NPC * 10;
+DELETE FROM `waypoint_path` WHERE `PathId`=@PATH;
+INSERT INTO `waypoint_path` (`PathId`,`MoveType`,`Flags`,`Comment`) VALUES
+(@PATH,1,0,'Lana Ogre Ruins');
+DELETE FROM `waypoint_path_node` WHERE `PathId`=@PATH;
+INSERT INTO `waypoint_path_node` (`PathId`,`NodeId`,`PositionX`,`PositionY`,`PositionZ`,`Orientation`,`Delay`) VALUES
+(@PATH,1,149.25081,-2299.1108,89.23349,NULL,0),
+(@PATH,2,138.00081,-2287.6108,93.98349,NULL,0),
+(@PATH,3,125.25081,-2278.8608,97.48349,NULL,0),
+(@PATH,4,102.25081,-2260.3608,96.23349,NULL,0),
+(@PATH,5,92.015625,-2246.9114,94.41398,NULL,0),
+(@PATH,6,92.015625,-2246.9114,94.41398,2.622560739517211914,0);
+
+-- Pathing for Won'sa Entry: 167226
+SET @NPC := @CGUID+17;
+SET @PATH := @NPC * 10;
+DELETE FROM `waypoint_path` WHERE `PathId`=@PATH;
+INSERT INTO `waypoint_path` (`PathId`,`MoveType`,`Flags`,`Comment`) VALUES
+(@PATH,1,0,'Wansa Ogre Ruins');
+DELETE FROM `waypoint_path_node` WHERE `PathId`=@PATH;
+INSERT INTO `waypoint_path_node` (`PathId`,`NodeId`,`PositionX`,`PositionY`,`PositionZ`,`Orientation`,`Delay`) VALUES
+(@PATH,1,146.84831,-2298.0352,89.56113,NULL,0),
+(@PATH,2,134.59831,-2287.7852,94.81113,NULL,0),
+(@PATH,3,112.09831,-2268.2852,97.31113,NULL,0),
+(@PATH,4,94.09831,-2252.7852,95.06113,NULL,0),
+(@PATH,5,89.265625,-2248.9602,94.66245,NULL,0),
+(@PATH,6,89.265625,-2248.9602,94.66245,1.861210823059082031,0);
+
+-- Quest data
+DELETE FROM `creature_queststarter` WHERE `id`=154300 AND `quest`=55965;
+DELETE FROM `creature_queststarter` WHERE `id`=167221 AND `quest`=59948;
+INSERT INTO `creature_queststarter` (`id`, `quest`, `VerifiedBuild`) VALUES
+(154300, 55965, 52649), -- Westward Bound accept from Bjorn Stouthands Alliance
+(167221, 59948, 52649); -- Westward Bound accept from Lana Jordan Horde
+
+DELETE FROM `creature_questender` WHERE `id`=156891 AND `quest`=55965;
+DELETE FROM `creature_questender` WHERE `id`=167225 AND `quest`=59948;
+INSERT INTO `creature_questender` (`id`, `quest`, `VerifiedBuild`) VALUES
+(156891, 55965, 52649), -- Westward Bound turn in to Bjorn Stouthands Alliance
+(167225, 59948, 52649); -- Westward Bound turn in to Lana Jordan Horde
+
+DELETE FROM `quest_template_addon` WHERE `ID` IN (55965,59948);
+INSERT INTO `quest_template_addon` (`ID`,`AllowableClasses`,`PrevQuestID`,`NextQuestID`,`ScriptName`) VALUES
+(55965,0,55194,0,'quest_westward_bound_alliance'), -- Westward Bound Alliance
+(59948,0,59950,0,'quest_westward_bound_horde'); -- Westward Bound Horde
+
+-- Phase Area
+DELETE FROM `phase_area` WHERE `AreaId`=10424 AND `PhaseId` IN (15337);
+INSERT INTO `phase_area` (`AreaId`,`PhaseId`,`Comment`) VALUES
+(10424,15337, 'Cosmetic - NPE - See Won\'sa and Lana Jordan at pit pre quest');
+
+-- Phase Names
+DELETE FROM `phase_name` WHERE `ID` IN (15337);
+INSERT INTO `phase_name` (`ID`,`Name`) VALUES
+(15337,'Cosmetic - NPE - See Won\'sa and Lana Jordan at pit pre quest');
+
+-- Phase Conditions
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=26 AND `SourceGroup` IN (15338,15337) AND `ConditionValue1` IN (59948,59949);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(26,15338,10424, 0, 0, 47, 0, 59948, 74, 0, 1, 0, 0, '', 'See Won\'sa and Lana Jordan at Ogre Ruins pre quest if quest Westward Bound is not taken | complete | rewarded'),
+(26,15337,10424, 0, 0, 47, 0, 59948, 74, 0, 0, 0, 0, '', 'See Won\'sa and Lana Jordan at pit pre quest if quest Westward Bound is taken | complete | rewarded'),
+(26,15337,10424, 0, 0, 47, 0, 59949, 66, 0, 1, 0, 0, '', 'See Won\'sa and Lana Jordan at pit pre quest if quest Who Lurks in the Pit is not complete | rewarded');
+
+UPDATE `creature` SET `PhaseUseFlags`=`PhaseUseFlags` | 0x01 WHERE `guid` IN(1051317, 1051942); -- fix spirithealer phases
+
+UPDATE `creature_template_difficulty` SET `ContentTuningID`=957, `VerifiedBuild`=53262 WHERE (`Entry`=167146 AND `DifficultyID`=0); -- Horde Warrior
+UPDATE `creature_template_difficulty` SET `ContentTuningID`=741, `VerifiedBuild`=53262 WHERE (`Entry`=167905 AND `DifficultyID`=0); -- Choppy Booster Mk. 5
+UPDATE `creature_template_difficulty` SET `ContentTuningID`=741, `VerifiedBuild`=53262 WHERE (`Entry`=167915 AND `DifficultyID`=0); -- Cork Fizzlepop
+
+UPDATE `creature_template` SET `faction`=116, `BaseAttackTime`=2000, `unit_flags`=64, `unit_flags2`=2048, `unit_flags3`=16 WHERE `entry`=167146; -- Horde Warrior
+
+DELETE FROM `phase_area` WHERE `AreaId`=10424 AND `PhaseId` IN (15558, 13795);
+INSERT INTO `phase_area` (`AreaId`,`PhaseId`,`Comment`) VALUES
+(10424,15558, 'Cosmetic - NPE - See Breka and Shuja Grimaxe after freeing Shuja'),
+(10424,13795, 'Cosmetic - NPE - See Captain and Henry Garrick after freeing Henry');
+
+DELETE FROM `phase_name` WHERE `ID` IN (15558, 13795);
+INSERT INTO `phase_name` (`ID`,`Name`) VALUES
+(15558,'Cosmetic - NPE - See Breka and Shuja Grimaxe after freeing Shuja'),
+(13795,'Cosmetic - NPE - See Captain and Henry Garrick after freeing Henry');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 26 AND `SourceEntry`=10424 AND `SourceGroup` IN(15558,13795);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ConditionStringValue1`, `NegativeCondition`, `Comment`) VALUES
+(26, 15558, 10424, 0, 0, 28, 0, 59942, 0, 0, '', 0, 'Player has completed quest quest The Re-Deather (59942) (but not yet rewarded)'),
+(26, 13795, 10424, 0, 0, 28, 0, 55879, 0, 0, '', 0, 'Player has completed quest quest Ride of the Scientifically Enhanced Boar (55879) (but not yet rewarded)');
+
+DELETE FROM `creature_template_addon` WHERE `entry` IN(156799, 167126);
+DELETE FROM `creature_addon` WHERE `guid` IN(8000023, 8000024);
+INSERT INTO `creature_addon` (`guid`, `PathId`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES
+(8000023, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, '305513 325408'),
+(8000024, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, '305513 325408');
+
+DELETE FROM `creature_template_movement` WHERE `CreatureId` IN(156799, 167126);
+DELETE FROM `creature_movement_override` WHERE `SpawnId` IN(8000023, 8000024);
+INSERT INTO `creature_movement_override` (`SpawnId`, `Ground`, `Swim`, `Flight`, `Rooted`, `Chase`, `Random`, `InteractionPauseTimer`) VALUES
+(8000023, 1, 1, 1, 0, 0, 0, 0),
+(8000024, 1, 1, 1, 0, 0, 0, 0);
+
+DELETE FROM `quest_request_items` WHERE `ID`=55879;
+INSERT INTO `quest_request_items` (`ID`, `EmoteOnComplete`, `EmoteOnIncomplete`, `EmoteOnCompleteDelay`, `EmoteOnIncompleteDelay`, `CompletionText`, `VerifiedBuild`) VALUES
+(55879, 0, 0, 0, 0, 'Please... help! I won\'t last much longer!', 53262); -- Ride of the Scientifically Enhanced Boar
+
+UPDATE `creature_template_difficulty` SET `ContentTuningID`=741, `VerifiedBuild`=53262 WHERE (`Entry`=156267 AND `DifficultyID`=0); -- Giant Boar
+UPDATE `creature_template_difficulty` SET `ContentTuningID`=741, `VerifiedBuild`=53262 WHERE (`Entry`=156736 AND `DifficultyID`=0); -- Re-sized Boar
+UPDATE `creature_template_difficulty` SET `ContentTuningID`=741, `VerifiedBuild`=53262 WHERE (`Entry`=156749 AND `DifficultyID`=0); -- Lindie Springstock
+UPDATE `creature_template_difficulty` SET `ContentTuningID`=1421, `VerifiedBuild`=53262 WHERE (`Entry`=174955 AND `DifficultyID`=0); -- Alliance Captain
+
+UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=156807; -- Captain Garrick
+UPDATE `creature_template` SET `faction`=2142, `speed_walk`=6.40000009536743164, `speed_run`=2.285714387893676757, `BaseAttackTime`=2000, `RangeAttackTime`=0, `unit_flags2`=2048, `unit_flags3`=67108864 WHERE `entry`=156267; -- Giant Boar
+UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048, `unit_flags3`=67108864 WHERE `entry`=156595; -- Giant Boar
+UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048, `unit_flags3`=67633152 WHERE `entry`=156736; -- Re-sized Boar
+UPDATE `creature_template` SET `faction`=2618, `BaseAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=156749; -- Lindie Springstock
+UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=156799; -- Henry Garrick
+UPDATE `creature_template` SET `faction`=4, `BaseAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=174955; -- Alliance Captain
diff --git a/src/server/scripts/ExilesReach/zone_exiles_reach.cpp b/src/server/scripts/ExilesReach/zone_exiles_reach.cpp
index bc4d31c4a2f..0ec3d94693f 100644
--- a/src/server/scripts/ExilesReach/zone_exiles_reach.cpp
+++ b/src/server/scripts/ExilesReach/zone_exiles_reach.cpp
@@ -41,6 +41,11 @@
#include "Loot.h"
#include "SpellHistory.h"
#include "WorldStateMgr.h"
+#include "Unit.h"
+#include "Vehicle.h"
+#include "WorldSession.h"
+#include "CombatAI.h"
+#include "PhasingHandler.h"
template<class privateAI, class publicAI>
CreatureAI* GetPrivatePublicPairAISelector(Creature* creature)
@@ -1483,7 +1488,7 @@ struct npc_mithran_dawntracker_beach_laying : public ScriptedAI
if (spellInfo->Id != SPELL_BANDAGING_QUEST)
return;
- static Position const MithranCloneSpawnPosition = { -428.576f, -2593.93f, 0.152832f, 4.849576f };
+ static constexpr Position MithranCloneSpawnPosition = { -428.576f, -2593.93f, 0.152832f, 4.849576f };
if (Player* player = caster->ToPlayer())
{
@@ -1505,7 +1510,7 @@ struct npc_lana_jordan_beach_laying : public ScriptedAI
if (spellInfo->Id != SPELL_BANDAGING_QUEST)
return;
- static Position const LanaCloneSpawnPosition = { -420.656f, -2600.28f, 0.556646f, 4.046853f };
+ static constexpr Position LanaCloneSpawnPosition = { -420.656f, -2600.28f, 0.556646f, 4.046853f };
if (Player* player = caster->ToPlayer())
{
@@ -1743,8 +1748,8 @@ enum LostExpeditionFollowerData
POINT_CAMP_POSITION = 0,
};
-Position const GarrickAbandonedCampPosition = { -249.059006f, -2492.520020f, 18.0742f };
-Position const GrimaxeAbandonedCampPosition = { -249.20117f, -2492.6191f, 17.964903f };
+static constexpr Position GarrickAbandonedCampPosition = { -249.059006f, -2492.520020f, 18.0742f };
+static constexpr Position GrimaxeAbandonedCampPosition = { -249.20117f, -2492.6191f, 17.964903f };
// 165359 - Captain Garrick
// This script is used by Captian Garrick Follower for Finding the Lost Expedition quest
@@ -2062,7 +2067,7 @@ enum CookingMeatQuestData
ANIMATION_KIT_INJURED = 14432
};
-Position const InjuredNpcPositionAbandonedCamp = { -245.40973f, -2492.0886f, 18.404648f, 2.4754f };
+static constexpr Position InjuredNpcPositionAbandonedCamp = { -245.40973f, -2492.0886f, 18.404648f, 2.4754f };
// 55174 - Cooking Meat
// 59932 - Cooking Meat
@@ -2369,8 +2374,8 @@ enum EnhancedCombatTrainerData
SPELL_AGGRO_RADIUS_CHECK_DNT_DRUID = 320766
};
-Position const EnhancedTrainingWalkPosition = { -250.60243f, -2485.2517f, 17.787413f };
-Position const EnhancedTrainingRunPosition = { -231.5225f, -2480.5276f, 19.019197f };
+static constexpr Position EnhancedTrainingWalkPosition = { -250.60243f, -2485.2517f, 17.787413f };
+static constexpr Position EnhancedTrainingRunPosition = { -231.5225f, -2480.5276f, 19.019197f };
// 164577 - Alliance Sparring Partner
// 166916 - Horde Sparring Partner
@@ -3503,8 +3508,8 @@ enum NorthboundData
SPELL_LINGER_NORTHBOUND_HORDE = 344385,
};
-Position const GarrickQuillboarBriarpatchPosition = { -142.62154f, -2641.0364f, 48.775497f };
-Position const GrimaxeQuillboarBriarpatchPosition = { -142.56076f, -2640.9915f, 48.755478f };
+static constexpr Position GarrickQuillboarBriarpatchPosition = { -142.62154f, -2641.0364f, 48.775497f };
+static constexpr Position GrimaxeQuillboarBriarpatchPosition = { -142.56076f, -2640.9915f, 48.755478f };
// 165360 - Alliance Survivor
// This script is used by Captian Garrick Follower for Northbound quest
@@ -3927,8 +3932,8 @@ enum HuxsworthBriarpatchData
EVENT_HUXSWORTH_GARRICK_RUN_BRIARPATCH = 2,
};
-Position const GarrickBriarpatchDespawnPosition = { -112.92383f, -2640.541f, 52.35042f };
-Position const HuxworthBriarpatchDespawnPosition = { -112.61979f, -2645.9775f, 52.22835f };
+static constexpr Position GarrickBriarpatchDespawnPosition = { -112.92383f, -2640.541f, 52.35042f };
+static constexpr Position HuxworthBriarpatchDespawnPosition = { -112.61979f, -2645.9775f, 52.22835f };
// 154327 - Austin Huxsworth
struct npc_huxsworth_briarpatch_quest_private : public ScriptedAI
@@ -4075,8 +4080,8 @@ enum DawntrackerBriarpatch
EVENT_DAWNTRACKER_GRIMAXE_RUN_BRIARPATCH = 2,
};
-Position const GrimaxeBriarpatchDespawnPosition = { -112.92383f, -2640.541f, 52.35042f };
-Position const DawntrackerBriarpatchDespawnPosition = { -112.61979f, -2645.9775f, 52.22835f };
+static constexpr Position GrimaxeBriarpatchDespawnPosition = { -112.92383f, -2640.541f, 52.35042f };
+static constexpr Position DawntrackerBriarpatchDespawnPosition = { -112.61979f, -2645.9775f, 52.22835f };
// 166996 - Mithdran Dawntracker
struct npc_dawntracker_briarpatch_quest_private : public ScriptedAI
@@ -4364,7 +4369,7 @@ enum GeolordData
WORLDSTATE_HORDE = 4486
};
-Position const PrisonerPosition = { 16.4271f, -2511.82f, 78.8215f, 5.66398f };
+static constexpr Position PrisonerPosition = { 16.4271f, -2511.82f, 78.8215f, 5.66398f };
// 151091 - Geolord Grek'og
struct npc_geolord_grekog : public ScriptedAI
@@ -4443,8 +4448,8 @@ enum BriarpatchPrisonerData
SAY_GET_OUT_OF_HERE = 0
};
-Position const BriarpatchPrisonerJumpToPosition = { 19.5174f, -2513.75f, 74.0545f };
-Position const PrisonerBriarpatchDespawnPosition = { 51.005207f, -2485.644f, 78.15223f };
+static constexpr Position BriarpatchPrisonerJumpToPosition = { 19.5174f, -2513.75f, 74.0545f };
+static constexpr Position PrisonerBriarpatchDespawnPosition = { 51.005207f, -2485.644f, 78.15223f };
// 167008 - Cork Fizzlepop
// 154301 - Lindie Springstock
@@ -4842,7 +4847,7 @@ enum LindieSpringStockData
SPELL_GROW_THREE = 111701
};
-Position const MiniChopperJumpPosition = { 107.979f, -2414.13f, 95.6243f };
+static constexpr Position MiniChopperJumpPosition = { 107.979f, -2414.13f, 95.6243f };
// 149899 - Lindie Springstock
// 167019 - Cork Fizzlepop
@@ -5111,7 +5116,7 @@ private:
EventMap _events;
};
-Position const HordeCrewPersonalSpawnLocation[] =
+static constexpr Position HordeCrewPersonalSpawnLocation[] =
{
{ 50.920593f, -2477.466f, 79.444374f, 0.8753076f },
{ 60.51328f, -2476.4822f, 81.034775f, 0.9128374f },
@@ -5265,7 +5270,7 @@ CreatureAI* HordeCrewPlainsSelector(Creature* creature)
return new NullCreatureAI(creature);
};
-Position const CopterCloneSpawnPosition = { 100.583f, -2417.87f, 90.268f, 0.0f };
+static constexpr Position CopterCloneSpawnPosition = { 100.583f, -2417.87f, 90.268f, 0.0f };
// Quest 55193 - The Scout-o-Matic 5000 "Alliance"
// Quest 59940 - The Choppy Booster Mk. 5 "Horde"
@@ -5544,13 +5549,15 @@ struct npc_re_sized_boar_q56034 : public ScriptedAI
if (uiType != POINT_MOTION_TYPE)
return;
- if (uiId != 0)
+ if (uiId != POINT_HOME_POSITION)
return;
me->SetFacingTo(0.785398f);
- if (Unit* owner = me->GetOwner())
- owner->CastSpell(owner, SPELL_UPDATE_PHASE_SHIFT);
+ if (Unit* summoner = me->GetDemonCreator())
+ summoner->CastSpell(summoner, SPELL_UPDATE_PHASE_SHIFT);
+
+ me->DespawnOrUnsummon();
}
void UpdateAI(uint32 diff) override
@@ -5871,6 +5878,29 @@ class spell_re_sizing_aura_q59941 : public AuraScript
}
};
+// 325368 - Re-sizer Slaughter (DNT)
+class spell_re_sizer_slaughter : public AuraScript
+{
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo(
+ {
+ SPELL_UPDATE_PHASE_SHIFT
+ });
+ }
+
+ void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->CastSpell(nullptr, SPELL_UPDATE_PHASE_SHIFT);
+ }
+
+ void Register() override
+ {
+ AfterEffectApply += AuraEffectRemoveFn(spell_re_sizer_slaughter::OnApply, EFFECT_0, SPELL_AURA_PLAY_SCENE, AURA_EFFECT_HANDLE_REAL);
+ AfterEffectRemove += AuraEffectRemoveFn(spell_re_sizer_slaughter::OnApply, EFFECT_0, SPELL_AURA_PLAY_SCENE, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
// 56034 - Re-sizing the Situation "Alliance"
// 59941 - Re-sizing the Situation "Horde"
class quest_resizing_the_situation : public QuestScript
@@ -5920,6 +5950,1112 @@ public:
}
};
+enum QuestRideBoar
+{
+ NPC_ALLIANCE_CAPTAIN = 174955,
+ NPC_HENRY_GARRICK_PRISONER = 156799,
+
+ SPELL_SUMMON_DARKMAUL_PLAINS_QUESTGIVERS_SUMMON = 305779,
+ SPELL_SUMMON_DARKMAUL_PLAINS_QUESTGIVERS_AURA = 305776,
+ SPELL_PING_GARRICK_TORGOK = 316982,
+ SPELL_REUNION_DNT_ALLIANCE = 305893,
+ SPELL_RITUAL_SCENE_OGRE_CITADEL_DNT = 321693,
+ SPELL_RITUAL_SCENE_HRUN_BEAM_DNT = 321692,
+ SPELL_RITUAL_SCENE_HARPY_BEAM_DNT = 321691,
+ SPELL_RITUAL_SCENE_MAIN_BEAM_DNT = 321690
+};
+
+static constexpr Position ReDeatherAbandonTeleportPos = { 102.3f, -2422.5f, 90.1f, 0.764454185962677001f };
+
+// 55879 - Ride of the Scientifically Enhanced Boar
+class quest_ride_of_the_scientifically_enhanced_boar : public QuestScript
+{
+public:
+ quest_ride_of_the_scientifically_enhanced_boar() : QuestScript("quest_ride_of_the_scientifically_enhanced_boar") { }
+
+ void OnQuestStatusChange(Player* player, Quest const* /*quest*/, QuestStatus /*oldStatus*/, QuestStatus newStatus) override
+ {
+ switch (newStatus)
+ {
+ case QUEST_STATUS_INCOMPLETE:
+ player->CastSpell(player, SPELL_UPDATE_PHASE_SHIFT);
+ player->CastSpell(player, SPELL_SUMMON_DARKMAUL_PLAINS_QUESTGIVERS_SUMMON);
+ break;
+ case QUEST_STATUS_COMPLETE:
+ player->CombatStop();
+ player->CastSpell(player, SPELL_PING_GARRICK_TORGOK);
+ break;
+ case QUEST_STATUS_REWARDED:
+ player->CastSpell(player, SPELL_REUNION_DNT_ALLIANCE);
+ player->CastSpell(player, SPELL_RITUAL_SCENE_OGRE_CITADEL_DNT);
+ player->CastSpell(player, SPELL_RITUAL_SCENE_HRUN_BEAM_DNT);
+ player->CastSpell(player, SPELL_RITUAL_SCENE_HARPY_BEAM_DNT);
+ player->CastSpell(player, SPELL_RITUAL_SCENE_MAIN_BEAM_DNT);
+ player->CastSpell(player, SPELL_UPDATE_PHASE_SHIFT);
+ break;
+ case QUEST_STATUS_NONE:
+ player->RemoveAura(SPELL_RITUAL_SCENE_OGRE_CITADEL_DNT);
+ player->RemoveAura(SPELL_RITUAL_SCENE_HRUN_BEAM_DNT);
+ player->RemoveAura(SPELL_RITUAL_SCENE_HARPY_BEAM_DNT);
+ player->RemoveAura(SPELL_RITUAL_SCENE_MAIN_BEAM_DNT);
+ player->RemoveAura(SPELL_SUMMON_DARKMAUL_PLAINS_QUESTGIVERS_AURA);
+ player->CastSpell(player, SPELL_UPDATE_PHASE_SHIFT);
+ player->NearTeleportTo(ReDeatherAbandonTeleportPos);
+ break;
+ default:
+ break;
+ }
+ }
+};
+
+enum SceneOgreRuinsRideBoar
+{
+ QUEST_RIDE_ENHANCED_BOAR = 55879,
+ QUEST_RIDE_BOAR_OBJECTIVE_TWO = 396499,
+ QUEST_RIDE_BOAR_OBJECTIVE_TWO_MAX = 8,
+
+ SPELL_ENHANCED_BOAR_TRAMPLE = 305557,
+ SPELL_ENHANCED_BOAR_CHARGE = 321627,
+ SPELL_ENHANCED_BOAR_KILL_CREDIT = 321668,
+ SPELL_ENHANCED_BOAR_PING_VEHICLE = 305559,
+ SPELL_ENHANCED_BOAR_CHARGE_CONVO = 305815,
+ SPELL_ENHANCED_BOAR_KNOCKBACK = 306356,
+ SPELL_ENHANCED_BOAR_KNOCKBACK_HINT = 306357
+};
+
+// Script scene for Ride of the Scientifically Enhanced Boar quest
+class scene_darkmaul_plains_skeleton_army_alliance : public SceneScript
+{
+public:
+ scene_darkmaul_plains_skeleton_army_alliance() : SceneScript("scene_darkmaul_plains_skeleton_army_alliance") { }
+
+ void OnSceneTriggerEvent(Player* player, uint32 /*sceneInstanceID*/, SceneTemplate const* /*sceneTemplate*/, std::string const& triggerName) override
+ {
+ if (triggerName == "Trampling Time")
+ {
+ player->CastSpell(player, SPELL_ENHANCED_BOAR_TRAMPLE, true);
+ if (Unit* boar = player->GetVehicleBase())
+ boar->CastSpell(boar, SPELL_ENHANCED_BOAR_CHARGE, true);
+ }
+ else if (triggerName == "Big Kill Credit")
+ {
+ player->CastSpell(player, SPELL_ENHANCED_BOAR_KILL_CREDIT, true);
+
+ if (player->GetQuestObjectiveData(QUEST_RIDE_ENHANCED_BOAR, QUEST_RIDE_BOAR_OBJECTIVE_TWO) == QUEST_RIDE_BOAR_OBJECTIVE_TWO_MAX)
+ player->CastSpell(player, SPELL_ENHANCED_BOAR_PING_VEHICLE);
+ }
+ else if (triggerName == "Conversation")
+ {
+ player->CastSpell(player, SPELL_ENHANCED_BOAR_CHARGE_CONVO, true);
+ }
+ else if (triggerName == "Knockback")
+ {
+ player->CastSpell(player, SPELL_ENHANCED_BOAR_KNOCKBACK, true);
+ }
+ else if (triggerName == "Hint")
+ {
+ player->CastSpell(player, SPELL_ENHANCED_BOAR_KNOCKBACK_HINT, true);
+ }
+ }
+};
+
+// Spell 305779 - Summon Darkmaul Plains Questgivers (DNT)
+class spell_summon_darkmaul_plains_questgivers_q55879 : public SpellScript
+{
+ // @TODO: drop after TARGET_UNK_142 impl
+
+ void SelectTarget(WorldObject*& target)
+ {
+ Player* player = Object::ToPlayer(GetCaster());
+ if (!player)
+ return;
+
+ Creature* survivor = FindCreatureIgnorePhase(player, "captain_garrick_plains", 5.0f);
+ if (!survivor)
+ return;
+
+ target = survivor;
+ }
+
+ void Register() override
+ {
+ OnObjectTargetSelect += SpellObjectTargetSelectFn(spell_summon_darkmaul_plains_questgivers_q55879::SelectTarget, EFFECT_0, TARGET_DEST_NEARBY_ENTRY_OR_DB);
+ }
+};
+
+enum SpellRidingGiantBoar
+{
+ SPELL_RIDING_GIANT_BOAR_305068 = 305068,
+ SPELL_RIDING_GIANT_BOAR_321670 = 321670
+};
+
+// 173426 - Riding Giant Boar
+class spell_riding_giant_boar_q55879 : public AuraScript
+{
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo(
+ {
+ SPELL_RIDING_GIANT_BOAR_305068,
+ SPELL_RIDING_GIANT_BOAR_321670,
+ SPELL_UPDATE_PHASE_SHIFT
+ });
+ }
+
+ void OnAuraRemoveHandler(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ Player* player = Object::ToPlayer(GetCaster());
+ if (!player)
+ return;
+
+ player->RemoveAura(SPELL_RIDING_GIANT_BOAR_305068);
+ player->RemoveAura(SPELL_RIDING_GIANT_BOAR_321670);
+ player->CastSpell(player, SPELL_UPDATE_PHASE_SHIFT);
+ }
+
+ void Register() override
+ {
+ AfterEffectRemove += AuraEffectRemoveFn(spell_riding_giant_boar_q55879::OnAuraRemoveHandler, EFFECT_0, SPELL_AURA_CONTROL_VEHICLE, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
+enum SpellKnockbackHint
+{
+ ACTOR_ALLIANCE_CAPTAIN = 71372
+};
+
+// 305742 - Resizer Hit
+class spell_knockback_hint_q56034 : public SpellScript
+{
+ void HandleLaunch(SpellEffIndex effIndex)
+ {
+ PreventHitDefaultEffect(effIndex);
+ }
+
+ void HandleEffect(SpellEffIndex effIndex)
+ {
+ Player* player = Object::ToPlayer(GetCaster());
+ if (!player)
+ return;
+
+ Creature* garrick = player->FindNearestCreatureWithOptions(10.0f, { .CreatureId = NPC_ALLIANCE_CAPTAIN, .OwnerGuid = player->GetGUID() });
+ if (!garrick)
+ return;
+
+ Conversation* conversation = Conversation::CreateConversation(GetSpellInfo()->GetEffect(effIndex).MiscValue, player, *player, player->GetGUID(), nullptr, false);
+ if (!conversation)
+ return;
+
+ conversation->AddActor(ACTOR_ALLIANCE_CAPTAIN, 0, garrick->GetGUID());
+ conversation->Start();
+ }
+
+ void Register() override
+ {
+ OnEffectLaunchTarget += SpellEffectFn(spell_knockback_hint_q56034::HandleLaunch, EFFECT_0, SPELL_EFFECT_CREATE_PRIVATE_CONVERSATION);
+ OnEffectHitTarget += SpellEffectFn(spell_knockback_hint_q56034::HandleEffect, EFFECT_0, SPELL_EFFECT_CREATE_PRIVATE_CONVERSATION);
+ }
+};
+
+enum CaptainGarrickGiantBoar
+{
+ ACTION_EXIT_BOAR = 1,
+
+ ACTOR_HENRY_GARRICK_PRISONER = 78493,
+
+ CONVERSATION_CAPTAIN_GARRICK_RIDE_BOAR_QUEST_ACCEPT = 12090,
+
+ CONVERSATION_CAPTAIN_GARRICK_RIDE_BOAR_QUEST_HENRY = 15615,
+ CONVERSATION_CAPTAIN_GARRICK_RIDE_BOAR_QUEST_EXIT = 12092,
+
+ EVENT_CAPTAIN_GARRICK_RIDE_BOAR = 1,
+ EVENT_CAPTAIN_GARRICK_RIDE_BOAR_CHECK_OWNER = 2,
+ EVENT_CAPTAIN_GARRICK_RIDE_BOAR_TALK_TO_HENRY = 3,
+ EVENT_CAPTAIN_GARRICK_RIDE_BOAR_HENRY_DESPAWN = 4,
+ EVENT_CAPTAIN_GARRICK_RIDE_BOAR_EXIT_BOAR_CONVERSATION = 5,
+
+ NPC_GIANT_BOAR = 156267,
+
+ PHASE_SEE_TORGOK = 14663,
+
+ POINT_HENRY_POSITION = 0,
+
+ SPELL_PING_GARRICK_TO_RIDE_BOAR = 316984,
+ SPELL_RIDE_VEHICLE_CAPTIAN_BOAR = 63315
+};
+
+Position MoveToPrisonerPosition = { 232.16145f, -2292.5347f, 80.91198f };
+
+// 174955 - Captain Garrick
+struct npc_captain_garrick_q55879 : public ScriptedAI
+{
+ npc_captain_garrick_q55879(Creature* creature) : ScriptedAI(creature) { }
+
+ void JustAppeared() override
+ {
+ Player* player = Object::ToPlayer(me->GetOwner());
+ if (!player)
+ return;
+
+ Conversation* conversation = Conversation::CreateConversation(CONVERSATION_CAPTAIN_GARRICK_RIDE_BOAR_QUEST_ACCEPT, player, *player, player->GetGUID(), nullptr, false);
+ if (!conversation)
+ return;
+
+ conversation->AddActor(0, 0, player->GetGUID());
+ conversation->AddActor(ACTOR_ALLIANCE_CAPTAIN, 1, me->GetGUID());
+ conversation->Start();
+
+ me->SetReactState(REACT_PASSIVE);
+ me->GetMotionMaster()->MoveFollow(player, 0.0f, float(M_PI / 4.0f));
+ }
+
+ void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
+ {
+ if (me->GetHealth() <= damage)
+ damage = me->GetHealth() - 1;
+ }
+
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
+ {
+ switch (spellInfo->Id)
+ {
+ case SPELL_PING_GARRICK_TO_RIDE_BOAR:
+ {
+ Unit* owner = me->GetOwner();
+ if (!owner)
+ break;
+
+ PhasingHandler::InheritPhaseShift(me, owner);
+ PhasingHandler::ResetPhaseShift(me);
+
+ _events.ScheduleEvent(EVENT_CAPTAIN_GARRICK_RIDE_BOAR, 2s);
+ break;
+ }
+ case SPELL_ENHANCED_BOAR_PING_VEHICLE:
+ {
+ PhasingHandler::AddPhase(me, PHASE_SEE_TORGOK, true);
+ _events.ScheduleEvent(EVENT_CAPTAIN_GARRICK_RIDE_BOAR_EXIT_BOAR_CONVERSATION, 500ms);
+ break;
+ }
+ case SPELL_PING_GARRICK_TORGOK:
+ {
+ Player* player = Object::ToPlayer(me->GetOwner());
+ if (!player)
+ break;
+
+ Creature* henry = FindCreatureIgnorePhase(me, "henry_garrick_ogre_ruins_prisoner");
+ if (!henry)
+ break;
+
+ Creature* henryPersonal = henry->SummonPersonalClone(henry->GetPosition(), TEMPSUMMON_MANUAL_DESPAWN, 0s, 0, 0, player);
+ if (!henryPersonal)
+ break;
+
+ me->SetReactState(REACT_AGGRESSIVE);
+ _henryGUID = henryPersonal->GetGUID();
+ _events.ScheduleEvent(EVENT_CAPTAIN_GARRICK_RIDE_BOAR_TALK_TO_HENRY, 1s);
+ break;
+ }
+ default:
+ break;
+ }
+ }
+
+ void UpdateAI(uint32 diff) override
+ {
+ _events.Update(diff);
+
+ while (uint32 eventId = _events.ExecuteEvent())
+ {
+ switch (eventId)
+ {
+ case EVENT_CAPTAIN_GARRICK_RIDE_BOAR:
+ {
+ if (Unit* owner = me->GetOwner())
+ {
+ Creature* boar = owner->FindNearestCreatureWithOptions(10.0f, { .CreatureId = NPC_GIANT_BOAR, .OwnerGuid = owner->GetGUID() });
+ if (!boar)
+ return;
+
+ boar->SetTemplateRooted(false);
+ me->CastSpell(boar, SPELL_RIDE_VEHICLE_CAPTIAN_BOAR);
+ }
+ break;
+ }
+ case EVENT_CAPTAIN_GARRICK_RIDE_BOAR_TALK_TO_HENRY:
+ {
+ Player* player = Object::ToPlayer(me->GetOwner());
+ if (!player)
+ break;
+
+ Conversation* conversation = Conversation::CreateConversation(CONVERSATION_CAPTAIN_GARRICK_RIDE_BOAR_QUEST_HENRY, player, *player, player->GetGUID(), nullptr, false);
+ if (!conversation)
+ break;
+
+ conversation->AddActor(ACTOR_ALLIANCE_CAPTAIN, 0, me->GetGUID());
+ conversation->AddActor(ACTOR_HENRY_GARRICK_PRISONER, 1, _henryGUID);
+ conversation->Start();
+
+ me->GetMotionMaster()->Clear();
+ me->GetMotionMaster()->MovePoint(POINT_HENRY_POSITION, MoveToPrisonerPosition);
+ _events.ScheduleEvent(EVENT_CAPTAIN_GARRICK_RIDE_BOAR_HENRY_DESPAWN, 18s);
+ break;
+ }
+ case EVENT_CAPTAIN_GARRICK_RIDE_BOAR_HENRY_DESPAWN:
+ {
+ me->DespawnOrUnsummon();
+ if (Creature* henry = ObjectAccessor::GetCreature(*me, _henryGUID))
+ henry->DespawnOrUnsummon();
+
+ Player* player = Object::ToPlayer(me->GetOwner());
+ if (!player)
+ break;
+ player->CastSpell(player, SPELL_UPDATE_PHASE_SHIFT);
+ break;
+ }
+ case EVENT_CAPTAIN_GARRICK_RIDE_BOAR_EXIT_BOAR_CONVERSATION:
+ {
+ Player* player = Object::ToPlayer(me->GetOwner());
+ if (!player)
+ break;
+
+ Conversation* conversation = Conversation::CreateConversation(CONVERSATION_CAPTAIN_GARRICK_RIDE_BOAR_QUEST_EXIT, player, *player, player->GetGUID(), nullptr, false);
+ if (!conversation)
+ break;
+
+ conversation->AddActor(0, 0, player->GetGUID());
+ conversation->AddActor(ACTOR_ALLIANCE_CAPTAIN, 1, me->GetGUID());
+ conversation->Start();
+ break;
+ }
+ default:
+ break;
+ }
+ }
+
+ UpdateVictim();
+ }
+private:
+ EventMap _events;
+ ObjectGuid _henryGUID;
+};
+
+enum GiantBoar
+{
+ EVENT_GIANT_BOAR_SIZE_ONE = 1,
+ EVENT_GIANT_BOAR_SIZE_TWO = 2,
+ EVENT_GIANT_BOAR_SIZE_THREE = 3,
+ EVENT_GIANT_BOAR_SIZE_FOUR = 4,
+ EVENT_GIANT_BOAR_EJECT_PASSENGERS = 5,
+ EVENT_GIANT_BOAR_UNROOT = 6,
+
+ SOUND_ENLARGE_BOAR = 157516,
+ SOUND_SHRINK_BOAR = 157517,
+
+ VEHICLE_BOAR_SEAT_ONE = 1
+};
+
+// 156267 - Giant Boar
+struct npc_giant_boar_vehicle_q55879 : public VehicleAI
+{
+ npc_giant_boar_vehicle_q55879(Creature* creature) : VehicleAI(creature), _endOfScene(false)
+ {
+ me->SetOrientation(0.844224f);
+ }
+
+ void JustAppeared() override
+ {
+ me->SetSpeed(MOVE_RUN, 14.0f);
+ }
+
+ void PassengerBoarded(Unit* passenger, int8 /*seatId*/, bool apply) override
+ {
+ if (apply && passenger->IsPlayer())
+ {
+ me->SetTemplateRooted(true);
+ passenger->SetMovedUnit(me);
+ passenger->CastSpell(passenger, SPELL_PING_GARRICK_TO_RIDE_BOAR); // Ping Garrick to ride Boar (DNT)
+ passenger->CastSpell(passenger, SPELL_UPDATE_PHASE_SHIFT);
+ }
+ else if (apply && passenger->IsCreature())
+ {
+ passenger->ChangeSeat(VEHICLE_BOAR_SEAT_ONE);
+ }
+ }
+
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
+ {
+ if (spellInfo->Id == SPELL_ENHANCED_BOAR_PING_VEHICLE)
+ {
+ me->HandleEmoteCommand(EMOTE_ONESHOT_CUSTOM_SPELL_01);
+ me->SetTemplateRooted(true);
+ me->CastSpell(me, SPELL_ENHANCED_BOAR_CHARGE);
+ _endOfScene = true;
+ _events.ScheduleEvent(EVENT_GIANT_BOAR_SIZE_ONE, 4s);
+
+ if (Unit* owner = me->GetOwner())
+ owner->CastSpell(owner, SPELL_UPDATE_PHASE_SHIFT);
+ }
+ }
+
+ void UpdateAI(uint32 diff) override
+ {
+ if (!_endOfScene)
+ return;
+
+ _events.Update(diff);
+
+ while (uint32 eventId = _events.ExecuteEvent())
+ {
+ switch (eventId)
+ {
+ case EVENT_GIANT_BOAR_SIZE_ONE:
+ me->PlayDirectSound(SOUND_ENLARGE_BOAR);
+ me->SetObjectScale(1.2f);
+ _events.ScheduleEvent(EVENT_GIANT_BOAR_SIZE_TWO, 1000ms);
+ break;
+ case EVENT_GIANT_BOAR_SIZE_TWO:
+ me->PlayDirectSound(SOUND_SHRINK_BOAR);
+ me->SetObjectScale(0.7f);
+ _events.ScheduleEvent(EVENT_GIANT_BOAR_SIZE_THREE, 1000ms);
+ break;
+ case EVENT_GIANT_BOAR_SIZE_THREE:
+ me->PlayDirectSound(SOUND_ENLARGE_BOAR);
+ me->SetObjectScale(1.2f);
+ _events.ScheduleEvent(EVENT_GIANT_BOAR_SIZE_FOUR, 500ms);
+ break;
+ case EVENT_GIANT_BOAR_SIZE_FOUR:
+ me->PlayDirectSound(SOUND_SHRINK_BOAR);
+ me->SetObjectScale(0.1f);
+ _events.ScheduleEvent(EVENT_GIANT_BOAR_EJECT_PASSENGERS, 500ms);
+ break;
+ case EVENT_GIANT_BOAR_EJECT_PASSENGERS:
+ me->RemoveAllAuras();
+ _events.ScheduleEvent(EVENT_GIANT_BOAR_UNROOT, 500ms);
+ break;
+ case EVENT_GIANT_BOAR_UNROOT:
+ me->SetTemplateRooted(false);
+ break;
+ default:
+ break;
+ }
+ }
+ }
+private:
+ EventMap _events;
+ bool _endOfScene;
+};
+
+enum TorgokData
+{
+ EVENT_CAST_SPIRIT_BOLT = 1,
+ EVENT_CAST_SOUL_GRASP = 2,
+
+ ITEM_TORGOKS_REAGENT_POUCH = 176398,
+
+ QUEST_TORGOKS_REAGENT_POUCH_DROPPED = 59610,
+
+ SPELL_SPIRIT_BOLT = 319294,
+ SPELL_SOUL_GRASP = 319298
+};
+
+// 162817 - Torgok
+struct npc_torgok_q55879 : public ScriptedAI
+{
+ npc_torgok_q55879(Creature* creature) : ScriptedAI(creature) { }
+
+ void Reset() override
+ {
+ _events.Reset();
+ }
+
+ void JustEngagedWith(Unit* who) override
+ {
+ Talk(SAY_AGGRO, who);
+
+ _events.ScheduleEvent(EVENT_CAST_SPIRIT_BOLT, 4s);
+ _events.ScheduleEvent(EVENT_CAST_SOUL_GRASP, 14s);
+ }
+
+ void JustDied(Unit* killer) override
+ {
+ Talk(SAY_DEATH, killer);
+
+ for (auto const& [playerGuid, loot] : me->m_personalLoot)
+ {
+ if (Player* player = ObjectAccessor::GetPlayer(*me, playerGuid))
+ {
+ for (LootItem const& lootItem : loot->items)
+ {
+ if (lootItem.itemid == ITEM_TORGOKS_REAGENT_POUCH)
+ {
+ player->SetRewardedQuest(QUEST_TORGOKS_REAGENT_POUCH_DROPPED);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ void UpdateAI(uint32 diff) override
+ {
+ if (!UpdateVictim())
+ return;
+
+ _events.Update(diff);
+
+ while (uint32 eventId = _events.ExecuteEvent())
+ {
+ switch (eventId)
+ {
+ case EVENT_CAST_SPIRIT_BOLT:
+ DoCastVictim(SPELL_SPIRIT_BOLT);
+ _events.ScheduleEvent(EVENT_CAST_SPIRIT_BOLT, 6s);
+ break;
+ case EVENT_CAST_SOUL_GRASP:
+ DoCastAOE(SPELL_SOUL_GRASP);
+ _events.ScheduleEvent(EVENT_CAST_SOUL_GRASP, 14s);
+ break;
+ default:
+ break;
+ }
+ }
+ }
+private:
+ EventMap _events;
+};
+
+enum PrisonerQuest55879
+{
+ PATH_PRISONER_TO_GROUND = 80000230
+};
+
+// 156799 - Henry Garrick
+// 167126 - Shuja Grimaxe
+struct npc_prisoner_q55879_private : public ScriptedAI
+{
+ npc_prisoner_q55879_private(Creature* creature) : ScriptedAI(creature) { }
+
+ void InitializeAI() override
+ {
+ me->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
+ }
+
+ void JustAppeared() override
+ {
+ me->RemoveAllAuras();
+ me->GetMotionMaster()->MovePath(PATH_PRISONER_TO_GROUND, false);
+ }
+};
+
+CreatureAI* PrisonerQ55879Selector(Creature* creature)
+{
+ if (creature->IsPrivateObject())
+ return new npc_prisoner_q55879_private(creature);
+ else
+ return new NullCreatureAI(creature);
+};
+
+enum TheReDeather
+{
+ CONVERSATION_ACCEPT_RE_DEATHER_QUEST = 14525,
+ CONVERSATION_RE_DEATHER_EXPLODE = 14526,
+
+ NPC_HORDE_WARRIOR = 167146,
+ NPC_SHUJA_GRIMAXE_PRISONER = 167126,
+
+ QUEST_RE_DEATHER = 59942,
+
+ OBJECTIVE_RE_DEATHER_CADAVERS_KILLED = 397279,
+
+ RE_DEATHER_CADAVERS_KILLED_MAX = 8,
+
+ SPELL_REUNION_DNT_HORDE = 326678,
+ SPELL_RE_DEATHER_TEMP_OBJECTIVE_CHECK = 325394,
+ SPELL_RE_DEATHER_ROUGH_LANDING_DNT = 325401,
+ SPELL_RE_DEATHER_SUMMON_GRIMAXE = 325429
+};
+
+// 59942 - The Re-Deather
+class quest_the_re_deather : public QuestScript
+{
+public:
+ quest_the_re_deather() : QuestScript("quest_the_re_deather") { }
+
+ void OnQuestStatusChange(Player* player, Quest const* /*quest*/, QuestStatus /*oldStatus*/, QuestStatus newStatus) override
+ {
+ switch (newStatus)
+ {
+ case QUEST_STATUS_INCOMPLETE:
+ player->CastSpell(player, SPELL_UPDATE_PHASE_SHIFT);
+ Conversation::CreateConversation(CONVERSATION_ACCEPT_RE_DEATHER_QUEST, player, *player, player->GetGUID(), nullptr);
+ break;
+ case QUEST_STATUS_COMPLETE:
+ player->CombatStop();
+ player->CastSpell(player, SPELL_PING_GARRICK_TORGOK);
+ break;
+ case QUEST_STATUS_REWARDED:
+ player->CastSpell(player, SPELL_REUNION_DNT_HORDE);
+ player->CastSpell(player, SPELL_RITUAL_SCENE_OGRE_CITADEL_DNT);
+ player->CastSpell(player, SPELL_RITUAL_SCENE_HRUN_BEAM_DNT);
+ player->CastSpell(player, SPELL_RITUAL_SCENE_HARPY_BEAM_DNT);
+ player->CastSpell(player, SPELL_RITUAL_SCENE_MAIN_BEAM_DNT);
+ player->CastSpell(player, SPELL_UPDATE_PHASE_SHIFT);
+ break;
+ case QUEST_STATUS_NONE:
+ {
+ player->CastSpell(player, SPELL_RITUAL_SCENE_OGRE_CITADEL_DNT);
+ player->RemoveAura(SPELL_RE_DEATHER_SUMMON_GRIMAXE);
+ player->RemoveAura(SPELL_RITUAL_SCENE_HRUN_BEAM_DNT);
+ player->RemoveAura(SPELL_RITUAL_SCENE_HARPY_BEAM_DNT);
+ player->RemoveAura(SPELL_RITUAL_SCENE_MAIN_BEAM_DNT);
+ player->RemoveAura(SPELL_RE_DEATHER_TEMP_OBJECTIVE_CHECK);
+ player->CastSpell(player, SPELL_UPDATE_PHASE_SHIFT);
+ player->NearTeleportTo(ReDeatherAbandonTeleportPos);
+ break;
+ }
+ default:
+ break;
+ }
+ }
+};
+
+// 2489
+class scene_darkmaul_plains_skeleton_army_horde : public SceneScript
+{
+public:
+ scene_darkmaul_plains_skeleton_army_horde() : SceneScript("scene_darkmaul_plains_skeleton_army_horde") { }
+
+ void OnSceneTriggerEvent(Player* player, uint32 /*sceneInstanceID*/, SceneTemplate const* /*sceneTemplate*/, std::string const& triggerName) override
+ {
+ if (triggerName == "Big Kill Credit")
+ {
+ player->CastSpell(player, SPELL_ENHANCED_BOAR_KILL_CREDIT, true);
+
+ if (player->GetQuestObjectiveData(QUEST_RE_DEATHER, OBJECTIVE_RE_DEATHER_CADAVERS_KILLED) == RE_DEATHER_CADAVERS_KILLED_MAX)
+ {
+ player->CastSpell(player, SPELL_ENHANCED_BOAR_PING_VEHICLE); // Ping Vehicle
+ player->CastSpell(player, SPELL_RE_DEATHER_TEMP_OBJECTIVE_CHECK); // Temp Objective Check
+ Conversation::CreateConversation(CONVERSATION_RE_DEATHER_EXPLODE, player, *player, player->GetGUID(), nullptr);
+ }
+ }
+ else if (triggerName == "Conversation")
+ {
+ player->CastSpell(player, SPELL_ENHANCED_BOAR_CHARGE_CONVO, true); // Does nothing but it's blizzlike
+ }
+ else if (triggerName == "Teleport")
+ {
+ player->CastSpell(player, SPELL_RE_DEATHER_ROUGH_LANDING_DNT);
+ }
+ }
+
+ void OnSceneComplete(Player* player, uint32 /*sceneInstanceID*/, SceneTemplate const* /*sceneTemplate*/) override
+ {
+ player->CastSpell(player, SPELL_UPDATE_PHASE_SHIFT);
+ }
+};
+
+enum GrimaxeReDeather
+{
+ ACTOR_SHUJA_GRIMAXE_PRISONER = 76004,
+ ACTOR_WARLORD_GRIMAXE_Q59942 = 76357,
+ ACTOR_SHUJA_GRIMAXE_FREED = 78501,
+
+ CONVERSATION_WARLORD_GRIMAXE_SPAWN_Q59942 = 14527,
+ CONVERSATION_WARLORD_GRIMAXE_QUEST_COMPLETE_Q59942 = 15618
+};
+
+// 167146 - Warlord Grimaxe
+struct npc_warlord_grimaxe_q59942 : public ScriptedAI
+{
+ npc_warlord_grimaxe_q59942(Creature* creature) : ScriptedAI(creature)
+ {
+ me->SetUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED);
+ }
+
+ void JustAppeared() override
+ {
+ Player* player = Object::ToPlayer(me->GetOwner());
+ if (!player)
+ return;
+
+ Creature* shuja = FindCreatureIgnorePhase(me, "shuja_grimaxe_ogre_ruins_prisoner");
+ if (!shuja)
+ return;
+
+ Conversation* conversation = Conversation::CreateConversation(CONVERSATION_WARLORD_GRIMAXE_SPAWN_Q59942, player, *player, player->GetGUID(), nullptr, false);
+ if (!conversation)
+ return;
+
+ conversation->AddActor(ACTOR_SHUJA_GRIMAXE_PRISONER, 0, shuja->GetGUID());
+ conversation->AddActor(ACTOR_WARLORD_GRIMAXE_Q59942, 1, me->GetGUID());
+ conversation->Start();
+
+ me->GetMotionMaster()->MoveFollow(player, 0.0f, float(M_PI / 4.0f));
+ }
+
+ void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
+ {
+ if (me->GetHealth() <= damage)
+ damage = me->GetHealth() - 1;
+ }
+
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
+ {
+ switch (spellInfo->Id)
+ {
+ case SPELL_PING_GARRICK_TORGOK:
+ {
+ Player* player = Object::ToPlayer(me->GetOwner());
+ if (!player)
+ break;
+
+ Creature* shuja = FindCreatureIgnorePhase(me, "shuja_grimaxe_ogre_ruins_prisoner");
+ if (!shuja)
+ break;
+
+ Creature* shujaPersonal = shuja->SummonPersonalClone(shuja->GetPosition(), TEMPSUMMON_MANUAL_DESPAWN, 0s, 0, 0, player);
+ if (!shujaPersonal)
+ break;
+
+ me->SetReactState(REACT_AGGRESSIVE);
+ _shujaGUID = shujaPersonal->GetGUID();
+ _events.ScheduleEvent(EVENT_CAPTAIN_GARRICK_RIDE_BOAR_TALK_TO_HENRY, 1s);
+ break;
+ }
+ default:
+ break;
+ }
+ }
+
+ void OnDespawn() override
+ {
+ if (Creature* shuja = ObjectAccessor::GetCreature(*me, _shujaGUID))
+ shuja->DespawnOrUnsummon();
+ }
+
+ void UpdateAI(uint32 diff) override
+ {
+ _events.Update(diff);
+
+ while (uint32 eventId = _events.ExecuteEvent())
+ {
+ switch (eventId)
+ {
+ case EVENT_CAPTAIN_GARRICK_RIDE_BOAR_TALK_TO_HENRY:
+ {
+ Player* player = Object::ToPlayer(me->GetOwner());
+ if (!player)
+ break;
+
+ Conversation* conversation = Conversation::CreateConversation(CONVERSATION_WARLORD_GRIMAXE_QUEST_COMPLETE_Q59942, player, *player, player->GetGUID(), nullptr, false);
+ if (!conversation)
+ break;
+
+ conversation->AddActor(ACTOR_WARLORD_GRIMAXE_Q59942, 0, me->GetGUID());
+ conversation->AddActor(ACTOR_SHUJA_GRIMAXE_FREED, 1, _shujaGUID);
+ conversation->Start();
+
+ me->GetMotionMaster()->Clear();
+ me->GetMotionMaster()->MovePoint(POINT_HENRY_POSITION, MoveToPrisonerPosition);
+ _events.ScheduleEvent(EVENT_CAPTAIN_GARRICK_RIDE_BOAR_HENRY_DESPAWN, 22s);
+ break;
+ }
+ case EVENT_CAPTAIN_GARRICK_RIDE_BOAR_HENRY_DESPAWN:
+ {
+ me->DespawnOrUnsummon();
+ if (Creature* shuja = ObjectAccessor::GetCreature(*me, _shujaGUID))
+ shuja->DespawnOrUnsummon();
+
+ Player* player = Object::ToPlayer(me->GetOwner());
+ if (!player)
+ break;
+ player->CastSpell(player, SPELL_UPDATE_PHASE_SHIFT);
+ break;
+ }
+ default:
+ break;
+ }
+ }
+
+ UpdateVictim();
+ }
+private:
+ EventMap _events;
+ ObjectGuid _shujaGUID;
+};
+
+// ***************************************************************
+// * Scripting in this section occurs between Ogre Ruins and Pit *
+// ***************************************************************
+
+enum WestwardBound
+{
+ NPC_BJORN_STOUTHANDS_PIT_ONE = 156891,
+ NPC_ALARIA_PIT_ONE = 156803,
+ NPC_LANAJORDAN_PIT_ONE = 167225,
+ NPC_WONSA_PIT_ONE = 167226
+};
+
+static constexpr Position BjornWestwardBoundRuinsPos = { 192.181f, -2311.44f, 80.6975f, 3.368485450744628906f };
+static constexpr Position AlariaWestwardBoundRuinsPos = { 190.953f, -2308.32f, 80.6586f, 2.984513044357299804f };
+static constexpr Position LanaWestwardBoundRuinsPos = { 160.486f, -2307.31f, 84.053f, 2.932153224945068359f };
+static constexpr Position WonsaWestwardBoundRuinsPos = { 160.431f, -2310.11f, 84.4598f, 3.03687286376953125f };
+
+// 55965 - Quest Westward Bound "Alliance"
+// 59948 - Quest Westward Bound "Horde"
+class quest_westward_bound : public QuestScript
+{
+public:
+ quest_westward_bound(char const* script) : QuestScript(script) { }
+
+ void HandleQuestStatusChange(Player* player, QuestStatus newStatus, std::string_view creatureStringOne, std::string_view creatureStringTwo, uint32 questEnderEntry, uint32 questEnderCompanionEntry, Position questGiverPos, Position companionPos)
+ {
+ switch (newStatus)
+ {
+ case QUEST_STATUS_INCOMPLETE:
+ {
+ Creature* questEnder = FindCreatureIgnorePhase(player, creatureStringOne, 125.0f);
+ if (!questEnder)
+ return;
+
+ Creature* questEnderCompanion = FindCreatureIgnorePhase(player, creatureStringTwo, 125.0f);
+ if (!questEnderCompanion)
+ return;
+
+ questEnder->SummonPersonalClone(questGiverPos, TEMPSUMMON_MANUAL_DESPAWN, 0s, 0, 0, player);
+ questEnderCompanion->SummonPersonalClone(companionPos, TEMPSUMMON_MANUAL_DESPAWN, 0s, 0, 0, player);
+
+ player->CastSpell(player, SPELL_UPDATE_PHASE_SHIFT);
+ break;
+ }
+ case QUEST_STATUS_NONE:
+ {
+ player->CastSpell(player, SPELL_UPDATE_PHASE_SHIFT);
+
+ if (Creature* questGiver = player->FindNearestCreatureWithOptions(100.0f, { .CreatureId = questEnderEntry, .IgnorePhases = true, .PrivateObjectOwnerGuid = player->GetGUID() }))
+ questGiver->DespawnOrUnsummon();
+
+ if (Creature* companion = player->FindNearestCreatureWithOptions(100.0f, { .CreatureId = questEnderCompanionEntry, .IgnorePhases = true, .PrivateObjectOwnerGuid = player->GetGUID() }))
+ companion->DespawnOrUnsummon();
+
+ break;
+ }
+ default:
+ break;
+ }
+ }
+};
+
+// 55965 - Quest Westward Bound "Alliance"
+class quest_westward_bound_alliance : public quest_westward_bound
+{
+public:
+ quest_westward_bound_alliance() : quest_westward_bound("quest_westward_bound_alliance") { }
+
+ void OnQuestStatusChange(Player* player, Quest const* /*quest*/, QuestStatus /*oldStatus*/, QuestStatus newStatus) override
+ {
+ HandleQuestStatusChange(player, newStatus, "bjorn_stouthands_pit_pre_quest", "alaria_pit_pre_quest", NPC_BJORN_STOUTHANDS_PIT_ONE, NPC_ALARIA_PIT_ONE, BjornWestwardBoundRuinsPos, AlariaWestwardBoundRuinsPos);
+ }
+};
+
+// 59948 - Quest Westward Bound "Horde"
+class quest_westward_bound_horde : public quest_westward_bound
+{
+public:
+ quest_westward_bound_horde() : quest_westward_bound("quest_westward_bound_horde") { }
+
+ void OnQuestStatusChange(Player* player, Quest const* /*quest*/, QuestStatus /*oldStatus*/, QuestStatus newStatus) override
+ {
+ HandleQuestStatusChange(player, newStatus, "lana_joran_pit_pre_quest", "wonsa_pit_pre_quest", NPC_LANAJORDAN_PIT_ONE, NPC_WONSA_PIT_ONE, LanaWestwardBoundRuinsPos, WonsaWestwardBoundRuinsPos);
+ }
+};
+
+enum BjornRunToPit
+{
+ EVENT_BJORN_RUN_TO_PIT = 1,
+
+ PATH_BJORN_RUN_TO_PIT = 10518900,
+
+ SAY_BJORN_RUN_TO_PIT = 0,
+ SAY_BJORN_REACHED_PIT = 1
+};
+
+// 156891 - Bjorn Stouthands
+struct npc_bjorn_stouthands_q55965_private : public ScriptedAI
+{
+ npc_bjorn_stouthands_q55965_private(Creature* creature) : ScriptedAI(creature) { }
+
+ void InitializeAI() override
+ {
+ me->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
+ }
+
+ void JustAppeared() override
+ {
+ _events.ScheduleEvent(EVENT_BJORN_RUN_TO_PIT, 1s);
+ }
+
+ void WaypointPathEnded(uint32 /*nodeId*/, uint32 /*pathId*/) override
+ {
+ Talk(SAY_BJORN_REACHED_PIT);
+ me->DespawnOrUnsummon(4s);
+ }
+
+ void UpdateAI(uint32 diff) override
+ {
+ _events.Update(diff);
+
+ while (uint32 eventId = _events.ExecuteEvent())
+ {
+ switch (eventId)
+ {
+ case EVENT_BJORN_RUN_TO_PIT:
+ Talk(SAY_BJORN_RUN_TO_PIT);
+ me->GetMotionMaster()->MovePath(PATH_BJORN_RUN_TO_PIT, false);
+ break;
+ default:
+ break;
+ }
+ }
+ }
+private:
+ EventMap _events;
+};
+
+CreatureAI* BjornRuinsSelector(Creature* creature)
+{
+ if (creature->IsPrivateObject())
+ return new npc_bjorn_stouthands_q55965_private(creature);
+ else
+ return new NullCreatureAI(creature);
+};
+
+enum LanaRunToPit
+{
+ EVENT_LANA_SAY_AT_RUINS = 1,
+ EVENT_LANA_RUN_TO_PIT = 2,
+
+ PATH_LANA_RUN_TO_PIT = 80000570,
+
+ SAY_LANA_RUN_TO_PIT = 0,
+ SAY_LANA_REACHED_PIT = 1
+};
+
+// 167225 - Lana Jordan
+struct npc_lana_jordan_q59948_private : public ScriptedAI
+{
+ npc_lana_jordan_q59948_private(Creature* creature) : ScriptedAI(creature) { }
+
+ void InitializeAI() override
+ {
+ me->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
+ }
+
+ void JustAppeared() override
+ {
+ _events.ScheduleEvent(EVENT_LANA_SAY_AT_RUINS, 1s);
+ }
+
+ void WaypointPathEnded(uint32 /*nodeId*/, uint32 /*pathId*/) override
+ {
+ Talk(SAY_LANA_REACHED_PIT);
+ me->DespawnOrUnsummon(7s);
+ }
+
+ void UpdateAI(uint32 diff) override
+ {
+ _events.Update(diff);
+
+ while (uint32 eventId = _events.ExecuteEvent())
+ {
+ switch (eventId)
+ {
+ case EVENT_LANA_SAY_AT_RUINS:
+ Talk(SAY_BJORN_RUN_TO_PIT);
+ _events.ScheduleEvent(EVENT_LANA_RUN_TO_PIT, 5s);
+ break;
+ case EVENT_LANA_RUN_TO_PIT:
+ me->GetMotionMaster()->MovePath(PATH_LANA_RUN_TO_PIT, false);
+ break;
+ default:
+ break;
+ }
+ }
+ }
+private:
+ EventMap _events;
+};
+
+CreatureAI* LanaRuinsSelector(Creature* creature)
+{
+ if (creature->IsPrivateObject())
+ return new npc_lana_jordan_q59948_private(creature);
+ else
+ return new NullCreatureAI(creature);
+};
+
+enum CompanionRunToPit
+{
+ EVENT_COMPANION_RUN_TO_PIT = 1,
+
+ PATH_ALARIA_RUN_TO_PIT = 10518890,
+ PATH_WONSA_RUN_TO_PIT = 80000580
+};
+
+// 156891 - Alaria
+// 167226 - Won'sa
+template<uint32 PitPathId>
+struct npc_companion_q55965_q59948_private : public ScriptedAI
+{
+ npc_companion_q55965_q59948_private(Creature* creature) : ScriptedAI(creature) { }
+
+ void JustAppeared() override
+ {
+ _events.ScheduleEvent(EVENT_COMPANION_RUN_TO_PIT, 1s);
+ }
+
+ void WaypointPathEnded(uint32 /*nodeId*/, uint32 /*pathId*/) override
+ {
+ me->DespawnOrUnsummon(1s);
+ }
+
+ void UpdateAI(uint32 diff) override
+ {
+ _events.Update(diff);
+
+ while (uint32 eventId = _events.ExecuteEvent())
+ {
+ switch (eventId)
+ {
+ case EVENT_COMPANION_RUN_TO_PIT:
+ me->GetMotionMaster()->MovePath(PitPathId, false);
+ break;
+ default:
+ break;
+ }
+ }
+ }
+private:
+ EventMap _events;
+};
+
+CreatureAI* AlariaRuinsSelector(Creature* creature)
+{
+ if (creature->IsPrivateObject())
+ return new npc_companion_q55965_q59948_private<PATH_ALARIA_RUN_TO_PIT>(creature);
+ else
+ return new NullCreatureAI(creature);
+};
+
+CreatureAI* WansaRuinsSelector(Creature* creature)
+{
+ if (creature->IsPrivateObject())
+ return new npc_companion_q55965_q59948_private<PATH_WONSA_RUN_TO_PIT>(creature);
+ else
+ return new NullCreatureAI(creature);
+};
+
void AddSC_zone_exiles_reach()
{
// Ship
@@ -6028,4 +7164,26 @@ void AddSC_zone_exiles_reach()
RegisterSpellScript(spell_resizer_hit_three_q56034);
RegisterSpellScript(spell_re_sizing_q59941);
RegisterSpellScript(spell_re_sizing_aura_q59941);
+ RegisterSpellScript(spell_re_sizer_slaughter);
+ // Ride Boar
+ new quest_ride_of_the_scientifically_enhanced_boar();
+ new scene_darkmaul_plains_skeleton_army_alliance();
+ RegisterSpellScript(spell_summon_darkmaul_plains_questgivers_q55879);
+ RegisterSpellScript(spell_riding_giant_boar_q55879);
+ RegisterSpellScript(spell_knockback_hint_q56034);
+ RegisterCreatureAI(npc_captain_garrick_q55879);
+ RegisterCreatureAI(npc_giant_boar_vehicle_q55879);
+ RegisterCreatureAI(npc_torgok_q55879);
+ new FactoryCreatureScript<CreatureAI, &PrisonerQ55879Selector>("npc_prisoner_q55879");
+ // The Re-Deather
+ new quest_the_re_deather();
+ new scene_darkmaul_plains_skeleton_army_horde();
+ RegisterCreatureAI(npc_warlord_grimaxe_q59942);
+ // Westward Bound
+ new quest_westward_bound_alliance();
+ new quest_westward_bound_horde();
+ new FactoryCreatureScript<CreatureAI, &BjornRuinsSelector>("npc_bjorn_stouthands_q55965");
+ new FactoryCreatureScript<CreatureAI, &LanaRuinsSelector>("npc_lana_jordan_q59948");
+ new FactoryCreatureScript<CreatureAI, &AlariaRuinsSelector>("npc_alaria_q55965");
+ new FactoryCreatureScript<CreatureAI, &WansaRuinsSelector>("npc_wonsa_q59948");
};