From c4a6445a232a3cd8fe8d1e636f91b98c68900943 Mon Sep 17 00:00:00 2001 From: talamortis Date: Fri, 28 Sep 2018 18:33:17 +0100 Subject: [PATCH] Core: Better fix for stuck at "Retrieving character list" also fix instance lock always delayed and never expiring close: #966 --- src/server/game/Instances/InstanceSaveMgr.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/server/game/Instances/InstanceSaveMgr.cpp b/src/server/game/Instances/InstanceSaveMgr.cpp index 0fe54b8e4..2375d5490 100644 --- a/src/server/game/Instances/InstanceSaveMgr.cpp +++ b/src/server/game/Instances/InstanceSaveMgr.cpp @@ -214,6 +214,9 @@ void InstanceSaveManager::LoadInstances() // Delete instance with no binds CharacterDatabase.DirectExecute("DELETE i.* FROM instance AS i LEFT JOIN character_instance AS ci ON i.id = ci.instance WHERE ci.guid IS NULL"); + // Delete Instance_reset so it can generate a new patch for this + CharacterDatabase.DirectExecute("DELETE FROM instance_reset"); + // Delete creature_respawn, gameobject_respawn and creature_instance for non-existent instance CharacterDatabase.DirectExecute("DELETE FROM creature_respawn WHERE instanceId > 0 AND instanceId NOT IN (SELECT id FROM instance)"); CharacterDatabase.DirectExecute("DELETE FROM gameobject_respawn WHERE instanceId > 0 AND instanceId NOT IN (SELECT id FROM instance)"); @@ -290,12 +293,7 @@ void InstanceSaveManager::LoadResetTimes() SetResetTimeFor(mapid, difficulty, t); CharacterDatabase.DirectPExecute("INSERT INTO instance_reset VALUES ('%u', '%u', '%u')", mapid, difficulty, (uint32)t); } - else - { - // next reset should be in future. If its not, skip to future. - while (t < now) - t = uint32(((t + MINUTE) / DAY * DAY) + period + diff); - } + SetExtendedResetTimeFor(mapid, difficulty, t + period); // schedule the global reset/warning