mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-19 00:48:56 +01:00
Core/Quest: do not save/load Dungeon Finder/daily/repeatable quests as completed (#17458)
* Core/Quest: do not save/load Dungeon Finder/daily/repeatable quests as completed
This commit is contained in:
@@ -15124,8 +15124,11 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
|
||||
SetSeasonalQuestStatus(quest_id);
|
||||
|
||||
RemoveActiveQuest(quest_id, false);
|
||||
m_RewardedQuests.insert(quest_id);
|
||||
m_RewardedQuestsSave[quest_id] = QUEST_DEFAULT_SAVE_TYPE;
|
||||
if (quest->CanIncreaseRewardedQuestCounters())
|
||||
{
|
||||
m_RewardedQuests.insert(quest_id);
|
||||
m_RewardedQuestsSave[quest_id] = QUEST_DEFAULT_SAVE_TYPE;
|
||||
}
|
||||
|
||||
// StoreNewItem, mail reward, etc. save data directly to the database
|
||||
// to prevent exploitable data desynchronisation we save the quest status to the database too
|
||||
@@ -18517,7 +18520,8 @@ void Player::_LoadQuestStatusRewarded(PreparedQueryResult result)
|
||||
AddQuestRewardedTalentCount(talents);
|
||||
}
|
||||
|
||||
m_RewardedQuests.insert(quest_id);
|
||||
if (quest->CanIncreaseRewardedQuestCounters())
|
||||
m_RewardedQuests.insert(quest_id);
|
||||
}
|
||||
while (result->NextRow());
|
||||
}
|
||||
|
||||
@@ -416,3 +416,10 @@ uint32 Quest::CalculateHonorGain(uint8 level) const
|
||||
|
||||
return honor;
|
||||
}
|
||||
|
||||
bool Quest::CanIncreaseRewardedQuestCounters() const
|
||||
{
|
||||
// Dungeon Finder/Daily/Repeatable (if not weekly, monthly or seasonal) quests are never considered rewarded serverside.
|
||||
// This affects counters and client requests for completed quests.
|
||||
return (!IsDFQuest() && !IsDaily() && (!IsRepeatable() || IsWeekly() || IsMonthly() || IsSeasonal()));
|
||||
}
|
||||
|
||||
@@ -302,6 +302,7 @@ class Quest
|
||||
bool IsAllowedInRaid(Difficulty difficulty) const;
|
||||
bool IsDFQuest() const { return (SpecialFlags & QUEST_SPECIAL_FLAGS_DF_QUEST) != 0; }
|
||||
uint32 CalculateHonorGain(uint8 level) const;
|
||||
bool CanIncreaseRewardedQuestCounters() const;
|
||||
|
||||
// multiple values
|
||||
std::string ObjectiveText[QUEST_OBJECTIVES_COUNT];
|
||||
|
||||
Reference in New Issue
Block a user