Make explosive armor multiplicative and not additive (#9498)
This commit is contained in:
@@ -155,7 +155,7 @@ public sealed partial class ExplosionSystem : EntitySystem
|
||||
var ev = new GetExplosionResistanceEvent(explosionType.ID);
|
||||
RaiseLocalEvent(uid, ev, false);
|
||||
|
||||
damagePerIntensity += value * Math.Clamp(0, 1 - ev.Resistance, 1);
|
||||
damagePerIntensity += value * Math.Max(0, ev.DamageCoefficient);
|
||||
}
|
||||
|
||||
explosionTolerance[index] = (float) ((totalDamageTarget - damageable.TotalDamage) / damagePerIntensity);
|
||||
|
||||
@@ -362,14 +362,16 @@ public sealed partial class ExplosionSystem : EntitySystem
|
||||
var ev = new GetExplosionResistanceEvent(id);
|
||||
RaiseLocalEvent(uid, ev, false);
|
||||
|
||||
if (ev.Resistance == 0)
|
||||
ev.DamageCoefficient = Math.Max(0, ev.DamageCoefficient);
|
||||
|
||||
if (ev.DamageCoefficient == 1)
|
||||
{
|
||||
// no damage-dict multiplication required.
|
||||
_damageableSystem.TryChangeDamage(uid, damage, ignoreResistances: true, damageable: damageable);
|
||||
}
|
||||
else if (ev.Resistance < 1)
|
||||
else
|
||||
{
|
||||
_damageableSystem.TryChangeDamage(uid, damage * (1 - ev.Resistance), ignoreResistances: true, damageable: damageable);
|
||||
_damageableSystem.TryChangeDamage(uid, damage * ev.DamageCoefficient, ignoreResistances: true, damageable: damageable);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -93,9 +93,9 @@ public sealed partial class ExplosionSystem : EntitySystem
|
||||
|
||||
private void OnGetResistance(EntityUid uid, ExplosionResistanceComponent component, GetExplosionResistanceEvent args)
|
||||
{
|
||||
args.Resistance += component.GlobalResistance;
|
||||
args.DamageCoefficient *= component.DamageCoefficient;
|
||||
if (component.Resistances.TryGetValue(args.ExplotionPrototype, out var resistance))
|
||||
args.Resistance += resistance;
|
||||
args.DamageCoefficient *= resistance;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user