diff options
| author | Shauren <shauren.trinity@gmail.com> | 2013-06-22 13:42:13 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2013-06-22 13:42:13 +0200 |
| commit | 55fa58af19b39ab92bdea7407a5c12b603931b75 (patch) | |
| tree | 0ace25e433e8326577283f12e883358f23b60853 /src/server/game/Entities/Unit | |
| parent | e5a8f6cd98aa15ef792947551d3de8dab277012d (diff) | |
Core/Movement: Prevent dynamic changes of movement flags for charmed creatures
Closes #10075
Closes #10079
Diffstat (limited to 'src/server/game/Entities/Unit')
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 541c5d9f107..9f6b5f76cb4 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -17406,9 +17406,19 @@ bool Unit::SetDisableGravity(bool disable, bool /*packetOnly = false*/) return false; if (disable) + { AddUnitMovementFlag(MOVEMENTFLAG_DISABLE_GRAVITY); + RemoveUnitMovementFlag(MOVEMENTFLAG_FALLING); + } else + { RemoveUnitMovementFlag(MOVEMENTFLAG_DISABLE_GRAVITY); + if (!HasUnitMovementFlag(MOVEMENTFLAG_CAN_FLY)) + { + m_movementInfo.SetFallTime(0); + AddUnitMovementFlag(MOVEMENTFLAG_FALLING); + } + } return true; } @@ -17432,9 +17442,19 @@ bool Unit::SetCanFly(bool enable) return false; if (enable) + { AddUnitMovementFlag(MOVEMENTFLAG_CAN_FLY); + RemoveUnitMovementFlag(MOVEMENTFLAG_FALLING); + } else - RemoveUnitMovementFlag(MOVEMENTFLAG_CAN_FLY); + { + RemoveUnitMovementFlag(MOVEMENTFLAG_CAN_FLY | MOVEMENTFLAG_MASK_MOVING_FLY); + if (!IsLevitating()) + { + m_movementInfo.SetFallTime(0); + AddUnitMovementFlag(MOVEMENTFLAG_FALLING); + } + } return true; } |
