diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Instances/InstanceSaveMgr.cpp | 5 | ||||
-rwxr-xr-x | src/server/game/Maps/Map.cpp | 14 | ||||
-rwxr-xr-x | src/server/game/Maps/Map.h | 2 |
3 files changed, 16 insertions, 5 deletions
diff --git a/src/server/game/Instances/InstanceSaveMgr.cpp b/src/server/game/Instances/InstanceSaveMgr.cpp index 2e0d1e47c92..59bb86cb68e 100755 --- a/src/server/game/Instances/InstanceSaveMgr.cpp +++ b/src/server/game/Instances/InstanceSaveMgr.cpp @@ -543,7 +543,10 @@ void InstanceSaveManager::_ResetInstance(uint32 mapid, uint32 instanceId) if (iMap && iMap->IsDungeon()) ((InstanceMap*)iMap)->Reset(INSTANCE_RESET_RESPAWN_DELAY); - iMap->DeleteRespawnTimes(); + if (iMap) + iMap->DeleteRespawnTimes(); + else + Map::DeleteRespawnTimesInDB(mapid, instanceId); // Free up the instance id and allow it to be reused sMapMgr->FreeInstanceId(instanceId); diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 6f19fdcbc0a..82659e32016 100755 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -2880,14 +2880,19 @@ void Map::DeleteRespawnTimes() _creatureRespawnTimes.clear(); _goRespawnTimes.clear(); + DeleteRespawnTimesInDB(GetId(), GetInstanceId()); +} + +void Map::DeleteRespawnTimesInDB(uint16 mapId, uint32 instanceId) +{ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CREATURE_RESPAWN_BY_INSTANCE); - stmt->setUInt16(0, GetId()); - stmt->setUInt32(1, GetInstanceId()); + stmt->setUInt16(0, mapId); + stmt->setUInt32(1, instanceId); CharacterDatabase.Execute(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GO_RESPAWN_BY_INSTANCE); - stmt->setUInt16(0, GetId()); - stmt->setUInt32(1, GetInstanceId()); + stmt->setUInt16(0, mapId); + stmt->setUInt32(1, instanceId); CharacterDatabase.Execute(stmt); } @@ -2906,3 +2911,4 @@ time_t Map::GetLinkedRespawnTime(uint64 guid) const return time_t(0); } + diff --git a/src/server/game/Maps/Map.h b/src/server/game/Maps/Map.h index 94a64126da1..214f50e6d3c 100755 --- a/src/server/game/Maps/Map.h +++ b/src/server/game/Maps/Map.h @@ -473,6 +473,8 @@ class Map : public GridRefManager<NGridType> void LoadRespawnTimes(); void DeleteRespawnTimes(); + static void DeleteRespawnTimesInDB(uint16 mapId, uint32 instanceId); + private: void LoadMapAndVMap(int gx, int gy); void LoadVMap(int gx, int gy); |