Files
OldThink/Content.Shared/_White/StaminaProtection/StaminaProtectionSystem.cs
Spatison 06b4a48b8f StunLock (#474)
* StunLock

* DisarmMalus

* Баланс
2024-07-21 20:55:01 +03:00

33 lines
985 B
C#

using Content.Shared.Armor;
using Content.Shared.Inventory;
namespace Content.Shared._White.StaminaProtection;
public sealed class StaminaProtectionSystem : EntitySystem
{
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<ArmorComponent, InventoryRelayedEvent<StaminaDamageModifyEvent>>(OnDamageModify);
}
private void OnDamageModify(Entity<ArmorComponent> ent, ref InventoryRelayedEvent<StaminaDamageModifyEvent> args)
{
var modifiers = ent.Comp.Modifiers;
if (modifiers.FlatReduction.TryGetValue("Blunt", out var flat))
args.Args.Damage = MathF.Max(0f, args.Args.Damage - flat);
if (modifiers.Coefficients.TryGetValue("Blunt", out var coefficient))
args.Args.Damage *= coefficient / 1.5f;
}
}
public sealed class StaminaDamageModifyEvent : EntityEventArgs, IInventoryRelayEvent
{
public SlotFlags TargetSlots => ~SlotFlags.POCKET;
public float Damage;
}