From 4a3f0efb3f060dd3bdbd3e21d0b77661826d9d87 Mon Sep 17 00:00:00 2001 From: SylvaniaCore deploy Date: Thu, 13 Aug 2026 08:42:47 +0200 Subject: [PATCH] Fix quete Transmission de sagesse (29790) : bug TrinityCore jamais corrige publiquement Issue TrinityCore #22243 (fermee sans solution) : Shang Xi disparait a lacceptation, aucun dialogue, quete interminable. Trois causes cumulees, identifiees par sondes temporaires et .debug phase : 1. PHASE : le PNJ de scene (56686) heritait de la phase du donneur (1527), que le joueur PERD justement en acceptant la quete (il ne garde que 1327). Cree mais invisible. Mesure : summon=OK cibleVoitSummon=NON. 2. DIALOGUES : repliques et sons ciblaient invocateur (7) / proprietaire (23) - non resolus dans les listes daction differees (source_type 9). 3. CREDIT : le sort 106625 (credit du PNJ 56688 = lobjectif) ciblait 23 et sexecutait au meme instant que la disparition du PNJ. Correctifs : retrait de phase avant invocation + le joueur invoque ; le PNJ force sa phase sur 1327 ; textes/sons cibles sur soi ; credit attribue directement (KilledMonster) au joueur le plus proche ; despawn repousse de 3s. Patch SQL rejouable, valide en jeu de bout en bout. Note : seul le patch SQL est commite - dautres fichiers du working tree appartiennent a une session parallele (module bots/BG). --- sql/sylvania/passing_wisdom_29790_fix.sql | 61 +++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 sql/sylvania/passing_wisdom_29790_fix.sql diff --git a/sql/sylvania/passing_wisdom_29790_fix.sql b/sql/sylvania/passing_wisdom_29790_fix.sql new file mode 100644 index 0000000..cdb1097 --- /dev/null +++ b/sql/sylvania/passing_wisdom_29790_fix.sql @@ -0,0 +1,61 @@ +-- ===================================================================== +-- Île Vagabonde — quête « Transmission de sagesse » (29790) RÉPARÉE +-- +-- Bug TrinityCore connu et JAMAIS corrigé publiquement +-- (cf. issue #22243, fermée sans solution) : en acceptant la quête, +-- Maître Shang Xi disparaît, aucun dialogue ne se lance, la quête est +-- impossible à terminer. +-- +-- Diagnostic (sondes temporaires dans SmartAI/SmartScript + .debug phase) : +-- 1. PHASE — le PNJ de la scène (56686) est invoqué par le PNJ donneur +-- (55672, PhaseId 1527). Or accepter la quête FAIT PERDRE 1527 au +-- joueur (phase_area : 1527 = "avant que 29790 soit prise"), qui ne +-- garde que 1327 (phase de zone). Le PNJ invoqué héritait donc d'une +-- phase que le joueur venait de quitter -> créé mais INVISIBLE. +-- Mesuré : summon=OK, cibleVoitSummon=NON, phasesSummon=1527, +-- phasesCible=1327. +-- 2. DIALOGUES — répliques et sons ciblaient « invocateur » (7) ou +-- « propriétaire/invocateur » (23) : ces cibles ne se résolvent pas +-- dans les listes d'actions différées (source_type 9) -> muet. +-- 3. CRÉDIT — le sort « Planting Stave Credit » (106625, crédit du PNJ +-- 56688 = l'objectif) ciblait 23 (idem) ET s'exécutait au même +-- instant que la disparition du PNJ. +-- +-- Correctifs ci-dessous. Validé en jeu : PNJ visible, 6 répliques jouées, +-- objectif validé, quête rendable. +-- ===================================================================== + +-- 1) Donneur : retirer la phase AVANT d'invoquer, puis laisser le JOUEUR +-- invoquer (il doit être l'invocateur pour la suite de la scène). +UPDATE `smart_scripts` SET `action_type`=44, `action_param1`=1527, `action_param2`=0, `action_param3`=0, + `comment`='Master Shang - On Accepted Quest - Remove Phase 1527 (AVANT invocation)' +WHERE `entryorguid`=55672 AND `source_type`=0 AND `id`=0; + +UPDATE `smart_scripts` SET `action_type`=85, `action_param1`=106623, `action_param2`=2, `action_param3`=0, + `action_param4`=0, `action_param5`=0, `action_param6`=0, + `comment`='Master Shang - On Accepted Quest - Invoker Cast Summon Master Shang Xi' +WHERE `entryorguid`=55672 AND `source_type`=0 AND `id`=1; + +-- 2) PNJ invoqué : forcer sa phase sur celle du joueur (1327), sinon invisible. +DELETE FROM `smart_scripts` WHERE `entryorguid`=56686 AND `source_type`=0 AND `id` IN (16,17); +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 +(56686,0,16,0,54,0,100,0,0,0,0,0,44,1527,0,0,0,0,0,1,0,0,0,0,0,0,0,'Master Shang (summoned) - Just Summoned - Remove inherited phase 1527'), +(56686,0,17,0,54,0,100,0,0,0,0,0,44,1327,1,0,0,0,0,1,0,0,0,0,0,0,0,'Master Shang (summoned) - Just Summoned - Set phase 1327 (= phase du joueur, sinon invisible)'); + +-- 3) Dialogues et sons : cibler le PNJ lui-même (les cibles 7/23 ne se +-- résolvent pas en liste d'actions différée). +UPDATE `smart_scripts` SET `target_type`=1 +WHERE `action_type` IN (1,4) + AND ((`entryorguid`=56686 AND `source_type`=0) + OR (`entryorguid` IN (5668600,5668601,5668602,5668603) AND `source_type`=9)); + +-- 4) Crédit de quête : attribution directe (KilledMonster) au joueur le +-- plus proche, et disparition repoussée de 3 s pour ne pas la couper. +UPDATE `smart_scripts` SET `action_type`=33, `action_param1`=56688, `action_param2`=0, + `target_type`=21, `target_param1`=50, + `comment`='Master Shang - Credit direct de la quete (KilledMonster 56688) sur le joueur le plus proche' +WHERE `entryorguid`=5668603 AND `source_type`=9 AND `id`=5; + +UPDATE `smart_scripts` SET `event_param1`=3000, + `comment`='Master Shang - Despawn (3s apres le credit)' +WHERE `entryorguid`=5668603 AND `source_type`=9 AND `id`=6;