public override void ToStream(Stream stream, bool includeHeader = true) { /* * Length and ID headers get written in the base packet class. */ if (includeHeader) { base.ToStream(stream, includeHeader); } /* * Always make sure to not close the stream when serializing. * * It is up to the caller to decide if the underlying stream * gets closed. If this is a network stream we do not want * the regressions of unconditionally closing the TCP socket * once the payload of data has been sent to the client. */ using (BinaryWriter br = new BinaryWriter(stream, new System.Text.UTF8Encoding(), leaveOpen: true)) { br.Write(PlayerId); br.Write(PlayerDeathReason); if (FromPlayerIndex != -1) { PlayerDeathReason = PlayerDeathReason.SetBit(0, true); br.Write(FromPlayerIndex); } if (FromNpcIndex != -1) { PlayerDeathReason = PlayerDeathReason.SetBit(1, true); br.Write(FromNpcIndex); } if (FromProjectileIndex != -1) { PlayerDeathReason = PlayerDeathReason.SetBit(2, true); br.Write(FromProjectileIndex); } if (FromOther != 254) { PlayerDeathReason = PlayerDeathReason.SetBit(3, true); br.Write(FromOther); } if (FromProjectileType != 0) { PlayerDeathReason = PlayerDeathReason.SetBit(4, true); br.Write(FromProjectileType); } if (FromItemType != 0) { PlayerDeathReason = PlayerDeathReason.SetBit(5, true); br.Write(FromItemType); } if (FromItemPrefix != 0) { PlayerDeathReason = PlayerDeathReason.SetBit(6, true); br.Write(FromItemPrefix); } if (FromCustomReason != null) { PlayerDeathReason = PlayerDeathReason.SetBit(7, true); br.Write(FromCustomReason); } br.Write(Damage); br.Write(HitDirection); br.Write(Flags); } }