From 68c10fa6eadf5d1a96cf266d5d94448d6cc6dfd5 Mon Sep 17 00:00:00 2001 From: SylvaniaCore deploy Date: Tue, 11 Aug 2026 09:07:37 +0000 Subject: [PATCH] Fix chaines de quetes a invisibilite : rafraichir les auras spell_area au rendu/acceptation Les entrees spell_area conditionnees par un statut de quete (quest_start/ quest_end) n etaient reevaluees QUE lors d un changement de zone/aire. Consequence : rendre une quete sans changer d aire ne donnait jamais l aura attendue. Sur l Ile Vagabonde, la chaine utilise See Quest Invis 4/5 : apres avoir rendu Dafeng (29785) sur place, le joueur n obtenait pas 104566, donc Aysa (Quest Invisibility 4) restait INVISIBLE et Bataille pyrotechnique (29786) ne pouvait jamais etre prise. Chaine morte sans deco/reco. Fix : appel de UpdateAreaDependentAuras() en fin de RewardQuest et de AddQuest (cas miroir a l acceptation). Portee : toute chaine a invisibilite de quete du serveur. Diagnostic : .gps du joueur (aire 5886 correcte) + lecture de SpellArea::IsFitToRequirements ; valide en jeu (Aysa visible, quete offerte). --- src/server/game/Entities/Player/Player.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index ab384ee..5e05646 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -16000,7 +16000,11 @@ void Player::AddQuest(Quest const* quest, Object* questGiver) sScriptMgr->OnQuestStatusChange(this, quest_id); sScriptMgr->OnQuestStatusChange(this, quest, oldStatus, questStatusData.Status); - sScriptMgr->OnQuestAccept(this, quest); + sScriptMgr->OnQuestAccept(this, quest); + + // meme raison que dans RewardQuest : accepter une quete change son statut et donc + // l eligibilite des entrees spell_area qui en dependent. [fix Sylvania] + UpdateAreaDependentAuras(); } void Player::ForceCompleteQuest(uint32 quest_id) @@ -16466,6 +16470,12 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver, sScriptMgr->OnQuestStatusChange(this, quest, oldStatus, QUEST_STATUS_REWARDED); + // Les entrees spell_area conditionnees par un statut de quete (quest_start/quest_end) + // ne sont reevaluees que lors d un changement de zone/aire. Sans ce rappel, rendre une + // quete sans bouger laissait le joueur sans l aura attendue - typiquement les chaines a + // "See Quest Invis" (Ile Vagabonde) : le PNJ suivant, invisible, ne proposait jamais sa + // quete tant que le joueur ne changeait pas d aire. [fix Sylvania] + UpdateAreaDependentAuras(); } void Player::SetRewardedQuest(uint32 quest_id)