Core/Units: flight and hover checks will now consider movement template data as well as manually set flight states

Port From (https://github.com/TrinityCore/TrinityCore/commit/294657f7dd4d2db1ca6dcf66f0b0895c6ba92949)
This commit is contained in:
hondacrx
2022-02-22 19:59:03 -05:00
parent 236f1d6999
commit bc52ff717a
4 changed files with 10 additions and 10 deletions
+4 -4
View File
@@ -2818,7 +2818,7 @@ namespace Game.Entities
bool CanNotReachTarget() { return m_cannotReachTarget; } bool CanNotReachTarget() { return m_cannotReachTarget; }
void SetCannotReachTarget(bool cannotReach) public void SetCannotReachTarget(bool cannotReach)
{ {
if (cannotReach == m_cannotReachTarget) if (cannotReach == m_cannotReachTarget)
return; return;
@@ -3101,9 +3101,9 @@ namespace Game.Entities
public bool CanWalk() { return GetMovementTemplate().IsGroundAllowed(); } public bool CanWalk() { return GetMovementTemplate().IsGroundAllowed(); }
public override bool CanSwim() { return GetMovementTemplate().IsSwimAllowed() || IsPet();} public override bool CanSwim() { return GetMovementTemplate().IsSwimAllowed() || IsPet();}
public override bool CanFly() { return GetMovementTemplate().IsFlightAllowed(); } public override bool CanFly() { return GetMovementTemplate().IsFlightAllowed() || IsFlying(); }
bool CanHover() { return GetMovementTemplate().Ground == CreatureGroundMovementType.Hover; } bool CanHover() { return GetMovementTemplate().Ground == CreatureGroundMovementType.Hover || IsHovering(); }
public bool IsDungeonBoss() { return (GetCreatureTemplate().FlagsExtra.HasAnyFlag(CreatureFlagsExtra.DungeonBoss)); } public bool IsDungeonBoss() { return (GetCreatureTemplate().FlagsExtra.HasAnyFlag(CreatureFlagsExtra.DungeonBoss)); }
public override bool IsAffectedByDiminishingReturns() { return base.IsAffectedByDiminishingReturns() || GetCreatureTemplate().FlagsExtra.HasAnyFlag(CreatureFlagsExtra.AllDiminish); } public override bool IsAffectedByDiminishingReturns() { return base.IsAffectedByDiminishingReturns() || GetCreatureTemplate().FlagsExtra.HasAnyFlag(CreatureFlagsExtra.AllDiminish); }
+2 -2
View File
@@ -31,7 +31,7 @@ namespace Game.Entities
{ {
public partial class Unit public partial class Unit
{ {
public bool IsLevitating() public bool IsGravityDisabled()
{ {
return m_movementInfo.HasMovementFlag(MovementFlag.DisableGravity); return m_movementInfo.HasMovementFlag(MovementFlag.DisableGravity);
} }
@@ -661,7 +661,7 @@ namespace Game.Entities
public bool SetDisableGravity(bool disable) public bool SetDisableGravity(bool disable)
{ {
if (disable == IsLevitating()) if (disable == IsGravityDisabled())
return false; return false;
if (disable) if (disable)
@@ -169,7 +169,7 @@ namespace Game.Movement
{ {
Log.outDebug(LogFilter.Maps, "++ BuildPolyPath . (startPoly == 0 || endPoly == 0)\n"); Log.outDebug(LogFilter.Maps, "++ BuildPolyPath . (startPoly == 0 || endPoly == 0)\n");
BuildShortcut(); BuildShortcut();
bool path = _source.IsTypeId(TypeId.Unit) && _source.ToCreature().IsFlying(); bool path = _source.IsTypeId(TypeId.Unit) && _source.ToCreature().CanFly();
bool waterPath = _source.IsTypeId(TypeId.Unit) && _source.ToCreature().CanSwim(); bool waterPath = _source.IsTypeId(TypeId.Unit) && _source.ToCreature().CanSwim();
if (waterPath) if (waterPath)
@@ -224,7 +224,7 @@ namespace Game.Movement
Unit _sourceUnit = _source.ToUnit(); Unit _sourceUnit = _source.ToUnit();
if (_sourceUnit != null) if (_sourceUnit != null)
{ {
if (_sourceUnit.IsFlying()) if (_sourceUnit.CanFly())
buildShotrcut = true; buildShotrcut = true;
// Allow to build a shortcut if the unit is falling and it's trying to move downwards towards a target (i.e. charging) // Allow to build a shortcut if the unit is falling and it's trying to move downwards towards a target (i.e. charging)
else if (_sourceUnit.IsFalling() && endPos.Z < startPos.Z) else if (_sourceUnit.IsFalling() && endPos.Z < startPos.Z)
+2 -2
View File
@@ -2162,7 +2162,7 @@ namespace Game.Spells
target.SetCanTransitionBetweenSwimAndFly(apply); target.SetCanTransitionBetweenSwimAndFly(apply);
if (target.SetCanFly(apply)) if (target.SetCanFly(apply))
if (!apply && !target.IsLevitating()) if (!apply && !target.IsGravityDisabled())
target.GetMotionMaster().MoveFall(); target.GetMotionMaster().MoveFall();
} }
@@ -2618,7 +2618,7 @@ namespace Game.Spells
target.SetCanTransitionBetweenSwimAndFly(apply); target.SetCanTransitionBetweenSwimAndFly(apply);
if (target.SetCanFly(apply)) if (target.SetCanFly(apply))
if (!apply && !target.IsLevitating()) if (!apply && !target.IsGravityDisabled())
target.GetMotionMaster().MoveFall(); target.GetMotionMaster().MoveFall();
} }