Workaround to null reference exceptions in Character.WriteStatus: it seems AnimController can be null when reading the message, which suggests that the character has been removed (e.g. turned to a husk, eaten by something).

This commit is contained in:
Joonas Rikkonen
2017-07-26 21:35:50 +03:00
parent 61b90464dd
commit affb43e7a5
2 changed files with 27 additions and 11 deletions
@@ -474,18 +474,27 @@ namespace Barotrauma
if (isDead)
{
msg.Write((byte)causeOfDeath);
List<int> severedJointIndices = new List<int>();
for (int i = 0; i < AnimController.LimbJoints.Length; i++)
if (AnimController?.LimbJoints == null)
{
if (AnimController.LimbJoints[i] != null && AnimController.LimbJoints[i].IsSevered)
{
severedJointIndices.Add(i);
}
//0 limbs severed
msg.Write((byte)0);
}
msg.Write((byte)severedJointIndices.Count);
foreach (int jointIndex in severedJointIndices)
else
{
msg.Write((byte)jointIndex);
List<int> severedJointIndices = new List<int>();
for (int i = 0; i < AnimController.LimbJoints.Length; i++)
{
if (AnimController.LimbJoints[i] != null && AnimController.LimbJoints[i].IsSevered)
{
severedJointIndices.Add(i);
}
}
msg.Write((byte)severedJointIndices.Count);
foreach (int jointIndex in severedJointIndices)
{
msg.Write((byte)jointIndex);
}
}
}
else