From 552ce7c2862789b6297f296800424e2b64c84bbe Mon Sep 17 00:00:00 2001 From: Treeston Date: Mon, 26 Feb 2018 18:11:29 +0100 Subject: Core/VMap: Use fuzzy equality and gridmap tolerance for floor-finding. Closes #21338. Supersedes #21479. (cherry picked from commit ec916db294760576ef4466d7e558f038dacecf20) --- src/server/game/Maps/Map.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src') 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); -- cgit v1.2.3