diff --git a/sql/updates/world/master/2026_03_12_00_world.sql b/sql/updates/world/master/2026_03_12_00_world.sql new file mode 100644 index 000000000..b9f52b389 --- /dev/null +++ b/sql/updates/world/master/2026_03_12_00_world.sql @@ -0,0 +1,84 @@ +DELETE FROM `command` WHERE `name` IN ('debug modifiertree','debug playercondition','debug wsexpression'); +INSERT INTO `command` (`name`, `help`) VALUES +('debug modifiertree', 'Syntax: .debug modifiertree #modifierTreeId\r\n\r\nChecks if ModifierTree #modifierTreeId conditions are met for targeted player.'), +('debug playercondition', 'Syntax: .debug playercondition #playerConditionId\r\n\r\nChecks if PlayerCondition #playerConditionId condition is met for targeted player.'), +('debug wsexpression', 'Syntax: .debug wsexpression #worldStateExpressionId\r\n\r\nChecks if WorldStateExpression #worldStateExpressionId condition is met on current map.'); + +DELETE FROM `world_state` WHERE `ID` IN (29688, 30157, 27499, 27489, 27490, 27491, 27492, 27493, 27494, 27495, 27496, 27497, 27498, 27500, 27501, 27502, 27503, 27504, 27505, 27506, 27507, 27508, 27509, 27510, 27488, 29184, 29185, 31021, 31023, 31024, 31025, 30221, 30474); +INSERT INTO `world_state` (`ID`, `DefaultValue`, `MapIDs`, `AreaIDs`, `ScriptName`, `Comment`) VALUES +(29688, 0, NULL, NULL, '', 'Conquest - Midnight Season 1 (Currency) - Max quantity'), +(30157, 0, NULL, NULL, '', 'Bloody Tokens - Midnight Season 1 (Currency) - Max quantity'), +(27499, 22, NULL, NULL, '', '12.x Professions - Tracker - Weekly Alchemy Knowledge (Currency) - Max quantity'), +(27489, 28, NULL, NULL, '', '12.x Professions - Tracker - Weekly Tailoring Knowledge (Currency) - Max quantity'), +(27490, 18, NULL, NULL, '', '12.x Professions - Tracker - Weekly Skinning Knowledge (Currency) - Max quantity'), +(27491, 20, NULL, NULL, '', '12.x Professions - Tracker - Weekly Mining Knowledge (Currency) - Max quantity'), +(27492, 36, NULL, NULL, '', '12.x Professions - Tracker - Weekly Leatherworking Knowledge (Currency) - Max quantity'), +(27493, 38, NULL, NULL, '', '12.x Professions - Tracker - Weekly Jewelcrafting Knowledge (Currency) - Max quantity'), +(27494, 40, NULL, NULL, '', '12.x Professions - Tracker - Weekly Inscription Knowledge (Currency) - Max quantity'), +(27495, 24, NULL, NULL, '', '12.x Professions - Tracker - Weekly Herbalism Knowledge (Currency) - Max quantity'), +(27496, 22, NULL, NULL, '', '12.x Professions - Tracker - Weekly Engineering Knowledge (Currency) - Max quantity'), +(27497, 30, NULL, NULL, '', '12.x Professions - Tracker - Weekly Enchanting Knowledge (Currency) - Max quantity'), +(27498, 36, NULL, NULL, '', '12.x Professions - Tracker - Weekly Blacksmithing Knowledge (Currency) - Max quantity'), +(27500, 1, NULL, NULL, '', '12.x Professions - Tracker - Insc Book - Tailoring Knowledge (Currency) - Max quantity'), +(27501, 1, NULL, NULL, '', '12.x Professions - Tracker - Insc Book - Skinning Knowledge (Currency) - Max quantity'), +(27502, 1, NULL, NULL, '', '12.x Professions - Tracker - Insc Book - Mining Knowledge (Currency) - Max quantity'), +(27503, 1, NULL, NULL, '', '12.x Professions - Tracker - Insc Book - Leatherworking Know. (Currency) - Max quantity'), +(27504, 1, NULL, NULL, '', '12.x Professions - Tracker - Insc Book - Jewelcrafting Knowledge (Currency) - Max quantity'), +(27505, 1, NULL, NULL, '', '12.x Professions - Tracker - Insc Book - Inscription Knowledge (Currency) - Max quantity'), +(27506, 1, NULL, NULL, '', '12.x Professions - Tracker - Insc Book - Herbalism Knowledge (Currency) - Max quantity'), +(27507, 1, NULL, NULL, '', '12.x Professions - Tracker - Insc Book - Engineering Knowledge (Currency) - Max quantity'), +(27508, 1, NULL, NULL, '', '12.x Professions - Tracker - Insc Book - Enchanting Knowledge (Currency) - Max quantity'), +(27509, 1, NULL, NULL, '', '12.x Professions - Tracker - Insc Book - Blacksmithing Knowledge (Currency) - Max quantity'), +(27510, 1, NULL, NULL, '', '12.x Professions - Tracker - Insc Book - Alchemy Knowledge (Currency) - Max quantity'), +(27488, 1, NULL, NULL, '', 'Radiant Spark Dust (Currency) - Max quantity'), +(29184, 200, NULL, NULL, '', 'Veteran/Champion/Adventurer Dawncrest (Currency) - Max quantity'), +(29185, 0, NULL, NULL, '', 'Hero/Myth Dawncrest (Currency) - Max quantity'), +(31021, 18, NULL, NULL, '', 'Renown - The Amani Tribe (Currency) - Max quantity'), +(31023, 18, NULL, NULL, '', 'Renown - The Hara''ti (Currency) - Max quantity'), +(31024, 18, NULL, NULL, '', 'Renown - Silvermoon Court (Currency) - Max quantity'), +(31025, 18, NULL, NULL, '', 'Renown - The Singularity (Currency) - Max quantity'), +(30221, 0, NULL, NULL, '', '12.0 Delves - Personal Tracker - S1 Weekly Turn-In (Hidden) (Currency) - Max quantity'), +(30474, 0, NULL, NULL, '', '12.0 Midseason - Voidforge Unlock - Turn-In Tracker (Currency) - Max quantity'); + +UPDATE `world_state` SET `Comment`='Valor (Currency) - Max quantity' WHERE `ID`=22980; +UPDATE `world_state` SET `DefaultValue`=812, `Comment`='EVERGREEN Delves - Tracker - EoD Account Rewards - Weekly Cap (Currency) - Max quantity' WHERE `ID`=27335; +UPDATE `world_state` SET `DefaultValue`=10556, `Comment`='EVERGREEN Delves - Tracker - Mislaid Curiosity - Weekly Cap (Currency)- Max quantity' WHERE `ID`=27793; +UPDATE `world_state` SET `DefaultValue`=0 WHERE `ID` IN (27170,28388,28390,28441); +UPDATE `world_state` SET `DefaultValue`=30 WHERE `ID`=27326; +UPDATE `world_state` SET `DefaultValue`=28 WHERE `ID`=28158; +UPDATE `world_state` SET `DefaultValue`=3500000 WHERE `ID`=28715; +UPDATE `world_state` SET `DefaultValue`=6 WHERE `ID`=29600; + +DELETE FROM `world_state` WHERE `ID` IN (18066, 24904, 28305, 28307, 28309, 28311, 28313, 28315, 28255, 28303, 29079, 29044, 29957); +INSERT INTO `world_state` (`ID`, `DefaultValue`, `MapIDs`, `AreaIDs`, `ScriptName`, `Comment`) VALUES +(18066, 0, '2236', NULL, '', 'Darkmaul Citadel - Kalecgos - Encounter completed'), +(24904, 0, '2648', NULL, '', 'The Rookery - Voidstone Monstrosity - Encounter completed'), +(28305, 0, '2912', NULL, '', 'The Voidspire - Imperator Averzian - Encounter completed'), +(28307, 0, '2912', NULL, '', 'The Voidspire - Vorasius - Encounter completed'), +(28309, 0, '2912', NULL, '', 'The Voidspire - Vaelgor & Ezzorak - Encounter completed'), +(28311, 0, '2912', NULL, '', 'The Voidspire - Fallen-King Salhadaar - Encounter completed'), +(28313, 0, '2912', NULL, '', 'The Voidspire - Lightblinded Vanguard - Encounter completed'), +(28315, 0, '2912', NULL, '', 'The Voidspire - Crown of the Cosmos - Encounter completed'), +(28255, 0, '2913', NULL, '', 'March on Quel''Danas - Belo''ren, Child of Al''ar - Encounter completed'), +(28303, 0, '2913', NULL, '', 'March on Quel''Danas - Midnight Falls - Encounter completed'), +(29079, 0, '2939', NULL, '', 'The Dreamrift - Chimaerus the Undreamt God - Encounter completed'), +(29044, 0, '2950', NULL, '', 'Vault of the Incarnates - Raszageth the Storm-Eater - Encounter completed'), +(29957, 0, '2966', NULL, '', 'Torment''s Rise - Nullaeus - Encounter completed'); + +-- Dynamic wild battle pet marking +-- Instead of creature_template having UNIT_NPC_FLAG_WILD_BATTLE_PET (0x40000000) baked in, +-- the server now dynamically assigns this flag at spawn time to ~40% of eligible critters. +-- This mimics retail behavior where regular critters are selectively marked for pet battles. +-- +-- Uses impossible date (2015_13_32) per project conventions to avoid upstream conflicts. + +-- Step 1: Strip UNIT_NPC_FLAG_WILD_BATTLE_PET (0x40000000) from all creature_template entries. +-- The C++ code now handles this flag dynamically based on BattlePetSpecies DB2 data. +-- This ensures creature templates define the base critter, not the battle pet version. +UPDATE `creature_template` SET `npcflag` = `npcflag` & ~0x40000000 +WHERE (`npcflag` & 0x40000000) != 0; + +-- Step 2: Remove dedicated battle pet spawn entries from the old approach. +-- These were manually placed spawns that are no longer needed — the existing world critter +-- spawns will be dynamically marked as wild battle pets by the server. +DELETE FROM `creature` WHERE `guid` BETWEEN 900000 AND 900030;