Mardum : le tome des secrets gangrenes nest plus recliquable

Le livre relancait le choix de specialisation sans aucune condition : le
joueur pouvait le rouvrir et reprendre lautre spe a volonte. Chaque passage
relance LearnSpell + ActivateTalentGroup et reaccorde le credit de quete.

Consequence observee le 18/08/2026 sur un personnage de test :
primarySpecialization restee a 577 (Devastation) alors quil portait larme
de Vengeance et avait recu la variante Vengeance de Cry Havoc.

Deux gardes : le livre ne souvre plus une fois la quete 40051 validee, et
le gestionnaire de reponse refuse de sappliquer deux fois quelle que soit
la facon dont la fenetre serait rouverte.

NOTE : ces 16 lignes etaient deja EN SERVICE depuis hier - embarquees par
les compilations suivantes - mais jamais commitees. Elles le sont enfin.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
SylvaniaCore deploy
2026-08-20 11:46:27 +02:00
parent 193d36dcbc
commit 01cbf6b3ca
@@ -52,6 +52,7 @@ enum MardumQuests
// Le script ne connaissait que la premiere : pour un joueur Vengeance,
// aucun des cinq PNJ ne reagissait au dialogue. Le script de la Vigie
// brisee, lui, gere bien ses variantes (_H/_V, _DMG_SPEC/_TANK_SPEC).
QUEST_FEL_SECRETS = 40051,
QUEST_CRY_HAVOC = 39516,
QUEST_CRY_HAVOC_VENGEANCE = 39515,
QUEST_THEIR_NUMBERS_ARE_LEGION = 38819
@@ -916,6 +917,15 @@ public:
bool OnGossipHello(Player* player, GameObject* /*go*/) override
{
// Sans cette condition le livre restait recliquable indefiniment : le
// joueur pouvait rouvrir le choix et reprendre l'autre specialisation
// a volonte. Chaque passage relance LearnSpell + ActivateTalentGroup,
// ce qui laisse un etat de specialisation incoherent (constate le
// 18/08/2026 : primarySpecialization=577 Devastation sur un personnage
// portant l'arme de Vengeance). Le choix doit etre unique.
if (player->GetQuestStatus(QUEST_FEL_SECRETS) != QUEST_STATUS_INCOMPLETE)
return false;
player->CastSpell(player, 194938, true); // Display player spec choice
return false;
}
@@ -935,6 +945,12 @@ public:
if (choiceID != PLAYER_CHOICE_DH_SPEC_SELECTION)
return;
// Deuxieme garde-fou, independant du livre : ne jamais appliquer le
// choix deux fois, quelle que soit la facon dont la fenetre a ete
// rouverte.
if (player->GetQuestStatus(QUEST_FEL_SECRETS) != QUEST_STATUS_INCOMPLETE)
return;
player->LearnSpell(200749, false); // Allow to choose specialization
switch (responseID)