diff --git a/src/server/scripts/BrokenIsles/ClassHalls/class_hall_hunter.cpp b/src/server/scripts/BrokenIsles/ClassHalls/class_hall_hunter.cpp index 1152c66..4df2cb4 100644 --- a/src/server/scripts/BrokenIsles/ClassHalls/class_hall_hunter.cpp +++ b/src/server/scripts/BrokenIsles/ClassHalls/class_hall_hunter.cpp @@ -220,8 +220,12 @@ public: switch (action) { case GOSSIP_ACTION_INFO_DEF + 1: - player->CastSpell(player, SPELL_PLAYERCHOICE, true); // Display player spec choice + // ORDRE CRITIQUE : fermer AVANT de lancer le sort. SendCloseGossip() + // appelle _interactionData.Reset(), ce qui efface le PlayerChoiceId + // que SendPlayerChoice vient d'inscrire, et le serveur rejette + // ensuite le clic du joueur. CloseGossipMenuFor(player); + player->CastSpell(player, SPELL_PLAYERCHOICE, true); // Display player spec choice break; } return true; diff --git a/src/server/scripts/BrokenIsles/DemonHunterZones/zone_vault_of_wardens.cpp b/src/server/scripts/BrokenIsles/DemonHunterZones/zone_vault_of_wardens.cpp index 46c5033..9a16a01 100644 --- a/src/server/scripts/BrokenIsles/DemonHunterZones/zone_vault_of_wardens.cpp +++ b/src/server/scripts/BrokenIsles/DemonHunterZones/zone_vault_of_wardens.cpp @@ -1428,8 +1428,14 @@ public: npc_korvas_bloodthorn() : CreatureScript("npc_korvas_bloodthorn") { } bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override { - player->CastSpell(player, SPELL_NEW_DIRECTION_CHOICE_KAYN_OR_ALTRUIS, true); // Display follower choice + // ORDRE CRITIQUE : fermer le dialogue AVANT de lancer le sort. + // PlayerMenu::SendCloseGossip() appelle _interactionData.Reset(), ce qui + // efface le PlayerChoiceId que SendPlayerChoice vient d'inscrire. Dans + // l'ordre inverse, la fenetre s'affichait bien mais le serveur avait + // oublie quel choix il autorisait, et rejetait le clic du joueur : + // "tried to respond to invalid player choice 234 (allowed 0)" CloseGossipMenuFor(player); + player->CastSpell(player, SPELL_NEW_DIRECTION_CHOICE_KAYN_OR_ALTRUIS, true); // Display follower choice return true; } };