diff --git a/Source/Game/Entities/Player/Player.cs b/Source/Game/Entities/Player/Player.cs index 22ca8dfcc..ac96bcb7d 100644 --- a/Source/Game/Entities/Player/Player.cs +++ b/Source/Game/Entities/Player/Player.cs @@ -4815,7 +4815,7 @@ namespace Game.Entities SendPacket(new OnCancelExpectedRideVehicleAura()); } - public void SendMovementSetCollisionHeight(float height) + public void SendMovementSetCollisionHeight(float height, UpdateCollisionHeightReason reason) { MoveSetCollisionHeight setCollisionHeight = new MoveSetCollisionHeight(); setCollisionHeight.MoverGUID = GetGUID(); @@ -4824,7 +4824,7 @@ namespace Game.Entities setCollisionHeight.Scale = GetObjectScale(); setCollisionHeight.MountDisplayID = GetMountDisplayId(); setCollisionHeight.ScaleDuration = m_unitData.ScaleDuration; - setCollisionHeight.Reason = UpdateCollisionHeightReason.Mount; + setCollisionHeight.Reason = reason; SendPacket(setCollisionHeight); MoveUpdateCollisionHeight updateCollisionHeight = new MoveUpdateCollisionHeight(); @@ -6382,7 +6382,7 @@ namespace Game.Entities SetBoundingRadius(scale * SharedConst.DefaultPlayerBoundingRadius); SetCombatReach(scale * SharedConst.DefaultPlayerCombatReach); if (IsInWorld) - SendMovementSetCollisionHeight(scale * GetCollisionHeight(IsMounted())); + SendMovementSetCollisionHeight(scale * GetCollisionHeight(IsMounted()), UpdateCollisionHeightReason.Scale); } public uint GetXP() { return m_activePlayerData.XP; } diff --git a/Source/Game/Entities/Unit/Unit.Movement.cs b/Source/Game/Entities/Unit/Unit.Movement.cs index 8189c374d..58ced6e0d 100644 --- a/Source/Game/Entities/Unit/Unit.Movement.cs +++ b/Source/Game/Entities/Unit/Unit.Movement.cs @@ -1318,7 +1318,7 @@ namespace Game.Entities if (charm.GetTypeId() == TypeId.Unit) charm.AddUnitFlag(UnitFlags.Stunned); - player.SendMovementSetCollisionHeight(player.GetCollisionHeight(true)); + player.SendMovementSetCollisionHeight(player.GetCollisionHeight(true), UpdateCollisionHeightReason.Mount); } RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags.Mount); @@ -1334,7 +1334,7 @@ namespace Game.Entities Player thisPlayer = ToPlayer(); if (thisPlayer != null) - thisPlayer.SendMovementSetCollisionHeight(thisPlayer.GetCollisionHeight(false)); + thisPlayer.SendMovementSetCollisionHeight(thisPlayer.GetCollisionHeight(false), UpdateCollisionHeightReason.Mount); // dismount as a vehicle if (IsTypeId(TypeId.Player) && GetVehicleKit() != null) diff --git a/Source/Game/Networking/Packets/MovementPackets.cs b/Source/Game/Networking/Packets/MovementPackets.cs index 77e89e470..8e4153a8c 100644 --- a/Source/Game/Networking/Packets/MovementPackets.cs +++ b/Source/Game/Networking/Packets/MovementPackets.cs @@ -924,7 +924,7 @@ namespace Game.Networking.Packets public float Scale = 1.0f; public ObjectGuid MoverGUID; public uint MountDisplayID; - public UpdateCollisionHeightReason Reason = UpdateCollisionHeightReason.Mount; + public UpdateCollisionHeightReason Reason; public uint SequenceIndex; public int ScaleDuration; public float Height = 1.0f; @@ -959,7 +959,7 @@ namespace Game.Networking.Packets } public MovementAck Data; - public UpdateCollisionHeightReason Reason = UpdateCollisionHeightReason.Mount; + public UpdateCollisionHeightReason Reason; public uint MountDisplayID; public float Height = 1.0f; } diff --git a/Source/Game/Spells/Auras/AuraEffect.cs b/Source/Game/Spells/Auras/AuraEffect.cs index a80fd6d55..0206f27f7 100644 --- a/Source/Game/Spells/Auras/AuraEffect.cs +++ b/Source/Game/Spells/Auras/AuraEffect.cs @@ -1406,8 +1406,12 @@ namespace Game.Spells HandleShapeshiftBoosts(target, apply); } - if (target.IsTypeId(TypeId.Player)) - target.ToPlayer().InitDataForForm(); + Player playerTarget = target.ToPlayer(); + if (playerTarget != null) + { + playerTarget.SendMovementSetCollisionHeight(playerTarget.GetCollisionHeight(false), UpdateCollisionHeightReason.Force); + playerTarget.InitDataForForm(); + } else target.UpdateDisplayPower();