From 0093bb164e97e8469f0324b62de6995e9afea64f Mon Sep 17 00:00:00 2001 From: Naddley <64811442+Naddley@users.noreply.github.com> Date: Fri, 6 Feb 2026 16:59:48 +0100 Subject: [PATCH] Scripts/Westfall: Implement Quest: "Murder Was The Case That They Gave Me" (#31494) - re-spawn Hobo spawns with createobject2 - pooled spawns Co-Authored-By: funjoker <846960+funjoker@users.noreply.github.com> --- .../world/master/2026_02_06_01_world.sql | 311 ++++++++++++++++ .../scripts/EasternKingdoms/zone_westfall.cpp | 343 ++++++++++++++++++ 2 files changed, 654 insertions(+) create mode 100644 sql/updates/world/master/2026_02_06_01_world.sql diff --git a/sql/updates/world/master/2026_02_06_01_world.sql b/sql/updates/world/master/2026_02_06_01_world.sql new file mode 100644 index 0000000000..6c5403fde5 --- /dev/null +++ b/sql/updates/world/master/2026_02_06_01_world.sql @@ -0,0 +1,311 @@ +SET @CGUID := 224151; +SET @POOLID := 3000003; + +-- Creature +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+34; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `VerifiedBuild`) VALUES +(@CGUID+0, 42383, 0, 40, 916, '0', 0, 0, 0, 0, -9802.482421875, 965.734375, 29.21376228332519531, 2.53824472427368164, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- Transient (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: 79116 - Hobo Stick) +(@CGUID+1, 42384, 0, 40, 916, '0', 0, 0, 0, 0, -9848.3662109375, 974.65106201171875, 29.2137603759765625, 0.179344117641448974, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- Homeless Stormwind Citizen (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+2, 42384, 0, 40, 916, '0', 0, 0, 0, 0, -9816.28515625, 958.74481201171875, 29.2137603759765625, 3.333578824996948242, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- Homeless Stormwind Citizen (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+3, 42386, 0, 40, 916, '0', 0, 0, 0, 0, -9833.25, 962.9132080078125, 29.2137603759765625, 3.333578824996948242, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- Homeless Stormwind Citizen (Area: The Jansen Stead - Difficulty: 0) CreateObject2 +(@CGUID+4, 42386, 0, 40, 916, '0', 0, 0, 0, 0, -9794.455078125, 979.482666015625, 29.21376228332519531, 3.333578824996948242, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- Homeless Stormwind Citizen (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+5, 42383, 0, 40, 916, '0', 0, 0, 0, 0, -9819.09375, 990.03472900390625, 29.2137603759765625, 3.333578824996948242, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- Transient (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: 79116 - Hobo Stick) +(@CGUID+6, 42386, 0, 40, 916, '0', 0, 0, 0, 0, -9803.3486328125, 991.8975830078125, 30.4925079345703125, 3.333578824996948242, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- Homeless Stormwind Citizen (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+7, 42384, 0, 40, 916, '0', 0, 0, 0, 0, -9802.482421875, 965.734375, 29.21376228332519531, 3.333578824996948242, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- Homeless Stormwind Citizen (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+8, 42386, 0, 40, 916, '0', 0, 0, 0, 0, -9776.5205078125, 973.8975830078125, 29.21376228332519531, 3.333578824996948242, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- Homeless Stormwind Citizen (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+9, 42384, 0, 40, 916, '0', 0, 0, 0, 0, -9835.2861328125, 977.154541015625, 29.2137603759765625, 3.333578824996948242, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- Homeless Stormwind Citizen (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+10, 42383, 0, 40, 916, '0', 0, 0, 0, 0, -9848.3662109375, 974.65106201171875, 29.2137603759765625, 2.356264829635620117, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- Transient (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: 79116 - Hobo Stick) +(@CGUID+11, 42386, 0, 40, 916, '0', 0, 0, 0, 0, -9822.5869140625, 946.07293701171875, 29.2137603759765625, 6.213938713073730468, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- Homeless Stormwind Citizen (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+12, 42391, 0, 40, 916, '0', 0, 0, 0, 0, -9816.25, 974.34027099609375, 29.2137603759765625, 1.721275091171264648, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- West Plains Drifter (Area: The Jansen Stead - Difficulty: 0) CreateObject2 +(@CGUID+13, 42383, 0, 40, 916, '0', 0, 0, 0, 0, -9842.0693359375, 994.10589599609375, 29.2137603759765625, 3.333578824996948242, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- Transient (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: 79116 - Hobo Stick) +(@CGUID+14, 42391, 0, 40, 916, '0', 0, 0, 0, 0, -9776.5205078125, 973.8975830078125, 29.21376228332519531, 3.333578824996948242, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- West Plains Drifter (Area: The Jansen Stead - Difficulty: 0) CreateObject2 +(@CGUID+15, 42384, 0, 40, 916, '0', 0, 0, 0, 0, -9822.5869140625, 946.07293701171875, 29.2137603759765625, 6.24201822280883789, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- Homeless Stormwind Citizen (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+16, 42386, 0, 40, 916, '0', 0, 0, 0, 0, -9816.25, 974.34027099609375, 29.2137603759765625, 5.898527145385742187, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- Homeless Stormwind Citizen (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+17, 42391, 0, 40, 916, '0', 0, 0, 0, 0, -9833.25, 962.9132080078125, 29.2137603759765625, 3.333578824996948242, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- West Plains Drifter (Area: The Jansen Stead - Difficulty: 0) CreateObject2 +(@CGUID+18, 42386, 0, 40, 916, '0', 0, 0, 0, 0, -9842.0693359375, 994.10589599609375, 29.2137603759765625, 3.333578824996948242, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- Homeless Stormwind Citizen (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+19, 42383, 0, 40, 916, '0', 0, 0, 0, 0, -9835.2861328125, 977.154541015625, 29.2137603759765625, 3.333578824996948242, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- Transient (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: 79116 - Hobo Stick) +(@CGUID+20, 42383, 0, 40, 916, '0', 0, 0, 0, 0, -9776.5205078125, 973.8975830078125, 29.21376228332519531, 2.064164638519287109, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- Transient (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: 79116 - Hobo Stick) +(@CGUID+21, 42391, 0, 40, 916, '0', 0, 0, 0, 0, -9826.142578125, 1004.953125, 29.2137603759765625, 1.89637148380279541, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- West Plains Drifter (Area: The Jansen Stead - Difficulty: 0) CreateObject2 +(@CGUID+22, 42384, 0, 40, 916, '0', 0, 0, 0, 0, -9816.25, 974.34027099609375, 29.2137603759765625, 3.333578824996948242, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- Homeless Stormwind Citizen (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+23, 42386, 0, 40, 916, '0', 0, 0, 0, 0, -9848.3662109375, 974.65106201171875, 29.2137603759765625, 3.333578824996948242, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- Homeless Stormwind Citizen (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+24, 42391, 0, 40, 916, '0', 0, 0, 0, 0, -9822.5869140625, 946.07293701171875, 29.2137603759765625, 5.554660797119140625, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- West Plains Drifter (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+25, 42386, 0, 40, 916, '0', 0, 0, 0, 0, -9816.28515625, 958.74481201171875, 29.2137603759765625, 0.558619320392608642, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- Homeless Stormwind Citizen (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+26, 42383, 0, 40, 916, '0', 0, 0, 0, 0, -9826.142578125, 1004.953125, 29.2137603759765625, 3.333578824996948242, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- Transient (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: 79116 - Hobo Stick) +(@CGUID+27, 42386, 0, 40, 916, '0', 0, 0, 0, 0, -9819.09375, 990.03472900390625, 29.2137603759765625, 0.374936580657958984, 30, 8, 1, 1, 1, NULL, NULL, NULL, 64502), -- Homeless Stormwind Citizen (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+28, 42386, 0, 40, 916, '0', 0, 0, 0, 0, -9802.482421875, 965.734375, 29.21376228332519531, 5.549314022064208984, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- Homeless Stormwind Citizen (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+29, 42383, 0, 40, 916, '0', 0, 0, 0, 0, -9822.5869140625, 946.07293701171875, 29.2137603759765625, 3.044362545013427734, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- Transient (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: 79116 - Hobo Stick) +(@CGUID+30, 42383, 0, 40, 916, '0', 0, 0, 0, 0, -9803.3486328125, 991.8975830078125, 30.4925079345703125, 3.333578824996948242, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- Transient (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: 79116 - Hobo Stick) +(@CGUID+31, 42384, 0, 40, 916, '0', 0, 0, 0, 0, -9776.5205078125, 973.8975830078125, 29.21376228332519531, 3.539789199829101562, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- Homeless Stormwind Citizen (Area: The Jansen Stead - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+32, 42391, 0, 40, 916, '0', 0, 0, 0, 0, -9848.3662109375, 974.65106201171875, 29.2137603759765625, 3.333578824996948242, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- West Plains Drifter (Area: The Jansen Stead - Difficulty: 0) CreateObject2 +(@CGUID+33, 42391, 0, 40, 916, '0', 0, 0, 0, 0, -9794.455078125, 979.482666015625, 29.21376228332519531, 3.333578824996948242, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502), -- West Plains Drifter (Area: The Jansen Stead - Difficulty: 0) CreateObject2 +(@CGUID+34, 42384, 0, 40, 916, '0', 0, 0, 0, 0, -9842.0693359375, 994.10589599609375, 29.2137603759765625, 3.333578824996948242, 30, 8, 0, 1, 1, NULL, NULL, NULL, 64502); -- Homeless Stormwind Citizen (Area: The Jansen Stead - Difficulty: 0) CreateObject2 + +-- Delete old spawns +DELETE FROM `creature` WHERE `guid` IN (276255,276254,275865,290980,275866,275867,290972,275802,290971,275799,290970,290985,290982,290984,275868,290981,290974,290969,275869,290975,276028,276230); +DELETE FROM `creature_addon` WHERE `guid` IN (276255,276254,275865,290980,275866,275867,290972,275802,290971,275799,290970,290985,290982,290984,275868,290981,290974,290969,275869,290975,276028,276230); + +-- Template +UPDATE `creature_template` SET `unit_flags`=0x300, `unit_flags3`=0x80000 WHERE `entry`=42413; -- Ragamuffin +UPDATE `creature_template` SET `faction`=2280, `unit_flags`=0x0 WHERE `entry`=42391; -- West Plains Drifter +UPDATE `creature_template` SET `faction`=2280, `unit_flags`=0x0 WHERE `entry`=42383; -- Transient + +-- Difficulty +UPDATE `creature_template_difficulty` SET `StaticFlags1`=0x10000000, `VerifiedBuild`=64502 WHERE (`Entry`=42384 AND `DifficultyID`=0); -- 42384 (Homeless Stormwind Citizen) - CanSwim +UPDATE `creature_template_difficulty` SET `StaticFlags1`=0x10000000, `VerifiedBuild`=64502 WHERE (`Entry`=42413 AND `DifficultyID`=0); -- 42413 (Ragamuffin) - CanSwim +UPDATE `creature_template_difficulty` SET `StaticFlags1`=0x10000000, `VerifiedBuild`=64502 WHERE (`Entry`=42391 AND `DifficultyID`=0); -- 42391 (West Plains Drifter) - CanSwim +UPDATE `creature_template_difficulty` SET `StaticFlags1`=0x10000000, `VerifiedBuild`=64502 WHERE (`Entry`=42386 AND `DifficultyID`=0); -- 42386 (Homeless Stormwind Citizen) - CanSwim +UPDATE `creature_template_difficulty` SET `StaticFlags1`=0x10000000, `VerifiedBuild`=64502 WHERE (`Entry`=42383 AND `DifficultyID`=0); -- 42383 (Transient) - CanSwim + +-- Pools +DELETE FROM `pool_template` WHERE `entry` BETWEEN @POOLID+0 AND @POOLID+11; +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(@POOLID+0, 1, 'Westfall - The Jansen Stead - Hobo Pool 1'), +(@POOLID+1, 1, 'Westfall - The Jansen Stead - Hobo Pool 2'), +(@POOLID+2, 1, 'Westfall - The Jansen Stead - Hobo Pool 3'), +(@POOLID+3, 1, 'Westfall - The Jansen Stead - Hobo Pool 4'), +(@POOLID+4, 1, 'Westfall - The Jansen Stead - Hobo Pool 5'), +(@POOLID+5, 1, 'Westfall - The Jansen Stead - Hobo Pool 6'), +(@POOLID+6, 1, 'Westfall - The Jansen Stead - Hobo Pool 7'), +(@POOLID+7, 1, 'Westfall - The Jansen Stead - Hobo Pool 8'), +(@POOLID+8, 1, 'Westfall - The Jansen Stead - Hobo Pool 9'), +(@POOLID+9, 1, 'Westfall - The Jansen Stead - Hobo Pool 10'), +(@POOLID+10, 1, 'Westfall - The Jansen Stead - Hobo Pool 11'), +(@POOLID+11, 1, 'Westfall - The Jansen Stead - Hobo Pool 12'); + +DELETE FROM `pool_members` WHERE ((`spawnId` BETWEEN @CGUID+0 AND @CGUID+34) AND `type` = 0); +INSERT INTO `pool_members` (`type`, `spawnId`, `poolSpawnId`, `chance`, `description`) VALUES +(0, @CGUID+0, @POOLID+0, 0, 'Westfall - The Jansen Stead - Transient'), +(0, @CGUID+7, @POOLID+0, 0, 'Westfall - The Jansen Stead - Homeless Stormwind Citizen'), +(0, @CGUID+28, @POOLID+0, 0, 'Westfall - The Jansen Stead - Homeless Stormwind Citizen'), +(0, @CGUID+1, @POOLID+1, 0, 'Westfall - The Jansen Stead - Homeless Stormwind Citizen'), +(0, @CGUID+10, @POOLID+1, 0, 'Westfall - The Jansen Stead - Transient'), +(0, @CGUID+23, @POOLID+1, 0, 'Westfall - The Jansen Stead - Homeless Stormwind Citizen'), +(0, @CGUID+32, @POOLID+1, 0, 'Westfall - The Jansen Stead - West Plains Drifter'), +(0, @CGUID+2, @POOLID+2, 0, 'Westfall - The Jansen Stead - Homeless Stormwind Citizen'), +(0, @CGUID+25, @POOLID+2, 0, 'Westfall - The Jansen Stead - Homeless Stormwind Citizen'), +(0, @CGUID+3, @POOLID+3, 0, 'Westfall - The Jansen Stead - Homeless Stormwind Citizen'), +(0, @CGUID+17, @POOLID+3, 0, 'Westfall - The Jansen Stead - Homeless Stormwind Citizen'), +(0, @CGUID+4, @POOLID+4, 0, 'Westfall - The Jansen Stead - Homeless Stormwind Citizen'), +(0, @CGUID+33, @POOLID+4, 0, 'Westfall - The Jansen Stead - West Plains Drifter'), +(0, @CGUID+5, @POOLID+5, 0, 'Westfall - The Jansen Stead - Transient'), +(0, @CGUID+27, @POOLID+5, 0, 'Westfall - The Jansen Stead - Homeless Stormwind Citizen'), +(0, @CGUID+6, @POOLID+6, 0, 'Westfall - The Jansen Stead - Homeless Stormwind Citizen'), +(0, @CGUID+30, @POOLID+6, 0, 'Westfall - The Jansen Stead - Transient'), +(0, @CGUID+8, @POOLID+7, 0, 'Westfall - The Jansen Stead - Homeless Stormwind Citizen'), +(0, @CGUID+14, @POOLID+7, 0, 'Westfall - The Jansen Stead - West Plains Drifter'), +(0, @CGUID+20, @POOLID+7, 0, 'Westfall - The Jansen Stead - Transient'), +(0, @CGUID+31, @POOLID+7, 0, 'Westfall - The Jansen Stead - Homeless Stormwind Citizen'), +(0, @CGUID+9, @POOLID+8, 0, 'Westfall - The Jansen Stead - Homeless Stormwind Citizen'), +(0, @CGUID+19, @POOLID+8, 0, 'Westfall - The Jansen Stead - Transient'), +(0, @CGUID+12, @POOLID+9, 0, 'Westfall - The Jansen Stead - West Plains Drifter'), +(0, @CGUID+16, @POOLID+9, 0, 'Westfall - The Jansen Stead - Homeless Stormwind Citizen'), +(0, @CGUID+22, @POOLID+9, 0, 'Westfall - The Jansen Stead - Homeless Stormwind Citizen'), +(0, @CGUID+11, @POOLID+10, 0, 'Westfall - The Jansen Stead - Homeless Stormwind Citizen'), +(0, @CGUID+15, @POOLID+10, 0, 'Westfall - The Jansen Stead - Homeless Stormwind Citizen'), +(0, @CGUID+24, @POOLID+10, 0, 'Westfall - The Jansen Stead - West Plains Drifter'), +(0, @CGUID+29, @POOLID+10, 0, 'Westfall - The Jansen Stead - Transient'), +(0, @CGUID+13, @POOLID+11, 0, 'Westfall - The Jansen Stead - Transient'), +(0, @CGUID+18, @POOLID+11, 0, 'Westfall - The Jansen Stead - Homeless Stormwind Citizen'), +(0, @CGUID+34, @POOLID+11, 0, 'Westfall - The Jansen Stead - Homeless Stormwind Citizen'), +(0, @CGUID+21, @POOLID+12, 0, 'Westfall - The Jansen Stead - West Plains Drifter'), +(0, @CGUID+26, @POOLID+12, 0, 'Westfall - The Jansen Stead - Transient'); + +-- SpellScriptNames +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_westfall_summon_ragamuffin_looter', 'spell_westfall_aggro_hobo'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(79169, 'spell_westfall_summon_ragamuffin_looter'), +(79168, 'spell_westfall_aggro_hobo'); + +UPDATE `creature` SET `ScriptName` = 'npc_westfall_hobo_witness' WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+34; + +-- Creature Ragamuffin 42413 SAI +SET @ENTRY := 42413; +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, 54, 0, 100, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, "On just summoned - Self: Look at Owner/Summoner // "), +(@ENTRY, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 67, 0, 2500, 2500, 0, 0, 100, 1, 0, 0, 0, 0, 0, 0, 0, " Linked - Trigger timed event #0 in 2500 - 2500 ms with 100% chance // "), +(@ENTRY, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 67, 1, 10000, 10000, 0, 0, 100, 1, 0, 0, 0, 0, 0, 0, 0, " Linked - Trigger timed event #1 in 10000 - 10000 ms with 100% chance // "), +(@ENTRY, 0, 3, 4, 59, 0, 100, 0, 0, 0, 0, 0, 125, 2, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "On timed event 0 triggered - Triggers Events randomly with Timed EventId between 2 and 5 // "), +(@ENTRY, 0, 4, 0, 61, 0, 100, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.5, 0, 0, " Linked - Use target_x, target_y, target_z, With target_type=1 // "), +(@ENTRY, 0, 5, 0, 59, 0, 100, 0, 1, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "On timed event 1 triggered - Self: Despawn instantly // "), +(@ENTRY, 0, 6, 0, 34, 0, 100, 0, 0, 0, 0, 0, 128, 649, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "On movement inform - Self: Plays Anim with ID 649 // "), +(@ENTRY, 0, 7, 0, 59, 0, 100, 0, 2, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, "On timed event 2 triggered - Owner/Summoner: Talk 0 // "); + +-- Gossip +DELETE FROM `creature_template_gossip` WHERE (`MenuID`=11635 AND `CreatureID` IN (42391,42386)); +INSERT INTO `creature_template_gossip` (`CreatureID`, `MenuID`, `VerifiedBuild`) VALUES +(42391, 11635, 64502), -- West Plains Drifter +(42386, 11635, 64502); -- Homeless Stormwind Citizen + +UPDATE `creature_template_gossip` SET `VerifiedBuild`=64502 WHERE (`MenuID`=11635 AND `CreatureID` IN (42384,42383)); + +UPDATE `gossip_menu` SET `VerifiedBuild`=64502 WHERE (`MenuID`=11635 AND `TextID`=16250); + +UPDATE `gossip_menu_option` SET `GossipOptionID`=38008, `BoxBroadcastTextID`=42373, `VerifiedBuild`=64502 WHERE (`MenuID`=11635 AND `OptionID`=1); +UPDATE `gossip_menu_option` SET `GossipOptionID`=38009, `VerifiedBuild`=64502 WHERE (`MenuID`=11635 AND `OptionID`=0); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=11635 AND `SourceEntry`=0 AND `SourceId`=0; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(15, 11635, 0, 0, 0, 9, 0, 26209, 0, 0, 0, 0, 0, '', 'Show gossip menu 11635 option id 0 if quest Murder Was The Case That They Gave Me has been taken.'), +(15, 11635, 0, 0, 0, 28, 0, 26209, 0, 0, 1, 0, 0, '', 'Show gossip menu 11635 option id 0 if quest Murder Was The Case That They Gave Me has not been completed.'); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=11635 AND `SourceEntry`=1 AND `SourceId`=0; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(15, 11635, 1, 0, 0, 9, 0, 26209, 0, 0, 0, 0, 0, '', 'Show gossip menu 11635 option id 1 if quest Murder Was The Case That They Gave Me has been taken.'), +(15, 11635, 1, 0, 0, 28, 0, 26209, 0, 0, 1, 0, 0, '', 'Show gossip menu 11635 option id 1 if quest Murder Was The Case That They Gave Me has not been completed.'); + +-- Creature +DELETE FROM `creature_text` WHERE `CreatureID` IN (42386, 42384, 42391, 42383, 42413) AND `GroupID` IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10); +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `comment`) VALUES +-- CLUES +(42386, 0, 0, 'Listen, $g pal:lady;, I don\'t want any trouble, ok? I didn\'t see who murdered \'em, but I sure heard it! Lot of yelling. Human voices... you dig? Now get out of here before I change my mind about beating you up and takin\' your shoes.', 12, 0, 100, 396, 0, 0, 42380, 'Homeless Stormwind Citizen to Player'), +(42386, 1, 0, 'I didn\'t see who killed \'em, $g bub:lady;, but I got a whiff. Smelled rich, kinda like you. Damn shame too. Furlbrows were a fixture around here. Nice people, always willin\' to share a meal or a patch of dirt.', 12, 0, 100, 396, 0, 0, 42381, 'Homeless Stormwind Citizen to Player'), +(42386, 2, 0, 'Who killed the Furlbrows? I\'ll tell you who killed the Furlbrows: KING VARIAN WRYNN, THAT\'S WHO! And he\'s killin\' the rest of us too. One bum at a time. The only thing I can tell you is that I saw some gnolls leavin\' the place a few hours before the law arrived.', 12, 0, 100, 5, 0, 0, 42382, 'Homeless Stormwind Citizen to Player'), +(42386, 3, 0, 'Between you, me, and the tree, murlocs killed the Furlbrows. Yep, saw \'em with my own two eyes. Think they\'d been casin\' the joint for days, maybe months. They left in a hurry once they got wind of \"Johnny Law\" and the idiot brigade over there...', 12, 0, 100, 273, 0, 0, 42383, 'Homeless Stormwind Citizen to Player'), +(42384, 0, 0, 'Listen, $g pal:lady;, I don\'t want any trouble, ok? I didn\'t see who murdered \'em, but I sure heard it! Lot of yelling. Human voices... you dig? Now get out of here before I change my mind about beating you up and takin\' your shoes.', 12, 0, 100, 396, 0, 0, 42380, 'Homeless Stormwind Citizen to Player'), +(42384, 1, 0, 'I didn\'t see who killed \'em, $g bub:lady;, but I got a whiff. Smelled rich, kinda like you. Damn shame too. Furlbrows were a fixture around here. Nice people, always willin\' to share a meal or a patch of dirt.', 12, 0, 100, 396, 0, 0, 42381, 'Homeless Stormwind Citizen to Player'), +(42384, 2, 0, 'Who killed the Furlbrows? I\'ll tell you who killed the Furlbrows: KING VARIAN WRYNN, THAT\'S WHO! And he\'s killin\' the rest of us too. One bum at a time. The only thing I can tell you is that I saw some gnolls leavin\' the place a few hours before the law arrived.', 12, 0, 100, 5, 0, 0, 42382, 'Homeless Stormwind Citizen to Player'), +(42384, 3, 0, 'Between you, me, and the tree, murlocs killed the Furlbrows. Yep, saw \'em with my own two eyes. Think they\'d been casin\' the joint for days, maybe months. They left in a hurry once they got wind of \"Johnny Law\" and the idiot brigade over there...', 12, 0, 100, 273, 0, 0, 42383, 'Homeless Stormwind Citizen to Player'), +(42391, 0, 0, 'Listen, $g pal:lady;, I don\'t want any trouble, ok? I didn\'t see who murdered \'em, but I sure heard it! Lot of yelling. Human voices... you dig? Now get out of here before I change my mind about beating you up and takin\' your shoes.', 12, 0, 100, 396, 0, 0, 42380, 'West Plains Drifter to Player'), +(42391, 1, 0, 'I didn\'t see who killed \'em, $g bub:lady;, but I got a whiff. Smelled rich, kinda like you. Damn shame too. Furlbrows were a fixture around here. Nice people, always willin\' to share a meal or a patch of dirt.', 12, 0, 100, 396, 0, 0, 42381, 'West Plains Drifter to Player'), +(42391, 2, 0, 'Who killed the Furlbrows? I\'ll tell you who killed the Furlbrows: KING VARIAN WRYNN, THAT\'S WHO! And he\'s killin\' the rest of us too. One bum at a time. The only thing I can tell you is that I saw some gnolls leavin\' the place a few hours before the law arrived.', 12, 0, 100, 5, 0, 0, 42382, 'West Plains Drifter to Player'), +(42391, 3, 0, 'Between you, me, and the tree, murlocs killed the Furlbrows. Yep, saw \'em with my own two eyes. Think they\'d been casin\' the joint for days, maybe months. They left in a hurry once they got wind of \"Johnny Law\" and the idiot brigade over there...', 12, 0, 100, 273, 0, 0, 42383, 'West Plains Drifter to Player'), +(42383, 0, 0, 'Listen, $g pal:lady;, I don\'t want any trouble, ok? I didn\'t see who murdered \'em, but I sure heard it! Lot of yelling. Human voices... you dig? Now get out of here before I change my mind about beating you up and takin\' your shoes.', 12, 0, 100, 396, 0, 0, 42380, 'Transient to Player'), +(42383, 1, 0, 'I didn\'t see who killed \'em, $g bub:lady;, but I got a whiff. Smelled rich, kinda like you. Damn shame too. Furlbrows were a fixture around here. Nice people, always willin\' to share a meal or a patch of dirt.', 12, 0, 100, 396, 0, 0, 42381, 'Transient to Player'), +(42383, 2, 0, 'Who killed the Furlbrows? I\'ll tell you who killed the Furlbrows: KING VARIAN WRYNN, THAT\'S WHO! And he\'s killin\' the rest of us too. One bum at a time. The only thing I can tell you is that I saw some gnolls leavin\' the place a few hours before the law arrived.', 12, 0, 100, 5, 0, 0, 42382, 'Transient to Player'), +(42383, 3, 0, 'Between you, me, and the tree, murlocs killed the Furlbrows. Yep, saw \'em with my own two eyes. Think they\'d been casin\' the joint for days, maybe months. They left in a hurry once they got wind of \"Johnny Law\" and the idiot brigade over there...', 12, 0, 100, 273, 0, 0, 42383, 'Transient to Player'), +-- AGGRO ON CONVINCE BRIBE +(42386, 4, 0, 'Judgment day comes! The brotherhood will be reborn!', 12, 7, 100, 0, 0, 0, 42379, 'Homeless Stormwind Citizen to Player'), +(42386, 4, 1, 'Now you\'ve gone and done it! TIME FOR THE FIST!', 12, 7, 100, 0, 0, 0, 42389, 'Homeless Stormwind Citizen to Player'), +(42386, 4, 2, 'You\'ll get nothing out of me!', 12, 7, 100, 0, 0, 0, 42378, 'Homeless Stormwind Citizen to Player'), +(42386, 4, 3, 'Livin\' like an animal is hard enough without your insults!', 12, 7, 100, 0, 0, 0, 42386, 'Homeless Stormwind Citizen to Player'), +(42386, 4, 4, 'I ain\'t tellin\' you a damn thing!', 12, 7, 100, 0, 0, 0, 42385, 'Homeless Stormwind Citizen to Player'), +(42386, 4, 5, 'Maybe I can sell your liver for some gold.', 12, 7, 100, 0, 0, 0, 42387, 'Homeless Stormwind Citizen to Player'), +(42386, 4, 6, 'You want my foot in your front or in your rear? Make the call.', 12, 7, 100, 0, 0, 0, 42390, 'Homeless Stormwind Citizen to Player'), +(42386, 4, 7, 'They died of natural causes...', 12, 7, 100, 0, 0, 0, 42377, 'Homeless Stormwind Citizen to Player'), +(42386, 4, 8, 'You rich punks are all the same!', 12, 7, 100, 0, 0, 0, 42384, 'Homeless Stormwind Citizen to Player'), +(42386, 4, 9, 'You can\'t buy me! DIE!', 12, 7, 100, 0, 0, 0, 42374, 'Homeless Stormwind Citizen to Player'), +(42384, 4, 0, 'Judgment day comes! The brotherhood will be reborn!', 12, 7, 100, 0, 0, 0, 42379, 'Homeless Stormwind Citizen to Player'), +(42384, 4, 1, 'Now you\'ve gone and done it! TIME FOR THE FIST!', 12, 7, 100, 0, 0, 0, 42389, 'Homeless Stormwind Citizen to Player'), +(42384, 4, 2, 'You\'ll get nothing out of me!', 12, 7, 100, 0, 0, 0, 42378, 'Homeless Stormwind Citizen to Player'), +(42384, 4, 3, 'Livin\' like an animal is hard enough without your insults!', 12, 7, 100, 0, 0, 0, 42386, 'Homeless Stormwind Citizen to Player'), +(42384, 4, 4, 'I ain\'t tellin\' you a damn thing!', 12, 7, 100, 0, 0, 0, 42385, 'Homeless Stormwind Citizen to Player'), +(42384, 4, 5, 'Maybe I can sell your liver for some gold.', 12, 7, 100, 0, 0, 0, 42387, 'Homeless Stormwind Citizen to Player'), +(42384, 4, 6, 'You want my foot in your front or in your rear? Make the call.', 12, 7, 100, 0, 0, 0, 42390, 'Homeless Stormwind Citizen to Player'), +(42384, 4, 7, 'They died of natural causes...', 12, 7, 100, 0, 0, 0, 42377, 'Homeless Stormwind Citizen to Player'), +(42384, 4, 8, 'You rich punks are all the same!', 12, 7, 100, 0, 0, 0, 42384, 'Homeless Stormwind Citizen to Player'), +(42384, 4, 9, 'You can\'t buy me! DIE!', 12, 7, 100, 0, 0, 0, 42374, 'Homeless Stormwind Citizen to Player'), +(42391, 4, 0, 'Judgment day comes! The brotherhood will be reborn!', 12, 7, 100, 0, 0, 0, 42379, 'West Plains Drifter to Player'), +(42391, 4, 1, 'Now you\'ve gone and done it! TIME FOR THE FIST!', 12, 7, 100, 0, 0, 0, 42389, 'West Plains Drifter to Player'), +(42391, 4, 2, 'You\'ll get nothing out of me!', 12, 7, 100, 0, 0, 0, 42378, 'West Plains Drifter to Player'), +(42391, 4, 3, 'Livin\' like an animal is hard enough without your insults!', 12, 7, 100, 0, 0, 0, 42386, 'West Plains Drifter to Player'), +(42391, 4, 4, 'I ain\'t tellin\' you a damn thing!', 12, 7, 100, 0, 0, 0, 42385, 'West Plains Drifter to Player'), +(42391, 4, 5, 'Maybe I can sell your liver for some gold.', 12, 7, 100, 0, 0, 0, 42387, 'West Plains Drifter to Player'), +(42391, 4, 6, 'You want my foot in your front or in your rear? Make the call.', 12, 7, 100, 0, 0, 0, 42390, 'West Plains Drifter to Player'), +(42391, 4, 7, 'They died of natural causes...', 12, 7, 100, 0, 0, 0, 42377, 'West Plains Drifter to Player'), +(42391, 4, 8, 'You rich punks are all the same!', 12, 7, 100, 0, 0, 0, 42384, 'West Plains Drifter to Player'), +(42391, 4, 9, 'You can\'t buy me! DIE!', 12, 7, 100, 0, 0, 0, 42374, 'West Plains Drifter to Player'), +(42383, 4, 0, 'Judgment day comes! The brotherhood will be reborn!', 12, 7, 100, 0, 0, 0, 42379, 'Transient to Player'), +(42383, 4, 1, 'Now you\'ve gone and done it! TIME FOR THE FIST!', 12, 7, 100, 0, 0, 0, 42389, 'Transient to Player'), +(42383, 4, 2, 'You\'ll get nothing out of me!', 12, 7, 100, 0, 0, 0, 42378, 'Transient to Player'), +(42383, 4, 3, 'Livin\' like an animal is hard enough without your insults!', 12, 7, 100, 0, 0, 0, 42386, 'Transient to Player'), +(42383, 4, 4, 'I ain\'t tellin\' you a damn thing!', 12, 7, 100, 0, 0, 0, 42385, 'Transient to Player'), +(42383, 4, 5, 'Maybe I can sell your liver for some gold.', 12, 7, 100, 0, 0, 0, 42387, 'Transient to Player'), +(42383, 4, 6, 'You want my foot in your front or in your rear? Make the call.', 12, 7, 100, 0, 0, 0, 42390, 'Transient to Player'), +(42383, 4, 7, 'They died of natural causes...', 12, 7, 100, 0, 0, 0, 42377, 'Transient to Player'), +(42383, 4, 8, 'You rich punks are all the same!', 12, 7, 100, 0, 0, 0, 42384, 'Transient to Player'), +(42383, 4, 9, 'You can\'t buy me! DIE!', 12, 7, 100, 0, 0, 0, 42374, 'Transient to Player'), +-- AGGRO ON CONVINCE TALK +(42386, 5, 0, 'Judgment day comes! The brotherhood will be reborn!', 12, 7, 100, 0, 0, 0, 42379, 'Homeless Stormwind Citizen to Player'), +(42386, 5, 1, 'Now you\'ve gone and done it! TIME FOR THE FIST!', 12, 7, 100, 0, 0, 0, 42389, 'Homeless Stormwind Citizen to Player'), +(42386, 5, 2, 'You\'ll get nothing out of me!', 12, 7, 100, 0, 0, 0, 42378, 'Homeless Stormwind Citizen to Player'), +(42386, 5, 3, 'Livin\' like an animal is hard enough without your insults!', 12, 7, 100, 0, 0, 0, 42386, 'Homeless Stormwind Citizen to Player'), +(42386, 5, 4, 'I ain\'t tellin\' you a damn thing!', 12, 7, 100, 0, 0, 0, 42385, 'Homeless Stormwind Citizen to Player'), +(42386, 5, 5, 'Maybe I can sell your liver for some gold.', 12, 7, 100, 0, 0, 0, 42387, 'Homeless Stormwind Citizen to Player'), +(42386, 5, 6, 'You want my foot in your front or in your rear? Make the call.', 12, 7, 100, 0, 0, 0, 42390, 'Homeless Stormwind Citizen to Player'), +(42386, 5, 7, 'They died of natural causes...', 12, 7, 100, 0, 0, 0, 42377, 'Homeless Stormwind Citizen to Player'), +(42386, 5, 8, 'You rich punks are all the same!', 12, 7, 100, 0, 0, 0, 42384, 'Homeless Stormwind Citizen to Player'), +(42386, 5, 9, 'I TOLD YOU TO PAY UP, PAL!', 12, 7, 100, 0, 0, 0, 42388, 'Homeless Stormwind Citizen to Player'), +(42384, 5, 0, 'Judgment day comes! The brotherhood will be reborn!', 12, 7, 100, 0, 0, 0, 42379, 'Homeless Stormwind Citizen to Player'), +(42384, 5, 1, 'Now you\'ve gone and done it! TIME FOR THE FIST!', 12, 7, 100, 0, 0, 0, 42389, 'Homeless Stormwind Citizen to Player'), +(42384, 5, 2, 'You\'ll get nothing out of me!', 12, 7, 100, 0, 0, 0, 42378, 'Homeless Stormwind Citizen to Player'), +(42384, 5, 3, 'Livin\' like an animal is hard enough without your insults!', 12, 7, 100, 0, 0, 0, 42386, 'Homeless Stormwind Citizen to Player'), +(42384, 5, 4, 'I ain\'t tellin\' you a damn thing!', 12, 7, 100, 0, 0, 0, 42385, 'Homeless Stormwind Citizen to Player'), +(42384, 5, 5, 'Maybe I can sell your liver for some gold.', 12, 7, 100, 0, 0, 0, 42387, 'Homeless Stormwind Citizen to Player'), +(42384, 5, 6, 'You want my foot in your front or in your rear? Make the call.', 12, 7, 100, 0, 0, 0, 42390, 'Homeless Stormwind Citizen to Player'), +(42384, 5, 7, 'They died of natural causes...', 12, 7, 100, 0, 0, 0, 42377, 'Homeless Stormwind Citizen to Player'), +(42384, 5, 8, 'You rich punks are all the same!', 12, 7, 100, 0, 0, 0, 42384, 'Homeless Stormwind Citizen to Player'), +(42384, 5, 9, 'I TOLD YOU TO PAY UP, PAL!', 12, 7, 100, 0, 0, 0, 42388, 'Homeless Stormwind Citizen to Player'), +(42391, 5, 0, 'Judgment day comes! The brotherhood will be reborn!', 12, 7, 100, 0, 0, 0, 42379, 'West Plains Drifter to Player'), +(42391, 5, 1, 'Now you\'ve gone and done it! TIME FOR THE FIST!', 12, 7, 100, 0, 0, 0, 42389, 'West Plains Drifter to Player'), +(42391, 5, 2, 'You\'ll get nothing out of me!', 12, 7, 100, 0, 0, 0, 42378, 'West Plains Drifter to Player'), +(42391, 5, 3, 'Livin\' like an animal is hard enough without your insults!', 12, 7, 100, 0, 0, 0, 42386, 'West Plains Drifter to Player'), +(42391, 5, 4, 'I ain\'t tellin\' you a damn thing!', 12, 7, 100, 0, 0, 0, 42385, 'West Plains Drifter to Player'), +(42391, 5, 5, 'Maybe I can sell your liver for some gold.', 12, 7, 100, 0, 0, 0, 42387, 'West Plains Drifter to Player'), +(42391, 5, 6, 'You want my foot in your front or in your rear? Make the call.', 12, 7, 100, 0, 0, 0, 42390, 'West Plains Drifter to Player'), +(42391, 5, 7, 'They died of natural causes...', 12, 7, 100, 0, 0, 0, 42377, 'West Plains Drifter to Player'), +(42391, 5, 8, 'You rich punks are all the same!', 12, 7, 100, 0, 0, 0, 42384, 'West Plains Drifter to Player'), +(42391, 5, 9, 'I TOLD YOU TO PAY UP, PAL!', 12, 7, 100, 0, 0, 0, 42388, 'West Plains Drifter'), +(42383, 5, 0, 'Judgment day comes! The brotherhood will be reborn!', 12, 7, 100, 0, 0, 0, 42379, 'Transient to Player'), +(42383, 5, 1, 'Now you\'ve gone and done it! TIME FOR THE FIST!', 12, 7, 100, 0, 0, 0, 42389, 'Transient to Player'), +(42383, 5, 2, 'You\'ll get nothing out of me!', 12, 7, 100, 0, 0, 0, 42378, 'Transient to Player'), +(42383, 5, 3, 'Livin\' like an animal is hard enough without your insults!', 12, 7, 100, 0, 0, 0, 42386, 'Transient to Player'), +(42383, 5, 4, 'I ain\'t tellin\' you a damn thing!', 12, 7, 100, 0, 0, 0, 42385, 'Transient to Player'), +(42383, 5, 5, 'Maybe I can sell your liver for some gold.', 12, 7, 100, 0, 0, 0, 42387, 'Transient to Player'), +(42383, 5, 6, 'You want my foot in your front or in your rear? Make the call.', 12, 7, 100, 0, 0, 0, 42390, 'Transient to Player'), +(42383, 5, 7, 'They died of natural causes...', 12, 7, 100, 0, 0, 0, 42377, 'Transient to Player'), +(42383, 5, 8, 'You rich punks are all the same!', 12, 7, 100, 0, 0, 0, 42384, 'Transient to Player'), +(42383, 5, 9, 'I TOLD YOU TO PAY UP, PAL!', 12, 7, 100, 0, 0, 0, 42388, 'Transient to Player'), +-- EVENT +(42386, 6, 0, 'Looks like we\'ll be eating shoe leather for dinner again.', 12, 7, 100, 396, 0, 0, 42358, 'Homeless Stormwind Citizen'), +(42386, 6, 1, 'HAHAHAH! Good one, Mr. Penguin! GOOD ONE!', 12, 7, 100, 153, 0, 0, 42354, 'Homeless Stormwind Citizen'), +(42386, 6, 2, 'What happened to me? I used to be the king of Stormwind!', 12, 7, 100, 15, 0, 0, 42357, 'Homeless Stormwind Citizen'), +(42386, 6, 3, 'I don\'t think I\'m gonna make it...', 12, 7, 100, 18, 0, 0, 42356, 'Homeless Stormwind Citizen'), +(42386, 6, 4, 'Get off my land!', 12, 7, 100, 397, 0, 0, 42355, 'Homeless Stormwind Citizen'), +(42386, 6, 5, 'I miss being robbed by the Defias. At least they\'d leave you a little something to eat from time to time.', 12, 7, 100, 396, 0, 0, 42360, 'Homeless Stormwind Citizen'), +(42386, 6, 6, 'I\'m starving!', 12, 7, 100, 5, 0, 0, 42353, 'Homeless Stormwind Citizen'), +(42386, 6, 7, 'I wonder if it\'s possible to eat rocks? Got plenty of rocks around here. Just imagine it! I\'d be the richest person in the world for making that discovery!', 12, 7, 100, 4, 0, 0, 42359, 'Homeless Stormwind Citizen'), +(42386, 7, 0, 'JACKPOT!', 12, 7, 100, 5, 0, 0, 42351, 'Homeless Stormwind Citizen'), +(42386, 8, 0, 'Looks like I found us a savory and clean piece of dirt! Tonight we eat like kings, Mr. Penguin! Of course I\'ll share it with you! You\'re my best friend!', 12, 7, 100, 18, 0, 0, 42352, 'Transient'), +(42386, 9, 0, 'HEY! HEY YOU! GET OFF MY PROPERTY!', 12, 7, 100, 22, 0, 0, 42361, 'Homeless Stormwind Citizen'), +(42386, 10, 0, '%s attempts to run away in fear!', 16, 0, 100, 0, 0, 0, 1150, 'Homeless Stormwind Citizen'), +(42384, 6, 0, 'Looks like we\'ll be eating shoe leather for dinner again.', 12, 7, 100, 396, 0, 0, 42358, 'Homeless Stormwind Citizen'), +(42384, 6, 1, 'HAHAHAH! Good one, Mr. Penguin! GOOD ONE!', 12, 7, 100, 153, 0, 0, 42354, 'Homeless Stormwind Citizen'), +(42384, 6, 2, 'What happened to me? I used to be the king of Stormwind!', 12, 7, 100, 15, 0, 0, 42357, 'Homeless Stormwind Citizen'), +(42384, 6, 3, 'I don\'t think I\'m gonna make it...', 12, 7, 100, 18, 0, 0, 42356, 'Homeless Stormwind Citizen'), +(42384, 6, 4, 'Get off my land!', 12, 7, 100, 397, 0, 0, 42355, 'Homeless Stormwind Citizen'), +(42384, 6, 5, 'I miss being robbed by the Defias. At least they\'d leave you a little something to eat from time to time.', 12, 7, 100, 396, 0, 0, 42360, 'Homeless Stormwind Citizen'), +(42384, 6, 6, 'I\'m starving!', 12, 7, 100, 5, 0, 0, 42353, 'Homeless Stormwind Citizen'), +(42384, 6, 7, 'I wonder if it\'s possible to eat rocks? Got plenty of rocks around here. Just imagine it! I\'d be the richest person in the world for making that discovery!', 12, 7, 100, 4, 0, 0, 42359, 'Homeless Stormwind Citizen'), +(42384, 7, 0, 'JACKPOT!', 12, 7, 100, 5, 0, 0, 42351, 'Homeless Stormwind Citizen'), +(42384, 8, 0, 'Looks like I found us a savory and clean piece of dirt! Tonight we eat like kings, Mr. Penguin! Of course I\'ll share it with you! You\'re my best friend!', 12, 7, 100, 18, 0, 0, 42352, 'Homeless Stormwind Citizen'), +(42384, 9, 0, 'HEY! HEY YOU! GET OFF MY PROPERTY!', 12, 7, 100, 22, 0, 0, 42361, 'Homeless Stormwind Citizen'), +(42384, 10, 0, '%s attempts to run away in fear!', 16, 0, 100, 0, 0, 0, 1150, 'Homeless Stormwind Citizen'), +(42391, 6, 0, 'Looks like we\'ll be eating shoe leather for dinner again.', 12, 7, 100, 396, 0, 0, 42358, 'West Plains Drifter'), +(42391, 6, 1, 'HAHAHAH! Good one, Mr. Penguin! GOOD ONE!', 12, 7, 100, 153, 0, 0, 42354, 'West Plains Drifter'), +(42391, 6, 2, 'What happened to me? I used to be the king of Stormwind!', 12, 7, 100, 15, 0, 0, 42357, 'West Plains Drifter'), +(42391, 6, 3, 'I don\'t think I\'m gonna make it...', 12, 7, 100, 18, 0, 0, 42356, 'West Plains Drifter'), +(42391, 6, 4, 'Get off my land!', 12, 7, 100, 397, 0, 0, 42355, 'West Plains Drifter'), +(42391, 6, 5, 'I miss being robbed by the Defias. At least they\'d leave you a little something to eat from time to time.', 12, 7, 100, 396, 0, 0, 42360, 'West Plains Drifter'), +(42391, 6, 6, 'I\'m starving!', 12, 7, 100, 5, 0, 0, 42353, 'West Plains Drifter'), +(42391, 6, 7, 'I wonder if it\'s possible to eat rocks? Got plenty of rocks around here. Just imagine it! I\'d be the richest person in the world for making that discovery!', 12, 7, 100, 4, 0, 0, 42359, 'West Plains Drifter'), +(42391, 7, 0, 'JACKPOT!', 12, 7, 100, 5, 0, 0, 42351, 'West Plains Drifter'), +(42391, 8, 0, 'Looks like I found us a savory and clean piece of dirt! Tonight we eat like kings, Mr. Penguin! Of course I\'ll share it with you! You\'re my best friend!', 12, 7, 100, 18, 0, 0, 42352, 'West Plains Drifter'), +(42391, 9, 0, 'HEY! HEY YOU! GET OFF MY PROPERTY!', 12, 7, 100, 22, 0, 0, 42361, 'West Plains Drifter'), +(42391, 10, 0, '%s attempts to run away in fear!', 16, 0, 100, 0, 0, 0, 1150, 'West Plains Drifter'), +(42383, 6, 0, 'Looks like we\'ll be eating shoe leather for dinner again.', 12, 7, 100, 396, 0, 0, 42358, 'Transient'), +(42383, 6, 1, 'HAHAHAH! Good one, Mr. Penguin! GOOD ONE!', 12, 7, 100, 153, 0, 0, 42354, 'Transient'), +(42383, 6, 2, 'What happened to me? I used to be the king of Stormwind!', 12, 7, 100, 15, 0, 0, 42357, 'Transient'), +(42383, 6, 3, 'I don\'t think I\'m gonna make it...', 12, 7, 100, 18, 0, 0, 42356, 'Transient'), +(42383, 6, 4, 'Get off my land!', 12, 7, 100, 397, 0, 0, 42355, 'Transient'), +(42383, 6, 5, 'I miss being robbed by the Defias. At least they\'d leave you a little something to eat from time to time.', 12, 7, 100, 396, 0, 0, 42360, 'Transient'), +(42383, 6, 6, 'I\'m starving!', 12, 7, 100, 5, 0, 0, 42353, 'Transient'), +(42383, 6, 7, 'I wonder if it\'s possible to eat rocks? Got plenty of rocks around here. Just imagine it! I\'d be the richest person in the world for making that discovery!', 12, 7, 100, 4, 0, 0, 42359, 'Transient'), +(42383, 7, 0, 'JACKPOT!', 12, 7, 100, 5, 0, 0, 42351, 'Transient'), +(42383, 8, 0, 'Looks like I found us a savory and clean piece of dirt! Tonight we eat like kings, Mr. Penguin! Of course I\'ll share it with you! You\'re my best friend!', 12, 7, 100, 18, 0, 0, 42352, 'Transient'), +(42383, 9, 0, 'HEY! HEY YOU! GET OFF MY PROPERTY!', 12, 7, 100, 22, 0, 0, 42361, 'Transient'), +(42383, 10, 0, '%s attempts to run away in fear!', 16, 0, 100, 0, 0, 0, 1150, 'Transient'), +(42413, 0, 0, 'Check $g his:her; pockets!', 12, 7, 20, 0, 0, 0, 42364, 'Ragamuffin to Homeless Stormwind Citizen'), +(42413, 0, 1, 'Does $g he:she; have boots? Get \'em!', 12, 7, 20, 0, 0, 0, 42362, 'Ragamuffin to West Plains Drifter'), +(42413, 0, 2, 'MINE!', 12, 7, 20, 0, 0, 0, 42363, 'Ragamuffin to West Plains Drifter'); diff --git a/src/server/scripts/EasternKingdoms/zone_westfall.cpp b/src/server/scripts/EasternKingdoms/zone_westfall.cpp index a4e8e5287b..6ff87b5ad5 100644 --- a/src/server/scripts/EasternKingdoms/zone_westfall.cpp +++ b/src/server/scripts/EasternKingdoms/zone_westfall.cpp @@ -18,11 +18,14 @@ #include "CombatAI.h" #include "Containers.h" #include "CreatureAIImpl.h" +#include "ObjectAccessor.h" #include "Player.h" #include "ScriptedCreature.h" +#include "ScriptedGossip.h" #include "ScriptMgr.h" #include "SpellAuraEffects.h" #include "SpellScript.h" +#include "SharedDefines.h" namespace Scripts::EasternKingdoms::Westfall { @@ -32,12 +35,40 @@ namespace Creatures static constexpr uint32 OverloadedHarvestGolem = 42601; static constexpr uint32 JangolodeMineGlubtok = 42492; static constexpr uint32 JangolodeMineFigure = 42515; + static constexpr uint32 HomelessStormwindCitizen1 = 42386; + static constexpr uint32 HomelessStormwindCitizen2 = 42384; + static constexpr uint32 WestPlainDrifter = 42391; + static constexpr uint32 Transient = 42383; +} + +namespace Quests +{ + static constexpr uint32 MurderWasTheCaseThatTheyGaveMe = 26209; } namespace Spells { static constexpr uint32 JangolodeMineSummonFigure = 79265; static constexpr uint32 JangolodeMineSummonGlubtok = 79263; + static constexpr uint32 HoboInformation1 = 79181; + static constexpr uint32 HoboInformation2 = 79182; + static constexpr uint32 HoboInformation3 = 79183; + static constexpr uint32 HoboInformation4 = 79184; + static constexpr uint32 SummonRagamuffinLooter = 79169; + static constexpr uint32 SummonRagamuffinLooter1 = 79170; + static constexpr uint32 SummonRagamuffinLooter2 = 79171; + static constexpr uint32 SummonRagamuffinLooter3 = 79172; + static constexpr uint32 SummonRagamuffinLooter4 = 79173; + static constexpr uint32 HoboAggro = 79168; +} + +namespace Gossip +{ + namespace GossipOption + { + static constexpr uint32 GossipOption0 = 0; + static constexpr uint32 GossipOption1 = 1; + } } namespace Events @@ -47,6 +78,27 @@ namespace Events static constexpr uint32 CheckArea = 1; static constexpr uint32 DespawnHarvester = 2; } + + namespace MurderWasTheCaseThatTheyGaveMe + { + static constexpr uint32 HoboTalk = 1; + static constexpr uint32 JackpotIntro = 2; + static constexpr uint32 HoboCry = 3; + static constexpr uint32 PropertyRage = 4; + static constexpr uint32 JackpotMiddle = 5; + static constexpr uint32 JackpotEnd = 6; + static constexpr uint32 ResumeMove = 7; + static constexpr uint32 GroupOOC = 1; + } +} + +namespace Actions +{ + namespace MurderWasTheCaseThatTheyGaveMe + { + static constexpr uint32 HoboAggroAction = 1; + static constexpr uint32 HoboAggroActionDone = 2; + } } namespace Text @@ -55,6 +107,21 @@ namespace Text { static constexpr uint32 AnnounceOutOfArea = 0; } + + namespace HoboText + { + static constexpr uint32 HoboSayClue1 = 0; + static constexpr uint32 HoboSayClue2 = 1; + static constexpr uint32 HoboSayClue3 = 2; + static constexpr uint32 HoboSayClue4 = 3; + static constexpr uint32 HoboAggroBribe = 4; + static constexpr uint32 HoboAggroConvince = 5; + static constexpr uint32 HoboEvent = 6; + static constexpr uint32 HoboJackpotIntro = 7; + static constexpr uint32 HoboJackpotEnd = 8; + static constexpr uint32 HoboPropertyRage = 9; + static constexpr uint32 HoboFlee = 10; + } } namespace Area @@ -289,6 +356,279 @@ class spell_westfall_despawn_jangolode_actor : public SpellScript OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_westfall_despawn_jangolode_actor::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENTRY); } }; + +// 42386 - Homeless Stormwind Citizen +// 42384 - Homeless Stormwind Citizen +// 42384 - West Plain Drifter +// 42383 - Transient +struct npc_westfall_hobo_witness : public ScriptedAI +{ + npc_westfall_hobo_witness(Creature* creature) : ScriptedAI(creature), _bribeFailed(false), _hoboRage(false), _flee(false) {} + + struct HoboClueData + { + uint32 SpellID; + uint32 TextID; + }; + + static constexpr std::array HoboClues = + { { + { Spells::HoboInformation1, Text::HoboText::HoboSayClue1 }, + { Spells::HoboInformation2, Text::HoboText::HoboSayClue2 }, + { Spells::HoboInformation3, Text::HoboText::HoboSayClue3 }, + { Spells::HoboInformation4, Text::HoboText::HoboSayClue4 }, + } }; + + bool OnGossipSelect(Player* player, uint32 /*menuId*/, uint32 gossipListId) override + { + uint8 clueGainChance = 0; + switch (gossipListId) + { + case Gossip::GossipOption::GossipOption0: + { + clueGainChance = 25; + break; + } + case Gossip::GossipOption::GossipOption1: + { + clueGainChance = 75; + _bribeFailed = true; + break; + } + default: + return true; + } + + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); + CloseGossipMenuFor(player); + if (roll_chance_i(clueGainChance)) + GiveClue(player); + else + { + me->SetImmuneToPC(false); + AttackStart(player); + } + + return false; + } + + void GiveClue(Player* player) + { + _events.CancelEventGroup(Events::MurderWasTheCaseThatTheyGaveMe::GroupOOC); + me->SetFacingToObject(player); + + uint16 slot = player->FindQuestSlot(Quests::MurderWasTheCaseThatTheyGaveMe); + + for (uint8 i = 0; i < HoboClues.size(); i++) + { + if (player->GetQuestSlotCounter(slot, i) == 0) + { + HoboClueData const& data = HoboClues[i]; + + player->CastSpell(player, data.SpellID); + Talk(data.TextID, player); + + me->DespawnOrUnsummon(12s); + return; + } + } + } + + void JustEngagedWith(Unit* who) override + { + me->SetAIAnimKitId(0); + _events.CancelEventGroup(Events::MurderWasTheCaseThatTheyGaveMe::GroupOOC); + + if (!who->IsPlayer()) + return; + + Talk(_bribeFailed ? Text::HoboText::HoboAggroBribe : Text::HoboText::HoboAggroConvince, who); + } + + void DamageTaken(Unit* /*killer*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override + { + if (!_flee && me->HealthBelowPctDamaged(20, damage)) + { + _flee = true; + me->DoFleeToGetAssistance(); + Talk(Text::HoboText::HoboFlee); + } + } + + void JustDied(Unit* who) override + { + if (Creature* creature = who->ToCreature()) + creature->AI()->DoAction(Actions::MurderWasTheCaseThatTheyGaveMe::HoboAggroActionDone); + DoCastSelf(Spells::SummonRagamuffinLooter); + } + + void Reset() override + { + ScriptedAI::Reset(); + _events.Reset(); + _bribeFailed = false; + _hoboRage = false; + _flee = false; + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); + me->SetImmuneToPC(true); + _events.ScheduleEvent(Events::MurderWasTheCaseThatTheyGaveMe::ResumeMove, 100ms, Events::MurderWasTheCaseThatTheyGaveMe::GroupOOC); + } + + void DoAction(int32 action) override + { + switch (action) + { + case Actions::MurderWasTheCaseThatTheyGaveMe::HoboAggroAction: + if (Unit* target = ObjectAccessor::GetUnit(*me, _targetGUID)) + { + _hoboRage = true; + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); + me->PauseMovement(); + me->SetFacingToObject(target); + AttackStart(target); + } + break; + case Actions::MurderWasTheCaseThatTheyGaveMe::HoboAggroActionDone: + _hoboRage = false; + break; + default: + return; + } + } + + void SetGUID(ObjectGuid const& guid, int32 /*id*/) override + { + _targetGUID = guid; + } + + void UpdateAI(uint32 diff) override + { + _events.Update(diff); + while (uint32 eventId = _events.ExecuteEvent()) + { + switch (eventId) + { + case Events::MurderWasTheCaseThatTheyGaveMe::HoboTalk: + me->PauseMovement(); + Talk(Text::HoboText::HoboEvent); + _events.ScheduleEvent(Events::MurderWasTheCaseThatTheyGaveMe::ResumeMove, 6s, Events::MurderWasTheCaseThatTheyGaveMe::GroupOOC); + break; + case Events::MurderWasTheCaseThatTheyGaveMe::JackpotIntro: + me->PauseMovement(); + Talk(Text::HoboText::HoboJackpotIntro); + _events.ScheduleEvent(Events::MurderWasTheCaseThatTheyGaveMe::JackpotMiddle, 2s + 500ms, Events::MurderWasTheCaseThatTheyGaveMe::GroupOOC); + break; + case Events::MurderWasTheCaseThatTheyGaveMe::JackpotMiddle: + me->SetAIAnimKitId(648); + Talk(Text::HoboText::HoboJackpotEnd); + _events.ScheduleEvent(Events::MurderWasTheCaseThatTheyGaveMe::JackpotEnd, 6s, Events::MurderWasTheCaseThatTheyGaveMe::GroupOOC); + break; + case Events::MurderWasTheCaseThatTheyGaveMe::JackpotEnd: + me->SetAIAnimKitId(0); + _events.ScheduleEvent(Events::MurderWasTheCaseThatTheyGaveMe::ResumeMove, 4s, Events::MurderWasTheCaseThatTheyGaveMe::GroupOOC); + break; + case Events::MurderWasTheCaseThatTheyGaveMe::HoboCry: + me->HandleEmoteCommand(EMOTE_ONESHOT_CRY); + me->PauseMovement(); + _events.ScheduleEvent(Events::MurderWasTheCaseThatTheyGaveMe::ResumeMove, 2s, Events::MurderWasTheCaseThatTheyGaveMe::GroupOOC); + break; + case Events::MurderWasTheCaseThatTheyGaveMe::PropertyRage: + { + uint32 creatureId = RAND(Creatures::HomelessStormwindCitizen1, Creatures::HomelessStormwindCitizen2, Creatures::Transient, Creatures::WestPlainDrifter); + if (Creature* creature = GetClosestCreatureWithEntry(me, creatureId, 25.0f)) + { + if (!creature->IsAlive() || creature->IsInCombat()) + { + _events.ScheduleEvent(Events::MurderWasTheCaseThatTheyGaveMe::ResumeMove, 100ms, Events::MurderWasTheCaseThatTheyGaveMe::GroupOOC); + return; + } + _hoboRage = true; + Talk(Text::HoboText::HoboPropertyRage); + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); + me->PauseMovement(); + me->CastSpell(creature, Spells::HoboAggro, true); + me->SetFacingToObject(creature); + } + else + _events.ScheduleEvent(Events::MurderWasTheCaseThatTheyGaveMe::ResumeMove, 100ms, Events::MurderWasTheCaseThatTheyGaveMe::GroupOOC); + break; + } + case Events::MurderWasTheCaseThatTheyGaveMe::ResumeMove: + me->ResumeMovement(); + if (roll_chance_i(50)) // prevent spam + { + if (roll_chance_i(70)) // chance to trigger simple talk event + _events.ScheduleEvent(Events::MurderWasTheCaseThatTheyGaveMe::HoboTalk, 30s, 80s, Events::MurderWasTheCaseThatTheyGaveMe::GroupOOC); + else + _events.ScheduleEvent(urand(Events::MurderWasTheCaseThatTheyGaveMe::JackpotIntro, Events::MurderWasTheCaseThatTheyGaveMe::PropertyRage), 30s, 80s, Events::MurderWasTheCaseThatTheyGaveMe::GroupOOC); + } + else + _events.Repeat(30s, 80s); + break; + default: + break; + } + } + + if (!_hoboRage) + if (!UpdateVictim()) + return; + } + +private: + EventMap _events; + ObjectGuid _targetGUID; + bool _bribeFailed; + bool _hoboRage; + bool _flee; +}; + +// 79169 - Summon Ragamuffin Looter +class spell_westfall_summon_ragamuffin_looter : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo( + { + Spells::SummonRagamuffinLooter1, + Spells::SummonRagamuffinLooter2, + Spells::SummonRagamuffinLooter3, + Spells::SummonRagamuffinLooter4 + }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + caster->CastSpell(caster, Spells::SummonRagamuffinLooter1, CastSpellExtraArgs(TRIGGERED_FULL_MASK)); + caster->CastSpell(caster, Spells::SummonRagamuffinLooter2, CastSpellExtraArgs(TRIGGERED_FULL_MASK)); + caster->CastSpell(caster, Spells::SummonRagamuffinLooter3, CastSpellExtraArgs(TRIGGERED_FULL_MASK)); + caster->CastSpell(caster, Spells::SummonRagamuffinLooter4, CastSpellExtraArgs(TRIGGERED_FULL_MASK)); + } + + void Register() override + { + OnEffectLaunch += SpellEffectFn(spell_westfall_summon_ragamuffin_looter::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +// 79168 - Hobo Aggro +class spell_westfall_aggro_hobo : public SpellScript +{ + void HandleDummy(SpellEffIndex /*effIndex*/) + { + if (Creature* creature = GetHitCreature()) + { + creature->AI()->SetGUID(GetCaster()->GetGUID(), 0); + creature->AI()->DoAction(Actions::MurderWasTheCaseThatTheyGaveMe::HoboAggroAction); + } + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_westfall_aggro_hobo::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; } void AddSC_westfall() @@ -297,6 +637,7 @@ void AddSC_westfall() // Creature RegisterCreatureAI(npc_westfall_overloaded_harvest_golem); + RegisterCreatureAI(npc_westfall_hobo_witness); // Spells RegisterSpellScript(spell_westfall_unbound_energy); @@ -307,4 +648,6 @@ void AddSC_westfall() RegisterSpellScript(spell_westfall_despawn_jangolode_actor); RegisterSpellScript(spell_westfall_livin_the_life_ping_glubtok); RegisterSpellScript(spell_westfall_livin_the_life_ping_figure); + RegisterSpellScript(spell_westfall_summon_ragamuffin_looter); + RegisterSpellScript(spell_westfall_aggro_hobo); }