From d377beadaf4adba2fe7724cf62a523f45976cf8f Mon Sep 17 00:00:00 2001 From: SylvaniaCore deploy Date: Fri, 21 Aug 2026 22:35:48 +0200 Subject: [PATCH] Choix du compagnon (234) : les boutons ne confirmaient pas La fenetre saffichait correctement mais cliquer ne confirmait rien. Le handler serveur est pourtant sain : HandlePlayerChoiceResponse appelle OnPlayerChoiceResponse puis nexige aucune recompense. Le clic narrivait donc pas jusquau serveur. Seule divergence structurelle avec le choix 231, qui fonctionne : celui-ci possede une ligne playerchoice_response_reward par reponse, entierement a zero, la ou 234 nen avait aucune. Dans SendPlayerChoice, le bloc Reward nest emis que si Reward existe : les reponses de 234 partaient donc sans ce bloc. Les deux choix partagent par ailleurs le meme jeton de confirmation et le meme style dinterface. HYPOTHESE EMPIRIQUE, pas une cause prouvee : impossible dobserver ce que le client fait du bloc manquant. Cest la seule divergence entre un choix qui marche et un qui ne marche pas, et le changement naccorde rien a personne. Co-Authored-By: Claude Opus 4.8 --- sql/sylvania/playerchoice_234_reward.sql | 37 ++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 sql/sylvania/playerchoice_234_reward.sql diff --git a/sql/sylvania/playerchoice_234_reward.sql b/sql/sylvania/playerchoice_234_reward.sql new file mode 100644 index 0000000..4490d13 --- /dev/null +++ b/sql/sylvania/playerchoice_234_reward.sql @@ -0,0 +1,37 @@ +-- ===================================================================== +-- Choix du compagnon (234) — les boutons ne confirmaient pas le choix +-- +-- Signalé en jeu : la fenêtre s'affiche correctement (et en français depuis +-- e2300ba4), mais cliquer sur « Kayn Chassesoleil » ou « Altruis le +-- Souffrant » ne confirme rien et ne valide pas la quête. +-- +-- Le handler serveur est pourtant sain : HandlePlayerChoiceResponse appelle +-- OnPlayerChoiceResponse puis n'exige aucune récompense (`if (Reward)`). +-- Le clic n'arrive donc pas jusqu'au serveur — c'est le client qui refuse. +-- +-- Seule différence structurelle avec le choix 231 (choix de spécialisation, +-- qui fonctionne) : celui-ci possède une ligne playerchoice_response_reward +-- par réponse, entièrement à zéro, alors que 234 n'en a AUCUNE. +-- Conséquence côté paquet : dans Player::SendPlayerChoice, le bloc Reward +-- n'est émis que `if (playerChoiceResponseTemplate.Reward)`. Les réponses de +-- 234 partaient donc sans ce bloc, là où celles de 231 le portent (vide). +-- Les deux choix partagent par ailleurs le même jeton de confirmation +-- CONFIRM_ARTIFACT_CHOICE et le même style d'interface. +-- +-- On aligne donc 234 sur 231 : deux lignes de récompense entièrement à +-- zéro, qui n'accordent rien mais rétablissent la structure du paquet. +-- +-- ⚠️ HYPOTHÈSE EMPIRIQUE, pas une cause prouvée : je n'ai pas pu observer +-- ce que le client fait du bloc manquant. C'est la seule divergence entre +-- un choix qui marche et un qui ne marche pas, et le changement n'accorde +-- rien à personne — donc sans risque à tester. +-- +-- Pas de rechargement à chaud : LoadPlayerChoices() n'est appelée qu'au +-- démarrage, il n'existe aucune commande reload pour cette table. +-- ===================================================================== + +DELETE FROM `playerchoice_response_reward` WHERE `ChoiceId`=234; +INSERT INTO `playerchoice_response_reward` + (`ChoiceId`,`ResponseId`,`TitleId`,`PackageId`,`SkillLineId`,`SkillPointCount`,`ArenaPointCount`,`HonorPointCount`,`Money`,`Xp`,`SpellID`,`VerifiedBuild`) VALUES +(234,486,0,0,0,0,0,0,0,0,0,0), +(234,487,0,0,0,0,0,0,0,0,0,0);