Core/Movement: Refresh collision height on shapeshifting

Port From (https://github.com/TrinityCore/TrinityCore/commit/49992508a46eb8cd73205a896ae8d84bd991bc39)
This commit is contained in:
hondacrx
2021-02-13 21:03:57 -05:00
parent 74457b4b0b
commit 077a06f7c1
4 changed files with 13 additions and 9 deletions
+3 -3
View File
@@ -4815,7 +4815,7 @@ namespace Game.Entities
SendPacket(new OnCancelExpectedRideVehicleAura()); SendPacket(new OnCancelExpectedRideVehicleAura());
} }
public void SendMovementSetCollisionHeight(float height) public void SendMovementSetCollisionHeight(float height, UpdateCollisionHeightReason reason)
{ {
MoveSetCollisionHeight setCollisionHeight = new MoveSetCollisionHeight(); MoveSetCollisionHeight setCollisionHeight = new MoveSetCollisionHeight();
setCollisionHeight.MoverGUID = GetGUID(); setCollisionHeight.MoverGUID = GetGUID();
@@ -4824,7 +4824,7 @@ namespace Game.Entities
setCollisionHeight.Scale = GetObjectScale(); setCollisionHeight.Scale = GetObjectScale();
setCollisionHeight.MountDisplayID = GetMountDisplayId(); setCollisionHeight.MountDisplayID = GetMountDisplayId();
setCollisionHeight.ScaleDuration = m_unitData.ScaleDuration; setCollisionHeight.ScaleDuration = m_unitData.ScaleDuration;
setCollisionHeight.Reason = UpdateCollisionHeightReason.Mount; setCollisionHeight.Reason = reason;
SendPacket(setCollisionHeight); SendPacket(setCollisionHeight);
MoveUpdateCollisionHeight updateCollisionHeight = new MoveUpdateCollisionHeight(); MoveUpdateCollisionHeight updateCollisionHeight = new MoveUpdateCollisionHeight();
@@ -6382,7 +6382,7 @@ namespace Game.Entities
SetBoundingRadius(scale * SharedConst.DefaultPlayerBoundingRadius); SetBoundingRadius(scale * SharedConst.DefaultPlayerBoundingRadius);
SetCombatReach(scale * SharedConst.DefaultPlayerCombatReach); SetCombatReach(scale * SharedConst.DefaultPlayerCombatReach);
if (IsInWorld) if (IsInWorld)
SendMovementSetCollisionHeight(scale * GetCollisionHeight(IsMounted())); SendMovementSetCollisionHeight(scale * GetCollisionHeight(IsMounted()), UpdateCollisionHeightReason.Scale);
} }
public uint GetXP() { return m_activePlayerData.XP; } public uint GetXP() { return m_activePlayerData.XP; }
+2 -2
View File
@@ -1318,7 +1318,7 @@ namespace Game.Entities
if (charm.GetTypeId() == TypeId.Unit) if (charm.GetTypeId() == TypeId.Unit)
charm.AddUnitFlag(UnitFlags.Stunned); charm.AddUnitFlag(UnitFlags.Stunned);
player.SendMovementSetCollisionHeight(player.GetCollisionHeight(true)); player.SendMovementSetCollisionHeight(player.GetCollisionHeight(true), UpdateCollisionHeightReason.Mount);
} }
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags.Mount); RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags.Mount);
@@ -1334,7 +1334,7 @@ namespace Game.Entities
Player thisPlayer = ToPlayer(); Player thisPlayer = ToPlayer();
if (thisPlayer != null) if (thisPlayer != null)
thisPlayer.SendMovementSetCollisionHeight(thisPlayer.GetCollisionHeight(false)); thisPlayer.SendMovementSetCollisionHeight(thisPlayer.GetCollisionHeight(false), UpdateCollisionHeightReason.Mount);
// dismount as a vehicle // dismount as a vehicle
if (IsTypeId(TypeId.Player) && GetVehicleKit() != null) if (IsTypeId(TypeId.Player) && GetVehicleKit() != null)
@@ -924,7 +924,7 @@ namespace Game.Networking.Packets
public float Scale = 1.0f; public float Scale = 1.0f;
public ObjectGuid MoverGUID; public ObjectGuid MoverGUID;
public uint MountDisplayID; public uint MountDisplayID;
public UpdateCollisionHeightReason Reason = UpdateCollisionHeightReason.Mount; public UpdateCollisionHeightReason Reason;
public uint SequenceIndex; public uint SequenceIndex;
public int ScaleDuration; public int ScaleDuration;
public float Height = 1.0f; public float Height = 1.0f;
@@ -959,7 +959,7 @@ namespace Game.Networking.Packets
} }
public MovementAck Data; public MovementAck Data;
public UpdateCollisionHeightReason Reason = UpdateCollisionHeightReason.Mount; public UpdateCollisionHeightReason Reason;
public uint MountDisplayID; public uint MountDisplayID;
public float Height = 1.0f; public float Height = 1.0f;
} }
+6 -2
View File
@@ -1406,8 +1406,12 @@ namespace Game.Spells
HandleShapeshiftBoosts(target, apply); HandleShapeshiftBoosts(target, apply);
} }
if (target.IsTypeId(TypeId.Player)) Player playerTarget = target.ToPlayer();
target.ToPlayer().InitDataForForm(); if (playerTarget != null)
{
playerTarget.SendMovementSetCollisionHeight(playerTarget.GetCollisionHeight(false), UpdateCollisionHeightReason.Force);
playerTarget.InitDataForForm();
}
else else
target.UpdateDisplayPower(); target.UpdateDisplayPower();