From 3292e8d5ab5e2095e3c9a6339a8e21d9b1d0eec0 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Tue, 22 Feb 2022 19:26:24 -0500 Subject: [PATCH] Handle different slopes in mmaps Port From (https://github.com/TrinityCore/TrinityCore/commit/d58d0e895c6e22bcf40be5c38ff828c98a7600e6) --- .../Game/Movement/Generators/PathGenerator.cs | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/Source/Game/Movement/Generators/PathGenerator.cs b/Source/Game/Movement/Generators/PathGenerator.cs index 7ef3466a3..0d516eef4 100644 --- a/Source/Game/Movement/Generators/PathGenerator.cs +++ b/Source/Game/Movement/Generators/PathGenerator.cs @@ -896,6 +896,11 @@ namespace Game.Movement _filter.setIncludeFlags((ushort)includedFlags); } + + Creature _sourceCreature = _source.ToCreature(); + if (_sourceCreature != null) + if (_sourceCreature.IsInCombat() || _sourceCreature.IsInEvadeMode()) + _filter.setIncludeFlags((ushort)(_filter.getIncludeFlags() | (ushort)NavTerrainFlag.GroundSteep)); } } @@ -1093,19 +1098,24 @@ namespace Game.Movement public enum NavArea { Empty = 0, + MagmaSlime = 8, // don't need to differentiate between them + Water = 9, + Ground = 10, + GroundSteep = 11, + MaxValue = GroundSteep, + MinValue = MagmaSlime, + AllMask = 0x3F // max allowed value // areas 1-60 will be used for destructible areas (currently skipped in vmaps, WMO with flag 1) // ground is the highest value to make recast choose ground over water when merging surfaces very close to each other (shallow water would be walkable) - MagmaSlime = 61, // don't need to differentiate between them - Water = 62, - Ground = 63, } public enum NavTerrainFlag { Empty = 0x00, - Ground = 1 << (63 - NavArea.Ground), - Water = 1 << (63 - NavArea.Water), - MagmaSlime = 1 << (63 - NavArea.MagmaSlime) + GroundSteep = 1 << (NavArea.MaxValue - NavArea.GroundSteep), + Ground = 1 << (NavArea.MaxValue - NavArea.Ground), + Water = 1 << (NavArea.MaxValue - NavArea.Water), + MagmaSlime = 1 << (NavArea.MaxValue - NavArea.MagmaSlime) } public enum PolyFlag