diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 5 | ||||
| -rw-r--r-- | src/server/game/Entities/Object/Object.h | 3 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 6 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.h | 1 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 4 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 2 | 
6 files changed, 9 insertions, 12 deletions
| diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 8fdaced5de4..17376cd2da8 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -964,8 +964,8 @@ void MovementInfo::OutDebug()  WorldObject::WorldObject(bool isWorldObject) : Object(), WorldLocation(), LastUsedScriptID(0),  m_movementInfo(), m_name(), m_isActive(false), m_isFarVisible(false), m_isWorldObject(isWorldObject), m_zoneScript(nullptr), -m_transport(nullptr), m_zoneId(0), m_areaId(0), m_staticFloorZ(VMAP_INVALID_HEIGHT), m_outdoors(false), m_currMap(nullptr), m_InstanceId(0), -m_phaseMask(PHASEMASK_NORMAL), m_notifyflags(0) +m_transport(nullptr), m_zoneId(0), m_areaId(0), m_staticFloorZ(VMAP_INVALID_HEIGHT), m_outdoors(false), m_liquidStatus(LIQUID_MAP_NO_WATER), +m_currMap(nullptr), m_InstanceId(0), m_phaseMask(PHASEMASK_NORMAL), m_notifyflags(0)  {      m_serverSideVisibility.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_ALIVE | GHOST_VISIBILITY_GHOST);      m_serverSideVisibilityDetect.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_ALIVE); @@ -1070,6 +1070,7 @@ void WorldObject::ProcessPositionDataChanged(PositionFullTerrainStatus const& da              m_zoneId = area->zone;      m_outdoors = data.outdoors;      m_staticFloorZ = data.floorZ; +    m_liquidStatus = data.liquidStatus;  }  void WorldObject::AddToWorld() diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index edccf3c7651..ad915f3c373 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -58,6 +58,7 @@ class ZoneScript;  struct FactionTemplateEntry;  struct PositionFullTerrainStatus;  struct QuaternionData; +enum ZLiquidStatus : uint32;  typedef std::unordered_map<Player*, UpdateData> UpdateDataMapType; @@ -317,6 +318,7 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation          uint32 GetAreaId() const { return m_areaId; }          void GetZoneAndAreaId(uint32& zoneid, uint32& areaid) const { zoneid = m_zoneId, areaid = m_areaId; }          bool IsOutdoors() const { return m_outdoors; } +        ZLiquidStatus GetLiquidStatus() const { return m_liquidStatus; }          InstanceScript* GetInstanceScript() const; @@ -545,6 +547,7 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation          uint32 m_areaId;          float m_staticFloorZ;          bool m_outdoors; +        ZLiquidStatus m_liquidStatus;          //these functions are used mostly for Relocate() and Corpse/Player specific stuff...          //use them ONLY in LoadFromDB()/Create() funcs and nowhere else! diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index f932401fe8b..3b568a1e3a4 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2333,12 +2333,6 @@ GameObject* Player::GetGameObjectIfCanInteractWith(ObjectGuid const& guid, Gameo      return go;  } -bool Player::IsUnderWater() const -{ -    return IsInWater() && -        GetPositionZ() < (GetBaseMap()->GetWaterLevel(GetPositionX(), GetPositionY())-2); -} -  void Player::SetInWater(bool apply)  {      if (m_isInWater == apply) diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 684657327fd..4e2f674e7ab 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -912,7 +912,6 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>          void SetInWater(bool apply);          bool IsInWater() const override { return m_isInWater; } -        bool IsUnderWater() const override;          bool IsFalling() { return GetPositionZ() < m_lastFallZ; }          bool IsInAreaTriggerRadius(AreaTriggerEntry const* trigger) const; diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index bacf5908f29..917244dcb38 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -3122,12 +3122,12 @@ bool Unit::isInAccessiblePlaceFor(Creature const* c) const  bool Unit::IsInWater() const  { -    return GetBaseMap()->IsInWater(GetPositionX(), GetPositionY(), GetPositionZ()); +    return GetLiquidStatus() & (LIQUID_MAP_IN_WATER | LIQUID_MAP_UNDER_WATER);  }  bool Unit::IsUnderWater() const  { -    return GetBaseMap()->IsUnderWater(GetPositionX(), GetPositionY(), GetPositionZ()); +    return GetLiquidStatus() & LIQUID_MAP_UNDER_WATER;  }  void Unit::ProcessPositionDataChanged(PositionFullTerrainStatus const& data) diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 118bab0931c..474f43a9e94 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1073,7 +1073,7 @@ class TC_GAME_API Unit : public WorldObject          bool isTargetableForAttack(bool checkFakeDeath = true) const;          virtual bool IsInWater() const; -        virtual bool IsUnderWater() const; +        bool IsUnderWater() const;          bool isInAccessiblePlaceFor(Creature const* c) const;          void SendHealSpellLog(HealInfo& healInfo, bool critical = false); | 
