diff options
-rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Creature/Creature.h | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.h | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 7 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 2 |
6 files changed, 11 insertions, 8 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 7f00fc7f9d8..d04691da02d 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -2415,7 +2415,7 @@ bool Creature::SetSwim(bool enable) return true; } -bool Creature::SetCanFly(bool enable) +bool Creature::SetCanFly(bool enable, bool packetOnly /* = false */) { if (!Unit::SetCanFly(enable)) return false; diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index 6f82d5dda4a..764a57d4cef 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -472,7 +472,7 @@ class Creature : public Unit, public GridObject<Creature>, public MapObject bool SetWalk(bool enable) override; bool SetDisableGravity(bool disable, bool packetOnly = false) override; bool SetSwim(bool enable) override; - bool SetCanFly(bool enable) override; + bool SetCanFly(bool enable, bool packetOnly = false) override; bool SetWaterWalking(bool enable, bool packetOnly = false) override; bool SetFeatherFall(bool enable, bool packetOnly = false) override; bool SetHover(bool enable, bool packetOnly = false) override; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 030c2a25110..275dbf92dca 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -26251,9 +26251,9 @@ bool Player::SetDisableGravity(bool disable, bool packetOnly /*= false*/) return true; } -bool Player::SetCanFly(bool apply) +bool Player::SetCanFly(bool apply, bool packetOnly /*= false*/) { - if (!Unit::SetCanFly(apply)) + if (!packetOnly && !Unit::SetCanFly(apply)) return false; WorldPacket data(apply ? SMSG_MOVE_SET_CAN_FLY : SMSG_MOVE_UNSET_CAN_FLY, 12); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 256cd920880..19cbd7e13a4 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2301,7 +2301,7 @@ class Player : public Unit, public GridObject<Player> void RemoveFromWhisperWhiteList(ObjectGuid guid) { WhisperList.remove(guid); } bool SetDisableGravity(bool disable, bool packetOnly /* = false */) override; - bool SetCanFly(bool apply) override; + bool SetCanFly(bool apply, bool packetOnly = false) override; bool SetWaterWalking(bool apply, bool packetOnly = false) override; bool SetFeatherFall(bool apply, bool packetOnly = false) override; bool SetHover(bool enable, bool packetOnly = false) override; diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 66571393124..a58fde1e3a3 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -16448,7 +16448,7 @@ void Unit::KnockbackFrom(float x, float y, float speedXY, float speedZ) float vcos, vsin; GetSinCos(x, y, vsin, vcos); - WorldPacket data(SMSG_MOVE_KNOCK_BACK, (8+4+4+4+4+4)); + WorldPacket data(SMSG_MOVE_KNOCK_BACK, (8 + 4 + 4 + 4 + 4 + 4)); data << GetPackGUID(); data << uint32(0); // counter data << float(vcos); // x direction @@ -16457,6 +16457,9 @@ void Unit::KnockbackFrom(float x, float y, float speedXY, float speedZ) data << float(-speedZ); // Z Movement speed (vertical) player->GetSession()->SendPacket(&data); + + if (player->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED) || player->HasAuraType(SPELL_AURA_FLY)) + player->SetCanFly(true, true); } } @@ -17515,7 +17518,7 @@ bool Unit::SetSwim(bool enable) return true; } -bool Unit::SetCanFly(bool enable) +bool Unit::SetCanFly(bool enable, bool /*packetOnly = false */) { if (enable == HasUnitMovementFlag(MOVEMENTFLAG_CAN_FLY)) return false; diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index e6d2718dc53..2593ca2c728 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1569,7 +1569,7 @@ class Unit : public WorldObject virtual bool SetWalk(bool enable); virtual bool SetDisableGravity(bool disable, bool packetOnly = false); virtual bool SetSwim(bool enable); - virtual bool SetCanFly(bool enable); + virtual bool SetCanFly(bool enable, bool packetOnly = false); virtual bool SetWaterWalking(bool enable, bool packetOnly = false); virtual bool SetFeatherFall(bool enable, bool packetOnly = false); virtual bool SetHover(bool enable, bool packetOnly = false); |