From: Token <56667933+TokenStyle@users.noreply.github.com> Date: Mon, 14 Apr 2025 22:50:21 +0000 (+0500) Subject: Item HeldPrefix and Clothing EquippedPrefix toggler (#33054) X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=ace3682de30fe071e521508898f6dac3b1b2cc1f;p=space-station-14.git Item HeldPrefix and Clothing EquippedPrefix toggler (#33054) * Item and clothes prefix toggler Handles Item.HeldPrefix and ClothingComponent.EquippedPrefix respectively * stunbaton and magboots sprites activations to Toggler yml * review --------- Co-authored-by: Milon --- diff --git a/Content.Server/Stunnable/Systems/StunbatonSystem.cs b/Content.Server/Stunnable/Systems/StunbatonSystem.cs index 1e2494203a..02d2382f5d 100644 --- a/Content.Server/Stunnable/Systems/StunbatonSystem.cs +++ b/Content.Server/Stunnable/Systems/StunbatonSystem.cs @@ -28,7 +28,6 @@ namespace Content.Server.Stunnable.Systems SubscribeLocalEvent(OnSolutionChange); SubscribeLocalEvent(OnStaminaHitAttempt); SubscribeLocalEvent(TryTurnOn); - SubscribeLocalEvent(ToggleDone); SubscribeLocalEvent(OnChargeChanged); } @@ -55,11 +54,6 @@ namespace Content.Server.Stunnable.Systems } } - private void ToggleDone(Entity entity, ref ItemToggledEvent args) - { - _item.SetHeldPrefix(entity.Owner, args.Activated ? "on" : "off"); - } - private void TryTurnOn(Entity entity, ref ItemToggleActivateAttemptEvent args) { if (!TryComp(entity, out var battery) || battery.CurrentCharge < entity.Comp.EnergyPerUse) diff --git a/Content.Shared/Clothing/Components/ToggleClothingPrefixComponent.cs b/Content.Shared/Clothing/Components/ToggleClothingPrefixComponent.cs new file mode 100644 index 0000000000..23f4a620fe --- /dev/null +++ b/Content.Shared/Clothing/Components/ToggleClothingPrefixComponent.cs @@ -0,0 +1,22 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Clothing.Components; + +/// +/// Handles the changes to ClothingComponent.EquippedPrefix when toggled. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class ToggleClothingPrefixComponent : Component +{ + /// + /// Clothing's EquippedPrefix when activated. + /// + [DataField] + public string? PrefixOn = "on"; + + /// + /// Clothing's EquippedPrefix when deactivated. + /// + [DataField] + public string? PrefixOff; +} diff --git a/Content.Shared/Clothing/EntitySystems/ToggleClothingPrefixSystem.cs b/Content.Shared/Clothing/EntitySystems/ToggleClothingPrefixSystem.cs new file mode 100644 index 0000000000..129db30938 --- /dev/null +++ b/Content.Shared/Clothing/EntitySystems/ToggleClothingPrefixSystem.cs @@ -0,0 +1,25 @@ +using Content.Shared.Clothing.Components; +using Content.Shared.Item.ItemToggle.Components; + +namespace Content.Shared.Clothing.EntitySystems; + +/// +/// On toggle handles the changes to ItemComponent.HeldPrefix. . +/// +public sealed class ToggleClothingPrefixSystem : EntitySystem +{ + [Dependency] private readonly ClothingSystem _clothing = default!; + + /// + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnToggled); + } + + private void OnToggled(Entity ent, ref ItemToggledEvent args) + { + _clothing.SetEquippedPrefix(ent, args.Activated ? ent.Comp.PrefixOn : ent.Comp.PrefixOff); + } +} diff --git a/Content.Shared/Clothing/MagbootsSystem.cs b/Content.Shared/Clothing/MagbootsSystem.cs index d41f27fefb..de39fd9dca 100644 --- a/Content.Shared/Clothing/MagbootsSystem.cs +++ b/Content.Shared/Clothing/MagbootsSystem.cs @@ -42,10 +42,6 @@ public sealed class SharedMagbootsSystem : EntitySystem { UpdateMagbootEffects(container.Owner, ent, args.Activated); } - - var prefix = args.Activated ? "on" : null; - _item.SetHeldPrefix(ent, prefix); - _clothing.SetEquippedPrefix(ent, prefix); } private void OnGotUnequipped(Entity ent, ref ClothingGotUnequippedEvent args) diff --git a/Content.Shared/Item/ItemToggle/Components/ItemTogglePrefixComponent.cs b/Content.Shared/Item/ItemToggle/Components/ItemTogglePrefixComponent.cs new file mode 100644 index 0000000000..e75d56d252 --- /dev/null +++ b/Content.Shared/Item/ItemToggle/Components/ItemTogglePrefixComponent.cs @@ -0,0 +1,22 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Item.ItemToggle.Components; + +/// +/// Handles the changes to ItemComponent.HeldPrefix when toggled. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class ItemTogglePrefixComponent : Component +{ + /// + /// Item's HeldPrefix when activated. + /// + [DataField] + public string? PrefixOn = "on"; + + /// + /// Item's HeldPrefix when deactivated. + /// + [DataField] + public string? PrefixOff; +} diff --git a/Content.Shared/Item/ItemToggle/ItemTogglePrefixSystem.cs b/Content.Shared/Item/ItemToggle/ItemTogglePrefixSystem.cs new file mode 100644 index 0000000000..b401fefc44 --- /dev/null +++ b/Content.Shared/Item/ItemToggle/ItemTogglePrefixSystem.cs @@ -0,0 +1,24 @@ +using Content.Shared.Item.ItemToggle.Components; + +namespace Content.Shared.Item.ItemToggle; + +/// +/// On toggle handles the changes to ItemComponent.HeldPrefix. . +/// +public sealed class ItemTogglePrefixSystem : EntitySystem +{ + [Dependency] private readonly SharedItemSystem _item = default!; + + /// + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnToggled); + } + + private void OnToggled(Entity ent, ref ItemToggledEvent args) + { + _item.SetHeldPrefix(ent.Owner, args.Activated ? ent.Comp.PrefixOn : ent.Comp.PrefixOff); + } +} diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml b/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml index 6610ae87cc..6f88dde595 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml @@ -18,6 +18,10 @@ - type: ComponentToggler components: - type: NoSlip + - type: ItemTogglePrefix + prefixOn: on + - type: ToggleClothingPrefix + prefixOn: on - type: Magboots - type: ClothingSpeedModifier walkModifier: 0.85 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/security.yml b/Resources/Prototypes/Entities/Objects/Weapons/security.yml index cb908acffa..59889ce649 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/security.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/security.yml @@ -25,6 +25,9 @@ path: /Audio/Machines/button.ogg params: variation: 0.250 + - type: ItemTogglePrefix + prefixOn: on + prefixOff: off - type: ItemToggleMeleeWeapon activatedDamage: types: