From 9e3c5d5137f1fae5be2324f355517c90d2d19cd4 Mon Sep 17 00:00:00 2001
From: Ovalord <1Don7H4v3@m41L.com>
Date: Sat, 13 Jan 2018 02:36:16 +0100
Subject: [PATCH] Scripts/Gilneas: fixed By the Skin of his Teeth quest *added
more sniffed database stuff and removed some duplicate spawns
---
.../4.3.4/custom_2018_01_13_00_world.sql | 380 ++++++++++++++++++
src/server/game/Spells/SpellMgr.cpp | 7 +
.../EasternKingdoms/Gilneas/chapter1.cpp | 223 ++++++++--
.../scripts/EasternKingdoms/Gilneas/gilneas.h | 310 ++++++++++++++
src/server/scripts/Spells/spell_generic.cpp | 88 ++++
5 files changed, 983 insertions(+), 25 deletions(-)
create mode 100644 sql/updates/world/4.3.4/custom_2018_01_13_00_world.sql
create mode 100644 src/server/scripts/EasternKingdoms/Gilneas/gilneas.h
diff --git a/sql/updates/world/4.3.4/custom_2018_01_13_00_world.sql b/sql/updates/world/4.3.4/custom_2018_01_13_00_world.sql
new file mode 100644
index 0000000000..9bea6347e7
--- /dev/null
+++ b/sql/updates/world/4.3.4/custom_2018_01_13_00_world.sql
@@ -0,0 +1,380 @@
+-- Clean up some duplicate spawns
+DELETE FROM `creature` WHERE `guid` IN (376609, 376563, 376561, 376532, 376521, 376575);
+DELETE FROM `creature_addon` WHERE `guid` IN (376609, 376397,376563, 376561, 376532, 376521, 376575);
+
+-- Creature Rampaging Worgen 35660 SAI
+SET @ENTRY := 35660;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`= @ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `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, 2, 0, 100, 1, 0, 30, 0, 0, 11, 8599, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "When health between 0% and 30% (check every 0 - 0 ms) - Self: Cast spell 8599 on Self // Rampaging Worgen - Between 0-30% Health - Cast 'Enrage' (No Repeat)"),
+(@ENTRY, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, " Linked - Self: Talk 0 // Rampaging Worgen - Between 0-30% Health - Say Line 0 (No Repeat)"),
+(@ENTRY, 0, 2, 0, 54, 0, 100, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "On just summoned - Self: Set react state to REACT_PASSIVE // "),
+(@ENTRY, 0, 3, 0, 1, 0, 100, 1, 60000, 60000, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "When out of combat and timer at the begining between 60000 and 60000 ms (and later repeats every 0 and 0 ms) - Self: Despawn instantly // "),
+(@ENTRY, 0, 4, 0, 1, 0, 100, 1, 3000, 3000, 0, 0, 29, 0, 0, 0, 0, 0, 0, 11, 35830, 15, 0, 0, 0, 0, 0, "When out of combat and timer at the begining between 3000 and 3000 ms (and later repeats every 0 and 0 ms) - Self: Follow Creature Gilneas Evacuation Facing Marker (First) (35830) in 15 yd by distance 0, angle 0 // "),
+(@ENTRY, 0, 5, 0, 1, 0, 100, 1, 4000, 4000, 0, 0, 8, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "When out of combat and timer at the begining between 4000 and 4000 ms (and later repeats every 0 and 0 ms) - Self: Set react state to REACT_AGGRESSIVE // ");
+
+UPDATE `gameobject_template_addon` SET `flags`= 4 WHERE `entry`= 195327;
+
+DELETE FROM `quest_poi` WHERE (`QuestID`=24676 AND `id`=3) OR (`QuestID`=24676 AND `id`=2) OR (`QuestID`=24676 AND `id`=1) OR (`QuestID`=24676 AND `id`=0) OR (`QuestID`=24674 AND `id`=1) OR (`QuestID`=24674 AND `id`=0) OR (`QuestID`=24675 AND `id`=2) OR (`QuestID`=24675 AND `id`=1) OR (`QuestID`=24675 AND `id`=0) OR (`QuestID`=24575 AND `id`=2) OR (`QuestID`=24575 AND `id`=1) OR (`QuestID`=24575 AND `id`=0) OR (`QuestID`=24677 AND `id`=0) OR (`QuestID`=24592 AND `id`=2) OR (`QuestID`=24592 AND `id`=1) OR (`QuestID`=24592 AND `id`=0) OR (`QuestID`=24672 AND `id`=0) OR (`QuestID`=24673 AND `id`=0) OR (`QuestID`=24593 AND `id`=3) OR (`QuestID`=24593 AND `id`=2) OR (`QuestID`=24593 AND `id`=1) OR (`QuestID`=24593 AND `id`=0) OR (`QuestID`=24646 AND `id`=1) OR (`QuestID`=24646 AND `id`=0) OR (`QuestID`=24628 AND `id`=1) OR (`QuestID`=24628 AND `id`=0) OR (`QuestID`=24627 AND `id`=1) OR (`QuestID`=24627 AND `id`=0) OR (`QuestID`=24617 AND `id`=0) OR (`QuestID`=24616 AND `id`=1) OR (`QuestID`=24616 AND `id`=0) OR (`QuestID`=24578 AND `id`=0) OR (`QuestID`=24501 AND `id`=1) OR (`QuestID`=24501 AND `id`=0) OR (`QuestID`=24495 AND `id`=3) OR (`QuestID`=24495 AND `id`=2) OR (`QuestID`=24495 AND `id`=1) OR (`QuestID`=24495 AND `id`=0) OR (`QuestID`=24484 AND `id`=1) OR (`QuestID`=24484 AND `id`=0) OR (`QuestID`=24483 AND `id`=0) OR (`QuestID`=24472 AND `id`=2) OR (`QuestID`=24472 AND `id`=1) OR (`QuestID`=24472 AND `id`=0) OR (`QuestID`=24468 AND `id`=1) OR (`QuestID`=24468 AND `id`=0) OR (`QuestID`=24438 AND `id`=0) OR (`QuestID`=14466 AND `id`=0) OR (`QuestID`=14465 AND `id`=0) OR (`QuestID`=14463 AND `id`=0) OR (`QuestID`=14405 AND `id`=0) OR (`QuestID`=14402 AND `id`=0) OR (`QuestID`=14401 AND `id`=1) OR (`QuestID`=14401 AND `id`=0) OR (`QuestID`=14400 AND `id`=1) OR (`QuestID`=14400 AND `id`=0) OR (`QuestID`=14399 AND `id`=1) OR (`QuestID`=14399 AND `id`=0) OR (`QuestID`=14412 AND `id`=1) OR (`QuestID`=14412 AND `id`=0) OR (`QuestID`=14404 AND `id`=3) OR (`QuestID`=14404 AND `id`=2) OR (`QuestID`=14404 AND `id`=1) OR (`QuestID`=14404 AND `id`=0) OR (`QuestID`=14416 AND `id`=1) OR (`QuestID`=14416 AND `id`=0) OR (`QuestID`=14406 AND `id`=0) OR (`QuestID`=14403 AND `id`=0) OR (`QuestID`=14398 AND `id`=0) OR (`QuestID`=14397 AND `id`=0) OR (`QuestID`=14395 AND `id`=1) OR (`QuestID`=14395 AND `id`=0) OR (`QuestID`=14396 AND `id`=0) OR (`QuestID`=14386 AND `id`=1) OR (`QuestID`=14386 AND `id`=0) OR (`QuestID`=14368 AND `id`=3) OR (`QuestID`=14368 AND `id`=2) OR (`QuestID`=14368 AND `id`=1) OR (`QuestID`=14368 AND `id`=0) OR (`QuestID`=14382 AND `id`=2) OR (`QuestID`=14382 AND `id`=1) OR (`QuestID`=14382 AND `id`=0) OR (`QuestID`=14369 AND `id`=1) OR (`QuestID`=14369 AND `id`=0) OR (`QuestID`=14367 AND `id`=0) OR (`QuestID`=14366 AND `id`=0) OR (`QuestID`=14347 AND `id`=1) OR (`QuestID`=14347 AND `id`=0) OR (`QuestID`=14348 AND `id`=1) OR (`QuestID`=14348 AND `id`=0) OR (`QuestID`=14336 AND `id`=0) OR (`QuestID`=14321 AND `id`=0) OR (`QuestID`=14320 AND `id`=0) OR (`QuestID`=14313 AND `id`=0) OR (`QuestID`=14222 AND `id`=1) OR (`QuestID`=14222 AND `id`=0) OR (`QuestID`=14221 AND `id`=0) OR (`QuestID`=14218 AND `id`=7) OR (`QuestID`=14218 AND `id`=6) OR (`QuestID`=14218 AND `id`=5) OR (`QuestID`=14218 AND `id`=4) OR (`QuestID`=14218 AND `id`=3) OR (`QuestID`=14218 AND `id`=2) OR (`QuestID`=14218 AND `id`=1) OR (`QuestID`=14218 AND `id`=0) OR (`QuestID`=14212 AND `id`=0) OR (`QuestID`=14294 AND `id`=0) OR (`QuestID`=14293 AND `id`=1) OR (`QuestID`=14293 AND `id`=0) OR (`QuestID`=14214 AND `id`=0) OR (`QuestID`=14204 AND `id`=1) OR (`QuestID`=14204 AND `id`=0) OR (`QuestID`=14159 AND `id`=0) OR (`QuestID`=26129 AND `id`=0) OR (`QuestID`=14154 AND `id`=1) OR (`QuestID`=14154 AND `id`=0) OR (`QuestID`=28850 AND `id`=0) OR (`QuestID`=24930 AND `id`=2) OR (`QuestID`=24930 AND `id`=1) OR (`QuestID`=24930 AND `id`=0) OR (`QuestID`=14157 AND `id`=0) OR (`QuestID`=14286 AND `id`=0) OR (`QuestID`=14265 AND `id`=0) OR (`QuestID`=14099 AND `id`=0) OR (`QuestID`=14094 AND `id`=3) OR (`QuestID`=14094 AND `id`=2) OR (`QuestID`=14094 AND `id`=1) OR (`QuestID`=14094 AND `id`=0) OR (`QuestID`=14098 AND `id`=2) OR (`QuestID`=14098 AND `id`=1) OR (`QuestID`=14098 AND `id`=0) OR (`QuestID`=14093 AND `id`=3) OR (`QuestID`=14093 AND `id`=2) OR (`QuestID`=14093 AND `id`=1) OR (`QuestID`=14093 AND `id`=0) OR (`QuestID`=14091 AND `id`=0) OR (`QuestID`=14078 AND `id`=0) OR (`QuestID`=31814 AND `id`=2) OR (`QuestID`=31814 AND `id`=1) OR (`QuestID`=31814 AND `id`=0);
+INSERT INTO `quest_poi` (`QuestID`, `id`, `ObjectiveIndex`, `MapID`, `WorldMapAreaId`, `Floor`, `Priority`, `Flags`, `VerifiedBuild`) VALUES
+(24676, 3, -1, 654, 545, 0, 0, 1, 25383), -- Push Them Out
+(24676, 2, 0, 654, 545, 0, 0, 1, 25383), -- Push Them Out
+(24676, 1, 0, 654, 545, 0, 0, 1, 25383), -- Push Them Out
+(24676, 0, 0, 654, 545, 0, 0, 1, 25383), -- Push Them Out
+(24674, 1, -1, 654, 545, 0, 0, 1, 25383), -- Slaves to No One
+(24674, 0, 0, 654, 545, 0, 0, 1, 25383), -- Slaves to No One
+(24675, 2, -1, 654, 545, 0, 0, 1, 25383), -- Last Meal
+(24675, 1, 0, 654, 545, 0, 0, 1, 25383), -- Last Meal
+(24675, 0, 0, 654, 545, 0, 0, 1, 25383), -- Last Meal
+(24575, 2, -1, 654, 545, 0, 0, 1, 25383), -- Liberation Day
+(24575, 1, 27, 654, 545, 0, 0, 1, 25383), -- Liberation Day
+(24575, 0, 0, 654, 545, 0, 0, 1, 25383), -- Liberation Day
+(24677, 0, -1, 654, 545, 0, 0, 1, 25383), -- Flank the Forsaken
+(24592, 2, -1, 654, 545, 0, 0, 1, 25383), -- Betrayal at Tempest's Reach
+(24592, 1, 0, 654, 545, 0, 0, 1, 25383), -- Betrayal at Tempest's Reach
+(24592, 0, 0, 654, 545, 0, 0, 1, 25383), -- Betrayal at Tempest's Reach
+(24672, 0, -1, 654, 545, 0, 0, 1, 25383), -- Onwards and Upwards
+(24673, 0, -1, 654, 545, 0, 0, 1, 25383), -- Return to Stormglen
+(24593, 3, -1, 654, 545, 0, 0, 1, 25383), -- Neither Human Nor Beast
+(24593, 2, 0, 654, 545, 0, 0, 1, 25383), -- Neither Human Nor Beast
+(24593, 1, 0, 654, 545, 0, 0, 1, 25383), -- Neither Human Nor Beast
+(24593, 0, 0, 654, 545, 0, 0, 1, 25383), -- Neither Human Nor Beast
+(24646, 1, -1, 654, 545, 0, 0, 1, 25383), -- Take Back What's Ours
+(24646, 0, 0, 654, 545, 0, 0, 1, 25383), -- Take Back What's Ours
+(24628, 1, -1, 654, 545, 0, 0, 1, 25383), -- Preparations
+(24628, 0, 0, 654, 545, 0, 0, 1, 25383), -- Preparations
+(24627, 1, -1, 654, 545, 0, 0, 1, 25383), -- At Our Doorstep
+(24627, 0, 0, 654, 545, 0, 0, 1, 25383), -- At Our Doorstep
+(24617, 0, -1, 654, 545, 0, 0, 1, 25383), -- Tal'doren, the Wild Home
+(24616, 1, 0, 654, 545, 0, 0, 1, 25383), -- Losing Your Tail
+(24616, 0, -1, 654, 545, 0, 0, 1, 25383), -- Losing Your Tail
+(24578, 0, -1, 654, 545, 0, 0, 1, 25383), -- The Blackwald
+(24501, 1, -1, 654, 545, 0, 0, 1, 25383), -- Queen-Sized Troubles
+(24501, 0, 0, 654, 545, 0, 0, 1, 25383), -- Queen-Sized Troubles
+(24495, 3, -1, 654, 545, 0, 0, 1, 25383), -- Pieces of the Past
+(24495, 2, 0, 654, 545, 0, 0, 1, 25383), -- Pieces of the Past
+(24495, 1, -1, 638, 539, 0, 0, 1, 25383), -- Pieces of the Past
+(24495, 0, 0, 638, 539, 0, 0, 1, 25383), -- Pieces of the Past
+(24484, 1, -1, 654, 545, 0, 0, 1, 25383), -- Pest Control
+(24484, 0, 0, 654, 545, 0, 0, 1, 25383), -- Pest Control
+(24483, 0, -1, 654, 545, 0, 0, 1, 25383), -- Stormglen
+(24472, 2, -1, 654, 545, 0, 0, 1, 25383), -- Introductions Are in Order
+(24472, 1, 0, 654, 545, 0, 0, 1, 25383), -- Introductions Are in Order
+(24472, 0, 0, 654, 545, 0, 0, 1, 25383), -- Introductions Are in Order
+(24468, 1, 0, 654, 545, 0, 0, 7, 25383), -- Stranded at the Marsh
+(24468, 0, -1, 654, 545, 0, 0, 1, 25383), -- Stranded at the Marsh
+(24438, 0, -1, 654, 545, 0, 0, 1, 25383), -- Exodus
+(14466, 0, -1, 654, 545, 0, 0, 1, 25383), -- The King's Observatory
+(14465, 0, -1, 654, 545, 0, 0, 1, 25383), -- To Greymane Manor
+(14463, 0, -1, 654, 545, 0, 0, 1, 25383), -- Horses for Duskhaven
+(14405, 0, -1, 654, 545, 0, 0, 1, 25383), -- Escape By Sea
+(14402, 0, -1, 654, 545, 0, 0, 1, 25383), -- Ready to Go
+(14401, 1, -1, 654, 545, 0, 0, 7, 25383), -- Grandma's Cat
+(14401, 0, 0, 654, 545, 0, 0, 1, 25383), -- Grandma's Cat
+(14400, 1, -1, 654, 545, 0, 0, 7, 25383), -- I Can't Wear This
+(14400, 0, 0, 654, 545, 0, 0, 1, 25383), -- I Can't Wear This
+(14399, 1, -1, 654, 545, 0, 0, 7, 25383), -- Grandma's Lost It Alright
+(14399, 0, 0, 654, 545, 0, 0, 1, 25383), -- Grandma's Lost It Alright
+(14412, 1, -1, 654, 545, 0, 0, 1, 25383), -- Washed Up
+(14412, 0, 0, 654, 545, 0, 0, 1, 25383), -- Washed Up
+(14404, 3, -1, 654, 545, 0, 0, 1, 25383), -- Not Quite Shipshape
+(14404, 2, 0, 654, 545, 0, 0, 1, 25383), -- Not Quite Shipshape
+(14404, 1, 0, 654, 545, 0, 0, 1, 25383), -- Not Quite Shipshape
+(14404, 0, 0, 654, 545, 0, 0, 1, 25383), -- Not Quite Shipshape
+(14416, 1, -1, 654, 545, 0, 0, 1, 25383), -- The Hungry Ettin
+(14416, 0, 0, 654, 545, 0, 0, 1, 25383), -- The Hungry Ettin
+(14406, 0, -1, 654, 545, 0, 0, 1, 25383), -- The Crowley Orchard
+(14403, 0, -1, 654, 545, 0, 0, 1, 25383), -- The Hayward Brothers
+(14398, 0, -1, 654, 678, 0, 0, 7, 25383), -- Grandma Wahl
+(14397, 0, -1, 654, 545, 0, 0, 1, 25383), -- Evacuation
+(14395, 1, 0, 654, 545, 0, 0, 1, 25383), -- Gasping for Breath
+(14395, 0, -1, 654, 545, 0, 0, 1, 25383), -- Gasping for Breath
+(14396, 0, -1, 654, 545, 0, 0, 1, 25383), -- As the Land Shatters
+(14386, 1, -1, 654, 545, 0, 0, 1, 25383), -- Leader of the Pack
+(14386, 0, 0, 654, 545, 0, 0, 1, 25383), -- Leader of the Pack
+(14368, 3, -1, 654, 545, 0, 0, 1, 25383), -- Save the Children!
+(14368, 2, 0, 654, 545, 0, 0, 1, 25383), -- Save the Children!
+(14368, 1, 0, 654, 545, 0, 0, 1, 25383), -- Save the Children!
+(14368, 0, 0, 654, 545, 0, 0, 1, 25383), -- Save the Children!
+(14382, 2, -1, 654, 545, 0, 0, 1, 25383), -- Two By Sea
+(14382, 1, 0, 654, 545, 0, 0, 1, 25383), -- Two By Sea
+(14382, 0, 0, 654, 545, 0, 0, 1, 25383), -- Two By Sea
+(14369, 1, -1, 654, 545, 0, 0, 1, 25383), -- Unleash the Beast
+(14369, 0, 0, 654, 545, 0, 0, 1, 25383), -- Unleash the Beast
+(14367, 0, -1, 654, 545, 0, 0, 1, 25383), -- The Allens' Storm Cellar
+(14366, 0, -1, 654, 545, 0, 0, 1, 25383), -- Holding Steady
+(14347, 1, -1, 654, 545, 0, 0, 1, 25383), -- Hold the Line
+(14347, 0, 0, 654, 545, 0, 0, 1, 25383), -- Hold the Line
+(14348, 1, -1, 654, 545, 0, 0, 1, 25383), -- You Can't Take 'Em Alone
+(14348, 0, 26, 654, 545, 0, 0, 1, 25383), -- You Can't Take 'Em Alone
+(14336, 0, -1, 654, 545, 0, 0, 1, 25383), -- Kill or Be Killed
+(14321, 0, -1, 654, 545, 0, 0, 1, 25383), -- Invasion
+(14320, 0, -1, 654, 545, 0, 0, 1, 25383), -- In Need of Ingredients
+(14313, 0, -1, 654, 545, 0, 0, 1, 25383), -- Among Humans Again
+(14222, 1, -1, 654, 545, 0, 0, 1, 25383), -- Last Stand
+(14222, 0, 0, 654, 545, 0, 0, 1, 25383), -- Last Stand
+(14221, 0, -1, 654, 545, 0, 0, 1, 25383), -- Never Surrender, Sometimes Retreat
+(14218, 7, -1, 654, 611, 0, 0, 1, 25383), -- By Blood and Ash
+(14218, 6, 0, 654, 611, 0, 0, 1, 25383), -- By Blood and Ash
+(14218, 5, 0, 654, 611, 0, 0, 1, 25383), -- By Blood and Ash
+(14218, 4, 0, 654, 611, 0, 0, 1, 25383), -- By Blood and Ash
+(14218, 3, 0, 654, 611, 0, 0, 1, 25383), -- By Blood and Ash
+(14218, 2, 0, 654, 611, 0, 0, 1, 25383), -- By Blood and Ash
+(14218, 1, 0, 654, 611, 0, 0, 1, 25383), -- By Blood and Ash
+(14218, 0, 0, 654, 611, 0, 0, 1, 25383), -- By Blood and Ash
+(14212, 0, -1, 654, 545, 0, 0, 1, 25383), -- Sacrifices
+(14294, 0, -1, 654, 545, 0, 0, 1, 25383), -- Time to Regroup
+(14293, 1, 0, 654, 611, 0, 0, 1, 25383), -- Save Krennan Aranas
+(14293, 0, -1, 654, 611, 0, 0, 1, 25383), -- Save Krennan Aranas
+(14214, 0, -1, 654, 545, 0, 0, 1, 25383), -- Message to Greymane
+(14204, 1, -1, 654, 545, 0, 0, 1, 25383), -- From the Shadows
+(14204, 0, 0, 654, 545, 0, 0, 1, 25383), -- From the Shadows
+(14159, 0, -1, 654, 545, 0, 0, 1, 25383), -- The Rebel Lord's Arsenal
+(26129, 0, -1, 654, 545, 0, 0, 1, 25383), -- Brothers In Arms
+(14154, 1, 30, 654, 545, 0, 0, 7, 25383), -- By the Skin of His Teeth
+(14154, 0, -1, 654, 545, 0, 0, 3, 25383), -- By the Skin of His Teeth
+(28850, 0, -1, 654, 611, 0, 0, 1, 25383), -- The Prison Rooftop
+(24930, 2, -1, 654, 545, 0, 0, 1, 25383), -- While You're At It
+(24930, 1, 0, 654, 545, 0, 0, 1, 25383), -- While You're At It
+(24930, 0, 0, 638, 539, 0, 0, 1, 25383), -- While You're At It
+(14157, 0, -1, 654, 611, 0, 0, 3, 25383), -- Old Divisions
+(14286, 0, -1, 654, 545, 0, 0, 1, 25383), -- Safety in Numbers
+(14265, 0, -1, 654, 545, 0, 0, 1, 25383), -- Your Instructor
+(14099, 0, -1, 654, 545, 0, 0, 1, 25383), -- Royal Orders
+(14094, 3, -1, 654, 545, 0, 0, 1, 25383), -- Salvage the Supplies
+(14094, 2, 0, 654, 545, 0, 0, 1, 25383), -- Salvage the Supplies
+(14094, 1, -1, 638, 539, 0, 0, 1, 25383), -- Salvage the Supplies
+(14094, 0, 0, 638, 539, 0, 0, 1, 25383), -- Salvage the Supplies
+(14098, 2, -1, 654, 611, 0, 0, 1, 25383), -- Evacuate the Merchant Square
+(14098, 1, 0, 654, 545, 0, 0, 3, 25383), -- Evacuate the Merchant Square
+(14098, 0, 0, 654, 545, 0, 0, 3, 25383), -- Evacuate the Merchant Square
+(14093, 3, -1, 654, 545, 0, 0, 1, 25383), -- All Hell Breaks Loose
+(14093, 2, 0, 654, 545, 0, 0, 1, 25383), -- All Hell Breaks Loose
+(14093, 1, -1, 638, 539, 0, 0, 1, 25383), -- All Hell Breaks Loose
+(14093, 0, 0, 638, 539, 0, 0, 3, 25383), -- All Hell Breaks Loose
+(14091, 0, -1, 654, 545, 0, 0, 1, 25383), -- Something's Amiss
+(14078, 0, -1, 654, 611, 0, 0, 1, 25383), -- Lockdown!
+(31814, 2, 32, 1, 11, 0, 0, 0, 25383), -- Analynn
+(31814, 1, 0, 1, 43, 0, 0, 0, 25383), -- Analynn
+(31814, 0, -1, 1, 43, 0, 0, 0, 25383); -- Analynn
+
+UPDATE `quest_offer_reward` SET `RewardText`='You''ve done it again, $n. The freed villagers are eager to help us against the Forsaken in any way they can.', `VerifiedBuild`=25383 WHERE `ID`=24575; -- Liberation Day
+UPDATE `quest_offer_reward` SET `RewardText`='I thank you, $n. Our people will no longer suffer under that monstrosity''s yoke.', `VerifiedBuild`=25383 WHERE `ID`=24674; -- Slaves to No One
+UPDATE `quest_offer_reward` SET `RewardText`='I thank you, $n. Our men and women will have a last good meal before they set off for battle.', `VerifiedBuild`=25383 WHERE `ID`=24675; -- Last Meal
+UPDATE `quest_offer_reward` SET `Emote1`=1, `RewardText`='I am glad to have you here, $n. We''re surrounded by Forsaken on all sides and can use all the help we can get.', `VerifiedBuild`=25383 WHERE `ID`=24677; -- Flank the Forsaken
+UPDATE `quest_offer_reward` SET `Emote1`=1, `RewardText`='I wish it could''ve been avoided, $n. Let us ensure this is resolved without further bloodshed.', `VerifiedBuild`=25383 WHERE `ID`=24592; -- Betrayal at Tempest's Reach
+UPDATE `quest_offer_reward` SET `RewardText`='$n!$B$BGenn... they''ve taken Genn... they''ve taken... our king!', `VerifiedBuild`=25383 WHERE `ID`=24672; -- Onwards and Upwards
+UPDATE `quest_offer_reward` SET `VerifiedBuild`=25383 WHERE `ID`=24673; -- Return to Stormglen
+UPDATE `quest_offer_reward` SET `RewardText`='It is done then, $n. You are one of us now.', `VerifiedBuild`=25383 WHERE `ID`=24593; -- Neither Human Nor Beast
+UPDATE `quest_offer_reward` SET `Emote1`=66, `RewardText`='I knew we could count on you. You''ve done well, $n.', `VerifiedBuild`=25383 WHERE `ID`=24646; -- Take Back What's Ours
+UPDATE `quest_offer_reward` SET `Emote1`=1, `VerifiedBuild`=25383 WHERE `ID`=24628; -- Preparations
+UPDATE `quest_offer_reward` SET `RewardText`='You are as good as I remember, $n. It is good to have you back.', `VerifiedBuild`=25383 WHERE `ID`=24627; -- At Our Doorstep
+UPDATE `quest_offer_reward` SET `Emote1`=1, `RewardText`='You''re all right, $n! I''ve been waiting for this day for a long time, it truly is great to see you friend.$B$BI''ve heard of what you''ve done and I''m thankful... especially for Lorna -- she''s all I''ve left. I will send for her right away.', `VerifiedBuild`=25383 WHERE `ID`=24617; -- Tal'doren, the Wild Home
+UPDATE `quest_offer_reward` SET `Emote1`=1, `Emote2`=66, `RewardText`='Well done, $n. The scout never had a chance.', `VerifiedBuild`=25383 WHERE `ID`=24616; -- Losing Your Tail
+UPDATE `quest_offer_reward` SET `RewardText`='I''ve been expecting you, $n. Do not be alarmed.$B$BMy name is Belysra . I am a priestess of the moon... a night elf.$B$BYou might not know my people, but the destinies of our two races have been linked since the Curse befell you.', `VerifiedBuild`=25383 WHERE `ID`=24578; -- The Blackwald
+UPDATE `quest_offer_reward` SET `RewardText`='Great job, $n. We''ve heard rumors of survivors further in the mountains. Now we''ll be able to send scouts there.', `VerifiedBuild`=25383 WHERE `ID`=24501; -- Queen-Sized Troubles
+UPDATE `quest_offer_reward` SET `RewardText`='You''ve done well, $n. The spiders are everywhere, however, and I''m afraid we''ve barely put a dent in their numbers.', `VerifiedBuild`=25383 WHERE `ID`=24484; -- Pest Control
+UPDATE `quest_offer_reward` SET `RewardText`='Thank you, $n. It will take some time, but I''ll try to make sense of what we have.', `VerifiedBuild`=25383 WHERE `ID`=24495; -- Pieces of the Past
+UPDATE `quest_offer_reward` SET `RewardText`='It''s good to see you made it, $n. It looks like most everybody did.$B$BWe''re not doing too bad so far for an emergency evacuation.', `VerifiedBuild`=25383 WHERE `ID`=24483; -- Stormglen
+UPDATE `quest_offer_reward` SET `Emote1`=1, `Emote2`=273, `RewardText`='You definitely got the ettin angry, $n. I heard him myself.$B$BLet''s hope this works.', `VerifiedBuild`=25383 WHERE `ID`=24472; -- Introductions Are in Order
+UPDATE `quest_offer_reward` SET `Emote1`=1, `RewardText`='You''ve done it again, $n. You have my thanks.', `VerifiedBuild`=25383 WHERE `ID`=24468; -- Stranded at the Marsh
+UPDATE `quest_offer_reward` SET `Emote1`=1, `Emote2`=25, `RewardText`='Thanks for stopping, $n. Our carriage got hit pretty bad.$B$BThe one in front of us got it worse.', `VerifiedBuild`=25383 WHERE `ID`=24438; -- Exodus
+UPDATE `quest_offer_reward` SET `RewardText`='Look, $n! Look at what''s become of Duskhaven!$B$BLook at what''s become of the last safe place in Gilneas!', `VerifiedBuild`=25383 WHERE `ID`=14467; -- Alas, Gilneas!
+UPDATE `quest_offer_reward` SET `RewardText`='There you are, $n. I''ve been expecting you.$B$BI got word of your recovery and... wait -- do you feel that?', `VerifiedBuild`=25383 WHERE `ID`=14466; -- The King's Observatory
+UPDATE `quest_offer_reward` SET `Emote1`=2, `RewardText`='$n. I''ve heard much about you.$B$BI understand you were crucial in my family''s survival during the outbreak in Gilneas City.', `VerifiedBuild`=25383 WHERE `ID`=14465; -- To Greymane Manor
+UPDATE `quest_offer_reward` SET `RewardText`='Excellent work, $n. I think I speak for everyone when I say the sooner we get out of here, the better.', `VerifiedBuild`=25383 WHERE `ID`=14463; -- Horses for Duskhaven
+UPDATE `quest_offer_reward` SET `VerifiedBuild`=25383 WHERE `ID`=14401; -- Grandma's Cat
+UPDATE `quest_offer_reward` SET `Emote1`=1, `RewardText`='You''re a peach, $n. Thanks!', `VerifiedBuild`=25383 WHERE `ID`=14400; -- I Can't Wear This
+UPDATE `quest_offer_reward` SET `RewardText`='Why thank you, $n. I hope you didn''t peek!$B$BWhere are your manners, dear?', `VerifiedBuild`=25383 WHERE `ID`=14399; -- Grandma's Lost It Alright
+UPDATE `quest_offer_reward` SET `VerifiedBuild`=25383 WHERE `ID`=14398; -- Grandma Wahl
+UPDATE `quest_offer_reward` SET `VerifiedBuild`=25383 WHERE `ID`=14412; -- Washed Up
+UPDATE `quest_offer_reward` SET `Emote1`=1, `RewardText`='This is great, $n. I should be able to finish the repairs in no time.', `VerifiedBuild`=25383 WHERE `ID`=14404; -- Not Quite Shipshape
+UPDATE `quest_offer_reward` SET `VerifiedBuild`=25383 WHERE `ID`=14403; -- The Hayward Brothers
+UPDATE `quest_offer_reward` SET `VerifiedBuild`=25383 WHERE `ID`=14416; -- The Hungry Ettin
+UPDATE `quest_offer_reward` SET `RewardText`='Stay back! Don''t make me...$B$BIs it you? By the Light! It''s you, $n!', `VerifiedBuild`=25383 WHERE `ID`=14406; -- The Crowley Orchard
+UPDATE `quest_offer_reward` SET `VerifiedBuild`=25383 WHERE `ID`=14397; -- Evacuation
+UPDATE `quest_offer_reward` SET `RewardText`='You did what you could, $n. With any luck a few others will find their way to shore.', `VerifiedBuild`=25383 WHERE `ID`=14395; -- Gasping for Breath
+UPDATE `quest_offer_reward` SET `RewardText`='The ocean, $n. It swallowed everything... the land... the Forsaken... our men!', `VerifiedBuild`=25383 WHERE `ID`=14396; -- As the Land Shatters
+UPDATE `quest_offer_reward` SET `RewardText`='You did it, $n. That should take the wind out of their sails.', `VerifiedBuild`=25383 WHERE `ID`=14386; -- Leader of the Pack
+UPDATE `quest_offer_reward` SET `RewardText`='Well done, $n. You might be a bloody beast, but you''re our beast.', `VerifiedBuild`=25383 WHERE `ID`=14382; -- Two By Sea
+UPDATE `quest_offer_reward` SET `RewardText`='Well done, $n. You might be a bloody beast, but you''re our beast.', `VerifiedBuild`=25383 WHERE `ID`=14382; -- Two By Sea
+UPDATE `quest_offer_reward` SET `RewardText`='Not bad, $n. It''s a good thing you''re on our side.', `VerifiedBuild`=25383 WHERE `ID`=14369; -- Unleash the Beast
+UPDATE `quest_offer_reward` SET `RewardText`='My children are safe! You''ve done a wonderful thing, $n. I don''t know how to thank you!', `VerifiedBuild`=25383 WHERE `ID`=14368; -- Save the Children!
+UPDATE `quest_offer_reward` SET `RewardText`='The Forsaken are here in full strength, $n. We barely have enough men to hold them back.', `VerifiedBuild`=25383 WHERE `ID`=14367; -- The Allens' Storm Cellar
+UPDATE `quest_offer_reward` SET `RewardText`='Great news, $n. I''ve sent the remaining militia to the shore to meet the Forsaken force head on.', `VerifiedBuild`=25383 WHERE `ID`=14366; -- Holding Steady
+UPDATE `quest_offer_reward` SET `RewardText`='You and me, $n. We make a great team...$B$BIt''s good to have you back.', `VerifiedBuild`=25383 WHERE `ID`=14348; -- You Can't Take 'Em Alone
+UPDATE `quest_offer_reward` SET `RewardText`='Yes, $n! Just like old times...$B$BI''m going to have to work hard at not shooting you, but Krennan explained everything to us.', `VerifiedBuild`=25383 WHERE `ID`=14347; -- Hold the Line
+UPDATE `quest_offer_reward` SET `RewardText`='$n!!! You ARE alive!$B$BI thought I was having dreams about the old days when I heard your voice...', `VerifiedBuild`=25383 WHERE `ID`=14336; -- Kill or Be Killed
+UPDATE `quest_offer_reward` SET `RewardText`='Forsaken! Quick, $n! We must mount a defense.', `VerifiedBuild`=25383 WHERE `ID`=14321; -- Invasion
+UPDATE `quest_offer_reward` SET `VerifiedBuild`=25383 WHERE `ID`=14320; -- In Need of Ingredients
+UPDATE `quest_offer_reward` SET `VerifiedBuild`=25383 WHERE `ID`=14313; -- Among Humans Again
+UPDATE `quest_offer_reward` SET `RewardText`='I need you to pull through, $n. This dosage is strong enough to kill a horse.$B$BBut I know you. I know what you''re made of. You will be fine.$B$BTrust me. I know what you''re going through.$B$BNow drink up and close your eyes.', `VerifiedBuild`=25383 WHERE `ID`=14375; -- Last Chance at Humanity
+UPDATE `quest_offer_reward` SET `RewardText`='They... they''ve stopped coming.$B$BNo, $n. That''s not a good thing.', `VerifiedBuild`=25383 WHERE `ID`=14222; -- Last Stand
+UPDATE `quest_offer_reward` SET `RewardText`='We''ve given them everything we have... yet still they come. Do not worry, $n. We''ll slay many more before today is over.', `VerifiedBuild`=25383 WHERE `ID`=14221; -- Never Surrender, Sometimes Retreat
+UPDATE `quest_offer_reward` SET `RewardText`='You''ve done well, $n. You''ve done more than could be asked of any Gilnean.$B$BWe''re running low on ammunition. It''s time to regroup inside now.', `VerifiedBuild`=25383 WHERE `ID`=14218; -- By Blood and Ash
+UPDATE `quest_offer_reward` SET `RewardText`='Brace yourself, $n.$B$BHere they come.', `VerifiedBuild`=25383 WHERE `ID`=14212; -- Sacrifices
+UPDATE `quest_offer_reward` SET `RewardText`='We''re left with very few choices, $n. What we do next will be a critical decision.', `VerifiedBuild`=25383 WHERE `ID`=14294; -- Time to Regroup
+UPDATE `quest_offer_reward` SET `RewardText`='Well done, $n. We''ll make sure Krennan makes it out of the city alive.', `VerifiedBuild`=25383 WHERE `ID`=14293; -- Save Krennan Aranas
+UPDATE `quest_offer_reward` SET `VerifiedBuild`=25383 WHERE `ID`=14214; -- Message to Greymane
+UPDATE `quest_offer_reward` SET `VerifiedBuild`=25383 WHERE `ID`=14204; -- From the Shadows
+UPDATE `quest_offer_reward` SET `VerifiedBuild`=25383 WHERE `ID`=14159; -- The Rebel Lord's Arsenal
+UPDATE `quest_offer_reward` SET `VerifiedBuild`=25383 WHERE `ID`=26129; -- Brothers In Arms
+UPDATE `quest_offer_reward` SET `VerifiedBuild`=25383 WHERE `ID`=24930; -- While You're At It
+UPDATE `quest_offer_reward` SET `RewardText`='We did it, $n. Thanks to you a good man has survived.', `VerifiedBuild`=25383 WHERE `ID`=14154; -- By the Skin of His Teeth
+UPDATE `quest_offer_reward` SET `VerifiedBuild`=25383 WHERE `ID`=28850; -- The Prison Rooftop
+UPDATE `quest_offer_reward` SET `VerifiedBuild`=25383 WHERE `ID`=14157; -- Old Divisions
+UPDATE `quest_offer_reward` SET `VerifiedBuild`=25383 WHERE `ID`=14286; -- Safety in Numbers
+UPDATE `quest_offer_reward` SET `RewardText`='$n! Where have you been?$B$BAnyway... it''s great to see you in one piece.', `VerifiedBuild`=25383 WHERE `ID`=14265; -- Your Instructor
+UPDATE `quest_offer_reward` SET `VerifiedBuild`=25383 WHERE `ID`=14099; -- Royal Orders
+UPDATE `quest_offer_reward` SET `RewardText`='Good job, $n. Thanks to you, many Gilneans will live to see another day.', `VerifiedBuild`=25383 WHERE `ID`=14098; -- Evacuate the Merchant Square
+UPDATE `quest_offer_reward` SET `RewardText`='It''s no use, $n! They''re not letting up.', `VerifiedBuild`=25383 WHERE `ID`=14093; -- All Hell Breaks Loose
+UPDATE `quest_offer_reward` SET `VerifiedBuild`=25383 WHERE `ID`=14094; -- Salvage the Supplies
+UPDATE `quest_offer_reward` SET `VerifiedBuild`=25383 WHERE `ID`=14091; -- Something's Amiss
+UPDATE `quest_offer_reward` SET `VerifiedBuild`=25383 WHERE `ID`=14078; -- Lockdown!
+
+DELETE FROM `quest_poi_points` WHERE (`QuestID`=24675 AND `Idx1`=2 AND `Idx2`=0) OR (`QuestID`=14369 AND `Idx1`=1 AND `Idx2`=0) OR (`QuestID`=14369 AND `Idx1`=0 AND `Idx2`=9) OR (`QuestID`=14369 AND `Idx1`=0 AND `Idx2`=8) OR (`QuestID`=14369 AND `Idx1`=0 AND `Idx2`=7) OR (`QuestID`=14369 AND `Idx1`=0 AND `Idx2`=6) OR (`QuestID`=14369 AND `Idx1`=0 AND `Idx2`=5) OR (`QuestID`=14369 AND `Idx1`=0 AND `Idx2`=4) OR (`QuestID`=14369 AND `Idx1`=0 AND `Idx2`=3) OR (`QuestID`=14369 AND `Idx1`=0 AND `Idx2`=2) OR (`QuestID`=14369 AND `Idx1`=0 AND `Idx2`=1) OR (`QuestID`=14369 AND `Idx1`=0 AND `Idx2`=0) OR (`QuestID`=14157 AND `Idx1`=0 AND `Idx2`=0) OR (`QuestID`=14098 AND `Idx1`=2 AND `Idx2`=0) OR (`QuestID`=31814 AND `Idx1`=2 AND `Idx2`=0) OR (`QuestID`=31814 AND `Idx1`=1 AND `Idx2`=0) OR (`QuestID`=31814 AND `Idx1`=0 AND `Idx2`=0);
+INSERT INTO `quest_poi_points` (`QuestID`, `Idx1`, `Idx2`, `X`, `Y`, `VerifiedBuild`) VALUES
+(24675, 2, 0, -1366, 1217, 25383), -- Last Meal
+(14369, 1, 0, -1844, 2567, 25383), -- Unleash the Beast
+(14369, 0, 9, -2211, 2475, 25383), -- Unleash the Beast
+(14369, 0, 8, -2243, 2554, 25383), -- Unleash the Beast
+(14369, 0, 7, -2115, 2683, 25383), -- Unleash the Beast
+(14369, 0, 6, -2103, 2686, 25383), -- Unleash the Beast
+(14369, 0, 5, -1958, 2711, 25383), -- Unleash the Beast
+(14369, 0, 4, -1943, 2694, 25383), -- Unleash the Beast
+(14369, 0, 3, -1933, 2563, 25383), -- Unleash the Beast
+(14369, 0, 2, -1978, 2528, 25383), -- Unleash the Beast
+(14369, 0, 1, -2058, 2470, 25383), -- Unleash the Beast
+(14369, 0, 0, -2179, 2462, 25383), -- Unleash the Beast
+(14157, 0, 0, -1749, 1426, 25383), -- Old Divisions
+(14098, 2, 0, -1438, 1401, 25383), -- Evacuate the Merchant Square
+(31814, 2, 0, -222, -3165, 25383), -- Analynn
+(31814, 1, 0, 3537, 535, 25383), -- Analynn
+(31814, 0, 0, 3537, 535, 25383); -- Analynn
+
+UPDATE `quest_poi_points` SET `X`=-1673, `Y`=1345, `VerifiedBuild`=25383 WHERE (`QuestID`=14293 AND `Idx1`=1 AND `Idx2`=0); -- Save Krennan Aranas
+UPDATE `quest_poi_points` SET `X`=-1786, `Y`=1438, `VerifiedBuild`=25383 WHERE (`QuestID`=14293 AND `Idx1`=0 AND `Idx2`=0); -- Save Krennan Aranas
+
+DELETE FROM `quest_details` WHERE `ID` IN (24676 /*Push Them Out*/, 24674 /*Slaves to No One*/, 24675 /*Last Meal*/, 24575 /*Liberation Day*/, 24677 /*Flank the Forsaken*/, 24592 /*Betrayal at Tempest's Reach*/, 24672 /*Onwards and Upwards*/, 24673 /*Return to Stormglen*/, 24593 /*Neither Human Nor Beast*/, 24646 /*Take Back What's Ours*/, 24628 /*Preparations*/, 24627 /*At Our Doorstep*/, 24617 /*Tal'doren, the Wild Home*/, 24616 /*Losing Your Tail*/, 24578 /*The Blackwald*/, 24501 /*Queen-Sized Troubles*/, 24495 /*Pieces of the Past*/, 24484 /*Pest Control*/, 24483 /*Stormglen*/, 24472 /*Introductions Are in Order*/, 24468 /*Stranded at the Marsh*/, 24438 /*Exodus*/, 14466 /*The King's Observatory*/, 14465 /*To Greymane Manor*/, 14463 /*Horses for Duskhaven*/, 14405 /*Escape By Sea*/, 14402 /*Ready to Go*/, 14401 /*Grandma's Cat*/, 14400 /*I Can't Wear This*/, 14399 /*Grandma's Lost It Alright*/, 14412 /*Washed Up*/, 14404 /*Not Quite Shipshape*/, 14416 /*The Hungry Ettin*/, 14406 /*The Crowley Orchard*/, 14403 /*The Hayward Brothers*/, 14398 /*Grandma Wahl*/, 14397 /*Evacuation*/, 14395 /*Gasping for Breath*/, 14396 /*As the Land Shatters*/, 14386 /*Leader of the Pack*/, 14368 /*Save the Children!*/, 14382 /*Two By Sea*/, 14369 /*Unleash the Beast*/, 14367 /*The Allens' Storm Cellar*/, 14366 /*Holding Steady*/, 14347 /*Hold the Line*/, 14348 /*You Can't Take 'Em Alone*/, 14336 /*Kill or Be Killed*/, 14321 /*Invasion*/, 14320 /*In Need of Ingredients*/, 14313 /*Among Humans Again*/, 14222 /*Last Stand*/, 14221 /*Never Surrender, Sometimes Retreat*/, 14218 /*By Blood and Ash*/, 14212 /*Sacrifices*/, 14294 /*Time to Regroup*/, 14293 /*Save Krennan Aranas*/, 14214 /*Message to Greymane*/, 14204 /*From the Shadows*/, 14159 /*The Rebel Lord's Arsenal*/, 26129 /*Brothers In Arms*/, 14154 /*By the Skin of His Teeth*/, 28850 /*The Prison Rooftop*/, 24930 /*While You're At It*/, 14157 /*Old Divisions*/, 14286 /*Safety in Numbers*/, 14265 /*Your Instructor*/, 14099 /*Royal Orders*/, 14094 /*Salvage the Supplies*/, 14098 /*Evacuate the Merchant Square*/, 14093 /*All Hell Breaks Loose*/, 14091 /*Something's Amiss*/, 14078 /*Lockdown!*/);
+INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES
+(24676, 1, 0, 0, 0, 0, 0, 0, 0, 25383), -- Push Them Out
+(24674, 1, 0, 0, 0, 0, 0, 0, 0, 25383), -- Slaves to No One
+(24675, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Last Meal
+(24575, 1, 274, 0, 0, 0, 0, 0, 0, 25383), -- Liberation Day
+(24677, 274, 0, 0, 0, 0, 0, 0, 0, 25383), -- Flank the Forsaken
+(24592, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Betrayal at Tempest's Reach
+(24672, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Onwards and Upwards
+(24673, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Return to Stormglen
+(24593, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Neither Human Nor Beast
+(24646, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Take Back What's Ours
+(24628, 1, 0, 0, 0, 0, 0, 0, 0, 25383), -- Preparations
+(24627, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- At Our Doorstep
+(24617, 25, 0, 0, 0, 0, 0, 0, 0, 25383), -- Tal'doren, the Wild Home
+(24616, 1, 25, 0, 0, 0, 0, 0, 0, 25383), -- Losing Your Tail
+(24578, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- The Blackwald
+(24501, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Queen-Sized Troubles
+(24495, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Pieces of the Past
+(24484, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Pest Control
+(24483, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Stormglen
+(24472, 1, 6, 5, 0, 0, 0, 0, 0, 25383), -- Introductions Are in Order
+(24468, 1, 25, 0, 0, 0, 0, 0, 0, 25383), -- Stranded at the Marsh
+(24438, 1, 0, 0, 0, 0, 0, 0, 0, 25383), -- Exodus
+(14466, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- The King's Observatory
+(14465, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- To Greymane Manor
+(14463, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Horses for Duskhaven
+(14405, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Escape By Sea
+(14402, 1, 0, 0, 0, 0, 0, 0, 0, 25383), -- Ready to Go
+(14401, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Grandma's Cat
+(14400, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- I Can't Wear This
+(14399, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Grandma's Lost It Alright
+(14412, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Washed Up
+(14404, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Not Quite Shipshape
+(14416, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- The Hungry Ettin
+(14406, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- The Crowley Orchard
+(14403, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- The Hayward Brothers
+(14398, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Grandma Wahl
+(14397, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Evacuation
+(14395, 25, 6, 1, 0, 0, 0, 0, 0, 25383), -- Gasping for Breath
+(14396, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- As the Land Shatters
+(14386, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Leader of the Pack
+(14368, 18, 0, 0, 0, 0, 0, 0, 0, 25383), -- Save the Children!
+(14382, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Two By Sea
+(14369, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Unleash the Beast
+(14367, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- The Allens' Storm Cellar
+(14366, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Holding Steady
+(14347, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Hold the Line
+(14348, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- You Can't Take 'Em Alone
+(14336, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Kill or Be Killed
+(14321, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Invasion
+(14320, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- In Need of Ingredients
+(14313, 1, 5, 274, 0, 0, 0, 0, 0, 25383), -- Among Humans Again
+(14222, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Last Stand
+(14221, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Never Surrender, Sometimes Retreat
+(14218, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- By Blood and Ash
+(14212, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Sacrifices
+(14294, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Time to Regroup
+(14293, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Save Krennan Aranas
+(14214, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Message to Greymane
+(14204, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- From the Shadows
+(14159, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- The Rebel Lord's Arsenal
+(26129, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Brothers In Arms
+(14154, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- By the Skin of His Teeth
+(28850, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- The Prison Rooftop
+(24930, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- While You're At It
+(14157, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Old Divisions
+(14286, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Safety in Numbers
+(14265, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Your Instructor
+(14099, 25, 0, 0, 0, 0, 0, 0, 0, 25383), -- Royal Orders
+(14094, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Salvage the Supplies
+(14098, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Evacuate the Merchant Square
+(14093, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- All Hell Breaks Loose
+(14091, 0, 0, 0, 0, 0, 0, 0, 0, 25383), -- Something's Amiss
+(14078, 0, 0, 0, 0, 0, 0, 0, 0, 25383); -- Lockdown!
+
+UPDATE `quest_request_items` SET `CompletionText`='Did you get what I needed, $n?', `VerifiedBuild`=25383 WHERE `ID`=24675; -- Last Meal
+UPDATE `quest_request_items` SET `CompletionText`='Do you have the scythe, $n?', `VerifiedBuild`=25383 WHERE `ID`=24646; -- Take Back What's Ours
+UPDATE `quest_request_items` SET `CompletionText`='You''ve returned, $n.', `VerifiedBuild`=25383 WHERE `ID`=24628; -- Preparations
+UPDATE `quest_request_items` SET `CompletionText`='How did it go, $n?', `VerifiedBuild`=25383 WHERE `ID`=24472; -- Introductions Are in Order
+UPDATE `quest_request_items` SET `CompletionText`='You''re such a charming young $gman:lady;, $n.', `VerifiedBuild`=25383 WHERE `ID`=14401; -- Grandma's Cat
+UPDATE `quest_request_items` SET `CompletionText`='Do you have my supplies, $n?', `VerifiedBuild`=25383 WHERE `ID`=14404; -- Not Quite Shipshape
+UPDATE `quest_request_items` SET `CompletionText`='Have you salvaged the supplies, $n?', `VerifiedBuild`=25383 WHERE `ID`=14094; -- Salvage the Supplies
+
+UPDATE `creature_addon` SET `emote`= 333 WHERE `guid`= 376570;
+UPDATE `creature` SET `MovementType`= 1, `spawndist`= 3 WHERE `guid` IN (376655, 376654, 376510);
+
+UPDATE `creature_addon` SET `emote`= 27, `Auras`= '67503' WHERE `guid`= 376582;
+UPDATE `creature_addon` SET `emote`= 375 WHERE `guid`= 376579;
+
+-- Creature Lord Darius Crowley 35077 SAI
+SET @ENTRY := 35077;
+UPDATE `creature_template` SET `AIName`="SmartAI", `DamageModifier`= 3 WHERE `entry`= @ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `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, 19, 0, 100, 0, 14154, 0, 0, 0, 11, 66914, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, "When player accepts quest 14154 - Self: Cast spell 66914 on Action invoker // "),
+(@ENTRY, 0, 1, 0, 37, 0, 100, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "On AI initialize - Self: Disable combat based movement // "),
+(@ENTRY, 0, 2, 0, 0, 0, 100, 0, 6000, 6000, 15000, 17000, 11, 67825, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, "When in combat and timer at the begining between 6000 and 6000 ms (and later repeats every 15000 and 17000 ms) - Self: Cast spell 67825 on Victim // ");
+
+UPDATE `creature_template` SET `DamageModifier`= 3 WHERE `entry`= 35124;
+
+DELETE FROM `spell_script_names` WHERE `ScriptName` IN
+('spell_gen_gilneas_prison_periodic_dummy');
+
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(66853, 'spell_gen_gilneas_prison_periodic_dummy');
+
+DELETE FROM `spell_target_position` WHERE `ID` IN (66925, 66836);
+INSERT INTO `spell_target_position` (`ID`, `EffectIndex`, `MapID`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`) VALUES
+(66925, 0, 654, -1636.292, 1481.836, 70.94804, 4.081235),
+(66836, 0, 654, -1620.981, 1509.193, 67.10413, 3.919209);
+
+UPDATE `creature_template` SET `scriptname`= 'npc_worgen_runt' WHERE `entry` IN (35456, 35188);
+
+-- Creature Worgen Alpha 35167 SAI
+SET @ENTRY := 35167;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`= @ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `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, 2, 0, 100, 1, 0, 30, 0, 0, 11, 8599, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "When health between 0% and 30% (check every 0 - 0 ms) - Self: Cast spell 8599 on Self // Worgen Alpha - Between 0-30% Health - Cast 'Enrage' (No Repeat)"),
+(@ENTRY, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, " Linked - Self: Talk 0 // Worgen Alpha - Between 0-30% Health - Say Line 0 (No Repeat)"),
+(@ENTRY, 0, 2, 0, 54, 0, 100, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1639.317, 1491.14, 67.34758, 0, "On just summoned - Self: Move to None (point id 0) // ");
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index 5e4b378d58..1ee5237c98 100644
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -3080,6 +3080,13 @@ void SpellMgr::LoadSpellInfoCorrections()
spellInfo->Effects[EFFECT_1].SpellClassMask[0] |= 2;
});
+ // Summon Ravenous Worgen
+ // Serverside dummy target so we have to change to spell_target_position
+ ApplySpellFix({ 66925, 66836 }, [](SpellInfo* spellInfo)
+ {
+ spellInfo->Effects[EFFECT_0].TargetA = TARGET_DEST_DB;
+ });
+
// Renewed Hope
ApplySpellFix({
57470, // (Rank 1)
diff --git a/src/server/scripts/EasternKingdoms/Gilneas/chapter1.cpp b/src/server/scripts/EasternKingdoms/Gilneas/chapter1.cpp
index 3b844e715e..9cbd5f5284 100644
--- a/src/server/scripts/EasternKingdoms/Gilneas/chapter1.cpp
+++ b/src/server/scripts/EasternKingdoms/Gilneas/chapter1.cpp
@@ -15,6 +15,7 @@
* with this program. If not, see .
*/
+#include "gilneas.h"
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
@@ -138,39 +139,210 @@ class npc_frightened_citizen : public CreatureScript
};
/*######
-##Quest 14293 - Save Krennan Aranas
+## Quest 14154 - By the Skin of his Teeth
######*/
-uint32 const pathSize1 = 7;
-G3D::Vector3 const greymanesHorsePath1[pathSize1] =
+enum WorgenRunt
{
- { -1797.425f, 1396.941f, 20.07336f },
- { -1788.675f, 1378.441f, 20.07336f },
- { -1780.925f, 1368.941f, 20.07336f },
- { -1767.425f, 1358.191f, 19.82336f },
- { -1746.425f, 1358.691f, 20.07336f },
- { -1726.175f, 1354.191f, 19.82336f },
- { -1709.064f, 1348.535f, 19.78232f }
+ EVENT_JUMP_TO_PRISON = 1,
+ EVENT_AGGRO_PLAYER = 2,
+ EVENT_FORCE_DESPAWN = 3,
+
+ PHASE_ROOF = 0,
+ PHASE_COMBAT = 1,
+
+ WORGEN_ID_ROOF_1 = 0,
+ WORGEN_ID_ROOF_2 = 1,
+ WORGEN_ID_ROOF_3 = 2,
+ WORGEN_ID_ROOF_4 = 3,
+ WORGEN_ID_ROOF_5 = 4,
+ WORGEN_ID_ROOF_6 = 5,
+ WORGEN_ID_ROOF_7 = 6,
+
+ WORGEN_ID_CATHEDRAL_1 = 7,
+ WORGEN_ID_CATHEDRAL_2 = 8,
+ WORGEN_ID_CATHEDRAL_3 = 9,
+ WORGEN_ID_CATHEDRAL_4 = 10,
+ WORGEN_ID_CATHEDRAL_5 = 11,
+ WORGEN_ID_CATHEDRAL_6 = 12,
+ WORGEN_ID_CATHEDRAL_7 = 13,
+ WORGEN_ID_CATHEDRAL_8 = 14,
+ WORGEN_ID_CATHEDRAL_9 = 15,
+
+ NPC_WORGEN_RUNT_SPELL = 35188,
};
-uint32 const pathSize2 = 13;
-G3D::Vector3 const greymanesHorsePath2[] =
+Position const runtSpellSummonJumpPos = { -1671.915f, 1446.734f, 52.28712f };
+
+class npc_worgen_runt : public CreatureScript
{
- { -1664.807f, 1345.011f, 15.48499f },
- { -1662.807f, 1354.511f, 15.48499f },
- { -1667.307f, 1362.511f, 15.48499f },
- { -1674.307f, 1363.761f, 15.48499f },
- { -1686.057f, 1355.011f, 15.48499f },
- { -1691.057f, 1347.261f, 15.48499f },
- { -1705.807f, 1350.011f, 19.98499f },
- { -1731.307f, 1360.011f, 19.98499f },
- { -1744.807f, 1370.511f, 20.23499f },
- { -1758.807f, 1389.511f, 19.98499f },
- { -1768.307f, 1410.011f, 19.98499f },
- { -1771.557f, 1423.011f, 19.98499f },
- { -1770.955f, 1430.332f, 19.83506f }
+ public:
+ npc_worgen_runt() : CreatureScript("npc_worgen_runt") { }
+
+ struct npc_worgen_runtAI : public ScriptedAI
+ {
+ npc_worgen_runtAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ _worgenID = 0;
+ _wayPointCounter = 0;
+ _jumped = false;
+ _playerGuid = ObjectGuid::Empty;
+ }
+
+ void JustEngagedWith(Unit* /*who*/) override
+ {
+ _events.SetPhase(PHASE_COMBAT);
+ }
+
+ void IsSummonedBy(Unit* summoner) override
+ {
+ me->setActive(true); // we are in a phased and cut off map so we're fine to use that here
+ _events.SetPhase(PHASE_ROOF);
+ _events.ScheduleEvent(EVENT_FORCE_DESPAWN, Seconds(70), 0, PHASE_ROOF);
+ _playerGuid = summoner->GetGUID();
+ if (me->GetEntry() == NPC_WORGEN_RUNT_SPELL)
+ me->GetMotionMaster()->MoveJump(runtSpellSummonJumpPos, 16.0f, 4.371286f);
+ }
+
+ void DoAction(int32 action) override
+ {
+ _worgenID = action;
+ switch (_worgenID) // ugly as fuck but needed for individual controls
+ {
+ // House roof cases
+ case WORGEN_ID_ROOF_1:
+ _wayPointCounter = runtHousePathSize1;
+ me->GetMotionMaster()->MoveSmoothPath(runtHousePathSize1, worgenRuntHousePath1, runtHousePathSize1);
+ break;
+ case WORGEN_ID_ROOF_2:
+ _wayPointCounter = runtHousePathSize2;
+ me->GetMotionMaster()->MoveSmoothPath(runtHousePathSize2, worgenRuntHousePath2, runtHousePathSize2);
+ break;
+ case WORGEN_ID_ROOF_3:
+ _wayPointCounter = runtHousePathSize3;
+ me->GetMotionMaster()->MoveSmoothPath(runtHousePathSize3, worgenRuntHousePath3, runtHousePathSize3);
+ break;
+ case WORGEN_ID_ROOF_4:
+ _wayPointCounter = runtHousePathSize4;
+ me->GetMotionMaster()->MoveSmoothPath(runtHousePathSize4, worgenRuntHousePath4, runtHousePathSize4);
+ break;
+ case WORGEN_ID_ROOF_5:
+ _wayPointCounter = runtHousePathSize5;
+ me->GetMotionMaster()->MoveSmoothPath(runtHousePathSize5, worgenRuntHousePath5, runtHousePathSize5);
+ break;
+ case WORGEN_ID_ROOF_6:
+ _wayPointCounter = runtHousePathSize6;
+ me->GetMotionMaster()->MoveSmoothPath(runtHousePathSize6, worgenRuntHousePath6, runtHousePathSize6);
+ break;
+ case WORGEN_ID_ROOF_7:
+ _wayPointCounter = runtHousePathSize7;
+ me->GetMotionMaster()->MoveSmoothPath(runtHousePathSize7, worgenRuntHousePath7, runtHousePathSize7);
+ break;
+ // Cathedral cases
+ case WORGEN_ID_CATHEDRAL_1:
+ _wayPointCounter = runtCathedralPathSize1;
+ me->GetMotionMaster()->MoveSmoothPath(runtCathedralPathSize1, worgenRuntCathedralPath1, runtCathedralPathSize1);
+ break;
+ case WORGEN_ID_CATHEDRAL_2:
+ _wayPointCounter = runtCathedralPathSize2;
+ me->GetMotionMaster()->MoveSmoothPath(runtCathedralPathSize2, worgenRuntCathedralPath1, runtCathedralPathSize2);
+ break;
+ case WORGEN_ID_CATHEDRAL_3:
+ _wayPointCounter = runtCathedralPathSize3;
+ me->GetMotionMaster()->MoveSmoothPath(runtCathedralPathSize3, worgenRuntCathedralPath1, runtCathedralPathSize3);
+ break;
+ case WORGEN_ID_CATHEDRAL_4:
+ _wayPointCounter = runtCathedralPathSize4;
+ me->GetMotionMaster()->MoveSmoothPath(runtCathedralPathSize4, worgenRuntCathedralPath1, runtCathedralPathSize4);
+ break;
+ case WORGEN_ID_CATHEDRAL_5:
+ _wayPointCounter = runtCathedralPathSize5;
+ me->GetMotionMaster()->MoveSmoothPath(runtCathedralPathSize5, worgenRuntCathedralPath1, runtCathedralPathSize5);
+ break;
+ case WORGEN_ID_CATHEDRAL_6:
+ _wayPointCounter = runtCathedralPathSize6;
+ me->GetMotionMaster()->MoveSmoothPath(runtCathedralPathSize6, worgenRuntCathedralPath1, runtCathedralPathSize6);
+ break;
+ case WORGEN_ID_CATHEDRAL_7:
+ _wayPointCounter = runtCathedralPathSize7;
+ me->GetMotionMaster()->MoveSmoothPath(runtCathedralPathSize7, worgenRuntCathedralPath1, runtCathedralPathSize7);
+ break;
+ case WORGEN_ID_CATHEDRAL_8:
+ _wayPointCounter = runtCathedralPathSize8;
+ me->GetMotionMaster()->MoveSmoothPath(runtCathedralPathSize8, worgenRuntCathedralPath1, runtCathedralPathSize8);
+ break;
+ }
+ }
+
+ void JustDied(Unit* /*killer*/) override
+ {
+ me->DespawnOrUnsummon(Seconds(5));
+ }
+
+ void MovementInform(uint32 type, uint32 pointId) override
+ {
+ if (type == EFFECT_MOTION_TYPE && pointId == _wayPointCounter && !_jumped)
+ {
+ _jumped = true;
+ _events.ScheduleEvent(EVENT_JUMP_TO_PRISON, Milliseconds(1));
+ }
+ }
+
+ void UpdateAI(uint32 diff) override
+ {
+ if (!UpdateVictim() && !_events.IsInPhase(PHASE_ROOF))
+ return;
+
+ _events.Update(diff);
+
+ while (uint32 eventId = _events.ExecuteEvent())
+ {
+ switch(eventId)
+ {
+ case EVENT_FORCE_DESPAWN:
+ me->DespawnOrUnsummon();
+ break;
+ case EVENT_JUMP_TO_PRISON:
+ me->GetMotionMaster()->MoveJump(worgenRuntJumpPos[_worgenID], 16.0f, _worgenID < WORGEN_ID_CATHEDRAL_1 ? 19.2911f : frand(3.945607f, 4.852813f));
+ me->SetHomePosition(worgenRuntJumpPos[_worgenID]);
+ _events.ScheduleEvent(EVENT_AGGRO_PLAYER, Seconds(1));
+ break;
+ case EVENT_AGGRO_PLAYER:
+ if (Unit* player = ObjectAccessor::GetPlayer(*me, _playerGuid))
+ if (me->IsAIEnabled && me->IsInDist(&player->GetPosition(), 50.0f))
+ me->AI()->AttackStart(player);
+ break;
+ default:
+ break;
+ }
+ }
+
+ DoMeleeAttackIfReady();
+ }
+ private:
+ uint32 _worgenID;
+ uint32 _wayPointCounter;
+ bool _jumped;
+ ObjectGuid _playerGuid;
+ EventMap _events;
+ };
+
+ CreatureAI* GetAI(Creature* creature) const
+ {
+ return new npc_worgen_runtAI(creature);
+ }
};
+
+/*######
+## Quest 14293 - Save Krennan Aranas
+######*/
+
Position const greymanesHorseJumpPos = { -1676.16f, 1346.19f, 15.1349f };
enum GreymanesHorse
@@ -286,5 +458,6 @@ class npc_greymanes_horse : public CreatureScript
void AddSC_gilneas_c1()
{
new npc_frightened_citizen();
+ new npc_worgen_runt();
new npc_greymanes_horse();
}
diff --git a/src/server/scripts/EasternKingdoms/Gilneas/gilneas.h b/src/server/scripts/EasternKingdoms/Gilneas/gilneas.h
new file mode 100644
index 0000000000..a3f26e87b5
--- /dev/null
+++ b/src/server/scripts/EasternKingdoms/Gilneas/gilneas.h
@@ -0,0 +1,310 @@
+/*
+* Copyright (C) 2008-2018 TrinityCore
+*
+* This program is free software; you can redistribute it and/or modify it
+* under the terms of the GNU General Public License as published by the
+* Free Software Foundation; either version 2 of the License, or (at your
+* option) any later version.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+* more details.
+*
+* You should have received a copy of the GNU General Public License along
+* with this program. If not, see .
+*/
+
+#ifndef GILNEAS_M_
+#define GILNEAS_M_
+
+/*######
+## Quest 14154 - By the Skin of his Teeth
+######*/
+
+// House wave
+uint32 const runtHousePathSize1 = 13;
+
+G3D::Vector3 const worgenRuntHousePath1[runtHousePathSize1] =
+{
+ { -1734.77f, 1527.007f, 55.2133f },
+ { -1729.345f, 1526.495f, 55.4231f },
+ { -1723.921f, 1525.982f, 55.6329f },
+ { -1718.885f, 1525.88f, 55.89785f },
+ { -1718.002f, 1516.054f, 55.36457f },
+ { -1718.162f, 1512.458f, 55.41572f },
+ { -1717.852f, 1508.871f, 55.64134f },
+ { -1717.868f, 1507.03f, 55.78084f },
+ { -1717.939f, 1498.912f, 56.2076f },
+ { -1717.975f, 1494.827f, 56.34147f },
+ { -1717.666f, 1491.978f, 56.46574f },
+ { -1717.708f, 1491.591f, 56.51286f },
+ { -1717.708f, 1491.591f, 56.51286f },
+};
+
+uint32 const runtHousePathSize2 = 11;
+
+G3D::Vector3 const worgenRuntHousePath2[runtHousePathSize2] =
+{
+ {-1705.29f, 1527.974f, 57.49218f },
+ {-1709.63f, 1527.464f, 56.81163f },
+ {-1713.971f, 1526.953f, 56.13107f },
+ {-1718.249f, 1525.915f, 55.91631f },
+ {-1718.002f, 1516.054f, 55.36457f },
+ {-1718.162f, 1512.458f, 55.41572f },
+ {-1717.852f, 1508.871f, 55.64134f },
+ {-1717.866f, 1507.038f, 55.7804f },
+ {-1717.928f, 1498.872f, 56.20963f },
+ {-1717.947f, 1496.298f, 56.29393f },
+ {-1717.947f, 1496.298f, 56.29393f },
+};
+
+uint32 const runtHousePathSize3 = 8;
+
+G3D::Vector3 const worgenRuntHousePath3[runtHousePathSize3] =
+{
+ {-1717.74f, 1514.99f, 55.37629f },
+ {-1717.75f, 1513.727f, 55.39608f },
+ {-1717.76f, 1512.465f, 55.41587f },
+ {-1717.787f, 1508.872f, 55.64124f },
+ {-1717.799f, 1507.277f, 55.74761f },
+ {-1717.864f, 1498.657f, 56.22049f },
+ {-1717.887f, 1495.557f, 56.31728f },
+ {-1717.887f, 1495.557f, 56.31728f },
+};
+
+uint32 const runtHousePathSize4 = 11;
+
+G3D::Vector3 const worgenRuntHousePath4[runtHousePathSize4] =
+{
+ { -1727.101f, 1527.078f, 55.5045f },
+ { -1724.719f, 1526.731f, 55.60394f },
+ { -1722.337f, 1526.383f, 55.70337f },
+ { -1718.885f, 1525.88f, 55.89785f },
+ { -1718.002f, 1516.054f, 55.36457f },
+ { -1718.162f, 1512.458f, 55.41572f },
+ { -1717.852f, 1508.871f, 55.64134f },
+ { -1717.845f, 1507.113f, 55.77633f },
+ { -1717.81f, 1498.482f, 56.22932f },
+ { -1717.793f, 1494.123f, 56.37141f },
+ { -1717.793f, 1494.123f, 56.37141f },
+};
+
+uint32 const runtHousePathSize5 = 11;
+
+G3D::Vector3 const worgenRuntHousePath5[runtHousePathSize5] =
+{
+ { -1709.699f, 1527.335f, 56.34836f },
+ { -1713.974f, 1526.625f, 56.13234f },
+ { -1718.249f, 1525.915f, 55.91631f },
+ { -1718.002f, 1516.054f, 55.36457f },
+ { -1718.162f, 1512.458f, 55.41572f },
+ { -1717.852f, 1508.871f, 55.64134f },
+ { -1717.891f, 1506.948f, 55.78529f },
+ { -1718.047f, 1499.267f, 56.18964f },
+ { -1718.125f, 1495.405f, 56.31914f },
+ { -1717.693f, 1492.178f, 56.45717f },
+ { -1717.693f, 1492.178f, 56.45717f },
+};
+
+uint32 const runtHousePathSize6 = 9;
+
+G3D::Vector3 const worgenRuntHousePath6[runtHousePathSize6] =
+{
+ { -1718.083f, 1532.09f, 56.25435f },
+ { -1718.104f, 1524.071f, 55.80854f },
+ { -1718.125f, 1516.053f, 55.36273f },
+ { -1718.134f, 1512.459f, 55.41573f },
+ { -1718.143f, 1508.866f, 55.64067f },
+ { -1718.151f, 1506.013f, 55.83052f },
+ { -1718.167f, 1499.665f, 56.16953f },
+ { -1718.172f, 1497.578f, 56.24289f },
+ { -1718.172f, 1497.578f, 56.24289f },
+};
+
+uint32 const runtHousePathSize7 = 9;
+
+G3D::Vector3 const worgenRuntHousePath7[runtHousePathSize7] =
+{
+ { -1718.083f, 1532.09f, 56.25435f },
+ { -1718.104f, 1524.071f, 55.80854f },
+ { -1718.125f, 1516.053f, 55.36273f },
+ { -1718.134f, 1512.459f, 55.41573f },
+ { -1718.143f, 1508.866f, 55.64067f },
+ { -1718.151f, 1506.013f, 55.83052f },
+ { -1718.167f, 1499.665f, 56.16953f },
+ { -1718.172f, 1497.578f, 56.24289f },
+ { -1718.172f, 1497.578f, 56.24289f },
+};
+
+uint32 const runtCathedralPathSize1 = 10;
+
+G3D::Vector3 const worgenRuntCathedralPath1[runtCathedralPathSize1] =
+{
+ { -1612.885f, 1492.154f, 67.03599f },
+ { -1618.054f, 1489.644f, 68.5475f },
+ { -1623.222f, 1487.134f, 70.05901f },
+ { -1629.727f, 1483.976f, 72.59077f },
+ { -1630.914f, 1483.4f, 72.92308f },
+ { -1632.244f, 1482.754f, 72.91827f },
+ { -1636.865f, 1480.51f, 68.61356f },
+ { -1638.087f, 1479.916f, 67.58314f },
+ { -1638.852f, 1479.545f, 66.56925f },
+ { -1638.852f, 1479.545f, 66.56925f },
+};
+
+uint32 const runtCathedralPathSize2 = 7;
+
+G3D::Vector3 const worgenRuntCathedralPath2[runtCathedralPathSize2] =
+{
+ { -1618.982f, 1489.76f, 68.56043f },
+ { -1625.62f, 1487.033f, 71.4378f },
+ { -1632.258f, 1484.306f, 74.31516f },
+ { -1634.6f, 1483.343f, 72.61462f },
+ { -1636.067f, 1482.741f, 70.69682f },
+ { -1639.282f, 1481.42f, 66.99659f },
+ { -1639.282f, 1481.42f, 66.99659f },
+};
+
+uint32 const runtCathedralPathSize3 = 6;
+
+G3D::Vector3 const worgenRuntCathedralPath3[runtCathedralPathSize3] =
+{
+ { -1637.957f, 1493.445f, 67.77746f },
+ { -1638.569f, 1489.736f, 68.47077f },
+ { -1639.182f, 1486.027f, 69.16409f },
+ { -1640.578f, 1477.564f, 64.01109f },
+ { -1640.676f, 1476.976f, 63.45144f },
+ { -1640.676f, 1476.976f, 63.45144f },
+};
+
+uint32 const runtCathedralPathSize4 = 5;
+
+G3D::Vector3 const worgenRuntCathedralPath4[runtCathedralPathSize4] =
+{
+ { -1628.66f, 1482.281f, 71.34027f },
+ { -1630.399f, 1481.66f, 71.33196f },
+ { -1632.139f, 1481.039f, 71.32365f },
+ { -1639.006f, 1478.586f, 65.77306f },
+ { -1639.006f, 1478.586f, 65.77306f },
+};
+
+
+uint32 const runtCathedralPathSize5 = 9;
+
+G3D::Vector3 const worgenRuntCathedralPath5[runtCathedralPathSize5] =
+{
+ { -1620.279f, 1484.46f, 67.03528f },
+ { -1622.424f, 1483.882f, 68.05564f },
+ { -1624.568f, 1483.304f, 69.076f },
+ { -1628.933f, 1482.127f, 70.91297f },
+ { -1632.153f, 1481.259f, 71.52889f },
+ { -1637.776f, 1479.743f, 67.45475f },
+ { -1638.956f, 1479.425f, 66.41499f },
+ { -1639.354f, 1479.318f, 65.98292f },
+ { -1639.354f, 1479.318f, 65.98292f },
+};
+
+uint32 const runtCathedralPathSize6 = 10;
+
+G3D::Vector3 const worgenRuntCathedralPath6[runtCathedralPathSize6] =
+{
+ { -1633.998f, 1495.233f, 68.24403f },
+ { -1634.344f, 1491.3f, 70.41303f },
+ { -1634.689f, 1487.368f, 72.58203f },
+ { -1634.735f, 1486.842f, 72.91134f },
+ { -1634.837f, 1485.684f, 73.20835f },
+ { -1634.987f, 1483.981f, 72.29824f },
+ { -1635.084f, 1482.868f, 71.9163f },
+ { -1635.166f, 1481.939f, 70.77574f },
+ { -1635.809f, 1474.621f, 63.4636f },
+ { -1635.809f, 1474.621f, 63.4636f },
+};
+
+uint32 const runtCathedralPathSize7 = 7;
+
+G3D::Vector3 const worgenRuntCathedralPath7[runtCathedralPathSize7] =
+{
+ { -1629.975f, 1494.066f, 70.64719f },
+ { -1631.979f, 1491.585f, 71.31316f },
+ { -1633.984f, 1489.104f, 71.97912f },
+ { -1634.991f, 1487.856f, 72.09129f },
+ { -1636.631f, 1485.826f, 71.53807f },
+ { -1640.601f, 1480.912f, 65.49457f },
+ { -1640.601f, 1480.912f, 65.49457f },
+};
+
+uint32 const runtCathedralPathSize8 = 8;
+
+G3D::Vector3 const worgenRuntCathedralPath8[runtCathedralPathSize8] =
+{
+ { -1620.879f, 1491.133f, 70.67613f },
+ { -1622.665f, 1489.818f, 71.04526f },
+ { -1624.451f, 1488.503f, 71.41438f },
+ { -1630.469f, 1484.073f, 73.09648f },
+ { -1631.376f, 1483.405f, 73.20229f },
+ { -1632.245f, 1482.765f, 72.92912f },
+ { -1635.605f, 1480.292f, 68.99215f },
+ { -1635.605f, 1480.292f, 68.99215f },
+};
+
+Position const worgenRuntJumpPos[] =
+{
+ // Roof
+ { -1694.03f, 1466.33f, 52.2872f },
+ { -1688.92f, 1455.69f, 52.2871f },
+ { -1699.46f, 1468.43f, 52.2871f },
+ { -1697.73f, 1469.52f, 52.2871f },
+ { -1701.65f, 1470.94f, 52.2871f },
+ { -1693.91f, 1468.46f, 52.2872f },
+ { -1697.30f, 1464.65f, 52.2871f },
+ // Cathedral
+ { -1681.57f, 1455.77f, 52.2871f },
+ { -1677.47f, 1454.94f, 52.2871f },
+ { -1677.71f, 1452.2f, 52.2871f },
+ { -1677.66f, 1450.93f, 52.2871f },
+ { -1672.56f, 1448.06f, 52.2871f },
+ { -1683.13f, 1455.39f, 52.2871f },
+ { -1669.81f, 1442.34f, 52.2871f },
+ { -1674.15f, 1448.9f, 52.2871f },
+};
+
+
+
+
+/*######
+## Quest 14293 - Save Krennan Aranas
+######*/
+
+uint32 const pathSize1 = 7;
+G3D::Vector3 const greymanesHorsePath1[pathSize1] =
+{
+ { -1797.425f, 1396.941f, 20.07336f },
+ { -1788.675f, 1378.441f, 20.07336f },
+ { -1780.925f, 1368.941f, 20.07336f },
+ { -1767.425f, 1358.191f, 19.82336f },
+ { -1746.425f, 1358.691f, 20.07336f },
+ { -1726.175f, 1354.191f, 19.82336f },
+ { -1709.064f, 1348.535f, 19.78232f }
+};
+
+uint32 const pathSize2 = 13;
+G3D::Vector3 const greymanesHorsePath2[] =
+{
+ { -1664.807f, 1345.011f, 15.48499f },
+ { -1662.807f, 1354.511f, 15.48499f },
+ { -1667.307f, 1362.511f, 15.48499f },
+ { -1674.307f, 1363.761f, 15.48499f },
+ { -1686.057f, 1355.011f, 15.48499f },
+ { -1691.057f, 1347.261f, 15.48499f },
+ { -1705.807f, 1350.011f, 19.98499f },
+ { -1731.307f, 1360.011f, 19.98499f },
+ { -1744.807f, 1370.511f, 20.23499f },
+ { -1758.807f, 1389.511f, 19.98499f },
+ { -1768.307f, 1410.011f, 19.98499f },
+ { -1771.557f, 1423.011f, 19.98499f },
+ { -1770.955f, 1430.332f, 19.83506f }
+};
+
+
+#endif // GILNEAS_M_
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
index acfd4f33e3..e36eded90c 100644
--- a/src/server/scripts/Spells/spell_generic.cpp
+++ b/src/server/scripts/Spells/spell_generic.cpp
@@ -4502,6 +4502,7 @@ class spell_gen_projectile_goods : public SpellScriptLoader
SPELL_PROJECTILE_GOODS_4,
});
}
+
void HandleScriptEffect(SpellEffIndex /*effIndex*/)
{
uint32 spellId = 0;
@@ -4587,6 +4588,92 @@ class spell_gen_vengeance : public SpellScriptLoader
}
};
+enum GilneasPrison
+{
+ SPELL_SUMMON_RAVENOUS_WORGEN_1 = 66836,
+ SPELL_SUMMON_RAVENOUS_WORGEN_2 = 66925,
+
+ NPC_WORGEN_RUNT = 35456,
+};
+
+Position const WorgenRuntHousePos[] =
+{
+ // House Roof
+ { -1729.345f, 1526.495f, 55.47962f, 6.188943f },
+ { -1709.63f, 1527.464f, 56.86086f, 3.258752f },
+ { -1717.75f, 1513.727f, 55.47941f, 4.704845f },
+ { -1724.719f, 1526.731f, 55.66177f, 6.138319f },
+ { -1713.974f, 1526.625f, 56.21981f, 3.306195f },
+ { -1718.104f, 1524.071f, 55.81641f, 4.709816f },
+ { -1718.262f, 1518.557f, 55.55954f, 4.726997f },
+ // Cathdral Roof
+ { -1618.054f, 1489.644f, 68.45153f, 3.593639f },
+ { -1625.62f, 1487.033f, 71.27762f, 3.531424f },
+ { -1638.569f, 1489.736f, 68.55273f, 4.548815f },
+ { -1630.399f, 1481.66f, 71.41516f, 3.484555f },
+ { -1622.424f, 1483.882f, 67.67381f, 3.404875f },
+ { -1634.344f, 1491.3f, 70.10101f, 4.6248f },
+ { -1631.979f, 1491.585f, 71.11481f, 4.032866f },
+ { -1627.273f, 1499.689f, 68.89395f, 4.251452f },
+ { -1622.665f, 1489.818f, 71.03797f, 3.776179f },
+};
+
+class spell_gen_gilneas_prison_periodic_dummy : public SpellScriptLoader
+{
+ public:
+ spell_gen_gilneas_prison_periodic_dummy() : SpellScriptLoader("spell_gen_gilneas_prison_periodic_dummy") { }
+
+ class spell_gen_gilneas_prison_periodic_dummy_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_gen_gilneas_prison_periodic_dummy_SpellScript);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo(
+ {
+ SPELL_SUMMON_RAVENOUS_WORGEN_1, // House roof
+ SPELL_SUMMON_RAVENOUS_WORGEN_2, // Cathedral roof
+ });
+ }
+
+ void HandleDummy(SpellEffIndex /*effIndex*/)
+ {
+ if (Unit* caster = GetCaster())
+ {
+ switch (RAND(0, 1))
+ {
+ case 0:
+ caster->CastSpell(caster, SPELL_SUMMON_RAVENOUS_WORGEN_1, true);
+ for (uint8 i = 0; i < 7; i++)
+ if (Creature* runt = caster->SummonCreature(NPC_WORGEN_RUNT, WorgenRuntHousePos[i]))
+ runt->AI()->DoAction(i);
+ break;
+ case 1:
+ caster->CastSpell(caster, SPELL_SUMMON_RAVENOUS_WORGEN_2, true);
+ for (uint8 i = 7; i < 16; i++)
+ if (Creature* runt = caster->SummonCreature(NPC_WORGEN_RUNT, WorgenRuntHousePos[i]))
+ runt->AI()->DoAction(i);
+ if (RAND(0, 1) == 1)
+ for (uint8 i = 0; i < RAND(1, 3); i++)
+ if (Creature* runt = caster->SummonCreature(NPC_WORGEN_RUNT, WorgenRuntHousePos[i]))
+ runt->AI()->DoAction(i);
+ break;
+ }
+ }
+ }
+
+ void Register()
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_gen_gilneas_prison_periodic_dummy_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
+ }
+ };
+
+ SpellScript* GetSpellScript() const
+ {
+ return new spell_gen_gilneas_prison_periodic_dummy_SpellScript();
+ }
+};
+
void AddSC_generic_spell_scripts()
{
new spell_gen_absorb0_hitlimit1();
@@ -4692,4 +4779,5 @@ void AddSC_generic_spell_scripts()
new spell_gen_toxic_blow_dart();
new spell_gen_projectile_goods();
new spell_gen_vengeance();
+ new spell_gen_gilneas_prison_periodic_dummy();
}