aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2018-03-28 22:01:22 +0200
committerShauren <shauren.trinity@gmail.com>2018-03-28 22:01:22 +0200
commit42f9deb21ec68e169f7ed1c8cf14092f144b22da (patch)
treee022243733903be45592138354d1f49342c811a4 /src
parent95615a4b0d9af431b559bcca68ce9f9f38381397 (diff)
Core/Maps: Implemented getting area id from gameobject spawns
Yes, you can now spawn LK platform anywhere and it will treat you as inside Icecrown Citadel
Diffstat (limited to 'src')
-rw-r--r--src/common/Collision/DynamicTree.cpp42
-rw-r--r--src/common/Collision/DynamicTree.h1
-rw-r--r--src/common/Collision/Models/GameObjectModel.cpp27
-rw-r--r--src/common/Collision/Models/GameObjectModel.h3
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp60
-rw-r--r--src/server/game/Entities/GameObject/GameObject.h1
-rw-r--r--src/server/game/Entities/Object/Object.cpp12
-rw-r--r--src/server/game/Entities/Object/Object.h3
-rw-r--r--src/server/game/Entities/Player/Player.cpp6
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp4
-rw-r--r--src/server/game/Handlers/MovementHandler.cpp2
-rw-r--r--src/server/game/Maps/Map.cpp34
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h1
-rw-r--r--src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp2
-rw-r--r--src/server/game/Movement/PathGenerator.cpp6
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp2
16 files changed, 161 insertions, 45 deletions
diff --git a/src/common/Collision/DynamicTree.cpp b/src/common/Collision/DynamicTree.cpp
index e31bccff507..2fbdfe05b52 100644
--- a/src/common/Collision/DynamicTree.cpp
+++ b/src/common/Collision/DynamicTree.cpp
@@ -17,16 +17,13 @@
*/
#include "DynamicTree.h"
-//#include "QuadTree.h"
-//#include "RegularGrid.h"
#include "BoundingIntervalHierarchyWrapper.h"
-
+#include "GameObjectModel.h"
#include "Log.h"
+#include "MapTree.h"
+#include "ModelInstance.h"
#include "RegularGrid.h"
#include "Timer.h"
-#include "GameObjectModel.h"
-#include "ModelInstance.h"
-
#include <G3D/AABox.h>
#include <G3D/Ray.h>
#include <G3D/Vector3.h>
@@ -156,6 +153,22 @@ private:
PhaseShift const& _phaseShift;
};
+struct DynamicTreeAreaInfoCallback
+{
+ DynamicTreeAreaInfoCallback(PhaseShift const& phaseShift) : _phaseShift(phaseShift) {}
+
+ void operator()(G3D::Vector3 const& p, GameObjectModel const& obj)
+ {
+ obj.intersectPoint(p, _areaInfo, _phaseShift);
+ }
+
+ VMAP::AreaInfo const& GetAreaInfo() const { return _areaInfo; }
+
+private:
+ PhaseShift const& _phaseShift;
+ VMAP::AreaInfo _areaInfo;
+};
+
bool DynamicMapTree::getIntersectionTime(G3D::Ray const& ray, G3D::Vector3 const& endPos, PhaseShift const& phaseShift, float& maxDist) const
{
float distance = maxDist;
@@ -230,3 +243,20 @@ float DynamicMapTree::getHeight(float x, float y, float z, float maxSearchDist,
else
return -G3D::finf();
}
+
+bool DynamicMapTree::getAreaInfo(float x, float y, float& z, PhaseShift const& phaseShift, uint32& flags, int32& adtId, int32& rootId, int32& groupId) const
+{
+ G3D::Vector3 v(x, y, z + 0.5f);
+ DynamicTreeAreaInfoCallback intersectionCallBack(phaseShift);
+ impl->intersectPoint(v, intersectionCallBack);
+ if (intersectionCallBack.GetAreaInfo().result)
+ {
+ flags = intersectionCallBack.GetAreaInfo().flags;
+ adtId = intersectionCallBack.GetAreaInfo().adtId;
+ rootId = intersectionCallBack.GetAreaInfo().rootId;
+ groupId = intersectionCallBack.GetAreaInfo().groupId;
+ z = intersectionCallBack.GetAreaInfo().ground_Z;
+ return true;
+ }
+ return false;
+}
diff --git a/src/common/Collision/DynamicTree.h b/src/common/Collision/DynamicTree.h
index 4ae49c00595..f7e7cd28d4e 100644
--- a/src/common/Collision/DynamicTree.h
+++ b/src/common/Collision/DynamicTree.h
@@ -46,6 +46,7 @@ public:
bool getObjectHitPos(G3D::Vector3 const& startPos, G3D::Vector3 const& endPos, G3D::Vector3& resultHitPos, float modifyDist, PhaseShift const& phaseShift) const;
float getHeight(float x, float y, float z, float maxSearchDist, PhaseShift const& phaseShift) const;
+ bool getAreaInfo(float x, float y, float& z, PhaseShift const& phaseShift, uint32& flags, int32& adtId, int32& rootId, int32& groupId) const;
void insert(const GameObjectModel&);
void remove(const GameObjectModel&);
diff --git a/src/common/Collision/Models/GameObjectModel.cpp b/src/common/Collision/Models/GameObjectModel.cpp
index 350c52bfde0..ac0bdefc724 100644
--- a/src/common/Collision/Models/GameObjectModel.cpp
+++ b/src/common/Collision/Models/GameObjectModel.cpp
@@ -177,6 +177,33 @@ bool GameObjectModel::intersectRay(G3D::Ray const& ray, float& maxDist, bool sto
return hit;
}
+void GameObjectModel::intersectPoint(G3D::Vector3 const& point, VMAP::AreaInfo& info, PhaseShift const& phaseShift) const
+{
+ if (!isCollisionEnabled() || !owner->IsSpawned())
+ return;
+
+ if (!owner->IsInPhase(phaseShift))
+ return;
+
+ if (!iBound.contains(point))
+ return;
+
+ // child bounds are defined in object space:
+ Vector3 pModel = iInvRot * (point - iPos) * iInvScale;
+ Vector3 zDirModel = iInvRot * Vector3(0.f, 0.f, -1.f);
+ float zDist;
+ if (iModel->IntersectPoint(pModel, zDirModel, zDist, info))
+ {
+ Vector3 modelGround = pModel + zDist * zDirModel;
+ float world_Z = ((modelGround * iInvRot) * iScale + iPos).z;
+ if (info.ground_Z < world_Z)
+ {
+ info.ground_Z = world_Z;
+ info.adtId = owner->GetNameSetId();
+ }
+ }
+}
+
bool GameObjectModel::UpdatePosition()
{
if (!iModel)
diff --git a/src/common/Collision/Models/GameObjectModel.h b/src/common/Collision/Models/GameObjectModel.h
index 53d1d1ca149..bb6c3fbc109 100644
--- a/src/common/Collision/Models/GameObjectModel.h
+++ b/src/common/Collision/Models/GameObjectModel.h
@@ -30,6 +30,7 @@
namespace VMAP
{
class WorldModel;
+ struct AreaInfo;
}
class GameObject;
@@ -43,6 +44,7 @@ public:
virtual bool IsSpawned() const { return false; }
virtual uint32 GetDisplayId() const { return 0; }
+ virtual uint8 GetNameSetId() const { return 0; }
virtual bool IsInPhase(PhaseShift const& /*phaseShift*/) const { return false; }
virtual G3D::Vector3 GetPosition() const { return G3D::Vector3::zero(); }
virtual float GetOrientation() const { return 0.0f; }
@@ -67,6 +69,7 @@ public:
bool isCollisionEnabled() const { return _collisionEnabled; }
bool intersectRay(G3D::Ray const& ray, float& maxDist, bool stopAtFirstHit, PhaseShift const& phaseShift) const;
+ void intersectPoint(G3D::Vector3 const& point, VMAP::AreaInfo& info, PhaseShift const& phaseShift) const;
static GameObjectModel* Create(std::unique_ptr<GameObjectModelOwnerBase> modelOwner, std::string const& dataPath);
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp
index f4c2c9fbe40..185d2f1f781 100644
--- a/src/server/game/Entities/GameObject/GameObject.cpp
+++ b/src/server/game/Entities/GameObject/GameObject.cpp
@@ -2203,8 +2203,8 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, Player*
uint32 modelId = m_goInfo->displayId;
if (DestructibleModelDataEntry const* modelData = sDestructibleModelDataStore.LookupEntry(m_goInfo->destructibleBuilding.DestructibleModelRec))
- if (modelData->State0Wmo)
- modelId = modelData->State0Wmo;
+ if (modelData->State1Wmo)
+ modelId = modelData->State1Wmo;
SetDisplayId(modelId);
if (setHealth)
@@ -2231,8 +2231,8 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, Player*
uint32 modelId = m_goInfo->displayId;
if (DestructibleModelDataEntry const* modelData = sDestructibleModelDataStore.LookupEntry(m_goInfo->destructibleBuilding.DestructibleModelRec))
- if (modelData->State1Wmo)
- modelId = modelData->State1Wmo;
+ if (modelData->State2Wmo)
+ modelId = modelData->State2Wmo;
SetDisplayId(modelId);
if (setHealth)
@@ -2250,8 +2250,8 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, Player*
uint32 modelId = m_goInfo->displayId;
if (DestructibleModelDataEntry const* modelData = sDestructibleModelDataStore.LookupEntry(m_goInfo->destructibleBuilding.DestructibleModelRec))
- if (modelData->State2Wmo)
- modelId = modelData->State2Wmo;
+ if (modelData->State3Wmo)
+ modelId = modelData->State3Wmo;
SetDisplayId(modelId);
// restores to full health
@@ -2348,6 +2348,39 @@ void GameObject::SetDisplayId(uint32 displayid)
UpdateModel();
}
+uint8 GameObject::GetNameSetId() const
+{
+ switch (GetGoType())
+ {
+ case GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING:
+ if (DestructibleModelDataEntry const* modelData = sDestructibleModelDataStore.LookupEntry(m_goInfo->destructibleBuilding.DestructibleModelRec))
+ {
+ switch (GetDestructibleState())
+ {
+ case GO_DESTRUCTIBLE_INTACT:
+ return modelData->State0NameSet;
+ case GO_DESTRUCTIBLE_DAMAGED:
+ return modelData->State1NameSet;
+ case GO_DESTRUCTIBLE_DESTROYED:
+ return modelData->State2NameSet;
+ case GO_DESTRUCTIBLE_REBUILDING:
+ return modelData->State3NameSet;
+ default:
+ break;
+ }
+ }
+ break;
+ case GAMEOBJECT_TYPE_GARRISON_BUILDING:
+ case GAMEOBJECT_TYPE_GARRISON_PLOT:
+ case GAMEOBJECT_TYPE_PHASEABLE_MO:
+ return GetByteValue(GAMEOBJECT_FLAGS, 1) & 0xF;
+ default:
+ break;
+ }
+
+ return 0;
+}
+
void GameObject::EnableCollision(bool enable)
{
if (!m_model)
@@ -2615,13 +2648,14 @@ public:
explicit GameObjectModelOwnerImpl(GameObject const* owner) : _owner(owner) { }
virtual ~GameObjectModelOwnerImpl() = default;
- virtual bool IsSpawned() const override { return _owner->isSpawned(); }
- virtual uint32 GetDisplayId() const override { return _owner->GetDisplayId(); }
- virtual bool IsInPhase(PhaseShift const& phaseShift) const override { return _owner->GetPhaseShift().CanSee(phaseShift); }
- virtual G3D::Vector3 GetPosition() const override { return G3D::Vector3(_owner->GetPositionX(), _owner->GetPositionY(), _owner->GetPositionZ()); }
- virtual float GetOrientation() const override { return _owner->GetOrientation(); }
- virtual float GetScale() const override { return _owner->GetObjectScale(); }
- virtual void DebugVisualizeCorner(G3D::Vector3 const& corner) const override { _owner->SummonCreature(1, corner.x, corner.y, corner.z, 0, TEMPSUMMON_MANUAL_DESPAWN); }
+ bool IsSpawned() const override { return _owner->isSpawned(); }
+ uint32 GetDisplayId() const override { return _owner->GetDisplayId(); }
+ uint8 GetNameSetId() const override { return _owner->GetNameSetId(); }
+ bool IsInPhase(PhaseShift const& phaseShift) const override { return _owner->GetPhaseShift().CanSee(phaseShift); }
+ G3D::Vector3 GetPosition() const override { return G3D::Vector3(_owner->GetPositionX(), _owner->GetPositionY(), _owner->GetPositionZ()); }
+ float GetOrientation() const override { return _owner->GetOrientation(); }
+ float GetScale() const override { return _owner->GetObjectScale(); }
+ void DebugVisualizeCorner(G3D::Vector3 const& corner) const override { _owner->SummonCreature(1, corner.x, corner.y, corner.z, 0, TEMPSUMMON_MANUAL_DESPAWN); }
private:
GameObject const* _owner;
diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h
index d43306e9983..12ff942a6ba 100644
--- a/src/server/game/Entities/GameObject/GameObject.h
+++ b/src/server/game/Entities/GameObject/GameObject.h
@@ -273,6 +273,7 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject<GameObject>
std::string GetAIName() const;
void SetDisplayId(uint32 displayid);
uint32 GetDisplayId() const { return GetUInt32Value(GAMEOBJECT_DISPLAYID); }
+ uint8 GetNameSetId() const;
uint32 GetFaction() const { return GetUInt32Value(GAMEOBJECT_FACTION); }
void SetFaction(uint32 faction) { SetUInt32Value(GAMEOBJECT_FACTION, faction); }
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index 5745b9ab5db..6175f8c7a02 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -1622,17 +1622,17 @@ void WorldObject::RemoveFromWorld()
uint32 WorldObject::GetZoneId() const
{
- return GetBaseMap()->GetZoneId(GetPhaseShift(), m_positionX, m_positionY, m_positionZ);
+ return GetMap()->GetZoneId(GetPhaseShift(), m_positionX, m_positionY, m_positionZ);
}
uint32 WorldObject::GetAreaId() const
{
- return GetBaseMap()->GetAreaId(GetPhaseShift(), m_positionX, m_positionY, m_positionZ);
+ return GetMap()->GetAreaId(GetPhaseShift(), m_positionX, m_positionY, m_positionZ);
}
void WorldObject::GetZoneAndAreaId(uint32& zoneid, uint32& areaid) const
{
- GetBaseMap()->GetZoneAndAreaId(GetPhaseShift(), zoneid, areaid, m_positionX, m_positionY, m_positionZ);
+ GetMap()->GetZoneAndAreaId(GetPhaseShift(), zoneid, areaid, m_positionX, m_positionY, m_positionZ);
}
InstanceScript* WorldObject::GetInstanceScript()
@@ -2332,12 +2332,6 @@ void WorldObject::ResetMap()
//m_InstanceId = 0;
}
-Map const* WorldObject::GetBaseMap() const
-{
- ASSERT(m_currMap);
- return m_currMap->GetParent();
-}
-
void WorldObject::AddObjectToRemoveList()
{
ASSERT(m_uint32Values);
diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h
index 3dcc769b8ab..13b75f8bc89 100644
--- a/src/server/game/Entities/Object/Object.h
+++ b/src/server/game/Entities/Object/Object.h
@@ -497,9 +497,6 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation
Map* FindMap() const { return m_currMap; }
//used to check all object's GetMap() calls when object is not in world!
- //this function should be removed in nearest time...
- Map const* GetBaseMap() const;
-
void SetZoneScript();
ZoneScript* GetZoneScript() const { return m_zoneScript; }
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 4f911497d4f..cc868ccf736 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -1314,7 +1314,7 @@ void Player::Update(uint32 p_time)
}
// not auto-free ghost from body in instances
- if (m_deathTimer > 0 && !GetBaseMap()->Instanceable() && !HasAuraType(SPELL_AURA_PREVENT_RESURRECTION))
+ if (m_deathTimer > 0 && !GetMap()->Instanceable() && !HasAuraType(SPELL_AURA_PREVENT_RESURRECTION))
{
if (p_time >= m_deathTimer)
{
@@ -2132,7 +2132,7 @@ GameObject* Player::GetGameObjectIfCanInteractWith(ObjectGuid const& guid, Gameo
bool Player::IsUnderWater() const
{
return IsInWater() &&
- GetPositionZ() < (GetBaseMap()->GetWaterLevel(GetPhaseShift(), GetPositionX(), GetPositionY()) - 2);
+ GetPositionZ() < (GetMap()->GetWaterLevel(GetPhaseShift(), GetPositionX(), GetPositionY()) - 2);
}
void Player::SetInWater(bool apply)
@@ -5945,7 +5945,7 @@ void Player::CheckAreaExploreAndOutdoor()
return;
bool isOutdoor;
- uint32 areaId = GetBaseMap()->GetAreaId(GetPhaseShift(), GetPositionX(), GetPositionY(), GetPositionZ(), &isOutdoor);
+ uint32 areaId = GetMap()->GetAreaId(GetPhaseShift(), GetPositionX(), GetPositionY(), GetPositionZ(), &isOutdoor);
AreaTableEntry const* areaEntry = sAreaTableStore.LookupEntry(areaId);
if (sWorld->getBoolConfig(CONFIG_VMAP_INDOOR_CHECK) && !isOutdoor)
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 1d4814f7c9b..847a8e6f51e 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -3045,12 +3045,12 @@ bool Unit::isInAccessiblePlaceFor(Creature const* c) const
bool Unit::IsInWater() const
{
- return GetBaseMap()->IsInWater(GetPhaseShift(), GetPositionX(), GetPositionY(), GetPositionZ());
+ return GetMap()->IsInWater(GetPhaseShift(), GetPositionX(), GetPositionY(), GetPositionZ());
}
bool Unit::IsUnderWater() const
{
- return GetBaseMap()->IsUnderWater(GetPhaseShift(), GetPositionX(), GetPositionY(), GetPositionZ());
+ return GetMap()->IsUnderWater(GetPhaseShift(), GetPositionX(), GetPositionY(), GetPositionZ());
}
void Unit::UpdateUnderwaterState(Map* m, float x, float y, float z)
diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp
index 3ec04849875..eb987c24af3 100644
--- a/src/server/game/Handlers/MovementHandler.cpp
+++ b/src/server/game/Handlers/MovementHandler.cpp
@@ -374,7 +374,7 @@ void WorldSession::HandleMovementOpcode(OpcodeClient opcode, MovementInfo& movem
if (plrMover && ((movementInfo.flags & MOVEMENTFLAG_SWIMMING) != 0) != plrMover->IsInWater())
{
// now client not include swimming flag in case jumping under water
- plrMover->SetInWater(!plrMover->IsInWater() || plrMover->GetBaseMap()->IsUnderWater(plrMover->GetPhaseShift(), movementInfo.pos.GetPositionX(), movementInfo.pos.GetPositionY(), movementInfo.pos.GetPositionZ()));
+ plrMover->SetInWater(!plrMover->IsInWater() || plrMover->GetMap()->IsUnderWater(plrMover->GetPhaseShift(), movementInfo.pos.GetPositionX(), movementInfo.pos.GetPositionY(), movementInfo.pos.GetPositionZ()));
}
uint32 mstime = getMSTime();
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp
index 0872ace1ac5..f36123e1c2c 100644
--- a/src/server/game/Maps/Map.cpp
+++ b/src/server/game/Maps/Map.cpp
@@ -2678,16 +2678,44 @@ bool Map::IsOutdoors(PhaseShift const& phaseShift, float x, float y, float z) co
bool Map::GetAreaInfo(PhaseShift const& phaseShift, float x, float y, float z, uint32 &flags, int32 &adtId, int32 &rootId, int32 &groupId) const
{
float vmap_z = z;
+ float dynamic_z = z;
+ float check_z = z;
uint32 terrainMapId = PhasingHandler::GetTerrainMapId(phaseShift, this, x, y);
VMAP::IVMapManager* vmgr = VMAP::VMapFactory::createOrGetVMapManager();
- if (vmgr->getAreaInfo(terrainMapId, x, y, vmap_z, flags, adtId, rootId, groupId))
+ uint32 vflags;
+ int32 vadtId;
+ int32 vrootId;
+ int32 vgroupId;
+ uint32 dflags;
+ int32 dadtId;
+ int32 drootId;
+ int32 dgroupId;
+
+ bool hasVmapAreaInfo = vmgr->getAreaInfo(terrainMapId, x, y, vmap_z, vflags, vadtId, vrootId, vgroupId);
+ bool hasDynamicAreaInfo = _dynamicTree.getAreaInfo(x, y, dynamic_z, phaseShift, dflags, dadtId, drootId, dgroupId);
+ auto useVmap = [&]() { check_z = vmap_z; flags = vflags; adtId = vadtId; rootId = vrootId; groupId = vgroupId; };
+ auto useDyn = [&]() { check_z = dynamic_z; flags = dflags; adtId = dadtId; rootId = drootId; groupId = dgroupId; };
+
+ if (hasVmapAreaInfo)
+ {
+ if (hasDynamicAreaInfo && dynamic_z > vmap_z)
+ useDyn();
+ else
+ useVmap();
+ }
+ else if (hasDynamicAreaInfo)
+ {
+ useDyn();
+ }
+
+ if (hasVmapAreaInfo || hasDynamicAreaInfo)
{
// check if there's terrain between player height and object height
if (GridMap* gmap = const_cast<Map*>(this)->GetGrid(terrainMapId, x, y))
{
- float _mapheight = gmap->getHeight(x, y);
+ float mapHeight = gmap->getHeight(x, y);
// z + 2.0f condition taken from GetHeight(), not sure if it's such a great choice...
- if (z + 2.0f > _mapheight && _mapheight > vmap_z)
+ if (z + 2.0f > mapHeight && mapHeight > check_z)
return false;
}
return true;
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h
index ddb69bb54cc..e784235a1b0 100644
--- a/src/server/game/Miscellaneous/SharedDefines.h
+++ b/src/server/game/Miscellaneous/SharedDefines.h
@@ -2425,6 +2425,7 @@ enum GameObjectFlags
GO_FLAG_NODESPAWN = 0x00000020, // never despawn, typically for doors, they just change state
GO_FLAG_AI_OBSTACLE = 0x00000040, // makes the client register the object in something called AIObstacleMgr, unknown what it does
GO_FLAG_FREEZE_ANIMATION = 0x00000080,
+ // for object types GAMEOBJECT_TYPE_GARRISON_BUILDING, GAMEOBJECT_TYPE_GARRISON_PLOT and GAMEOBJECT_TYPE_PHASEABLE_MO flag bits 8 to 12 are used as WMOAreaTable::NameSetID
GO_FLAG_DAMAGED = 0x00000200,
GO_FLAG_DESTROYED = 0x00000400,
GO_FLAG_INTERACT_DISTANCE_USES_TEMPLATE_MODEL = 0x00080000, // client checks interaction distance from model sent in SMSG_QUERY_GAMEOBJECT_RESPONSE instead of GAMEOBJECT_DISPLAYID
diff --git a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp
index 6603aeade68..2f042353a81 100644
--- a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp
@@ -38,7 +38,7 @@ void RandomMovementGenerator<Creature>::_setRandomLocation(Creature* creature)
float respX, respY, respZ, respO, destX, destY, destZ, travelDistZ;
creature->GetHomePosition(respX, respY, respZ, respO);
- Map const* map = creature->GetBaseMap();
+ Map const* map = creature->GetMap();
// For 2D/3D system selection
//bool is_land_ok = creature.CanWalk(); // not used?
diff --git a/src/server/game/Movement/PathGenerator.cpp b/src/server/game/Movement/PathGenerator.cpp
index 4c89bb99e2c..cbc5785829b 100644
--- a/src/server/game/Movement/PathGenerator.cpp
+++ b/src/server/game/Movement/PathGenerator.cpp
@@ -186,7 +186,7 @@ void PathGenerator::BuildPolyPath(G3D::Vector3 const& startPos, G3D::Vector3 con
// Check both start and end points, if they're both in water, then we can *safely* let the creature move
for (uint32 i = 0; i < _pathPoints.size(); ++i)
{
- ZLiquidStatus status = _sourceUnit->GetBaseMap()->getLiquidStatus(_sourceUnit->GetPhaseShift(), _pathPoints[i].x, _pathPoints[i].y, _pathPoints[i].z, MAP_ALL_LIQUIDS, NULL);
+ ZLiquidStatus status = _sourceUnit->GetMap()->getLiquidStatus(_sourceUnit->GetPhaseShift(), _pathPoints[i].x, _pathPoints[i].y, _pathPoints[i].z, MAP_ALL_LIQUIDS, NULL);
// One of the points is not in the water, cancel movement.
if (status == LIQUID_MAP_NO_WATER)
{
@@ -212,7 +212,7 @@ void PathGenerator::BuildPolyPath(G3D::Vector3 const& startPos, G3D::Vector3 con
Creature* owner = (Creature*)_sourceUnit;
G3D::Vector3 const& p = (distToStartPoly > 7.0f) ? startPos : endPos;
- if (_sourceUnit->GetBaseMap()->IsUnderWater(_sourceUnit->GetPhaseShift(), p.x, p.y, p.z))
+ if (_sourceUnit->GetMap()->IsUnderWater(_sourceUnit->GetPhaseShift(), p.x, p.y, p.z))
{
TC_LOG_DEBUG("maps", "++ BuildPolyPath :: underWater case\n");
if (owner->CanSwim())
@@ -649,7 +649,7 @@ void PathGenerator::UpdateFilter()
NavTerrain PathGenerator::GetNavTerrain(float x, float y, float z)
{
LiquidData data;
- ZLiquidStatus liquidStatus = _sourceUnit->GetBaseMap()->getLiquidStatus(_sourceUnit->GetPhaseShift(), x, y, z, MAP_ALL_LIQUIDS, &data);
+ ZLiquidStatus liquidStatus = _sourceUnit->GetMap()->getLiquidStatus(_sourceUnit->GetPhaseShift(), x, y, z, MAP_ALL_LIQUIDS, &data);
if (liquidStatus == LIQUID_MAP_NO_WATER)
return NAV_GROUND;
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index 8347202166d..c21c6147e98 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -4946,7 +4946,7 @@ void AuraEffect::HandlePreventResurrection(AuraApplication const* aurApp, uint8
if (apply)
aurApp->GetTarget()->RemoveFlag(PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_RELEASE_TIMER);
- else if (!aurApp->GetTarget()->GetBaseMap()->Instanceable())
+ else if (!aurApp->GetTarget()->GetMap()->Instanceable())
aurApp->GetTarget()->SetFlag(PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_RELEASE_TIMER);
}