aboutsummaryrefslogtreecommitdiff
path: root/src/game/InstanceSaveMgr.cpp
diff options
context:
space:
mode:
authorXanadu <none@none>2010-02-05 19:16:03 +0100
committerXanadu <none@none>2010-02-05 19:16:03 +0100
commit45002f590e27e2b48ae64d6d83bc4415e232ef33 (patch)
tree74ffacc8ee39834d7ce9fa9c99c31d9e7f5a10aa /src/game/InstanceSaveMgr.cpp
parentf8d1920fa591d2aba16bf70023c64f4379c0114d (diff)
parent4674dec37bafefb5a1d62a4ff33c1da8ed5dd0c0 (diff)
Merge
--HG-- branch : trunk
Diffstat (limited to 'src/game/InstanceSaveMgr.cpp')
-rw-r--r--src/game/InstanceSaveMgr.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/game/InstanceSaveMgr.cpp b/src/game/InstanceSaveMgr.cpp
index 9e8cd3eb694..b94dbe38377 100644
--- a/src/game/InstanceSaveMgr.cpp
+++ b/src/game/InstanceSaveMgr.cpp
@@ -501,7 +501,9 @@ void InstanceSaveManager::LoadResetTimes()
continue;
// the reset_delay must be at least one day
- uint32 period = (mapDiff->resetTime / DAY * sWorld.getRate(RATE_INSTANCE_RESET_TIME)) * DAY;
+ uint32 period = ((mapDiff->resetTime * sWorld.getRate(RATE_INSTANCE_RESET_TIME))/DAY) * DAY;
+ if (period < DAY)
+ period = DAY;
time_t t = GetResetTimeFor(mapid,difficulty);
if(!t)
@@ -529,6 +531,8 @@ void InstanceSaveManager::LoadResetTimes()
if(t - tim[type-1] > now)
break;
+ ScheduleReset(true, t - tim[type-1], InstResetEvent(type, mapid, difficulty, -1));
+
for(ResetTimeMapDiffInstances::const_iterator in_itr = mapDiffResetInstances.lower_bound(map_diff_pair);
in_itr != mapDiffResetInstances.upper_bound(map_diff_pair); ++in_itr)
{
@@ -662,8 +666,16 @@ void InstanceSaveManager::_ResetOrWarnAll(uint32 mapid, Difficulty difficulty, b
// calculate the next reset time
uint32 diff = sWorld.getConfig(CONFIG_INSTANCE_RESET_TIME_HOUR) * HOUR;
- uint32 period = mapDiff->resetTime * DAY;
+
+ uint32 period = ((mapDiff->resetTime * sWorld.getRate(RATE_INSTANCE_RESET_TIME))/DAY) * DAY;
+ if (period < DAY)
+ period = DAY;
+
uint64 next_reset = ((now + timeLeft + MINUTE) / DAY * DAY) + period + diff;
+
+ SetResetTimeFor(mapid, difficulty, next_reset);
+ ScheduleReset(true, time_t(next_reset-3600), InstResetEvent(1, mapid, difficulty, -1));
+
// update it in the DB
CharacterDatabase.PExecute("UPDATE instance_reset SET resettime = '"UI64FMTD"' WHERE mapid = '%d' AND difficulty = '%d'", next_reset, mapid, difficulty);
}