Merge pull request #14811 from tkrokli/Knockback_flying_mount
Core/Movement: Knockback Effect on Flying Mount
This commit is contained in:
commit
52ea75c735
6 files changed
+11
-8
No files matched your search
@@ -2412,7 +2412,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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in new issue
Block a user