Handle different slopes in mmaps

Port From (https://github.com/TrinityCore/TrinityCore/commit/d58d0e895c6e22bcf40be5c38ff828c98a7600e6)
This commit is contained in:
hondacrx
2022-02-22 19:26:24 -05:00
parent 8fa43cd0bd
commit 3292e8d5ab
@@ -896,6 +896,11 @@ namespace Game.Movement
_filter.setIncludeFlags((ushort)includedFlags); _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 public enum NavArea
{ {
Empty = 0, 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) // 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) // 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 public enum NavTerrainFlag
{ {
Empty = 0x00, Empty = 0x00,
Ground = 1 << (63 - NavArea.Ground), GroundSteep = 1 << (NavArea.MaxValue - NavArea.GroundSteep),
Water = 1 << (63 - NavArea.Water), Ground = 1 << (NavArea.MaxValue - NavArea.Ground),
MagmaSlime = 1 << (63 - NavArea.MagmaSlime) Water = 1 << (NavArea.MaxValue - NavArea.Water),
MagmaSlime = 1 << (NavArea.MaxValue - NavArea.MagmaSlime)
} }
public enum PolyFlag public enum PolyFlag