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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user