Server doesn't create an entityevent if the health of a character changes very little, husk infection isn't updated after the infected character dies, clients can't create a "huskified" human NPC until the server says so

This commit is contained in:
Regalis
2017-03-26 22:47:08 +03:00
parent 3306a1ab96
commit 6a6486e270
2 changed files with 13 additions and 4 deletions

View File

@@ -90,7 +90,7 @@ namespace Barotrauma
protected float oxygen, oxygenAvailable;
protected float drowningTime;
private float health;
private float health, lastSentHealth;
protected float minHealth, maxHealth;
protected Item closestItem;
@@ -301,7 +301,13 @@ namespace Barotrauma
health = newHealth;
if (GameMain.Server != null)
GameMain.Server.CreateEntityEvent(this, new object[] { NetEntityEvent.Type.Status });
{
if (Math.Abs(health - lastSentHealth) > (maxHealth - minHealth) / 255.0f || Math.Sign(health) != Math.Sign(lastSentHealth))
{
GameMain.Server.CreateEntityEvent(this, new object[] { NetEntityEvent.Type.Status });
lastSentHealth = health;
}
}
}
}
@@ -1325,10 +1331,10 @@ namespace Barotrauma
item.Submarine = Submarine;
}
}
if (isDead) return;
if (huskInfection != null) huskInfection.Update(deltaTime, this);
if (isDead) return;
if (GameMain.NetworkMember != null)
{

View File

@@ -151,6 +151,8 @@ namespace Barotrauma
private void CharacterDead(Character character, CauseOfDeath causeOfDeath)
{
if (GameMain.Client != null) return;
var husk = Character.Create(
Path.Combine("Content", "Characters", "Human", "humanhusk.xml"),
character.WorldPosition,
@@ -177,6 +179,7 @@ namespace Barotrauma
character.Enabled = false;
Entity.Spawner.AddToRemoveQueue(character);
Entity.Spawner.AddToSpawnedList(husk);
}
}