aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities
diff options
context:
space:
mode:
authorOvah <dreadkiller@gmx.de>2020-06-01 15:58:31 +0200
committerGitHub <noreply@github.com>2020-06-01 15:58:31 +0200
commit43ef610fe059c3da4cc1ad2036f83cfa67ce0fee (patch)
treec39d1b74bac244685a5a4de0b18ba968fa3c00d2 /src/server/game/Entities
parent48c5c0d7a2424df73343df127d415ee18eb84296 (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
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 a33a09b227c..3332189a1e2 100644
--- a/src/server/game/Entities/Creature/Creature.h
+++ b/src/server/game/Entities/Creature/Creature.h
@@ -98,8 +98,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 6f7f13ef7c8..37783c46ac6 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -13090,7 +13090,7 @@ bool Unit::SetWalk(bool enable)
bool Unit::SetDisableGravity(bool disable, bool /*packetOnly = false*/)
{
- 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 a90145c139f..ab4d013aafa 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -1118,7 +1118,7 @@ class TC_GAME_API Unit : public WorldObject
//void SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, uint8 type, uint32 MovementFlags, uint32 Time, Player* player = nullptr);
void SendMovementFlagUpdate(bool self = false);
- 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); }
virtual bool SetWalk(bool enable);