aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2018-02-26 18:11:29 +0100
committerfunjoker <funjoker109@gmail.com>2021-08-08 21:21:34 +0200
commit552ce7c2862789b6297f296800424e2b64c84bbe (patch)
treec0594e48db6913c54a9af7aaf1ae9ba61214dd57 /src
parente47e95b6dc89a7332ae4d5d833639e4f30f3d8c5 (diff)
Core/VMap: Use fuzzy equality and gridmap tolerance for floor-finding. Closes #21338. Supersedes #21479.
(cherry picked from commit ec916db294760576ef4466d7e558f038dacecf20)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Maps/Map.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp
index 1d946f278b9..161e2314e00 100644
--- a/src/server/game/Maps/Map.cpp
+++ b/src/server/game/Maps/Map.cpp
@@ -2804,7 +2804,11 @@ void Map::GetFullTerrainStatusForPosition(PhaseShift const& phaseShift, float x,
// area lookup
AreaTableEntry const* areaEntry = nullptr;
WMOAreaTableEntry const* wmoEntry = nullptr;
- if (vmapData.areaInfo && (z <= mapHeight || mapHeight <= vmapData.floorZ))
+ // the vmap floor is our floor if either
+ // - the vmap floor is above the gridmap floor
+ // or
+ // - we are below the gridmap floor
+ if (vmapData.areaInfo && (G3D::fuzzyLt(z, mapHeight - GROUND_HEIGHT_TOLERANCE) || mapHeight <= vmapData.floorZ))
if ((wmoEntry = sDB2Manager.GetWMOAreaTable(vmapData.areaInfo->rootId, vmapData.areaInfo->adtId, vmapData.areaInfo->groupId)))
areaEntry = sAreaTableStore.LookupEntry(wmoEntry->AreaTableID);