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());
}
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; }
+2 -2
View File
@@ -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;
}
+6 -2
View File
@@ -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();