Skip to content

Commit faaa2c2

Browse files
nikthechampiongrSimpleStation14
authored and
SimpleStation14
committed
Cherry-picked commit b0ffed1 from space-wizards/space-station-14/master
1 parent 3bf08c7 commit faaa2c2

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

Content.Shared/Blocking/BlockingSystem.User.cs

+12-2
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,23 @@ private void OnUserDamageModified(EntityUid uid, BlockingUserComponent component
4747
if (args.Damage.GetTotal() <= 0)
4848
return;
4949

50+
// A shield should only block damage it can itself absorb. To determine that we need the Damageable component on it.
51+
if (!TryComp<DamageableComponent>(component.BlockingItem, out var dmgComp))
52+
return;
53+
5054
var blockFraction = blocking.IsBlocking ? blocking.ActiveBlockFraction : blocking.PassiveBlockFraction;
5155
blockFraction = Math.Clamp(blockFraction, 0, 1);
5256
_damageable.TryChangeDamage(component.BlockingItem, blockFraction * args.OriginalDamage);
5357

54-
args.Damage *= (1 - blockFraction);
58+
var modify = new DamageModifierSet();
59+
foreach (var key in dmgComp.Damage.DamageDict.Keys)
60+
{
61+
modify.Coefficients.TryAdd(key, 1 - blockFraction);
62+
}
63+
64+
args.Damage = DamageSpecifier.ApplyModifierSet(args.Damage, modify);
5565

56-
if (blocking.IsBlocking)
66+
if (blocking.IsBlocking && !args.Damage.Equals(args.OriginalDamage))
5767
{
5868
_audio.PlayPvs(blocking.BlockSound, uid);
5969
}

0 commit comments

Comments
 (0)