- add: Rubber bullet stamina damage resist.
This commit is contained in:
@@ -11,6 +11,9 @@ public sealed partial class StaminaDamageOnCollideComponent : Component
|
||||
[ViewVariables(VVAccess.ReadWrite), DataField("damage")]
|
||||
public float Damage = 55f;
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite), DataField]
|
||||
public bool IgnoreResistances = true;
|
||||
|
||||
[DataField("sound")]
|
||||
public SoundSpecifier? Sound;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Linq;
|
||||
using Content.Shared._White.StaminaProtection;
|
||||
using Content.Shared.Administration.Logs;
|
||||
using Content.Shared.Alert;
|
||||
using Content.Shared.CombatMode;
|
||||
@@ -204,7 +205,18 @@ public sealed partial class StaminaSystem : EntitySystem
|
||||
if (ev.Cancelled)
|
||||
return;
|
||||
|
||||
TakeStaminaDamage(target, component.Damage, source: uid, sound: component.Sound);
|
||||
// WD EDIT START
|
||||
var damage = component.Damage;
|
||||
|
||||
if (!component.IgnoreResistances)
|
||||
{
|
||||
var modifyEv = new StaminaDamageModifyEvent {Damage = damage};
|
||||
RaiseLocalEvent(target, modifyEv);
|
||||
damage = modifyEv.Damage;
|
||||
}
|
||||
|
||||
TakeStaminaDamage(target, damage, source: uid, sound: component.Sound);
|
||||
// WD EDIT END
|
||||
}
|
||||
|
||||
private void SetStaminaAlert(EntityUid uid, StaminaComponent? component = null)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using Content.Shared._White.StaminaProtection;
|
||||
using Content.Shared.Chemistry;
|
||||
using Content.Shared.Damage;
|
||||
using Content.Shared.Electrocution;
|
||||
@@ -27,6 +28,7 @@ public partial class InventorySystem
|
||||
SubscribeLocalEvent<InventoryComponent, SeeIdentityAttemptEvent>(RelayInventoryEvent);
|
||||
SubscribeLocalEvent<InventoryComponent, ModifyChangedTemperatureEvent>(RelayInventoryEvent);
|
||||
SubscribeLocalEvent<InventoryComponent, AdjustTemperatureEvent>(RelayInventoryEvent); // WD
|
||||
SubscribeLocalEvent<InventoryComponent, StaminaDamageModifyEvent>(RelayInventoryEvent); // WD
|
||||
SubscribeLocalEvent<InventoryComponent, GetDefaultRadioChannelEvent>(RelayInventoryEvent);
|
||||
|
||||
// by-ref events
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class StaminaDamageModifyEvent : EntityEventArgs, IInventoryRelayEvent
|
||||
{
|
||||
public SlotFlags TargetSlots => ~SlotFlags.POCKET;
|
||||
|
||||
public float Damage;
|
||||
}
|
||||
@@ -15,7 +15,8 @@
|
||||
- type: CanPenetrate
|
||||
penetrationLayer: MobLayer
|
||||
- type: StaminaDamageOnCollide
|
||||
damage: 55
|
||||
ignoreResistances: false
|
||||
damage: 70
|
||||
- type: TimedDespawn
|
||||
lifetime: 0.25
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
types:
|
||||
Blunt: 3
|
||||
- type: StaminaDamageOnCollide
|
||||
ignoreResistances: false
|
||||
damage: 35 # 3 hits to stun cuz revolver
|
||||
|
||||
- type: entity
|
||||
|
||||
@@ -26,7 +26,8 @@
|
||||
types:
|
||||
Blunt: 10
|
||||
- type: StaminaDamageOnCollide
|
||||
damage: 40 # 3 hits to stun
|
||||
ignoreResistances: false
|
||||
damage: 70
|
||||
|
||||
- type: entity
|
||||
id: PelletShotgun
|
||||
|
||||
@@ -121,6 +121,7 @@
|
||||
soundHit:
|
||||
path: /Audio/Weapons/Guns/Hits/snap.ogg
|
||||
- type: StaminaDamageOnCollide
|
||||
ignoreResistances: false
|
||||
damage: 22 # 5 hits to stun sounds reasonable
|
||||
|
||||
- type: entity
|
||||
|
||||
Reference in New Issue
Block a user