From 81111116fa0ee767ba1f1b53eeb725f26337cea4 Mon Sep 17 00:00:00 2001 From: robinsch Date: Sun, 31 May 2015 04:03:11 +0200 Subject: Core/Movement: Knockback Effect on Flying Mount by @robinsch; closes #6099 Keep the mounted player flying after the knockback effect cast on mounted player. Before these changes, the flying mount behaves like a ground mount after the knockback. From large enough heights, the fall causes damage or death to the falling (mounted) character. --- src/server/game/Entities/Unit/Unit.cpp | 7 +++++-- src/server/game/Entities/Unit/Unit.h | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'src/server/game/Entities/Unit') 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); -- cgit v1.2.3