This commit is contained in:
luis
2026-09-24 21:59:38 -03:00
parent 27c5476d5a
commit ebf4b1b22c
@@ -0,0 +1,115 @@
-- Murloc Mania (55122 / 59929) collects First Aid Kit 170549, the kit that "drops from Murloc
-- Watershapers and Murloc Spearhunters at the Murloc Hideaway". Item 168410 is the other kit with
-- the same name: it is handed out by Emergency First Aid to bandage the three survivors and is not
-- a drop, so looting it did nothing for the quest.
DELETE FROM `creature_loot_template` WHERE `Item` IN (168410, 170549) AND `Entry` IN (150228, 150229);
INSERT INTO `creature_loot_template` (`Entry`, `ItemType`, `Item`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
(150228, 0, 170549, 100, 1, 1, 0, 1, 1, 'Murloc Spearhunter - First Aid Kit'),
(150229, 0, 170549, 100, 1, 1, 0, 1, 1, 'Murloc Watershaper - First Aid Kit');
DELETE FROM `creature_questitem` WHERE (`CreatureEntry`, `ItemId`) IN ((150228, 170549), (150229, 170549));
INSERT INTO `creature_questitem` (`CreatureEntry`, `DifficultyID`, `Idx`, `ItemId`, `VerifiedBuild`)
SELECT 150228, 0, IFNULL(`x`.`nextIdx`, 0), 170549, 69875 -- Murloc Spearhunter
FROM (SELECT MAX(`Idx`) + 1 AS `nextIdx` FROM `creature_questitem` WHERE `CreatureEntry` = 150228 AND `DifficultyID` = 0) `x`;
INSERT INTO `creature_questitem` (`CreatureEntry`, `DifficultyID`, `Idx`, `ItemId`, `VerifiedBuild`)
SELECT 150229, 0, IFNULL(`x`.`nextIdx`, 0), 170549, 69875 -- Murloc Watershaper
FROM (SELECT MAX(`Idx`) + 1 AS `nextIdx` FROM `creature_questitem` WHERE `CreatureEntry` = 150229 AND `DifficultyID` = 0) `x`;
-- Controlling their Stones (55990 / 59981) needs the three ward stones. The wiki has one page per
-- stone and each names its ogre: Jugnug drops 168599, Wug drops 168600, Grunk drops 168601.
-- Nothing dropped them here, so the runestone never accepted the player: the gameobject script
-- checks all three items before it gives the credit. Both the citadel ogres and the cooking-area
-- copies the script summons carry the loot, so the quest works whichever version is up.
DELETE FROM `creature_loot_template` WHERE `Item` IN (168599, 168600, 168601)
AND `Entry` IN (153581, 153582, 153583, 154145, 154146, 154147);
INSERT INTO `creature_loot_template` (`Entry`, `ItemType`, `Item`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
(153583, 0, 168599, 100, 1, 1, 0, 1, 1, 'Jugnug - Ward Stone'),
(153582, 0, 168600, 100, 1, 1, 0, 1, 1, 'Wug - Ward Stone'),
(153581, 0, 168601, 100, 1, 1, 0, 1, 1, 'Grunk - Ward Stone'),
(154147, 0, 168599, 100, 1, 1, 0, 1, 1, 'Jugnug (cooking area) - Ward Stone'),
(154146, 0, 168600, 100, 1, 1, 0, 1, 1, 'Wug (cooking area) - Ward Stone'),
(154145, 0, 168601, 100, 1, 1, 0, 1, 1, 'Grunk (cooking area) - Ward Stone');
DELETE FROM `creature_questitem` WHERE (`CreatureEntry`, `ItemId`) IN ((153583, 168599), (153582, 168600), (153581, 168601), (154147, 168599), (154146, 168600), (154145, 168601));
INSERT INTO `creature_questitem` (`CreatureEntry`, `DifficultyID`, `Idx`, `ItemId`, `VerifiedBuild`)
SELECT 153583, 0, IFNULL(`x`.`nextIdx`, 0), 168599, 69875 -- Jugnug
FROM (SELECT MAX(`Idx`) + 1 AS `nextIdx` FROM `creature_questitem` WHERE `CreatureEntry` = 153583 AND `DifficultyID` = 0) `x`;
INSERT INTO `creature_questitem` (`CreatureEntry`, `DifficultyID`, `Idx`, `ItemId`, `VerifiedBuild`)
SELECT 153582, 0, IFNULL(`x`.`nextIdx`, 0), 168600, 69875 -- Wug
FROM (SELECT MAX(`Idx`) + 1 AS `nextIdx` FROM `creature_questitem` WHERE `CreatureEntry` = 153582 AND `DifficultyID` = 0) `x`;
INSERT INTO `creature_questitem` (`CreatureEntry`, `DifficultyID`, `Idx`, `ItemId`, `VerifiedBuild`)
SELECT 153581, 0, IFNULL(`x`.`nextIdx`, 0), 168601, 69875 -- Grunk
FROM (SELECT MAX(`Idx`) + 1 AS `nextIdx` FROM `creature_questitem` WHERE `CreatureEntry` = 153581 AND `DifficultyID` = 0) `x`;
INSERT INTO `creature_questitem` (`CreatureEntry`, `DifficultyID`, `Idx`, `ItemId`, `VerifiedBuild`)
SELECT 154147, 0, IFNULL(`x`.`nextIdx`, 0), 168599, 69875 -- Jugnug (cooking area)
FROM (SELECT MAX(`Idx`) + 1 AS `nextIdx` FROM `creature_questitem` WHERE `CreatureEntry` = 154147 AND `DifficultyID` = 0) `x`;
INSERT INTO `creature_questitem` (`CreatureEntry`, `DifficultyID`, `Idx`, `ItemId`, `VerifiedBuild`)
SELECT 154146, 0, IFNULL(`x`.`nextIdx`, 0), 168600, 69875 -- Wug (cooking area)
FROM (SELECT MAX(`Idx`) + 1 AS `nextIdx` FROM `creature_questitem` WHERE `CreatureEntry` = 154146 AND `DifficultyID` = 0) `x`;
INSERT INTO `creature_questitem` (`CreatureEntry`, `DifficultyID`, `Idx`, `ItemId`, `VerifiedBuild`)
SELECT 154145, 0, IFNULL(`x`.`nextIdx`, 0), 168601, 69875 -- Grunk (cooking area)
FROM (SELECT MAX(`Idx`) + 1 AS `nextIdx` FROM `creature_questitem` WHERE `CreatureEntry` = 154145 AND `DifficultyID` = 0) `x`;
-- Class quest pickups. The wiki links each item to the object it sits in:
-- Veil Blossom 174968 from object 342366 at the Ogre Ruins (A Shaman's Duty)
-- Old Grimoire 174947 from objects 342259 and 350998 (A Warlock's Bargain)
-- Meredy's Spell Book 175975 from object 346273 (A Mage's Knowledge, Alliance)
-- Herbert's Spell Book 178229 from object 351335 (A Mage's Knowledge, Horde)
-- Old Spring 175980 from object 346277 at the Ogre Ruins (A Hunter's Trap)
-- The item is only added to the loot id the object already carries, and only when that loot does
-- not have it yet. An object with no loot id is left alone: inventing one would write into a
-- loot table that may belong to something else.
INSERT INTO `gameobject_loot_template` (`Entry`, `ItemType`, `Item`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`)
SELECT DISTINCT `t`.`Data1`, 0, `m`.`item`, 100, 1, 1, 0, 1, 1, `m`.`comment`
FROM (
SELECT 342366 AS `object`, 174968 AS `item`, 'Veil Blossom' AS `comment`
UNION ALL SELECT 342259, 174947, 'Old Grimoire'
UNION ALL SELECT 350998, 174947, 'Old Grimoire'
UNION ALL SELECT 346273, 175975, 'Meredy''s Spell Book'
UNION ALL SELECT 351335, 178229, 'Herbert''s Spell Book'
UNION ALL SELECT 346277, 175980, 'Old Spring'
) `m`
JOIN `gameobject_template` `t` ON `t`.`entry` = `m`.`object` AND `t`.`type` = 3 AND `t`.`Data1` <> 0
WHERE NOT EXISTS (
SELECT 1 FROM `gameobject_loot_template` `l` WHERE `l`.`Entry` = `t`.`Data1` AND `l`.`Item` = `m`.`item`
);
DELETE FROM `gameobject_questitem` WHERE (`GameObjectEntry`, `ItemId`) IN ((342366, 174968), (342259, 174947), (350998, 174947), (346273, 175975), (351335, 178229), (346277, 175980));
INSERT INTO `gameobject_questitem` (`GameObjectEntry`, `Idx`, `ItemId`, `VerifiedBuild`)
SELECT 342366, IFNULL(`x`.`nextIdx`, 0), 174968, 69875 -- Veil Blossom
FROM (SELECT MAX(`Idx`) + 1 AS `nextIdx` FROM `gameobject_questitem` WHERE `GameObjectEntry` = 342366) `x`
WHERE EXISTS (SELECT 1 FROM `gameobject_template` WHERE `entry` = 342366);
INSERT INTO `gameobject_questitem` (`GameObjectEntry`, `Idx`, `ItemId`, `VerifiedBuild`)
SELECT 342259, IFNULL(`x`.`nextIdx`, 0), 174947, 69875 -- Old Grimoire
FROM (SELECT MAX(`Idx`) + 1 AS `nextIdx` FROM `gameobject_questitem` WHERE `GameObjectEntry` = 342259) `x`
WHERE EXISTS (SELECT 1 FROM `gameobject_template` WHERE `entry` = 342259);
INSERT INTO `gameobject_questitem` (`GameObjectEntry`, `Idx`, `ItemId`, `VerifiedBuild`)
SELECT 350998, IFNULL(`x`.`nextIdx`, 0), 174947, 69875 -- Old Grimoire
FROM (SELECT MAX(`Idx`) + 1 AS `nextIdx` FROM `gameobject_questitem` WHERE `GameObjectEntry` = 350998) `x`
WHERE EXISTS (SELECT 1 FROM `gameobject_template` WHERE `entry` = 350998);
INSERT INTO `gameobject_questitem` (`GameObjectEntry`, `Idx`, `ItemId`, `VerifiedBuild`)
SELECT 346273, IFNULL(`x`.`nextIdx`, 0), 175975, 69875 -- Meredy's Spell Book
FROM (SELECT MAX(`Idx`) + 1 AS `nextIdx` FROM `gameobject_questitem` WHERE `GameObjectEntry` = 346273) `x`
WHERE EXISTS (SELECT 1 FROM `gameobject_template` WHERE `entry` = 346273);
INSERT INTO `gameobject_questitem` (`GameObjectEntry`, `Idx`, `ItemId`, `VerifiedBuild`)
SELECT 351335, IFNULL(`x`.`nextIdx`, 0), 178229, 69875 -- Herbert's Spell Book
FROM (SELECT MAX(`Idx`) + 1 AS `nextIdx` FROM `gameobject_questitem` WHERE `GameObjectEntry` = 351335) `x`
WHERE EXISTS (SELECT 1 FROM `gameobject_template` WHERE `entry` = 351335);
INSERT INTO `gameobject_questitem` (`GameObjectEntry`, `Idx`, `ItemId`, `VerifiedBuild`)
SELECT 346277, IFNULL(`x`.`nextIdx`, 0), 175980, 69875 -- Old Spring
FROM (SELECT MAX(`Idx`) + 1 AS `nextIdx` FROM `gameobject_questitem` WHERE `GameObjectEntry` = 346277) `x`
WHERE EXISTS (SELECT 1 FROM `gameobject_template` WHERE `entry` = 346277);
-- Still open: Withering Hemlock 174916 for A Rogue's End. The wiki places the plant by the pond at
-- Killclaw's Lair but publishes no object id for it, and Rusted Chain 175981 has the same gap.
-- Neither is guessed here.
-- Swamplord Musel'ek and his bear Claw in The Underbog. The boss had no script in this core.
-- The script file is TrinityCore's boss_swamplord_muselek.cpp, which our tree was missing while
-- the other three Underbog bosses were present.
UPDATE `creature_template` SET `AIName` = '', `ScriptName` = 'boss_swamplord_muselek' WHERE `entry` = 17826;
UPDATE `creature_template` SET `AIName` = '', `ScriptName` = 'npc_claw' WHERE `entry` = 17827;
DELETE FROM `spell_script_names` WHERE `spell_id` = 31564 AND `ScriptName` = 'spell_swamplord_muselek_move_away_primer';
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
(31564, 'spell_swamplord_muselek_move_away_primer');