aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Maps
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2019-07-08 11:33:09 +0200
committerTreeston <treeston.mmoc@gmail.com>2019-07-08 11:56:41 +0200
commit84b7b2e08ea55575cbe62d795383d4a5341ffd4d (patch)
treed0ce35d87614d0a45bc7747631e84949bf68d6c5 /src/server/game/Maps
parentec1a77bca20487f86765620485db9b13bb03aee8 (diff)
Entities/Unit: Nuke Map::ForceRespawn from orbit, with the following implications:
- .npc respawn no longer causes stupid things to happen (Fixes #23014) - ::DeleteFromDB methods on Creature and GameObject rewritten to be as sensible as such a colossally stupid method can ever be. They're static now. - .npc delete and .gobj delete ported to new argument handling, and rewritten as per above. They can no longer crash the server when used in instances, too. Yay for that. - Adjusted various dusty cobwebbed hacks around the core (why does waypoint visualization use permanent spawns *shudder*) to still work too.
Diffstat (limited to 'src/server/game/Maps')
-rw-r--r--src/server/game/Maps/Map.cpp8
-rw-r--r--src/server/game/Maps/Map.h9
2 files changed, 6 insertions, 11 deletions
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp
index b5872430156..cfaf3f4d26e 100644
--- a/src/server/game/Maps/Map.cpp
+++ b/src/server/game/Maps/Map.cpp
@@ -3039,9 +3039,9 @@ void Map::DoRespawn(SpawnObjectType type, ObjectGuid::LowType spawnId, uint32 gr
}
}
-void Map::Respawn(RespawnInfo* info, bool force, SQLTransaction dbTrans)
+void Map::Respawn(RespawnInfo* info, SQLTransaction dbTrans)
{
- if (!force && !CheckRespawn(info))
+ if (!CheckRespawn(info))
{
if (info->respawnTime)
SaveRespawnTime(info->type, info->spawnId, info->entry, info->respawnTime, info->zoneId, info->gridId, true, true, dbTrans);
@@ -3058,11 +3058,11 @@ void Map::Respawn(RespawnInfo* info, bool force, SQLTransaction dbTrans)
DoRespawn(type, spawnId, gridId);
}
-void Map::Respawn(std::vector<RespawnInfo*>& respawnData, bool force, SQLTransaction dbTrans)
+void Map::Respawn(std::vector<RespawnInfo*>& respawnData, SQLTransaction dbTrans)
{
SQLTransaction trans = dbTrans ? dbTrans : CharacterDatabase.BeginTransaction();
for (RespawnInfo* info : respawnData)
- Respawn(info, force, trans);
+ Respawn(info, trans);
if (!dbTrans)
CharacterDatabase.CommitTransaction(trans);
}
diff --git a/src/server/game/Maps/Map.h b/src/server/game/Maps/Map.h
index 94014708e7f..abc82f4e112 100644
--- a/src/server/game/Maps/Map.h
+++ b/src/server/game/Maps/Map.h
@@ -753,8 +753,8 @@ class TC_GAME_API Map : public GridRefManager<NGridType>
// if return value is false and info->respawnTime is nonzero, it is guaranteed to be greater than time(NULL)
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(std::vector<RespawnInfo*>& respawnData, bool force = false, SQLTransaction dbTrans = nullptr);
+ void Respawn(RespawnInfo* info, SQLTransaction dbTrans = nullptr);
+ void Respawn(std::vector<RespawnInfo*>& respawnData, SQLTransaction dbTrans = nullptr);
void AddRespawnInfo(RespawnInfo& info, bool replace = false);
void DeleteRespawnInfo();
void DeleteRespawnInfo(RespawnInfo* info);
@@ -780,11 +780,6 @@ class TC_GAME_API Map : public GridRefManager<NGridType>
public:
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(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)