The ActionType of an Attack's statuseffect is considered "OnEating" instead of "OnUse" if the target is dead. Prevents husks from gaining health by attacking corpses (which allowed players to huskify themselves on purpose and stay alive indefinitely).
This commit is contained in:
@@ -161,16 +161,20 @@ namespace Barotrauma
|
|||||||
|
|
||||||
public AttackResult DoDamage(Character attacker, IDamageable target, Vector2 worldPosition, float deltaTime, bool playSound = true)
|
public AttackResult DoDamage(Character attacker, IDamageable target, Vector2 worldPosition, float deltaTime, bool playSound = true)
|
||||||
{
|
{
|
||||||
|
Character targetCharacter = target as Character;
|
||||||
if (OnlyHumans)
|
if (OnlyHumans)
|
||||||
{
|
{
|
||||||
Character character = target as Character;
|
if (targetCharacter != null && targetCharacter.ConfigPath != Character.HumanConfigFile) return new AttackResult();
|
||||||
if (character != null && character.ConfigPath != Character.HumanConfigFile) return new AttackResult();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DamageParticles(deltaTime, worldPosition);
|
DamageParticles(deltaTime, worldPosition);
|
||||||
|
|
||||||
var attackResult = target.AddDamage(attacker, worldPosition, this, deltaTime, playSound);
|
var attackResult = target.AddDamage(attacker, worldPosition, this, deltaTime, playSound);
|
||||||
var effectType = attackResult.Damage > 0.0f ? ActionType.OnUse : ActionType.OnFailure;
|
var effectType = attackResult.Damage > 0.0f ? ActionType.OnUse : ActionType.OnFailure;
|
||||||
|
if (targetCharacter != null && targetCharacter.IsDead)
|
||||||
|
{
|
||||||
|
effectType = ActionType.OnEating;
|
||||||
|
}
|
||||||
if (statusEffects == null) return attackResult;
|
if (statusEffects == null) return attackResult;
|
||||||
|
|
||||||
foreach (StatusEffect effect in statusEffects)
|
foreach (StatusEffect effect in statusEffects)
|
||||||
|
|||||||
@@ -20,7 +20,8 @@ namespace Barotrauma
|
|||||||
OnWearing, OnContaining, OnContained,
|
OnWearing, OnContaining, OnContained,
|
||||||
OnActive, OnFailure, OnBroken,
|
OnActive, OnFailure, OnBroken,
|
||||||
OnFire, InWater,
|
OnFire, InWater,
|
||||||
OnImpact
|
OnImpact,
|
||||||
|
OnEating
|
||||||
}
|
}
|
||||||
|
|
||||||
partial class Item : MapEntity, IDamageable, ISerializableEntity, IServerSerializable, IClientSerializable
|
partial class Item : MapEntity, IDamageable, ISerializableEntity, IServerSerializable, IClientSerializable
|
||||||
|
|||||||
Reference in New Issue
Block a user