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).
This commit is contained in:
SylvaniaCore deploy
2026-08-13 08:42:47 +02:00
parent abb14c4b19
commit 4a3f0efb3f
+61
View File
@@ -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;