From 40352cd5665be3ccb01968452e0a9c4470a9435f Mon Sep 17 00:00:00 2001 From: Kamron Batman <3953314+kamronbatman@users.noreply.github.com> Date: Thu, 4 Feb 2021 14:05:24 -0800 Subject: [PATCH] fix(network): Fixes corpse packet (#456) --- .../Items/Misc/Corpses/CorpsePackets.cs | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/Projects/UOContent/Items/Misc/Corpses/CorpsePackets.cs b/Projects/UOContent/Items/Misc/Corpses/CorpsePackets.cs index 25a1f3d4d..7de62807b 100644 --- a/Projects/UOContent/Items/Misc/Corpses/CorpsePackets.cs +++ b/Projects/UOContent/Items/Misc/Corpses/CorpsePackets.cs @@ -73,8 +73,20 @@ namespace Server.Network } var list = beheld.EquipItems; + var hairItemID = beheld.Hair?.ItemID ?? 0; + var facialHairItemID = beheld.FacialHair?.ItemID ?? 0; + var count = list.Count; + if (hairItemID > 0) + { + count++; + } - var maxLength = 5 + (list.Count + 2) * (ns.ContainerGridLines ? 19 : 20); + if (facialHairItemID > 0) + { + count++; + } + + var maxLength = 5 + count * (ns.ContainerGridLines ? 20 : 19); var writer = new SpanWriter(stackalloc byte[maxLength]); writer.Write((byte)0x3C); writer.Seek(4, SeekOrigin.Current); // Length and Count @@ -103,10 +115,10 @@ namespace Server.Network } } - if (beheld.Hair?.ItemID > 0) + if (hairItemID > 0) { writer.Write(HairInfo.FakeSerial(beheld.Owner.Serial) - 2); - writer.Write((ushort)beheld.Hair.ItemID); + writer.Write((ushort)hairItemID); writer.Write((byte)0); // signed, itemID offset writer.Write((ushort)1); writer.Write(0); // X/Y @@ -115,15 +127,15 @@ namespace Server.Network writer.Write((byte)0); // Grid Location? } writer.Write(beheld.Serial); - writer.Write((ushort)beheld.Hair.Hue); + writer.Write((ushort)beheld.Hair!.Hue); ++written; } - if (beheld.FacialHair?.ItemID > 0) + if (facialHairItemID > 0) { writer.Write(FacialHairInfo.FakeSerial(beheld.Owner.Serial) - 2); - writer.Write((ushort)beheld.FacialHair.ItemID); + writer.Write((ushort)facialHairItemID); writer.Write((byte)0); // signed, itemID offset writer.Write((ushort)1); writer.Write(0); // X/Y @@ -132,7 +144,7 @@ namespace Server.Network writer.Write((byte)0); // Grid Location? } writer.Write(beheld.Serial); - writer.Write((ushort)beheld.FacialHair.Hue); + writer.Write((ushort)beheld.FacialHair!.Hue); ++written; }