Core/Movement: Refresh collision height on shapeshifting
Port From (https://github.com/TrinityCore/TrinityCore/commit/49992508a46eb8cd73205a896ae8d84bd991bc39)
This commit is contained in:
@@ -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; }
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user