diff --git a/Content.Server/_White/ChangeTemperatureOnCollide/ClothingTemperatureAdjustComponent.cs b/Content.Server/_White/ChangeTemperatureOnCollide/ClothingTemperatureAdjustComponent.cs index a5739c2034..73943783e7 100644 --- a/Content.Server/_White/ChangeTemperatureOnCollide/ClothingTemperatureAdjustComponent.cs +++ b/Content.Server/_White/ChangeTemperatureOnCollide/ClothingTemperatureAdjustComponent.cs @@ -4,7 +4,7 @@ namespace Content.Server._White.ChangeTemperatureOnCollide; public sealed partial class ClothingTemperatureAdjustComponent : Component { [DataField, ViewVariables(VVAccess.ReadWrite)] - public float Rate = 1f; + public float Rate = 2f; [DataField, ViewVariables(VVAccess.ReadWrite)] public float TargetTemperature = 310.15f; diff --git a/Content.Server/_White/Cult/Runes/Systems/CultSystem.Verb.cs b/Content.Server/_White/Cult/Runes/Systems/CultSystem.Verb.cs index d4b8cb238f..059fa77710 100644 --- a/Content.Server/_White/Cult/Runes/Systems/CultSystem.Verb.cs +++ b/Content.Server/_White/Cult/Runes/Systems/CultSystem.Verb.cs @@ -57,7 +57,7 @@ public sealed partial class CultSystem if (comp.SelectedEmpowers.Count >= 1) { - _popupSystem.PopupEntity(Loc.GetString("verb-spell-create-too-much"), ent); + _popupSystem.PopupEntity(Loc.GetString("verb-spell-create-too-much"), ent, ent); return; } @@ -106,7 +106,7 @@ public sealed partial class CultSystem { if (ent.Comp.SelectedEmpowers.Count == 0) { - _popupSystem.PopupEntity(Loc.GetString("verb-spell-remove-no-spells"), ent); + _popupSystem.PopupEntity(Loc.GetString("verb-spell-remove-no-spells"), ent, ent); return; } diff --git a/Content.Shared/Damage/Components/StaminaDamageOnCollideComponent.cs b/Content.Shared/Damage/Components/StaminaDamageOnCollideComponent.cs index 5ed2bb628e..496614fbda 100644 --- a/Content.Shared/Damage/Components/StaminaDamageOnCollideComponent.cs +++ b/Content.Shared/Damage/Components/StaminaDamageOnCollideComponent.cs @@ -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; } diff --git a/Content.Shared/Damage/Systems/StaminaSystem.cs b/Content.Shared/Damage/Systems/StaminaSystem.cs index 52eef1183a..0b1e9f083c 100644 --- a/Content.Shared/Damage/Systems/StaminaSystem.cs +++ b/Content.Shared/Damage/Systems/StaminaSystem.cs @@ -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) diff --git a/Content.Shared/Inventory/InventorySystem.Relay.cs b/Content.Shared/Inventory/InventorySystem.Relay.cs index 89cb3c61a6..bb5413bfb2 100644 --- a/Content.Shared/Inventory/InventorySystem.Relay.cs +++ b/Content.Shared/Inventory/InventorySystem.Relay.cs @@ -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(RelayInventoryEvent); SubscribeLocalEvent(RelayInventoryEvent); SubscribeLocalEvent(RelayInventoryEvent); // WD + SubscribeLocalEvent(RelayInventoryEvent); // WD SubscribeLocalEvent(RelayInventoryEvent); // by-ref events diff --git a/Content.Shared/_White/StaminaProtection/StaminaProtectionSystem.cs b/Content.Shared/_White/StaminaProtection/StaminaProtectionSystem.cs new file mode 100644 index 0000000000..934ebce818 --- /dev/null +++ b/Content.Shared/_White/StaminaProtection/StaminaProtectionSystem.cs @@ -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>(OnDamageModify); + } + + private void OnDamageModify(Entity ent, ref InventoryRelayedEvent 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; +} diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml index d3b7b41cad..cd72ef973e 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml @@ -9,6 +9,7 @@ GrenadeStinger: 4 Flash: 5 Tourniquet: 5 + Bola: 5 FlashlightSeclite: 5 ClothingEyesGlassesSunglasses: 2 ClothingEyesHudSecurity: 2 diff --git a/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml b/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml index 91a6c60465..8d2b4d24d2 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml @@ -155,7 +155,7 @@ components: - Hands # prevent mouse buying grenade penguin since its not telepathic - type: Store - preset: StorePresetUplink + preset: StorePresetUplinkNoDiscounts balance: Telecrystal: 0 - type: UserInterface diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/grenade.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/grenade.yml index ec62121c6b..133eadb047 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/grenade.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/grenade.yml @@ -15,7 +15,8 @@ - type: CanPenetrate penetrationLayer: MobLayer - type: StaminaDamageOnCollide - damage: 55 + ignoreResistances: false + damage: 70 - type: TimedDespawn lifetime: 0.25 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/magnum.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/magnum.yml index ddb4b52396..8ed25153e2 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/magnum.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/magnum.yml @@ -31,6 +31,7 @@ types: Blunt: 3 - type: StaminaDamageOnCollide + ignoreResistances: false damage: 35 # 3 hits to stun cuz revolver - type: entity diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/shotgun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/shotgun.yml index 7720dd58da..fb4d422a0d 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/shotgun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/shotgun.yml @@ -26,7 +26,8 @@ types: Blunt: 10 - type: StaminaDamageOnCollide - damage: 40 # 3 hits to stun + ignoreResistances: false + damage: 70 - type: entity id: PelletShotgun diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml index 8eb5fb26bf..48568e0b00 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml @@ -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 @@ -1350,7 +1351,8 @@ bounds: "-0.15,-0.3,0.15,0.3" hard: false mask: - - Opaque + - Impassable + - BulletImpassable fly-by: *flybyfixture - type: Ammo muzzleFlash: null diff --git a/Resources/Prototypes/Store/presets.yml b/Resources/Prototypes/Store/presets.yml index 3f18fb70d3..a70e4fb533 100644 --- a/Resources/Prototypes/Store/presets.yml +++ b/Resources/Prototypes/Store/presets.yml @@ -24,6 +24,24 @@ maxItems: 10 salesCategory: UplinkSales +- type: storePreset + id: StorePresetUplinkNoDiscounts + storeName: Uplink + categories: + - UplinkWeapons + - UplinkAmmo + - UplinkExplosives + - UplinkMisc + - UplinkBundles + - UplinkTools + - UplinkUtility + - UplinkImplants + - UplinkJob + - UplinkArmor + - UplinkPointless + currencyWhitelist: + - Telecrystal + - type: storePreset id: StorePresetChangeling storeName: Evolution Shop diff --git a/Resources/Prototypes/White/Entities/Clothing/Head/chaplain_helmets.yml b/Resources/Prototypes/White/Entities/Clothing/Head/chaplain_helmets.yml index 3b2e96c123..1627735e3e 100644 --- a/Resources/Prototypes/White/Entities/Clothing/Head/chaplain_helmets.yml +++ b/Resources/Prototypes/White/Entities/Clothing/Head/chaplain_helmets.yml @@ -11,8 +11,8 @@ - type: Armor modifiers: coefficients: - Blunt: 0.8 - Slash: 0.8 + Blunt: 0.85 + Slash: 0.85 Piercing: 0.95 - type: Tag tags: diff --git a/Resources/Prototypes/White/Entities/Clothing/OuterClothing/chaplain_armor.yml b/Resources/Prototypes/White/Entities/Clothing/OuterClothing/chaplain_armor.yml index e9d6d946ed..4267448a7d 100644 --- a/Resources/Prototypes/White/Entities/Clothing/OuterClothing/chaplain_armor.yml +++ b/Resources/Prototypes/White/Entities/Clothing/OuterClothing/chaplain_armor.yml @@ -11,8 +11,8 @@ - type: Armor modifiers: coefficients: - Blunt: 0.4 - Slash: 0.4 + Blunt: 0.5 + Slash: 0.5 Piercing: 0.9 Heat: 0.5 - type: ClothingSpeedModifier