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).
This commit is contained in:
SylvaniaCore deploy
2026-08-11 09:07:37 +00:00
parent 2830420cf5
commit 68c10fa6ea
+11 -1
View File
@@ -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)