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(); }