aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/Corpse.cpp3
-rw-r--r--src/game/Corpse.h6
-rw-r--r--src/game/Object.h2
3 files changed, 10 insertions, 1 deletions
diff --git a/src/game/Corpse.cpp b/src/game/Corpse.cpp
index 3f6d724b6a8..31cfb700d4b 100644
--- a/src/game/Corpse.cpp
+++ b/src/game/Corpse.cpp
@@ -39,6 +39,8 @@ Corpse::Corpse(CorpseType type) : WorldObject()
m_type = type;
+ m_mapId = 0;
+
m_time = time(NULL);
lootForBody = false;
@@ -198,6 +200,7 @@ bool Corpse::LoadFromDB(uint32 guid, Field *fields, uint32 & mapId, uint32 & in
}
mapId = fields[4].GetUInt32();
+ SetMapId(mapId);
instanceId = fields[8].GetUInt32();
m_time = time_t(fields[6].GetUInt64());
diff --git a/src/game/Corpse.h b/src/game/Corpse.h
index e21b0796d62..8e6b43b9d3d 100644
--- a/src/game/Corpse.h
+++ b/src/game/Corpse.h
@@ -67,6 +67,11 @@ class Corpse : public WorldObject
void DeleteBonesFromWorld();
void DeleteFromDB();
+ void SetMap (Map * map) {WorldObject::SetMap(map); m_mapId = map->GetId();}
+ // Used to check object existence in unloaded grids
+ uint32 GetMapId() const {return m_mapId;}
+ void SetMapId (uint32 id) {m_mapId = id;}
+
uint64 const& GetOwnerGUID() const { return GetUInt64Value(CORPSE_FIELD_OWNER); }
time_t const& GetGhostTime() const { return m_time; }
@@ -95,6 +100,7 @@ class Corpse : public WorldObject
CorpseType m_type;
time_t m_time;
GridPair m_grid; // gride for corpse position for fast search
+ uint32 m_mapId; // map id for fast corpse check at packet requests and in other situations with unloaded map of corpse.
};
#endif
diff --git a/src/game/Object.h b/src/game/Object.h
index 732d9bc8944..0e5bcd25a09 100644
--- a/src/game/Object.h
+++ b/src/game/Object.h
@@ -439,7 +439,7 @@ class TRINITY_DLL_SPEC WorldObject : public Object
void GetRandomPoint( float x, float y, float z, float distance, float &rand_x, float &rand_y, float &rand_z ) const;
- uint32 GetMapId() const { return m_currMap ? m_currMap->GetId() : 0; }
+ virtual uint32 GetMapId() const { return m_currMap ? m_currMap->GetId() : 0; }
uint32 GetInstanceId() const { return m_currMap ? m_currMap->GetInstanceId() : 0; }
virtual void SetPhaseMask(uint32 newPhaseMask, bool update);