diff options
| author | Treeston <treeston.mmoc@gmail.com> | 2018-01-07 19:47:13 +0100 |
|---|---|---|
| committer | Treeston <treeston.mmoc@gmail.com> | 2018-01-07 19:53:39 +0100 |
| commit | 3bb33e3108c65ba8a1c35b934526562aa542b63b (patch) | |
| tree | b67a8438e1947701c131dd6734e2b90eca80c310 /src/server/game/Maps/Map.h | |
| parent | 38d0c1e940bd8679e42e5336118c5b9fc65a3cdf (diff) | |
Core/Map: New Map::ForceRespawn to override objections and force a respawn (equivalent to force = true). Use this to fix various GM commands.
Scripts/Valithria: Fix an issue that could get the encounter stuck in an unloaded state.
Diffstat (limited to 'src/server/game/Maps/Map.h')
| -rw-r--r-- | src/server/game/Maps/Map.h | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/server/game/Maps/Map.h b/src/server/game/Maps/Map.h index b4b78399457..c800a069d55 100644 --- a/src/server/game/Maps/Map.h +++ b/src/server/game/Maps/Map.h @@ -283,7 +283,6 @@ typedef std::unordered_map<uint32 /*zoneId*/, ZoneDynamicInfo> ZoneDynamicInfoMa typedef boost::heap::fibonacci_heap<RespawnInfo*, boost::heap::compare<CompareRespawnInfo>> RespawnListContainer; typedef RespawnListContainer::handle_type RespawnListHandle; typedef std::unordered_map<uint32, RespawnInfo*> RespawnInfoMap; -typedef std::vector<RespawnInfo*> RespawnVector; struct RespawnInfo { SpawnObjectType type; @@ -751,11 +750,11 @@ class TC_GAME_API Map : public GridRefManager<NGridType> bool CheckRespawn(RespawnInfo* info); void DoRespawn(SpawnObjectType type, ObjectGuid::LowType spawnId, uint32 gridId); void Respawn(RespawnInfo* info, bool force = false, SQLTransaction dbTrans = nullptr); - void Respawn(RespawnVector& respawnData, bool force = false, SQLTransaction dbTrans = nullptr); + void Respawn(std::vector<RespawnInfo*>& respawnData, bool force = false, SQLTransaction dbTrans = nullptr); void AddRespawnInfo(RespawnInfo& info, bool replace = false); void DeleteRespawnInfo(); void DeleteRespawnInfo(RespawnInfo* info); - void DeleteRespawnInfo(RespawnVector& toDelete) + void DeleteRespawnInfo(std::vector<RespawnInfo*>& toDelete) { for (RespawnInfo* info : toDelete) DeleteRespawnInfo(info); @@ -763,7 +762,7 @@ class TC_GAME_API Map : public GridRefManager<NGridType> } void DeleteRespawnInfo(SpawnObjectTypeMask types, uint32 zoneId = 0) { - RespawnVector v; + std::vector<RespawnInfo*> v; GetRespawnInfo(v, types, zoneId); if (!v.empty()) DeleteRespawnInfo(v); @@ -775,13 +774,18 @@ class TC_GAME_API Map : public GridRefManager<NGridType> } public: - void GetRespawnInfo(RespawnVector& respawnData, SpawnObjectTypeMask types, uint32 zoneId = 0) const; + void GetRespawnInfo(std::vector<RespawnInfo*>& respawnData, SpawnObjectTypeMask types, uint32 zoneId = 0) const; RespawnInfo* GetRespawnInfo(SpawnObjectType type, ObjectGuid::LowType spawnId) const; + void ForceRespawn(SpawnObjectType type, ObjectGuid::LowType spawnId) + { + if (RespawnInfo* info = GetRespawnInfo(type, spawnId)) + Respawn(info, true); + } void RemoveRespawnTime(RespawnInfo* info, bool doRespawn = false, SQLTransaction dbTrans = nullptr); - void RemoveRespawnTime(RespawnVector& respawnData, bool doRespawn = false, SQLTransaction dbTrans = nullptr); + void RemoveRespawnTime(std::vector<RespawnInfo*>& respawnData, bool doRespawn = false, SQLTransaction dbTrans = nullptr); void RemoveRespawnTime(SpawnObjectTypeMask types = SPAWN_TYPEMASK_ALL, uint32 zoneId = 0, bool doRespawn = false, SQLTransaction dbTrans = nullptr) { - RespawnVector v; + std::vector<RespawnInfo*> v; GetRespawnInfo(v, types, zoneId); if (!v.empty()) RemoveRespawnTime(v, doRespawn, dbTrans); |
