aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellEffects.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2025-07-30 18:35:39 +0200
committerShauren <shauren.trinity@gmail.com>2025-07-30 18:35:39 +0200
commit2c9b67f00be95bd816dbaa9db43838a67e187753 (patch)
tree32da7cfefc4a27343e811954171e7f384ce8d663 /src/server/game/Spells/SpellEffects.cpp
parente203a3bad75432ef0b067b9a4c10844f6dad77df (diff)
Core/Quests: Fixed QuestScript::OnQuestStatusChange incorrectly triggering with QUEST_STATUS_INCOMPLETE when removing items from quest objectives on rewarding quest
Closes #31181
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
-rw-r--r--src/server/game/Spells/SpellEffects.cpp23
1 files changed, 9 insertions, 14 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 10e2d052c69..ef3394e367e 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -4068,26 +4068,21 @@ void Spell::EffectQuestClear()
if (oldStatus == QUEST_STATUS_NONE)
return;
+ player->RemoveActiveQuest(quest_id, false);
+
// remove all quest entries for 'entry' from quest log
- for (uint8 slot = 0; slot < MAX_QUEST_LOG_SIZE; ++slot)
+ if (oldStatus != QUEST_STATUS_REWARDED)
{
- uint32 logQuest = player->GetQuestSlotQuestId(slot);
- if (logQuest == quest_id)
- {
- player->SetQuestSlot(slot, 0);
-
- // we ignore unequippable quest items in this case, it's still be equipped
- player->TakeQuestSourceItem(logQuest, false);
+ // we ignore unequippable quest items in this case, it's still be equipped
+ player->TakeQuestSourceItem(quest_id, false);
- if (quest->HasFlag(QUEST_FLAGS_FLAGS_PVP))
- {
- player->pvpInfo.IsHostile = player->pvpInfo.IsInHostileArea || player->HasPvPForcingQuest();
- player->UpdatePvPState();
- }
+ if (quest->HasFlag(QUEST_FLAGS_FLAGS_PVP))
+ {
+ player->pvpInfo.IsHostile = player->pvpInfo.IsInHostileArea || player->HasPvPForcingQuest();
+ player->UpdatePvPState();
}
}
- player->RemoveActiveQuest(quest_id, false);
player->RemoveRewardedQuest(quest_id);
player->DespawnPersonalSummonsForQuest(quest_id);