Added Karma, harming players reduces it

This commit is contained in:
juanjp600
2017-12-03 21:51:12 -03:00
parent 4a1eea8c30
commit 6841bb154b
3 changed files with 30 additions and 1 deletions

View File

@@ -1526,6 +1526,27 @@ namespace Barotrauma
public virtual void AddDamage(CauseOfDeath causeOfDeath, float amount, IDamageable attacker)
{
if (GameMain.Server != null)
{
if (attacker is Character)
{
Character attackerCharacter = attacker as Character;
Barotrauma.Networking.Client attackerClient = GameMain.Server.ConnectedClients.Find(c => c.Character == attackerCharacter);
if (attackerClient != null)
{
Barotrauma.Networking.Client targetClient = GameMain.Server.ConnectedClients.Find(c => c.Character == this);
if (targetClient != null || this == Character.Controlled)
{
if (attackerCharacter.TeamID == TeamID)
{
attackerClient.Karma -= amount * 0.01f;
if (health <= minHealth) attackerClient.Karma = 0.0f;
}
}
}
}
}
Health = health-amount;
if (amount > 0.0f)
{

View File

@@ -108,10 +108,11 @@ namespace Barotrauma.Items.Components
projectile.body.ResetDynamics();
projectile.SetTransform(TransformedBarrelPos, rotation);
projectileComponent.User = character;
projectileComponent.IgnoredBodies = new List<Body>(limbBodies);
projectile.Use(deltaTime);
projectileComponent.User = character;
projectile.body.ApplyTorque(projectile.body.Mass * degreeOfFailure * Rand.Range(-10.0f, 10.0f));

View File

@@ -29,6 +29,13 @@ namespace Barotrauma.Networking
public string Name;
public byte ID;
private float karma = 1.0f;
public float Karma
{
get { return karma; }
set { karma = Math.Min(Math.Max(value,0.0f),1.0f); DebugConsole.NewMessage(Name+"'s karma set to "+karma,Microsoft.Xna.Framework.Color.Yellow); }
}
public byte TeamID = 0;
public Character Character;