aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities
diff options
context:
space:
mode:
authorOvah <dreadkiller@gmx.de>2020-06-01 15:58:31 +0200
committerShauren <shauren.trinity@gmail.com>2022-01-06 19:46:41 +0100
commit294657f7dd4d2db1ca6dcf66f0b0895c6ba92949 (patch)
tree398d4fa0bbbd1c62bcc02df6fa3366b09186eadf /src/server/game/Entities
parent5af8373cce498c14c7ee42066efde30c41a3e934 (diff)
Core/Units: flight and hover checks will now consider movement template data as well as manually set flight states
- manually set flight states via auras and scripts will no longer be ignored - restored movement template consideration when generating pathings - renamed IsLevitating to IsGravityDisabled to reflect the referenced movement flag's name (cherry picked from commit 43ef610fe059c3da4cc1ad2036f83cfa67ce0fee)
Diffstat (limited to 'src/server/game/Entities')
-rw-r--r--src/server/game/Entities/Creature/Creature.h4
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp2
-rw-r--r--src/server/game/Entities/Unit/Unit.h2
3 files changed, 4 insertions, 4 deletions
diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h
index d6a28371954..7e1d4ac0b8d 100644
--- a/src/server/game/Entities/Creature/Creature.h
+++ b/src/server/game/Entities/Creature/Creature.h
@@ -112,8 +112,8 @@ class TC_GAME_API Creature : public Unit, public GridObject<Creature>, public Ma
CreatureMovementData const& GetMovementTemplate() const;
bool CanWalk() const { return GetMovementTemplate().IsGroundAllowed(); }
bool CanSwim() const override { return GetMovementTemplate().IsSwimAllowed() || IsPet(); }
- bool CanFly() const override { return GetMovementTemplate().IsFlightAllowed(); }
- bool CanHover() const { return GetMovementTemplate().Ground == CreatureGroundMovementType::Hover; }
+ bool CanFly() const override { return GetMovementTemplate().IsFlightAllowed() || IsFlying(); }
+ bool CanHover() const { return GetMovementTemplate().Ground == CreatureGroundMovementType::Hover || IsHovering(); }
MovementGeneratorType GetDefaultMovementType() const override { return m_defaultMovementType; }
void SetDefaultMovementType(MovementGeneratorType mgt) { m_defaultMovementType = mgt; }
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 7a88dd39fcb..ce14d9385da 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -12410,7 +12410,7 @@ bool Unit::SetWalk(bool enable)
bool Unit::SetDisableGravity(bool disable)
{
- if (disable == IsLevitating())
+ if (disable == IsGravityDisabled())
return false;
if (disable)
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index 63334d331f5..a3446114b44 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -1202,7 +1202,7 @@ class TC_GAME_API Unit : public WorldObject
void SetPlayHoverAnim(bool enable);
void SetHoverHeight(float hoverHeight) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::HoverHeight), hoverHeight); }
- bool IsLevitating() const { return m_movementInfo.HasMovementFlag(MOVEMENTFLAG_DISABLE_GRAVITY); }
+ bool IsGravityDisabled() const { return m_movementInfo.HasMovementFlag(MOVEMENTFLAG_DISABLE_GRAVITY); }
bool IsWalking() const { return m_movementInfo.HasMovementFlag(MOVEMENTFLAG_WALKING); }
bool IsHovering() const { return m_movementInfo.HasMovementFlag(MOVEMENTFLAG_HOVER); }
bool SetWalk(bool enable);