diff --git a/sql/sylvania/trainers_engineering_lot6_20260618.sql b/sql/sylvania/trainers_engineering_lot6_20260618.sql new file mode 100644 index 0000000..6397424 --- /dev/null +++ b/sql/sylvania/trainers_engineering_lot6_20260618.sql @@ -0,0 +1,60 @@ +-- ============================================================================ +-- La Légion de Sylvania — Lot 6 : reconstruction de l'INGÉNIERIE +-- Base : dc_world (LIVE) | Date : 2026-06-18 +-- ---------------------------------------------------------------------------- +-- CONTEXTE +-- Toute la profession Ingénierie était sans données dans ce monde (seuls les +-- spés gnome/gobelin avaient ~18-19 sorts ; les recettes de base manquaient). +-- Le legacy npc_trainer ne les contenait pas et TDB735 officiel non plus côté +-- npc_trainer. SOURCE retenue : TDB_full_735.00 (TrinityCore 7.3.5 officiel), +-- table moderne trainer_spell, TrainerId 407 = maître d'ingénierie COMPLET +-- (222 recettes, skill 202, rangs 1->600). Converties au format legacy. +-- ---------------------------------------------------------------------------- +-- A) Donneur d'ingénierie = Deek Fizzlebizz (3290) : 222 recettes positives. +-- B) Tous les autres maîtres d'ingénierie spawnés SANS schéma moderne +-- référencent -3290 (héritent des 222 recettes ; les spés gnome/gobelin +-- gardent EN PLUS leurs sorts de spécialisation positifs existants). +-- Les maîtres déjà en schéma moderne (creature_default_trainer) sont +-- intacts (le moderne a priorité, le legacy n'aurait aucun effet). +-- C) Option « s'entraîner » sur les menus DÉDIÉS (<>0) gossip sans option. +-- EFFET : restart world (LoadTrainerSpell au boot) + .reload gossip_menu_option. +-- ROLLBACK : ..._lot6_ROLLBACK.sql +-- ============================================================================ + +SET NAMES utf8; + +-- --------------------------------------------------------------------------- +-- A) 222 recettes d'ingénierie (donneur 3290) — source TDB735 TrainerId 407 +-- --------------------------------------------------------------------------- +INSERT INTO npc_trainer (ID, SpellID, MoneyCost, ReqSkillLine, ReqSkillRank, ReqLevel, `Index`) VALUES +(3290,127138,160000,202,600,0,0),(3290,127139,160000,202,600,0,0),(3290,131218,50000,202,550,0,0),(3290,131217,50000,202,550,0,0),(3290,131216,50000,202,550,0,0),(3290,131215,50000,202,550,0,0),(3290,131214,50000,202,550,0,0),(3290,131213,50000,202,550,0,0),(3290,131212,50000,202,550,0,0),(3290,131211,50000,202,550,0,0),(3290,131563,50000,202,550,0,0),(3290,126392,50000,202,550,0,0),(3290,109099,50000,202,550,0,0),(3290,127137,50000,202,565,0,0),(3290,127136,50000,202,525,0,0),(3290,127135,50000,202,575,0,0),(3290,127134,50000,202,550,0,0),(3290,127132,50000,202,570,0,0),(3290,127131,50000,202,550,0,0),(3290,127130,50000,202,525,0,0),(3290,131353,50000,202,500,0,0),(3290,127129,50000,202,600,0,0),(3290,127128,50000,202,550,0,0),(3290,127127,50000,202,525,0,0),(3290,127124,50000,202,500,0,0),(3290,127117,45000,202,600,0,0),(3290,127116,50000,202,525,0,0),(3290,127115,50000,202,560,0,0),(3290,127114,50000,202,500,0,0),(3290,127113,50000,202,500,0,0),(3290,110404,600000,202,500,80,0),(3290,12760,1500,202,205,0,0),(3290,12718,1500,202,205,0,0),(3290,12716,1500,202,205,0,0),(3290,12717,1500,202,205,0,0),(3290,8895,2200,202,225,0,0),(3290,12715,1000,202,205,0,0),(3290,12902,1800,202,210,0,0),(3290,12905,1500,202,210,0,0),(3290,12903,2000,202,215,0,0),(3290,12899,1500,202,205,0,0),(3290,12897,2200,202,215,0,0),(3290,12895,1500,202,205,0,0),(3290,56514,150000,202,425,0,0),(3290,56473,150000,202,425,0,0),(3290,30574,100000,202,375,0,0),(3290,30570,50000,202,350,0,0),(3290,30575,100000,202,375,0,0),(3290,30569,35000,202,340,0,0),(3290,30568,25000,202,325,0,0),(3290,30566,100000,202,375,0,0),(3290,30560,35000,202,340,0,0),(3290,30565,100000,202,375,0,0),(3290,30563,50000,202,350,0,0),(3290,30558,25000,202,325,0,0),(3290,12907,2600,202,235,0,0),(3290,12759,2800,202,240,0,0),(3290,12906,2400,202,230,0,0),(3290,12908,2800,202,240,0,0),(3290,12758,3000,202,245,0,0),(3290,12754,2600,202,235,0,0),(3290,12755,2400,202,230,0,0),(3290,84413,160000,202,475,0,0),(3290,95705,200000,202,500,0,0),(3290,95707,200000,202,500,0,0),(3290,84412,160000,202,475,0,0),(3290,95703,150000,202,440,0,0),(3290,94748,150000,202,445,0,0),(3290,82775,500000,202,425,75,0),(3290,84408,150000,202,450,0,0),(3290,84431,240000,202,525,0,0),(3290,84415,170000,202,475,0,0),(3290,84430,200000,202,510,0,0),(3290,84406,150000,202,440,0,0),(3290,84429,200000,202,505,0,0),(3290,84421,170000,202,490,0,0),(3290,81725,216000,202,525,0,0),(3290,84428,200000,202,515,0,0),(3290,84420,170000,202,490,0,0),(3290,84411,160000,202,465,0,0),(3290,84403,150000,202,425,0,0),(3290,84418,170000,202,475,0,0),(3290,84410,150000,202,450,0,0),(3290,84417,170000,202,495,0,0),(3290,84409,160000,202,455,0,0),(3290,84432,240000,202,525,0,0),(3290,84416,170000,202,475,0,0),(3290,7430,150,202,50,0,0),(3290,3931,250,202,65,0,0),(3290,3929,250,202,65,0,0),(3290,3977,200,202,60,0,0),(3290,3925,150,202,50,0,0),(3290,3923,130,202,30,0,0),(3290,3922,115,202,30,0,0),(3290,3979,1200,202,180,0,0),(3290,4041,5000,202,125,20,0),(3290,3958,800,202,160,0,0),(3290,15255,1500,202,200,0,0),(3290,12603,1800,202,215,0,0),(3290,12599,1800,202,215,0,0),(3290,3962,1000,202,175,0,0),(3290,3961,900,202,170,0,0),(3290,12595,1600,202,205,0,0),(3290,12594,1600,202,205,0,0),(3290,12591,1500,202,200,0,0),(3290,12589,1300,202,195,0,0),(3290,12590,1000,202,175,0,0),(3290,12586,1000,202,175,0,0),(3290,12585,1000,202,175,0,0),(3290,3967,1400,202,190,0,0),(3290,3965,1200,202,185,0,0),(3290,3963,1000,202,175,0,0),(3290,12615,2500,202,225,0,0),(3290,30351,100000,202,275,50,0),(3290,30303,10000,202,300,0,0),(3290,30310,15000,202,300,0,0),(3290,44155,60000,202,300,0,0),(3290,30305,10000,202,300,0,0),(3290,30304,10000,202,300,0,0),(3290,30309,50000,202,340,0,0),(3290,30308,50000,202,340,0,0),(3290,30307,50000,202,340,0,0),(3290,41320,45000,202,350,0,0),(3290,30306,20000,202,325,0,0),(3290,44157,180000,202,375,70,0),(3290,41307,50000,202,375,0,0),(3290,30312,20000,202,320,0,0),(3290,30311,25000,202,325,0,0),(3290,39971,20000,202,335,0,0),(3290,39973,50000,202,335,0,0),(3290,53281,50000,202,350,0,0),(3290,56463,100000,202,375,0,0),(3290,56461,100000,202,375,0,0),(3290,56349,50000,202,350,0,0),(3290,56460,50000,202,350,0,0),(3290,56459,100000,202,375,0,0),(3290,51305,350000,202,350,65,0),(3290,56464,100000,202,375,0,0),(3290,67920,150000,202,435,0,0),(3290,67326,100000,202,410,0,0),(3290,67839,100000,202,410,0,0),(3290,56484,135000,202,440,0,0),(3290,56479,200000,202,450,0,0),(3290,56478,200000,202,430,0,0),(3290,56469,150000,202,425,0,0),(3290,56477,125000,202,415,0,0),(3290,56476,125000,202,410,0,0),(3290,56462,150000,202,435,0,0),(3290,56472,150000,202,425,0,0),(3290,56470,150000,202,425,0,0),(3290,54353,125000,202,400,0,0),(3290,56468,125000,202,405,0,0),(3290,56467,125000,202,420,0,0),(3290,56466,125000,202,420,0,0),(3290,56471,100000,202,390,0,0),(3290,54793,100000,202,380,0,0),(3290,55016,125000,202,405,0,0),(3290,54736,100000,202,390,0,0),(3290,56465,112500,202,420,0,0),(3290,55002,100000,202,380,0,0),(3290,60874,200000,202,450,0,0),(3290,61471,100000,202,390,0,0),(3290,3939,500,202,120,0,0),(3290,4040,500,202,50,10,0),(3290,3956,750,202,150,0,0),(3290,9271,500,202,150,0,0),(3290,8334,300,202,100,0,0),(3290,6458,400,202,135,0,0),(3290,3955,750,202,150,0,0),(3290,3953,600,202,145,0,0),(3290,3950,600,202,140,0,0),(3290,3949,550,202,130,0,0),(3290,3946,500,202,125,0,0),(3290,3945,500,202,125,0,0),(3290,3942,500,202,125,0,0),(3290,3941,500,202,120,0,0),(3290,3978,475,202,110,0,0),(3290,3938,450,202,105,0,0),(3290,3937,450,202,105,0,0),(3290,3936,420,202,105,0,0),(3290,3934,400,202,100,0,0),(3290,3932,300,202,85,0,0),(3290,3973,300,202,90,0,0),(3290,12584,1000,202,150,0,0),(3290,39895,10000,202,275,0,0),(3290,12617,2200,202,230,0,0),(3290,12657,50000,202,200,35,0),(3290,63750,5000,202,250,0,0),(3290,12622,2800,202,245,0,0),(3290,12619,2400,202,235,0,0),(3290,12618,2200,202,230,0,0),(3290,19788,4000,202,250,0,0),(3290,23070,5000,202,250,0,0),(3290,19791,5000,202,260,0,0),(3290,19790,10000,202,260,0,0),(3290,19825,20000,202,290,0,0),(3290,19795,10000,202,275,0,0),(3290,19794,20000,202,270,0,0),(3290,23071,5000,202,260,0,0),(3290,19792,10000,202,260,0,0),(3290,127123,45000,202,600,0,0),(3290,81714,216000,202,525,0,0),(3290,41312,45000,202,350,0,0),(3290,40274,45000,202,350,0,0),(3290,56483,135000,202,440,0,0),(3290,56480,135000,202,440,0,0),(3290,61483,112500,202,420,0,0),(3290,127120,47500,202,600,0,0),(3290,81716,228000,202,525,0,0),(3290,41314,47500,202,350,0,0),(3290,56574,142500,202,440,0,0),(3290,61482,118750,202,420,0,0),(3290,127118,50000,202,600,0,0),(3290,81722,240000,202,525,0,0),(3290,41317,50000,202,350,0,0),(3290,56481,150000,202,440,0,0),(3290,61481,125000,202,420,0,0),(3290,127119,45000,202,600,0,0),(3290,81724,216000,202,525,0,0),(3290,41319,45000,202,350,0,0),(3290,41318,45000,202,350,0,0),(3290,56486,135000,202,440,0,0); + +-- --------------------------------------------------------------------------- +-- B) Référence -3290 depuis les autres maîtres d'ingénierie (hors schéma moderne) +-- --------------------------------------------------------------------------- +INSERT INTO npc_trainer (ID, SpellID, MoneyCost, ReqSkillLine, ReqSkillRank, ReqLevel, `Index`) +SELECT ct.entry, -3290, 0, 0, 0, 0, 0 +FROM creature_template ct JOIN creature c ON c.id=ct.entry +WHERE (ct.npcflag&16)>0 AND ct.subname LIKE '%Engineer%' + AND ct.entry<>3290 + AND NOT EXISTS(SELECT 1 FROM creature_default_trainer cdt WHERE cdt.CreatureId=ct.entry) + AND NOT EXISTS(SELECT 1 FROM npc_trainer nt WHERE nt.ID=ct.entry AND nt.SpellID=-3290) +GROUP BY ct.entry; + +-- --------------------------------------------------------------------------- +-- C) Option « s'entraîner » sur menus dédiés (<>0) des maîtres d'ingénierie +-- gossip-flaggés (hors schéma moderne) qui n'en ont pas. +-- --------------------------------------------------------------------------- +INSERT INTO gossip_menu_option + (MenuId, OptionIndex, OptionIcon, OptionText, OptionBroadcastTextId, OptionType, OptionNpcFlag, VerifiedBuild) +SELECT m.MenuId, m.maxidx+1, 3, 'Je voudrais m''entraîner.', 0, 5, 16, 26972 +FROM ( + SELECT ct.gossip_menu_id AS MenuId, COALESCE(MAX(g.OptionIndex),-1) AS maxidx + FROM creature_template ct JOIN creature c ON c.id=ct.entry + LEFT JOIN gossip_menu_option g ON g.MenuId=ct.gossip_menu_id + WHERE (ct.npcflag&16)>0 AND (ct.npcflag&1)>0 AND ct.gossip_menu_id<>0 + AND ct.subname LIKE '%Engineer%' + AND NOT EXISTS(SELECT 1 FROM creature_default_trainer cdt WHERE cdt.CreatureId=ct.entry) + AND NOT EXISTS(SELECT 1 FROM gossip_menu_option g2 WHERE g2.MenuId=ct.gossip_menu_id AND g2.OptionType=5) + GROUP BY ct.gossip_menu_id +) m; diff --git a/sql/sylvania/trainers_engineering_lot6_20260618_ROLLBACK.sql b/sql/sylvania/trainers_engineering_lot6_20260618_ROLLBACK.sql new file mode 100644 index 0000000..4fe8fdb --- /dev/null +++ b/sql/sylvania/trainers_engineering_lot6_20260618_ROLLBACK.sql @@ -0,0 +1,19 @@ +-- ============================================================================ +-- ROLLBACK — Lot 6 Ingénierie (trainers_engineering_lot6_20260618) +-- Base : dc_world | Date : 2026-06-18 +-- A) recettes du donneur 3290 ; B) références -3290 ; C) options gossip. +-- (3290 n'avait aucune ligne npc_trainer avant ce lot.) +-- ============================================================================ + +SET NAMES utf8; + +-- A) recettes donneur +DELETE FROM npc_trainer WHERE ID = 3290 AND SpellID > 0; +-- B) références +DELETE FROM npc_trainer WHERE SpellID = -3290; +-- C) options gossip (menus dédiés ingénierie) +DELETE FROM gossip_menu_option +WHERE OptionType = 5 AND OptionNpcFlag = 16 AND OptionText = 'Je voudrais m''entraîner.' + AND (MenuId, OptionIndex) IN ( + (1465,0),(1467,0),(1468,1),(1469,0),(4136,0),(4137,0),(4147,0) + ); diff --git a/sql/sylvania/trainers_profession_data_lot5_20260618.sql b/sql/sylvania/trainers_profession_data_lot5_20260618.sql new file mode 100644 index 0000000..2caff60 --- /dev/null +++ b/sql/sylvania/trainers_profession_data_lot5_20260618.sql @@ -0,0 +1,111 @@ +-- ============================================================================ +-- La Légion de Sylvania — Lot 5 : données d'entraînement pour les maîtres de +-- métier « sans données » (hors Ingénierie, traitée séparément lot 6). +-- Base : dc_world (LIVE) | Date : 2026-06-18 +-- ---------------------------------------------------------------------------- +-- CONTEXTE +-- ~103 maîtres de métier spawnés n'avaient AUCUNE donnée d'entraînement (ni +-- schéma moderne `trainer`, ni legacy `npc_trainer`) -> fenêtre vide même +-- quand l'option de gossip existait. Le contenu manque à la source TC +-- (TDB735 officiel n'a que 93 trainers modernes et pas de npc_trainer). +-- MAIS chaque profession dispose déjà, dans ce monde, d'un maître COMPLET +-- (donneur « feuille pure ») dont on réutilise la liste de sorts. +-- +-- Découverte : le menu 0 est le menu universel auto-généré ; il contient +-- déjà l'option « Train me! » (OptionType=5, OptionNpcFlag=16). Donc tout +-- trainer à gossip_menu_id=0 propose déjà l'entraînement DÈS qu'il a des +-- données. Seuls les menus DÉDIÉS (<>0) ont besoin d'une option explicite. +-- ---------------------------------------------------------------------------- +-- DONNEURS feuilles pures (entry -> nb sorts) : +-- Alchimie 1215(143) Forge 7230(248) Enchantement 1317(193) +-- Joaillerie 65098(290) Cuir 1385(278) Couture 57405(235) +-- Calligraphie 92195(148) Premiers soins 126022(36) Pêche 1680(17) +-- Herboristerie 1218(8) Minage 93189(36) Dépeçage 1292(8) +-- Archéologie 93538(10) Cuisine 93536(52) +-- Réutilisation via le mécanisme natif npc_trainer (SpellID négatif = +-- « hérite de tous les sorts du donneur », cf ObjectMgr::LoadTrainerSpell). +-- PÉRIMÈTRE : professions hors Ingénierie. Maîtres de CLASSE intacts +-- (en Legion les sorts de classe s'apprennent au niveau, pas d'un PNJ). +-- EFFET : restart world OU `.reload npc_trainer`(si dispo) + `.reload +-- gossip_menu_option`. ROLLBACK : ..._lot5_ROLLBACK.sql +-- ============================================================================ + +SET NAMES utf8; + +-- --------------------------------------------------------------------------- +-- PART A — Données : 1 ligne de référence-donneur par maître de métier vide. +-- --------------------------------------------------------------------------- +INSERT INTO npc_trainer (ID, SpellID, MoneyCost, ReqSkillLine, ReqSkillRank, ReqLevel, `Index`) +SELECT ct.entry, + -(CASE + WHEN ct.subname LIKE '%Alchem%' THEN 1215 + WHEN ct.subname LIKE '%Blacksmith%' THEN 7230 + WHEN ct.subname LIKE '%Enchant%' THEN 1317 + WHEN ct.subname LIKE '%Jewelcraft%' THEN 65098 + WHEN ct.subname LIKE '%Leatherwork%' OR ct.subname LIKE '%Tanner%' THEN 1385 + WHEN ct.subname LIKE '%Tailor%' THEN 57405 + WHEN ct.subname LIKE '%Inscription%' THEN 92195 + WHEN ct.subname LIKE '%First Aid%' THEN 126022 + WHEN ct.subname LIKE '%Fish%' OR ct.subname LIKE '%Angler%' THEN 1680 + WHEN ct.subname LIKE '%Herbal%' THEN 1218 + WHEN ct.subname LIKE '%Mining%' THEN 93189 + WHEN ct.subname LIKE '%Skinning%' THEN 1292 + WHEN ct.subname LIKE '%Archaeology%' THEN 93538 + WHEN ct.subname LIKE '%Cook%' OR ct.subname LIKE '%Chef%' OR ct.subname LIKE '%Brewmaster%' OR ct.subname LIKE '%Noodle%' OR ct.subname LIKE '%Wok%' THEN 93536 + ELSE NULL END), 0, 0, 0, 0, 0 +FROM creature_template ct JOIN creature c ON c.id=ct.entry +WHERE (ct.npcflag&16)>0 AND (ct.npcflag&32)=0 + AND ct.subname NOT LIKE '%Engineer%' + AND NOT EXISTS(SELECT 1 FROM creature_default_trainer cdt WHERE cdt.CreatureId=ct.entry) + AND NOT EXISTS(SELECT 1 FROM npc_trainer nt WHERE nt.ID=ct.entry) + AND NOT EXISTS(SELECT 1 FROM gossip_menu_option g JOIN gossip_menu_option_trainer t + ON t.MenuId=g.MenuId AND t.OptionIndex=g.OptionIndex + WHERE g.MenuId=ct.gossip_menu_id AND g.OptionType=5) + AND (CASE + WHEN ct.subname LIKE '%Alchem%' THEN 1215 + WHEN ct.subname LIKE '%Blacksmith%' THEN 7230 + WHEN ct.subname LIKE '%Enchant%' THEN 1317 + WHEN ct.subname LIKE '%Jewelcraft%' THEN 65098 + WHEN ct.subname LIKE '%Leatherwork%' OR ct.subname LIKE '%Tanner%' THEN 1385 + WHEN ct.subname LIKE '%Tailor%' THEN 57405 + WHEN ct.subname LIKE '%Inscription%' THEN 92195 + WHEN ct.subname LIKE '%First Aid%' THEN 126022 + WHEN ct.subname LIKE '%Fish%' OR ct.subname LIKE '%Angler%' THEN 1680 + WHEN ct.subname LIKE '%Herbal%' THEN 1218 + WHEN ct.subname LIKE '%Mining%' THEN 93189 + WHEN ct.subname LIKE '%Skinning%' THEN 1292 + WHEN ct.subname LIKE '%Archaeology%' THEN 93538 + WHEN ct.subname LIKE '%Cook%' OR ct.subname LIKE '%Chef%' OR ct.subname LIKE '%Brewmaster%' OR ct.subname LIKE '%Noodle%' OR ct.subname LIKE '%Wok%' THEN 93536 + ELSE NULL END) IS NOT NULL +GROUP BY ct.entry; + +-- --------------------------------------------------------------------------- +-- PART B — Option « s'entraîner » sur les MENUS DÉDIÉS (<>0) des maîtres de +-- métier gossip-flaggés qui n'en ont pas. (menu 0 jamais touché.) +-- OptionNpcFlag=16 -> visible uniquement pour les dresseurs. TrainerId=0 -> +-- fallback legacy. OptionIndex = MAX+1 par menu. À exécuter APRÈS Part A. +-- --------------------------------------------------------------------------- +INSERT INTO gossip_menu_option + (MenuId, OptionIndex, OptionIcon, OptionText, OptionBroadcastTextId, OptionType, OptionNpcFlag, VerifiedBuild) +SELECT m.MenuId, m.maxidx+1, 3, 'Je voudrais m''entraîner.', 0, 5, 16, 26972 +FROM ( + SELECT ct.gossip_menu_id AS MenuId, COALESCE(MAX(g.OptionIndex),-1) AS maxidx + FROM creature_template ct JOIN creature c ON c.id=ct.entry + LEFT JOIN gossip_menu_option g ON g.MenuId=ct.gossip_menu_id + WHERE (ct.npcflag&16)>0 AND (ct.npcflag&32)=0 AND (ct.npcflag&1)>0 + AND ct.gossip_menu_id<>0 + AND ct.subname NOT LIKE '%Engineer%' + AND EXISTS(SELECT 1 FROM npc_trainer nt WHERE nt.ID=ct.entry) + AND NOT EXISTS(SELECT 1 FROM gossip_menu_option g2 WHERE g2.MenuId=ct.gossip_menu_id AND g2.OptionType=5) + AND (CASE + WHEN ct.subname LIKE '%Alchem%' THEN 1 WHEN ct.subname LIKE '%Blacksmith%' THEN 1 + WHEN ct.subname LIKE '%Enchant%' THEN 1 WHEN ct.subname LIKE '%Jewelcraft%' THEN 1 + WHEN ct.subname LIKE '%Leatherwork%' OR ct.subname LIKE '%Tanner%' THEN 1 + WHEN ct.subname LIKE '%Tailor%' THEN 1 WHEN ct.subname LIKE '%Inscription%' THEN 1 + WHEN ct.subname LIKE '%First Aid%' THEN 1 WHEN ct.subname LIKE '%Fish%' OR ct.subname LIKE '%Angler%' THEN 1 + WHEN ct.subname LIKE '%Herbal%' THEN 1 WHEN ct.subname LIKE '%Mining%' THEN 1 + WHEN ct.subname LIKE '%Skinning%' THEN 1 WHEN ct.subname LIKE '%Archaeology%' THEN 1 + WHEN ct.subname LIKE '%Cook%' OR ct.subname LIKE '%Chef%' OR ct.subname LIKE '%Brewmaster%' OR ct.subname LIKE '%Noodle%' OR ct.subname LIKE '%Wok%' THEN 1 + ELSE NULL END) IS NOT NULL + GROUP BY ct.gossip_menu_id +) m; diff --git a/sql/sylvania/trainers_profession_data_lot5_20260618_ROLLBACK.sql b/sql/sylvania/trainers_profession_data_lot5_20260618_ROLLBACK.sql new file mode 100644 index 0000000..917a724 --- /dev/null +++ b/sql/sylvania/trainers_profession_data_lot5_20260618_ROLLBACK.sql @@ -0,0 +1,34 @@ +-- ============================================================================ +-- ROLLBACK — Lot 5 (trainers_profession_data_lot5_20260618) +-- Base : dc_world | Date : 2026-06-18 +-- Supprime UNIQUEMENT ce que le lot 5 a inséré : +-- A) les lignes de référence-donneur (SpellID<0) des 103 maîtres concernés +-- (ces entrées n'avaient AUCUNE ligne npc_trainer auparavant) ; +-- B) les 33 options de gossip trainer ajoutées sur les menus dédiés. +-- Puis restart world OU reload des tables. +-- ============================================================================ + +SET NAMES utf8; + +-- A) données +DELETE FROM npc_trainer WHERE SpellID < 0 AND ID IN ( +223,1246,1383,1386,2798,3007,3008,3009,3069,3549,3605,3607,3703,3964,3965,4213, +4605,4609,5695,6288,6387,7871,7949,8153,10266,10276,10277,10278,11044,11047, +11049,11065,11067,11071,11074,11081,11083,11084,12025,14740,16367,16634,16643, +16671,16687,16688,16703,16723,16725,16727,16740,16741,16744,16745,17424,18018, +18748,18754,18771,18773,18774,18776,18802,19052,19180,19184,19248,19249,19250, +19478,19539,19774,19775,19777,19778,21087,26956,26960,26974,26975,26986,26996, +27023,27029,30715,33639,33641,33674,33678,33683,43431,47573,47574,47578,51997, +53409,53415,62327,66353,66354,66357,66358,66360 +); + +-- B) options de gossip (menus dédiés) +DELETE FROM gossip_menu_option +WHERE OptionType = 5 AND OptionNpcFlag = 16 AND OptionText = 'Je voudrais m''entraîner.' + AND (MenuId, OptionIndex) IN ( + (2742,0),(2747,0),(2748,0),(2761,0),(2782,0),(4116,0),(4119,0),(4134,1), + (4154,0),(4157,0),(4158,0),(4164,1),(4170,0),(4181,0),(4187,0),(4204,0), + (4207,0),(4842,0),(6087,2),(7455,1),(8379,0),(8381,0),(8434,1),(8828,0), + (8863,0),(10350,2),(13291,1),(14582,1),(14624,1),(14628,2),(15098,1), + (15099,1),(15100,1) + );