From a24e3a9511d8b60baf51a4e81aa3e4731746ffe4 Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 22 Dec 2023 17:55:53 +0100 Subject: Core/Maps: Fixed pathgenerator always returning NAV_GROUND from GetNavTerrain --- src/server/game/Movement/PathGenerator.cpp | 21 ++++++++------------- src/server/game/Movement/PathGenerator.h | 2 +- 2 files changed, 9 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/server/game/Movement/PathGenerator.cpp b/src/server/game/Movement/PathGenerator.cpp index aae9b7ea1c7..a5967cf5867 100644 --- a/src/server/game/Movement/PathGenerator.cpp +++ b/src/server/game/Movement/PathGenerator.cpp @@ -697,25 +697,20 @@ void PathGenerator::UpdateFilter() } } -NavTerrainFlag PathGenerator::GetNavTerrain(float x, float y, float z) +NavTerrainFlag PathGenerator::GetNavTerrain(float x, float y, float z) const { LiquidData data; ZLiquidStatus liquidStatus = _source->GetMap()->GetLiquidStatus(_source->GetPhaseShift(), x, y, z, map_liquidHeaderTypeFlags::AllLiquids, &data, _source->GetCollisionHeight()); if (liquidStatus == LIQUID_MAP_NO_WATER) return NAV_GROUND; - data.type_flags &= map_liquidHeaderTypeFlags::DarkWater; - switch (data.type_flags) - { - case map_liquidHeaderTypeFlags::Water: - case map_liquidHeaderTypeFlags::Ocean: - return NAV_WATER; - case map_liquidHeaderTypeFlags::Magma: - case map_liquidHeaderTypeFlags::Slime: - return NAV_MAGMA_SLIME; - default: - return NAV_GROUND; - } + if (data.type_flags.HasFlag(map_liquidHeaderTypeFlags::Water | map_liquidHeaderTypeFlags::Ocean)) + return NAV_WATER; + + if (data.type_flags.HasFlag(map_liquidHeaderTypeFlags::Magma | map_liquidHeaderTypeFlags::Slime)) + return NAV_MAGMA_SLIME; + + return NAV_GROUND; } bool PathGenerator::HaveTile(const G3D::Vector3& p) const diff --git a/src/server/game/Movement/PathGenerator.h b/src/server/game/Movement/PathGenerator.h index b06573e7253..3d86cd066b8 100644 --- a/src/server/game/Movement/PathGenerator.h +++ b/src/server/game/Movement/PathGenerator.h @@ -132,7 +132,7 @@ class TC_GAME_API PathGenerator void BuildPointPath(float const* startPoint, float const* endPoint); void BuildShortcut(); - NavTerrainFlag GetNavTerrain(float x, float y, float z); + NavTerrainFlag GetNavTerrain(float x, float y, float z) const; void CreateFilter(); void UpdateFilter(); -- cgit v1.2.3