Core/Quests: Fixed QuestScript::OnQuestStatusChange incorrectly triggering with QUEST_STATUS_INCOMPLETE when removing items from quest objectives on rewarding quest

Port From (https://github.com/TrinityCore/TrinityCore/commit/2c9b67f00be95bd816dbaa9db43838a67e187753)
This commit is contained in:
Hondacrx
2025-08-20 22:30:52 -04:00
parent 846daa3891
commit 06030a7ce8
5 changed files with 53 additions and 75 deletions
+9 -14
View File
@@ -3785,26 +3785,21 @@ namespace Game.Spells
if (oldStatus == QuestStatus.None)
return;
player.RemoveActiveQuest(quest_id, false);
// remove all quest entries for 'entry' from quest log
for (byte slot = 0; slot < SharedConst.MaxQuestLogSize; ++slot)
if (oldStatus != QuestStatus.Rewarded)
{
uint logQuest = player.GetQuestSlotQuestId(slot);
if (logQuest == quest_id)
// we ignore unequippable quest items in this case, it's still be equipped
player.TakeQuestSourceItem(quest_id, false);
if (quest.HasFlag(QuestFlags.Pvp))
{
player.SetQuestSlot(slot, 0);
// we ignore unequippable quest items in this case, it's still be equipped
player.TakeQuestSourceItem(logQuest, false);
if (quest.HasFlag(QuestFlags.Pvp))
{
player.pvpInfo.IsHostile = player.pvpInfo.IsInHostileArea || player.HasPvPForcingQuest();
player.UpdatePvPState();
}
player.pvpInfo.IsHostile = player.pvpInfo.IsInHostileArea || player.HasPvPForcingQuest();
player.UpdatePvPState();
}
}
player.RemoveActiveQuest(quest_id, false);
player.RemoveRewardedQuest(quest_id);
player.DespawnPersonalSummonsForQuest(quest_id);