From 65bb5690a883fe4e7e8f674c0ecf485cd2cd5f8f Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Wed, 18 Apr 2018 20:44:39 +0200 Subject: [PATCH] Core/LFG: added new field to lfg_dungeon_rewards to specify if the first reward shall reset weekly or daily --- .../4.3.4/custom_2018_04_18_00_characters.sql | 1 + .../4.3.4/custom_2018_04_18_00_world.sql | 8 +-- .../Implementation/CharacterDatabase.cpp | 7 +-- .../Implementation/CharacterDatabase.h | 3 +- src/server/game/DungeonFinding/LFGMgr.cpp | 15 +++--- src/server/game/DungeonFinding/LFGMgr.h | 7 +-- src/server/game/Entities/Player/Player.cpp | 49 ++++++++++++++----- src/server/game/Entities/Player/Player.h | 17 +++++-- src/server/game/Handlers/LFGHandler.cpp | 16 +++--- src/server/game/World/World.cpp | 24 ++++++--- src/server/game/World/World.h | 2 +- 11 files changed, 101 insertions(+), 48 deletions(-) diff --git a/sql/updates/characters/4.3.4/custom_2018_04_18_00_characters.sql b/sql/updates/characters/4.3.4/custom_2018_04_18_00_characters.sql index bf4cf0cbca4..4b939c2f8a2 100644 --- a/sql/updates/characters/4.3.4/custom_2018_04_18_00_characters.sql +++ b/sql/updates/characters/4.3.4/custom_2018_04_18_00_characters.sql @@ -3,5 +3,6 @@ CREATE TABLE `character_rewardstatus_lfg`( `guid` INT(10) NOT NULL DEFAULT 0 COMMENT 'Global Unique Identifier', `dungeonId` SMALLINT(3) NOT NULL DEFAULT 0 COMMENT 'Dungeon ID Identifier', `rewardCount` TINYINT(3) UNSIGNED DEFAULT 0 COMMENT 'Dungeon First Reward Count Identifier', + `dailyReset` TINYINT(1) UNSIGNED DEFAULT 0 COMMENT 'Reward Count Daily Reset Identifier', PRIMARY KEY (`dungeonId`) ); diff --git a/sql/updates/world/4.3.4/custom_2018_04_18_00_world.sql b/sql/updates/world/4.3.4/custom_2018_04_18_00_world.sql index e9307152b8c..0cbf1e2fdbd 100644 --- a/sql/updates/world/4.3.4/custom_2018_04_18_00_world.sql +++ b/sql/updates/world/4.3.4/custom_2018_04_18_00_world.sql @@ -1,8 +1,10 @@ -ALTER TABLE `lfg_dungeon_rewards` ADD COLUMN `completionsPerWeek` TINYINT(3) UNSIGNED DEFAULT 0 NULL COMMENT 'Maximum amount that the first quest may be rewarded' AFTER `otherQuestId`; +ALTER TABLE `lfg_dungeon_rewards` ADD COLUMN `completionsPerPeriod` TINYINT(3) UNSIGNED DEFAULT 0 NULL COMMENT 'Maximum amount that the first quest may be rewarded' AFTER `otherQuestId`; +ALTER TABLE `lfg_dungeon_rewards` ADD COLUMN `dailyReset` TINYINT(1) UNSIGNED DEFAULT 0 NULL COMMENT 'Indicator for resetting rewards daily or weekly' AFTER `completionsPerPeriod`; UPDATE `quest_template` SET `RewardCurrencyId1`= 0, `RewardCurrencyCount1`= 0 WHERE `ID` = 28908; UPDATE `quest_template` SET `RewardCurrencyCount1`= 14000 WHERE `ID` = 28907; UPDATE `quest_template` SET `Flags`= 0 WHERE `ID`= 30110; -UPDATE `lfg_dungeon_rewards` SET `completionsPerWeek`= 7 WHERE `dungeonId` NOT IN (417, 416, 434, 301); -UPDATE `lfg_dungeon_rewards` SET `completionsPerWeek`= 1 WHERE `dungeonId` IN (417, 416); +UPDATE `lfg_dungeon_rewards` SET `completionsPerPeriod`= 7 WHERE `dungeonId` NOT IN (417, 416, 434, 301); +UPDATE `lfg_dungeon_rewards` SET `completionsPerPeriod`= 1 WHERE `dungeonId` IN (417, 416); +UPDATE `lfg_dungeon_rewards` SET `completionsPerPeriod`= 1, `dailyReset`= 1 WHERE `dungeonId` IN (288, 287, 286, 285); diff --git a/src/server/database/Database/Implementation/CharacterDatabase.cpp b/src/server/database/Database/Implementation/CharacterDatabase.cpp index 161cdd83441..c3c8ed614d1 100644 --- a/src/server/database/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/database/Database/Implementation/CharacterDatabase.cpp @@ -93,10 +93,11 @@ void CharacterDatabaseConnection::DoPrepareStatements() PrepareStatement(CHAR_DEL_RESET_CHARACTER_QUESTSTATUS_MONTHLY, "DELETE FROM character_queststatus_monthly", CONNECTION_ASYNC); PrepareStatement(CHAR_DEL_RESET_CHARACTER_QUESTSTATUS_SEASONAL_BY_EVENT, "DELETE FROM character_queststatus_seasonal WHERE event = ?", CONNECTION_ASYNC); - PrepareStatement(CHAR_SEL_CHARACTER_REWARDSTATUS_LFG, "SELECT dungeonId, rewardCount FROM character_rewardstatus_lfg WHERE guid = ?", CONNECTION_ASYNC); + PrepareStatement(CHAR_SEL_CHARACTER_REWARDSTATUS_LFG, "SELECT dungeonId, rewardCount, dailyReset FROM character_rewardstatus_lfg WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_DEL_CHARACTER_REWARDSTATUS_LFG, "DELETE FROM character_rewardstatus_lfg WHERE guid = ?", CONNECTION_ASYNC); - PrepareStatement(CHAR_INS_CHARACTER_REWARDSTATUS_LFG, "INSERT INTO character_rewardstatus_lfg (guid, dungeonId, rewardCount) VALUES (?, ?, ?)", CONNECTION_ASYNC); - PrepareStatement(CHAR_DEL_RESET_CHARACTER_REWARDSTATUS_LFG, "DELETE FROM character_rewardstatus_lfg", CONNECTION_ASYNC); + PrepareStatement(CHAR_INS_CHARACTER_REWARDSTATUS_LFG, "INSERT INTO character_rewardstatus_lfg (guid, dungeonId, rewardCount, dailyReset) VALUES (?, ?, ?, ?)", CONNECTION_ASYNC); + PrepareStatement(CHAR_DEL_RESET_CHARACTER_REWARDSTATUS_LFG_WEEKLY, "DELETE FROM character_rewardstatus_lfg WHERE dailyReset = 0", CONNECTION_ASYNC); + PrepareStatement(CHAR_DEL_RESET_CHARACTER_REWARDSTATUS_LFG_DAILY, "DELETE FROM character_rewardstatus_lfg WHERE dailyReset = 1", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_CHARACTER_REPUTATION, "SELECT faction, standing, flags FROM character_reputation WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_CHARACTER_INVENTORY, "SELECT creatorGuid, giftCreatorGuid, count, duration, charges, flags, enchantments, randomPropertyId, durability, playedTime, text, bag, slot, " diff --git a/src/server/database/Database/Implementation/CharacterDatabase.h b/src/server/database/Database/Implementation/CharacterDatabase.h index aae0d92dff8..8cc5d0584e4 100644 --- a/src/server/database/Database/Implementation/CharacterDatabase.h +++ b/src/server/database/Database/Implementation/CharacterDatabase.h @@ -85,7 +85,8 @@ enum CharacterDatabaseStatements : uint32 CHAR_SEL_CHARACTER_REWARDSTATUS_LFG, CHAR_DEL_CHARACTER_REWARDSTATUS_LFG, CHAR_INS_CHARACTER_REWARDSTATUS_LFG, - CHAR_DEL_RESET_CHARACTER_REWARDSTATUS_LFG, + CHAR_DEL_RESET_CHARACTER_REWARDSTATUS_LFG_WEEKLY, + CHAR_DEL_RESET_CHARACTER_REWARDSTATUS_LFG_DAILY, CHAR_SEL_CHARACTER_REPUTATION, CHAR_SEL_CHARACTER_INVENTORY, diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index def400d91f0..f2792a39261 100644 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -124,7 +124,7 @@ void LFGMgr::LoadRewards() RewardMapStore.clear(); // ORDER BY is very important for GetRandomDungeonReward! - QueryResult result = WorldDatabase.Query("SELECT dungeonId, maxLevel, firstQuestId, otherQuestId, completionsPerWeek FROM lfg_dungeon_rewards ORDER BY dungeonId, maxLevel ASC"); + QueryResult result = WorldDatabase.Query("SELECT dungeonId, maxLevel, firstQuestId, otherQuestId, completionsPerPeriod, dailyReset FROM lfg_dungeon_rewards ORDER BY dungeonId, maxLevel ASC"); if (!result) { @@ -142,7 +142,8 @@ void LFGMgr::LoadRewards() uint32 maxLevel = fields[1].GetUInt8(); uint32 firstQuestId = fields[2].GetUInt32(); uint32 otherQuestId = fields[3].GetUInt32(); - uint32 completionsPerWeek = fields[4].GetUInt8(); + uint32 completionsPerPeriod = fields[4].GetUInt8(); + bool dailyReset = fields[5].GetUInt8(); if (!GetLFGDungeonEntry(dungeonId)) { @@ -168,7 +169,7 @@ void LFGMgr::LoadRewards() otherQuestId = 0; } - RewardMapStore.insert(LfgRewardContainer::value_type(dungeonId, new LfgReward(maxLevel, firstQuestId, otherQuestId, completionsPerWeek))); + RewardMapStore.insert(LfgRewardContainer::value_type(dungeonId, new LfgReward(maxLevel, firstQuestId, otherQuestId, completionsPerPeriod, dailyReset))); ++count; } while (result->NextRow()); @@ -1498,11 +1499,11 @@ void LFGMgr::FinishDungeon(ObjectGuid gguid, const uint32 dungeonId, Map const* if (!quest) continue; - // CanRewardQuest to check currency caps, SatisfyFirstLFGReward to check weekly reward caps for first quest - if (player->CanRewardQuest(quest, false) && player->SatisfyFirstLFGReward(rDungeonId, reward->completionsPerWeek)) + // CanRewardQuest to check currency caps, SatisfyFirstLFGReward to check weekly/daily reward caps for first quest + if (player->CanRewardQuest(quest, false) && player->SatisfyFirstLFGReward(rDungeonId, reward->completionsPerPeriod)) { - if (reward->completionsPerWeek) - player->SetLFGRewardStatus(rDungeonId); + if (reward->completionsPerPeriod) + player->SetLFGRewardStatus(rDungeonId, reward->dailyReset); player->RewardQuest(quest, 0, nullptr, false); } diff --git a/src/server/game/DungeonFinding/LFGMgr.h b/src/server/game/DungeonFinding/LFGMgr.h index cfcb0d7ea6c..8ba94d9be88 100644 --- a/src/server/game/DungeonFinding/LFGMgr.h +++ b/src/server/game/DungeonFinding/LFGMgr.h @@ -220,13 +220,14 @@ struct LfgPlayerRewardData /// Reward info struct LfgReward { - LfgReward(uint32 _maxLevel = 0, uint32 _firstQuest = 0, uint32 _otherQuest = 0, uint8 _completionsPerWeek = 0): - maxLevel(_maxLevel), firstQuest(_firstQuest), otherQuest(_otherQuest), completionsPerWeek(_completionsPerWeek) { } + LfgReward(uint32 _maxLevel = 0, uint32 _firstQuest = 0, uint32 _otherQuest = 0, uint8 _completionsPerPeriod = 0, bool _dailyReset = 0): + maxLevel(_maxLevel), firstQuest(_firstQuest), otherQuest(_otherQuest), completionsPerPeriod(_completionsPerPeriod), dailyReset(_dailyReset) { } uint32 maxLevel; uint32 firstQuest; uint32 otherQuest; - uint8 completionsPerWeek; + uint8 completionsPerPeriod; + bool dailyReset; }; /// Stores player data related to proposal to join diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index c213023a276..a66a780f8f5 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -16107,7 +16107,7 @@ bool Player::SatisfyFirstLFGReward(uint32 dungeonId, uint8 maxRewCount) const { LFGRewardStatusMap::const_iterator lfgdungeon = m_lfgrewardstatus.find(dungeonId); if (lfgdungeon != m_lfgrewardstatus.end()) - return lfgdungeon->second && lfgdungeon->second < maxRewCount; + return lfgdungeon->second.completionsThisPeriod && lfgdungeon->second.completionsThisPeriod < maxRewCount; return true; } @@ -16116,7 +16116,7 @@ uint8 Player::GetFirstRewardCountForDungeonId(uint32 dungeonId) { LFGRewardStatusMap::const_iterator lfgdungeon = m_lfgrewardstatus.find(dungeonId); if (lfgdungeon != m_lfgrewardstatus.end()) - return lfgdungeon->second; + return lfgdungeon->second.completionsThisPeriod; return 0; } @@ -19034,8 +19034,9 @@ void Player::_LoadLFGRewardStatus(PreparedQueryResult result) Field* fields = result->Fetch(); uint32 dungeon_id = fields[0].GetUInt16(); uint8 reward_count = fields[1].GetUInt8(); + uint8 daily_reset = fields[2].GetUInt8(); - m_lfgrewardstatus[dungeon_id] = reward_count; + m_lfgrewardstatus[dungeon_id] = LFGRewardInfo(reward_count, daily_reset); TC_LOG_DEBUG("entities.player.loading", "Player::_LFGQuestStatus: Loaded LFG quest first reward cooldown (DungeonID: %u) for player '%s' (%s)", dungeon_id, GetName().c_str(), GetGUID().ToString().c_str()); } while (result->NextRow()); @@ -20554,12 +20555,14 @@ void Player::_SaveLFGRewardStatus(SQLTransaction& trans) for (LFGRewardStatusMap::const_iterator itr = m_lfgrewardstatus.begin(); itr != m_lfgrewardstatus.end(); ++itr) { uint32 dungeonId = itr->first; - uint8 rewardCount = itr->second; + uint8 rewardCount = itr->second.completionsThisPeriod; + uint8 dailyReset = itr->second.isDaily; stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER_REWARDSTATUS_LFG); stmt->setUInt32(0, GetGUID().GetCounter()); stmt->setUInt32(1, dungeonId); - stmt->setUInt32(2, rewardCount); + stmt->setUInt8(2, rewardCount); + stmt->setUInt8(3, dailyReset); trans->Append(stmt); } @@ -24155,14 +24158,14 @@ void Player::SetMonthlyQuestStatus(uint32 quest_id) m_MonthlyQuestChanged = true; } -void Player::SetLFGRewardStatus(uint32 dungeon_id) +void Player::SetLFGRewardStatus(uint32 dungeon_id, bool daily_reset) { LFGRewardStatusMap::iterator lfgdungeon = m_lfgrewardstatus.find(dungeon_id); if (lfgdungeon != m_lfgrewardstatus.end()) - lfgdungeon->second++; + lfgdungeon->second.completionsThisPeriod++; else - m_lfgrewardstatus[dungeon_id] = 1; + m_lfgrewardstatus[dungeon_id] = LFGRewardInfo(1, daily_reset); m_LFGRewardStatusChanged = true; } @@ -24208,12 +24211,34 @@ void Player::ResetMonthlyQuestStatus() m_MonthlyQuestChanged = false; } -void Player::ResetLFGRewardStatus() +void Player::ResetWeeklyLFGRewardStatus() { - if (!m_lfgrewardstatus.empty()) - return; + for (auto itr = m_lfgrewardstatus.begin(); itr != m_lfgrewardstatus.end();) + { + if (!itr->second.isDaily) + { + itr = m_lfgrewardstatus.erase(itr); + continue; + } + itr++; + } + + // DB data deleted in caller + m_LFGRewardStatusChanged = false; +} + +void Player::ResetDailyLFGRewardStatus() +{ + for (auto itr = m_lfgrewardstatus.begin(); itr != m_lfgrewardstatus.end();) + { + if (itr->second.isDaily) + { + itr = m_lfgrewardstatus.erase(itr); + continue; + } + itr++; + } - m_lfgrewardstatus.clear(); // DB data deleted in caller m_LFGRewardStatusChanged = false; } diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 4f8bbca5b52..413dc72d97a 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1394,12 +1394,13 @@ class TC_GAME_API Player : public Unit, public GridObject void SetWeeklyQuestStatus(uint32 quest_id); void SetMonthlyQuestStatus(uint32 quest_id); void SetSeasonalQuestStatus(uint32 quest_id); - void SetLFGRewardStatus(uint32 dungeon_id); + void SetLFGRewardStatus(uint32 dungeon_id, bool daily_reset); void ResetDailyQuestStatus(); void ResetWeeklyQuestStatus(); void ResetMonthlyQuestStatus(); void ResetSeasonalQuestStatus(uint16 event_id); - void ResetLFGRewardStatus(); + void ResetWeeklyLFGRewardStatus(); + void ResetDailyLFGRewardStatus(); uint16 FindQuestSlot(uint32 quest_id) const; uint32 GetQuestSlotQuestId(uint16 slot) const; @@ -2402,7 +2403,17 @@ class TC_GAME_API Player : public Unit, public GridObject typedef std::set QuestSet; typedef std::set SeasonalQuestSet; typedef std::unordered_map SeasonalEventQuestMap; - typedef std::unordered_map LFGRewardStatusMap; + + struct LFGRewardInfo + { + LFGRewardInfo(uint8 _completionsThisPeriod = 0, bool _isDaily = false) : + completionsThisPeriod(_completionsThisPeriod), isDaily(_isDaily) { } + + uint8 completionsThisPeriod; + bool isDaily; + }; + + typedef std::unordered_map LFGRewardStatusMap; QuestSet m_timedquests; QuestSet m_weeklyquests; diff --git a/src/server/game/Handlers/LFGHandler.cpp b/src/server/game/Handlers/LFGHandler.cpp index 7c799a055b5..930bb1060c3 100644 --- a/src/server/game/Handlers/LFGHandler.cpp +++ b/src/server/game/Handlers/LFGHandler.cpp @@ -324,8 +324,8 @@ void WorldSession::SendLfgPlayerLockInfo() if (Quest const* firstQuest = sObjectMgr->GetQuestTemplate(reward->firstQuest)) { firstCompletion = player->CanRewardQuest(firstQuest, false); - if (reward->completionsPerWeek) - firstCompletion = player->SatisfyFirstLFGReward(dungeonId & 0x00FFFFFF, reward->completionsPerWeek); + if (reward->completionsPerPeriod) + firstCompletion = player->SatisfyFirstLFGReward(dungeonId & 0x00FFFFFF, reward->completionsPerPeriod); if (firstCompletion) currentQuest = firstQuest; @@ -350,7 +350,7 @@ void WorldSession::SendLfgPlayerLockInfo() CurrencyTypesEntry const* currency = sCurrencyTypesStore.LookupEntry(CURRENCY_TYPE_VALOR_POINTS); - if (currency && rewValorPoints && !reward->completionsPerWeek) + if (currency && rewValorPoints && !reward->completionsPerPeriod) { data << uint32(rewValorPoints); // currencyQuantity (valor points from selected dungeon) data << uint32(player->GetCurrencyWeekCap(currency)); // some sort of overall cap/weekly cap @@ -365,15 +365,15 @@ void WorldSession::SendLfgPlayerLockInfo() data << uint32(0); // purseLimit data << uint32(rewValorPoints); // some sort of reward for completion } - else if (firstCompletion && reward && reward->completionsPerWeek) + else if (firstCompletion && reward && reward->completionsPerPeriod && !reward->dailyReset) { data << uint32(1); // currencyQuantity - data << uint32(reward->completionsPerWeek); // some sort of overall cap/weekly cap + data << uint32(reward->completionsPerPeriod); // some sort of overall cap/weekly cap data << uint32(0); // currencyID data << uint32(0); // tier1Quantity - data << uint32(reward->completionsPerWeek); // tier1Limit + data << uint32(reward->completionsPerPeriod); // tier1Limit data << uint32(player->GetFirstRewardCountForDungeonId(dungeonId & 0x00FFFFFF)); // overallQuantity - data << uint32(reward->completionsPerWeek); // overallLimit + data << uint32(reward->completionsPerPeriod); // overallLimit data << uint32(0); // periodPurseQuantity data << uint32(0); // periodPurseLimit data << uint32(0); // purseQuantity @@ -400,7 +400,7 @@ void WorldSession::SendLfgPlayerLockInfo() bool isCallToArmsEligible = sLFGMgr->IsCallToArmsEligible(level, dungeonId & 0x00FFFFFF); - data << uint8(isCallToArmsEligible); // Call to Arms eligible + data << uint8(isCallToArmsEligible); // Call to Arms eligible Quest const* ctaQuest = sObjectMgr->GetQuestTemplate(lfg::LFG_CALL_TO_ARMS_QUEST); if (isCallToArmsEligible && ctaQuest) diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index ab9d30a91bb..13619ace7bc 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -2194,7 +2194,7 @@ void World::Update(uint32 diff) /// Handle daily quests reset time if (currentGameTime > m_NextDailyQuestReset) { - ResetDailyQuests(); + ResetDailyQuestsAndRewards(); InitDailyQuestResetTime(false); } @@ -3158,16 +3158,26 @@ void World::InitCurrencyResetTime() sWorld->setWorldState(WS_CURRENCY_RESET_TIME, uint64(m_NextCurrencyReset)); } -void World::ResetDailyQuests() +void World::ResetDailyQuestsAndRewards() { - TC_LOG_INFO("misc", "Daily quests reset for all characters."); + TC_LOG_INFO("misc", "Daily quests and rewards reset for all characters."); + // Reset daily quest status PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_RESET_CHARACTER_QUESTSTATUS_DAILY); CharacterDatabase.Execute(stmt); + // Reset daily lfg rewards + stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_RESET_CHARACTER_REWARDSTATUS_LFG_DAILY); + CharacterDatabase.Execute(stmt); + for (SessionMap::const_iterator itr = m_sessions.begin(); itr != m_sessions.end(); ++itr) + { if (itr->second->GetPlayer()) + { itr->second->GetPlayer()->ResetDailyQuestStatus(); + itr->second->GetPlayer()->ResetDailyLFGRewardStatus(); + } + } // change available dailies sPoolMgr->ChangeDailyQuests(); @@ -3208,12 +3218,12 @@ void World::ResetWeeklyQuestsAndRewards() { TC_LOG_INFO("misc", "Weekly quests and rewards reset for all characters."); - // Reset Weekly quests + // Reset weekly quests PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_RESET_CHARACTER_QUESTSTATUS_WEEKLY); CharacterDatabase.Execute(stmt); - // Reset Weekly lfg rewards - stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_RESET_CHARACTER_REWARDSTATUS_LFG); + // Reset weekly lfg rewards + stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_RESET_CHARACTER_REWARDSTATUS_LFG_WEEKLY); CharacterDatabase.Execute(stmt); for (SessionMap::const_iterator itr = m_sessions.begin(); itr != m_sessions.end(); ++itr) @@ -3221,7 +3231,7 @@ void World::ResetWeeklyQuestsAndRewards() if (itr->second->GetPlayer()) { itr->second->GetPlayer()->ResetWeeklyQuestStatus(); - itr->second->GetPlayer()->ResetLFGRewardStatus(); + itr->second->GetPlayer()->ResetWeeklyLFGRewardStatus(); } } diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index 764388d9fdd..33be6b9b532 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -821,7 +821,7 @@ class TC_GAME_API World void InitRandomBGResetTime(); void InitGuildResetTime(); void InitCurrencyResetTime(); - void ResetDailyQuests(); + void ResetDailyQuestsAndRewards(); void ResetWeeklyQuestsAndRewards(); void ResetMonthlyQuests(); void ResetRandomBG();