aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSnapperRy <snapperryen@gmail.com>2016-09-30 13:16:37 +0200
committerjoschiwald <joschiwald.trinity@gmail.com>2017-03-04 19:01:42 +0100
commit034ff93ba869ad5dd69b043a70f7405a1c542c3b (patch)
treef2954e44b5eec13a14415c21ce0f2133595cb037
parent064380015e51cb3e7e59a237ebbba5541b50a276 (diff)
Core/World: properly re-initialize daily quest reset time when resetting daily quests. (#17986)
Prevents daily quests from resetting at weird times when restarting the server after a player has completed a daily quest. (cherry picked from commit f9ea646c82f8cf34f295a5db0be3d7a14c9ca608)
-rw-r--r--src/server/game/World/World.cpp19
-rw-r--r--src/server/game/World/World.h2
2 files changed, 11 insertions, 10 deletions
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 1a5e6de5dfe..ca78d179498 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -2263,7 +2263,7 @@ void World::Update(uint32 diff)
if (m_gameTime > m_NextDailyQuestReset)
{
DailyReset();
- m_NextDailyQuestReset += DAY;
+ InitDailyQuestResetTime(false);
}
/// Handle weekly quests reset time
@@ -3088,18 +3088,19 @@ void World::InitWeeklyQuestResetTime()
m_NextWeeklyQuestReset = wstime < curtime ? curtime : wstime;
}
-void World::InitDailyQuestResetTime()
+void World::InitDailyQuestResetTime(bool loading)
{
- time_t mostRecentQuestTime;
+ time_t mostRecentQuestTime = 0;
- QueryResult result = CharacterDatabase.Query("SELECT MAX(time) FROM character_queststatus_daily");
- if (result)
+ if (loading)
{
- Field* fields = result->Fetch();
- mostRecentQuestTime = time_t(fields[0].GetUInt32());
+ QueryResult result = CharacterDatabase.Query("SELECT MAX(time) FROM character_queststatus_daily");
+ if (result)
+ {
+ Field* fields = result->Fetch();
+ mostRecentQuestTime = time_t(fields[0].GetUInt32());
+ }
}
- else
- mostRecentQuestTime = 0;
// client built-in time for reset is 6:00 AM
// FIX ME: client not show day start time
diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h
index 2a460ef23df..e96092bd170 100644
--- a/src/server/game/World/World.h
+++ b/src/server/game/World/World.h
@@ -816,7 +816,7 @@ class TC_GAME_API World
// callback for UpdateRealmCharacters
void _UpdateRealmCharCount(PreparedQueryResult resultCharCount);
- void InitDailyQuestResetTime();
+ void InitDailyQuestResetTime(bool loading = true);
void InitWeeklyQuestResetTime();
void InitMonthlyQuestResetTime();
void InitRandomBGResetTime();