]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
AutoCompState + ItemToggle fixes (#23422)
authormetalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Wed, 3 Jan 2024 06:24:02 +0000 (17:24 +1100)
committerGitHub <noreply@github.com>
Wed, 3 Jan 2024 06:24:02 +0000 (17:24 +1100)
* AutoCompState + ItemToggle fixes

Fix a lot of the comp states that are never actually networked and also cleaned up ItemToggle events a bunch. ItemToggle will still need some future work for lights and sounds.

* Also catch these

29 files changed:
Content.Client/Tools/UI/WelderStatusControl.cs
Content.Client/Weapons/Reflect/ReflectSystem.cs [deleted file]
Content.IntegrationTests/Tests/Interaction/InteractionTest.Helpers.cs
Content.Server/Damage/Systems/DamageOnToolInteractSystem.cs
Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs
Content.Server/Item/ItemToggle/ItemToggleSystem.cs
Content.Server/Light/EntitySystems/ExpendableLightSystem.cs
Content.Server/Light/EntitySystems/MatchstickSystem.cs
Content.Server/Stunnable/Systems/StunbatonSystem.cs
Content.Server/Tools/ToolSystem.Welder.cs
Content.Server/Weapons/Reflect/ReflectSystem.cs [deleted file]
Content.Shared/Clothing/Components/LoadoutComponent.cs
Content.Shared/Clothing/SharedMagbootsSystem.cs
Content.Shared/ContainerHeld/ContainerHeldComponent.cs
Content.Shared/ContainerHeld/ContainerHeldSystem.cs
Content.Shared/Item/ItemComponent.cs
Content.Shared/Item/ItemToggle/Components/ItemToggleActiveSoundComponent.cs
Content.Shared/Item/ItemToggle/Components/ItemToggleComponent.cs
Content.Shared/Item/ItemToggle/Components/ItemToggleHotComponent.cs
Content.Shared/Item/ItemToggle/Components/ItemToggleMeleeWeaponComponent.cs
Content.Shared/Item/ItemToggle/Components/ItemToggleSizeComponent.cs
Content.Shared/Item/ItemToggle/SharedItemToggleSystem.cs
Content.Shared/Item/SharedItemSystem.cs
Content.Shared/Ninja/Components/NinjaSuitComponent.cs
Content.Shared/Sericulture/SericultureComponent.cs
Content.Shared/Teleportation/Components/PortalComponent.cs
Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs
Content.Shared/Weapons/Reflect/ReflectSystem.cs [moved from Content.Shared/Weapons/Reflect/SharedReflectSystem.cs with 96% similarity]
Content.Shared/Wieldable/WieldableSystem.cs

index 8da7a1448be4852083e6afb5030bd22b5b9f2ab5..f1c5999453e74f3f3d78b076f3f0d470b6bef16f 100644 (file)
@@ -5,6 +5,7 @@ using Content.Shared.Item;
 using Robust.Client.UserInterface;
 using Robust.Client.UserInterface.Controls;
 using Robust.Shared.Timing;
+using ItemToggleComponent = Content.Shared.Item.ItemToggle.Components.ItemToggleComponent;
 
 namespace Content.Client.Tools.UI;
 
diff --git a/Content.Client/Weapons/Reflect/ReflectSystem.cs b/Content.Client/Weapons/Reflect/ReflectSystem.cs
deleted file mode 100644 (file)
index 46f00a4..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-using Content.Shared.Weapons.Reflect;
-
-namespace Content.Client.Weapons.Reflect;
-
-public sealed class ReflectSystem : SharedReflectSystem
-{
-}
index 9aa0157c8aff2ab624c96fcf56f4967ab1d6c1b7..42d58a88c964f469775f642d54017abbe0883d23 100644 (file)
@@ -23,6 +23,7 @@ using Robust.Shared.Input;
 using Robust.Shared.Map;
 using Robust.Shared.Map.Components;
 using Robust.Shared.Maths;
+using ItemToggleComponent = Content.Shared.Item.ItemToggle.Components.ItemToggleComponent;
 
 namespace Content.IntegrationTests.Tests.Interaction;
 
index c12c71a850f7b1dc4b9f41810049c8be95a938c1..cac59f9b753e2b17dac3a79076a22efa11c78f6e 100644 (file)
@@ -6,6 +6,7 @@ using Content.Shared.Damage;
 using Content.Shared.Database;
 using Content.Shared.Interaction;
 using Content.Shared.Tools.Components;
+using ItemToggleComponent = Content.Shared.Item.ItemToggle.Components.ItemToggleComponent;
 
 namespace Content.Server.Damage.Systems
 {
index 1b6a5bb9308eccb28222d7a03e2739e7e847ce75..74ce4dd000edbcc99857220bf25c5e73c48babce 100644 (file)
@@ -5,6 +5,7 @@ using Content.Shared.Eye.Blinding.Components;
 using Content.Shared.Eye.Blinding.Systems;
 using Content.Shared.Tools.Components;
 using Content.Shared.Item.ItemToggle;
+using Content.Shared.Item.ItemToggle.Components;
 
 namespace Content.Server.Eye.Blinding.EyeProtection
 {
@@ -18,7 +19,7 @@ namespace Content.Server.Eye.Blinding.EyeProtection
         {
             base.Initialize();
             SubscribeLocalEvent<RequiresEyeProtectionComponent, ToolUseAttemptEvent>(OnUseAttempt);
-            SubscribeLocalEvent<RequiresEyeProtectionComponent, ItemToggleDoneEvent>(OnWelderToggled);
+            SubscribeLocalEvent<RequiresEyeProtectionComponent, ItemToggledEvent>(OnWelderToggled);
 
             SubscribeLocalEvent<EyeProtectionComponent, GetEyeProtectionEvent>(OnGetProtection);
             SubscribeLocalEvent<EyeProtectionComponent, InventoryRelayedEvent<GetEyeProtectionEvent>>(OnGetRelayedProtection);
@@ -57,7 +58,7 @@ namespace Content.Server.Eye.Blinding.EyeProtection
             _statusEffectsSystem.TryAddStatusEffect(args.User, TemporaryBlindnessSystem.BlindingStatusEffect,
                 statusTimeSpan, false, TemporaryBlindnessSystem.BlindingStatusEffect);
         }
-        private void OnWelderToggled(EntityUid uid, RequiresEyeProtectionComponent component, ItemToggleDoneEvent args)
+        private void OnWelderToggled(EntityUid uid, RequiresEyeProtectionComponent component, ItemToggledEvent args)
         {
             component.Toggled = _itemToggle.IsActivated(uid);
         }
index 8a6903dd4960e30ff31710de269f6aeca800fec0..4507ace9d2512c390d833060886777cb0ed979ed 100644 (file)
@@ -2,6 +2,8 @@ using Content.Shared.Item;
 using Content.Server.CombatMode.Disarm;
 using Content.Server.Kitchen.Components;
 using Content.Shared.Item.ItemToggle;
+using Content.Shared.Item.ItemToggle.Components;
+using ItemToggleComponent = Content.Shared.Item.ItemToggle.Components.ItemToggleComponent;
 
 namespace Content.Server.Item;
 
@@ -11,10 +13,10 @@ public sealed class ItemToggleSystem : SharedItemToggleSystem
     {
         base.Initialize();
 
-        SubscribeLocalEvent<ItemToggleComponent, ItemToggleDoneEvent>(Toggle);
+        SubscribeLocalEvent<ItemToggleComponent, ItemToggledEvent>(Toggle);
     }
 
-    private void Toggle(EntityUid uid, ItemToggleComponent comp, ref ItemToggleDoneEvent args)
+    private void Toggle(EntityUid uid, ItemToggleComponent comp, ref ItemToggledEvent args)
     {
         if (args.Activated == true)
         {
index 40d212c6ad90769d39783ccefd3a89b3bac9ccca..0bbdf88d3c9a0ae7d365a7ad605f0b5526eb9e03 100644 (file)
@@ -78,7 +78,7 @@ namespace Content.Server.Light.EntitySystems
 
                         if (TryComp<ItemComponent>(ent, out var item))
                         {
-                            _item.SetHeldPrefix(ent, "unlit", item);
+                            _item.SetHeldPrefix(ent, "unlit", component: item);
                         }
 
                         break;
@@ -96,7 +96,7 @@ namespace Content.Server.Light.EntitySystems
             {
                 if (TryComp<ItemComponent>(ent, out var item))
                 {
-                    _item.SetHeldPrefix(ent, "lit", item);
+                    _item.SetHeldPrefix(ent, "lit", component: item);
                 }
 
                 component.CurrentState = ExpendableLightState.Lit;
@@ -163,7 +163,7 @@ namespace Content.Server.Light.EntitySystems
         {
             if (TryComp<ItemComponent>(uid, out var item))
             {
-                _item.SetHeldPrefix(uid, "unlit", item);
+                _item.SetHeldPrefix(uid, "unlit", component: item);
             }
 
             component.CurrentState = ExpendableLightState.BrandNew;
index 2195c69b184b1a704e96549bec1bf4f7150eaefd..96e4695784dd4fa55b2b2f91cf6de79bd1390a63 100644 (file)
@@ -107,10 +107,10 @@ namespace Content.Server.Light.EntitySystems
                 switch (component.CurrentState)
                 {
                     case SmokableState.Lit:
-                        _item.SetHeldPrefix(uid, "lit", item);
+                        _item.SetHeldPrefix(uid, "lit", component: item);
                         break;
                     default:
-                        _item.SetHeldPrefix(uid, "unlit", item);
+                        _item.SetHeldPrefix(uid, "unlit", component: item);
                         break;
                 }
             }
index 8064434031427ed7bc8d1b0afedbe96e65e2df82..436559e43b5943eb094cf28cb14b0e51d126778a 100644 (file)
@@ -7,6 +7,7 @@ using Content.Shared.Damage.Events;
 using Content.Shared.Examine;
 using Content.Shared.Item;
 using Content.Shared.Item.ItemToggle;
+using Content.Shared.Item.ItemToggle.Components;
 using Content.Shared.Popups;
 using Content.Shared.Stunnable;
 
@@ -28,7 +29,7 @@ namespace Content.Server.Stunnable.Systems
             SubscribeLocalEvent<StunbatonComponent, SolutionContainerChangedEvent>(OnSolutionChange);
             SubscribeLocalEvent<StunbatonComponent, StaminaDamageOnHitAttemptEvent>(OnStaminaHitAttempt);
             SubscribeLocalEvent<StunbatonComponent, ItemToggleActivateAttemptEvent>(TryTurnOn);
-            SubscribeLocalEvent<StunbatonComponent, ItemToggleDoneEvent>(ToggleDone);
+            SubscribeLocalEvent<StunbatonComponent, ItemToggledEvent>(ToggleDone);
         }
 
         private void OnStaminaHitAttempt(Entity<StunbatonComponent> entity, ref StaminaDamageOnHitAttemptEvent args)
@@ -58,12 +59,12 @@ namespace Content.Server.Stunnable.Systems
             args.PushMarkup(chargeMessage);
         }
 
-        private void ToggleDone(Entity<StunbatonComponent> entity, ref ItemToggleDoneEvent args)
+        private void ToggleDone(Entity<StunbatonComponent> entity, ref ItemToggledEvent args)
         {
             if (!TryComp<ItemComponent>(entity, out var item))
                 return;
 
-            _item.SetHeldPrefix(entity.Owner, args.Activated ? "on" : "off", item);
+            _item.SetHeldPrefix(entity.Owner, args.Activated ? "on" : "off", component: item);
         }
 
         private void TryTurnOn(Entity<StunbatonComponent> entity, ref ItemToggleActivateAttemptEvent args)
index 88037cedb45fdba90d7852be3faf5c9d51e5befd..510dd3bfe0646b31a2a49f25b731821bd4022574 100644 (file)
@@ -12,6 +12,7 @@ using Content.Shared.Item.ItemToggle;
 using Content.Shared.Tools.Components;
 using Robust.Shared.GameStates;
 using System.Linq;
+using Content.Shared.Item.ItemToggle.Components;
 
 namespace Content.Server.Tools
 {
diff --git a/Content.Server/Weapons/Reflect/ReflectSystem.cs b/Content.Server/Weapons/Reflect/ReflectSystem.cs
deleted file mode 100644 (file)
index 5c19394..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-using Content.Shared.Item;
-using Content.Shared.Weapons.Reflect;
-
-namespace Content.Server.Weapons.Reflect;
-
-public sealed class ReflectSystem : SharedReflectSystem
-{
-    public override void Initialize()
-    {
-        base.Initialize();
-
-        SubscribeLocalEvent<ReflectComponent, ItemToggleReflectUpdateEvent>(ToggleReflect);
-    }
-
-    private void ToggleReflect(EntityUid uid, ReflectComponent comp, ref ItemToggleReflectUpdateEvent args)
-    {
-        comp.Enabled = args.Activated;
-        Dirty(uid, comp);
-    }
-}
index e4a02760d353520e02227a4394e8e621e3586f75..a3c6efe2a0b00c1447d60cb364f4a26103a766d3 100644 (file)
@@ -4,7 +4,7 @@ using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototy
 
 namespace Content.Shared.Clothing.Components;
 
-[RegisterComponent, NetworkedComponent]
+[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
 public sealed partial class LoadoutComponent : Component
 {
     /// <summary>
index 7a6da7c99287b87dd5da909a4e2214e11b8bccf4..27fb0c1a5024d24f5be8dbea54a8439b33438144 100644 (file)
@@ -57,7 +57,7 @@ public abstract class SharedMagbootsSystem : EntitySystem
 
         if (TryComp<ItemComponent>(uid, out var item))
         {
-            _item.SetHeldPrefix(uid, magboots.On ? "on" : null, item);
+            _item.SetHeldPrefix(uid, magboots.On ? "on" : null, component: item);
             _clothing.SetEquippedPrefix(uid, magboots.On ? "on" : null);
         }
 
index cc6d2bf8722a3e3da23cea4c82329d11a4c4cc0c..3d7643b42c19e0ead42b45007446cd4b786ac2c1 100644 (file)
@@ -1,6 +1,8 @@
+using Robust.Shared.GameStates;
+
 namespace Content.Shared.ContainerHeld;
 
-[RegisterComponent]
+[RegisterComponent, NetworkedComponent]
 public sealed partial class ContainerHeldComponent: Component
 {
     /// <summary>
index db8ad5e5e1cdaa5391e6335105135ffe6c10f445..f2ce5b44a54c61d9b9a1ce8d479a71220436db29 100644 (file)
@@ -23,7 +23,7 @@ public sealed class ContainerHeldSystem : EntitySystem
 
     private void OnContainerModified(EntityUid uid, ContainerHeldComponent comp, ContainerModifiedMessage args)
     {
-        if (!(TryComp<StorageComponent>(uid, out var storage)
+        if (!(HasComp<StorageComponent>(uid)
               && TryComp<AppearanceComponent>(uid, out var appearance)
               && TryComp<ItemComponent>(uid, out var item)))
         {
@@ -31,12 +31,12 @@ public sealed class ContainerHeldSystem : EntitySystem
         }
         if (_storage.GetCumulativeItemAreas(uid) >= comp.Threshold)
         {
-            _item.SetHeldPrefix(uid, "full", item);
+            _item.SetHeldPrefix(uid, "full", component: item);
             _appearance.SetData(uid, ToggleVisuals.Toggled, true, appearance);
         }
         else
         {
-            _item.SetHeldPrefix(uid, "empty", item);
+            _item.SetHeldPrefix(uid, "empty", component: item);
             _appearance.SetData(uid, ToggleVisuals.Toggled, false, appearance);
         }
     }
index 1cb51b6ea060f76a7023a9a5e2d9d167c6de081d..1ef6592b08129abac8a949bffe3ca4bf4c001683 100644 (file)
@@ -12,10 +12,10 @@ namespace Content.Shared.Item;
 /// </summary>
 [RegisterComponent]
 [NetworkedComponent]
-[Access(typeof(SharedItemSystem))]
+[Access(typeof(SharedItemSystem)), AutoGenerateComponentState(true)]
 public sealed partial class ItemComponent : Component
 {
-    [DataField, ViewVariables(VVAccess.ReadWrite)]
+    [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
     [Access(typeof(SharedItemSystem))]
     public ProtoId<ItemSizePrototype> Size = "Small";
 
@@ -25,7 +25,7 @@ public sealed partial class ItemComponent : Component
 
     [Access(typeof(SharedItemSystem))]
     [ViewVariables(VVAccess.ReadWrite)]
-    [DataField]
+    [DataField, AutoNetworkedField]
     public string? HeldPrefix;
 
     /// <summary>
@@ -56,19 +56,6 @@ public sealed partial class ItemComponent : Component
     public float StoredRotation = 0;
 }
 
-[Serializable, NetSerializable]
-public sealed class ItemComponentState : ComponentState
-{
-    public ProtoId<ItemSizePrototype> Size { get; }
-    public string? HeldPrefix { get; }
-
-    public ItemComponentState(ProtoId<ItemSizePrototype> size, string? heldPrefix)
-    {
-        Size = size;
-        HeldPrefix = heldPrefix;
-    }
-}
-
 /// <summary>
 ///     Raised when an item's visual state is changed. The event is directed at the entity that contains this item, so
 ///     that it can properly update its hands or inventory sprites and GUI.
index eb992975b39773a1977d2a795c7a2e17adf703e4..6d534713578bfcdc3b60be8a38dc09375ff6501f 100644 (file)
@@ -1,16 +1,16 @@
 using Robust.Shared.Audio;
 using Robust.Shared.GameStates;
 
-namespace Content.Shared.Item;
+namespace Content.Shared.Item.ItemToggle.Components;
 
 /// <summary>
 /// Handles the active sound being played continuously with some items that are activated (ie e-sword hum).
 /// </summary>
-[RegisterComponent, NetworkedComponent]
+[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
 public sealed partial class ItemToggleActiveSoundComponent : Component
 {
     /// <summary>
-    ///     The continuous noise this item makes when it's activated (like an e-sword's hum). This loops.
+    ///     The continuous noise this item makes when it's activated (like an e-sword's hum).
     /// </summary>
     [ViewVariables(VVAccess.ReadWrite), DataField, AutoNetworkedField]
     public SoundSpecifier? ActiveSound;
@@ -18,17 +18,6 @@ public sealed partial class ItemToggleActiveSoundComponent : Component
     /// <summary>
     ///     Used when the item emits sound while active.
     /// </summary>
-    [ViewVariables(VVAccess.ReadWrite), DataField, AutoNetworkedField]
+    [ViewVariables(VVAccess.ReadWrite), DataField]
     public EntityUid? PlayingStream;
 }
-
-/// <summary>
-/// Raised in order to effect changes upon the ActiveSound of the entity.
-/// </summary>
-[ByRefEvent]
-public record struct ItemToggleActiveSoundUpdateEvent(bool Activated, bool Predicted, EntityUid? User)
-{
-    public bool Activated = Activated;
-    public bool Predicted = Predicted;
-    public EntityUid? User = User;
-}
index 6d27d9ee1240c61520a0741b8ec3c58ed1cd3dd5..3ea80ec73574c1b6e74de2226c34675ea57d1140 100644 (file)
@@ -1,7 +1,7 @@
 using Robust.Shared.Audio;
 using Robust.Shared.GameStates;
 
-namespace Content.Shared.Item;
+namespace Content.Shared.Item.ItemToggle.Components;
 
 /// <summary>
 /// Handles generic item toggles, like a welder turning on and off, or an e-sword.
@@ -54,7 +54,7 @@ public sealed partial class ItemToggleComponent : Component
 public record struct ItemToggleActivateAttemptEvent(EntityUid? User)
 {
     public bool Cancelled = false;
-    public EntityUid? User = User;
+    public readonly EntityUid? User = User;
 }
 
 /// <summary>
@@ -64,63 +64,34 @@ public record struct ItemToggleActivateAttemptEvent(EntityUid? User)
 public record struct ItemToggleDeactivateAttemptEvent(EntityUid? User)
 {
     public bool Cancelled = false;
-    public EntityUid? User = User;
+    public readonly EntityUid? User = User;
 }
 
 /// <summary>
 /// Raised directed on an entity any sort of toggle is complete.
 /// </summary>
 [ByRefEvent]
-public record struct ItemToggleDoneEvent(bool Activated, EntityUid? User)
+public readonly record struct ItemToggledEvent(bool Predicted, bool Activated, EntityUid? User)
 {
-    public bool Activated = Activated;
-    public EntityUid? User = User;
+    public readonly bool Predicted = Predicted;
+    public readonly bool Activated = Activated;
+    public readonly EntityUid? User = User;
 }
 
 /// <summary>
-/// Raised in order to play a toggle sound effect.
+/// Raised directed on an entity when an itemtoggle is activated.
 /// </summary>
 [ByRefEvent]
-public record struct ItemTogglePlayToggleSoundEvent(bool Activated, bool Predicted, EntityUid? User)
+public readonly record struct ItemToggleActivatedEvent(EntityUid? User)
 {
-    public bool Activated = Activated;
-    public bool Predicted = Predicted;
-    public EntityUid? User = User;
+    public readonly EntityUid? User = User;
 }
 
 /// <summary>
-/// Raised in order to play a failure to toggle sound effect.
+/// Raised directed on an entity when an itemtoggle is deactivated.
 /// </summary>
 [ByRefEvent]
-public record struct ItemTogglePlayFailSoundEvent(bool Predicted, EntityUid? User)
+public readonly record struct ItemToggleDeactivatedEvent(EntityUid? User)
 {
-    public bool Predicted = Predicted;
-    public EntityUid? User = User;
-}
-
-/// <summary>
-/// Raised in order to effect changes upon the Light component of the entity.
-/// </summary>
-[ByRefEvent]
-public record struct ItemToggleLightUpdateEvent(bool Activated)
-{
-    public bool Activated = Activated;
-}
-
-/// <summary>
-/// Raised in order to effect changes upon the Appearance component of the entity.
-/// </summary>
-[ByRefEvent]
-public record struct ItemToggleAppearanceUpdateEvent(bool Activated)
-{
-    public bool Activated = Activated;
-}
-
-/// <summary>
-/// Raised in order to effect changes upon the Reflect component of the entity.
-/// </summary>
-[ByRefEvent]
-public record struct ItemToggleReflectUpdateEvent(bool Activated)
-{
-    public bool Activated = Activated;
+    public readonly EntityUid? User = User;
 }
index b35adfadacf391377fe08ee2e07f68ae80146250..c3eb1d1e58ba3fe217b65a18775b1a75a07f98dc 100644 (file)
@@ -1,11 +1,11 @@
 using Robust.Shared.GameStates;
 
-namespace Content.Shared.Item;
+namespace Content.Shared.Item.ItemToggle.Components;
 
 /// <summary>
-/// Handles whether the item is hot when toggled on. 
+/// Handles whether the item is hot when toggled on.
 /// </summary>
-[RegisterComponent, NetworkedComponent]
+[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
 public sealed partial class ItemToggleHotComponent : Component
 {
     /// <summary>
index 5e57491af0d00c8153c7b7e7adff4b1cb52f44b9..a51e90be6031e3f73da6070f295726cd7cf19e69 100644 (file)
@@ -1,16 +1,16 @@
-using Robust.Shared.GameStates;
-using Robust.Shared.Audio;
 using Content.Shared.Damage;
+using Robust.Shared.Audio;
+using Robust.Shared.GameStates;
 
-namespace Content.Shared.Item;
+namespace Content.Shared.Item.ItemToggle.Components;
 
 /// <summary>
-/// Handles the changes to the melee weapon component when the item is toggled. 
+/// Handles the changes to the melee weapon component when the item is toggled.
 /// </summary>
 /// <remarks>
 /// You can change the damage, sound on hit, on swing, as well as hidden status while activated.
 /// </remarks>
-[RegisterComponent, NetworkedComponent]
+[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
 public sealed partial class ItemToggleMeleeWeaponComponent : Component
 {
     /// <summary>
@@ -67,13 +67,3 @@ public sealed partial class ItemToggleMeleeWeaponComponent : Component
     [ViewVariables(VVAccess.ReadWrite), DataField, AutoNetworkedField]
     public bool DeactivatedSecret = false;
 }
-
-/// <summary>
-/// Raised in order to effect changes upon the MeleeWeaponComponent of the entity.
-/// </summary>
-[ByRefEvent]
-public record struct ItemToggleMeleeWeaponUpdateEvent(bool Activated)
-{
-    public bool Activated = Activated;
-}
-
index f280934f1b789362febb7b193c44fb534eace37f..353f3d6fd55b4b797425af16b64bf7e93c5b2f3a 100644 (file)
@@ -1,15 +1,15 @@
 using Robust.Shared.GameStates;
 using Robust.Shared.Prototypes;
 
-namespace Content.Shared.Item;
+namespace Content.Shared.Item.ItemToggle.Components;
 
 /// <summary>
-/// Handles the changes to the item size when toggled. 
+/// Handles the changes to the item size when toggled.
 /// </summary>
 /// <remarks>
 /// You can change the size when activated or not. By default the sizes are copied from the item.
 /// </remarks>
-[RegisterComponent, NetworkedComponent]
+[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
 public sealed partial class ItemToggleSizeComponent : Component
 {
     /// <summary>
@@ -24,12 +24,3 @@ public sealed partial class ItemToggleSizeComponent : Component
     [ViewVariables(VVAccess.ReadWrite), DataField, AutoNetworkedField]
     public ProtoId<ItemSizePrototype>? DeactivatedSize = null;
 }
-
-/// <summary>
-/// Raised in order to effect changes upon the MeleeWeaponComponent of the entity.
-/// </summary>
-[ByRefEvent]
-public record struct ItemToggleSizeUpdateEvent(bool Activated)
-{
-    public bool Activated = Activated;
-}
index e44d135bf2db112dab9ecc671e71542841170f4b..c502f845dddacdd6818a5fd582a7c44652dd4c5c 100644 (file)
@@ -1,11 +1,10 @@
 using Content.Shared.Interaction.Events;
-using Content.Shared.Toggleable;
+using Content.Shared.Item.ItemToggle.Components;
 using Content.Shared.Temperature;
+using Content.Shared.Toggleable;
 using Content.Shared.Wieldable;
-using Content.Shared.Wieldable.Components;
 using Robust.Shared.Audio;
 using Robust.Shared.Audio.Systems;
-using Robust.Shared.Prototypes;
 using Robust.Shared.Network;
 
 namespace Content.Shared.Item.ItemToggle;
@@ -29,12 +28,10 @@ public abstract class SharedItemToggleSystem : EntitySystem
         SubscribeLocalEvent<ItemToggleComponent, ItemUnwieldedEvent>(TurnOffonUnwielded);
         SubscribeLocalEvent<ItemToggleComponent, ItemWieldedEvent>(TurnOnonWielded);
         SubscribeLocalEvent<ItemToggleComponent, UseInHandEvent>(OnUseInHand);
+
         SubscribeLocalEvent<ItemToggleHotComponent, IsHotEvent>(OnIsHotEvent);
-        SubscribeLocalEvent<ItemToggleActiveSoundComponent, ItemToggleActiveSoundUpdateEvent>(UpdateActiveSound);
-        SubscribeLocalEvent<AppearanceComponent, ItemToggleAppearanceUpdateEvent>(UpdateAppearance);
-        SubscribeLocalEvent<ItemToggleComponent, ItemToggleLightUpdateEvent>(UpdateLight);
-        SubscribeLocalEvent<ItemToggleComponent, ItemTogglePlayToggleSoundEvent>(PlayToggleSound);
-        SubscribeLocalEvent<ItemToggleComponent, ItemTogglePlayFailSoundEvent>(PlayFailToggleSound);
+
+        SubscribeLocalEvent<ItemToggleActiveSoundComponent, ItemToggledEvent>(UpdateActiveSound);
     }
 
     private void OnUseInHand(EntityUid uid, ItemToggleComponent itemToggle, UseInHandEvent args)
@@ -48,7 +45,7 @@ public abstract class SharedItemToggleSystem : EntitySystem
     }
 
     /// <summary>
-    /// Used when an item is attempted to be toggled. 
+    /// Used when an item is attempted to be toggled.
     /// </summary>
     public void Toggle(EntityUid uid, EntityUid? user = null, bool predicted = true, ItemToggleComponent? itemToggle = null)
     {
@@ -81,9 +78,10 @@ public abstract class SharedItemToggleSystem : EntitySystem
 
         if (attempt.Cancelled)
         {
-            //Raises the event to play the failure to activate noise.
-            var evPlayFailToggleSound = new ItemTogglePlayFailSoundEvent(Predicted: predicted, user);
-            RaiseLocalEvent(uid, ref evPlayFailToggleSound);
+            if (predicted)
+                _audio.PlayPredicted(itemToggle.SoundFailToActivate, uid, user);
+            else
+                _audio.PlayPvs(itemToggle.SoundFailToActivate, uid);
 
             return false;
         }
@@ -92,16 +90,7 @@ public abstract class SharedItemToggleSystem : EntitySystem
         if (predicted == false && _netManager.IsClient)
             return true;
 
-        Activate(uid, itemToggle);
-
-        var evPlayToggleSound = new ItemTogglePlayToggleSoundEvent(Activated: true, Predicted: predicted, user);
-        RaiseLocalEvent(uid, ref evPlayToggleSound);
-
-        var evActiveSound = new ItemToggleActiveSoundUpdateEvent(Activated: true, Predicted: predicted, user);
-        RaiseLocalEvent(uid, ref evActiveSound);
-
-        var toggleUsed = new ItemToggleDoneEvent(Activated: true, user);
-        RaiseLocalEvent(uid, ref toggleUsed);
+        Activate(uid, itemToggle, predicted, user);
 
         return true;
     }
@@ -129,59 +118,76 @@ public abstract class SharedItemToggleSystem : EntitySystem
         if (predicted == false && _netManager.IsClient)
             return true;
 
-        Deactivate(uid, itemToggle);
+        Deactivate(uid, itemToggle, predicted, user);
+        return true;
+    }
 
-        var evPlayToggleSound = new ItemTogglePlayToggleSoundEvent(Activated: false, Predicted: predicted, user);
-        RaiseLocalEvent(uid, ref evPlayToggleSound);
+    private void Activate(EntityUid uid, ItemToggleComponent itemToggle, bool predicted, EntityUid? user = null)
+    {
+        // TODO: Fix this hardcoding
+        TryComp(uid, out AppearanceComponent? appearance);
+        _appearance.SetData(uid, ToggleableLightVisuals.Enabled, true, appearance);
+        _appearance.SetData(uid, ToggleVisuals.Toggled, true, appearance);
 
-        var evActiveSound = new ItemToggleActiveSoundUpdateEvent(Activated: false, Predicted: predicted, user);
-        RaiseLocalEvent(uid, ref evActiveSound);
+        if (_light.TryGetLight(uid, out var light))
+        {
+            _light.SetEnabled(uid, true, light);
+        }
 
-        var toggleUsed = new ItemToggleDoneEvent(Activated: false, user);
-        RaiseLocalEvent(uid, ref toggleUsed);
+        SoundSpecifier? soundToPlay = itemToggle.SoundActivate;
 
-        return true;
-    }
+        if (soundToPlay == null)
+            return;
 
-    /// <summary>
-    /// Used to make the actual changes to the item's components on activation.
-    /// </summary>
-    private void Activate(EntityUid uid, ItemToggleComponent itemToggle)
-    {
-        UpdateComponents(uid, itemToggle.Activated = true);
+        if (predicted)
+            _audio.PlayPredicted(soundToPlay, uid, user);
+        else
+            _audio.PlayPvs(soundToPlay, uid);
+
+        // END FIX HARDCODING
+
+        var toggleUsed = new ItemToggledEvent(predicted, Activated: true, user);
+        RaiseLocalEvent(uid, ref toggleUsed);
+
+        var activev = new ItemToggleActivatedEvent(user);
+        RaiseLocalEvent(uid, ref activev);
 
+        itemToggle.Activated = true;
         Dirty(uid, itemToggle);
     }
 
     /// <summary>
     /// Used to make the actual changes to the item's components on deactivation.
     /// </summary>
-    private void Deactivate(EntityUid uid, ItemToggleComponent itemToggle)
+    private void Deactivate(EntityUid uid, ItemToggleComponent itemToggle, bool predicted, EntityUid? user = null)
     {
-        UpdateComponents(uid, itemToggle.Activated = false);
+        // TODO: Fix this hardcoding
+        TryComp(uid, out AppearanceComponent? appearance);
+        _appearance.SetData(uid, ToggleableLightVisuals.Enabled, false, appearance);
+        _appearance.SetData(uid, ToggleVisuals.Toggled, false, appearance);
 
-        Dirty(uid, itemToggle);
-    }
+        if (_light.TryGetLight(uid, out var light))
+        {
+            _light.SetEnabled(uid, false, light);
+        }
 
-    /// <summary>
-    /// Used to raise events to update components on toggle.
-    /// </summary>
-    private void UpdateComponents(EntityUid uid, bool activated)
-    {
-        var evSize = new ItemToggleSizeUpdateEvent(activated);
-        RaiseLocalEvent(uid, ref evSize);
+        var soundToPlay = itemToggle.SoundDeactivate;
+
+        if (predicted)
+            _audio.PlayPredicted(soundToPlay, uid, user);
+        else
+            _audio.PlayPvs(soundToPlay, uid);
 
-        var evMelee = new ItemToggleMeleeWeaponUpdateEvent(activated);
-        RaiseLocalEvent(uid, ref evMelee);
+        // END FIX HARDCODING
 
-        var evAppearance = new ItemToggleAppearanceUpdateEvent(activated);
-        RaiseLocalEvent(uid, ref evAppearance);
+        var toggleUsed = new ItemToggledEvent(predicted, Activated: false, user);
+        RaiseLocalEvent(uid, ref toggleUsed);
 
-        var evLight = new ItemToggleLightUpdateEvent(activated);
-        RaiseLocalEvent(uid, ref evLight);
+        var activev = new ItemToggleDeactivatedEvent(user);
+        RaiseLocalEvent(uid, ref activev);
 
-        var evReflect = new ItemToggleReflectUpdateEvent(activated);
-        RaiseLocalEvent(uid, ref evReflect);
+        itemToggle.Activated = false;
+        Dirty(uid, itemToggle);
     }
 
     /// <summary>
@@ -219,30 +225,10 @@ public abstract class SharedItemToggleSystem : EntitySystem
             args.IsHot = IsActivated(uid);
     }
 
-    /// <summary>
-    /// Used to update item appearance.
-    /// </summary>
-    private void UpdateAppearance(EntityUid uid, AppearanceComponent appearance, ref ItemToggleAppearanceUpdateEvent args)
-    {
-        _appearance.SetData(uid, ToggleableLightVisuals.Enabled, args.Activated, appearance);
-        _appearance.SetData(uid, ToggleVisuals.Toggled, args.Activated, appearance);
-    }
-
-    /// <summary>
-    /// Used to update light settings.
-    /// </summary>
-    private void UpdateLight(EntityUid uid, ItemToggleComponent comp, ref ItemToggleLightUpdateEvent args)
-    {
-        if (!_light.TryGetLight(uid, out var light))
-            return;
-
-        _light.SetEnabled(uid, args.Activated, light);
-    }
-
     /// <summary>
     /// Used to update the looping active sound linked to the entity.
     /// </summary>
-    private void UpdateActiveSound(EntityUid uid, ItemToggleActiveSoundComponent activeSound, ref ItemToggleActiveSoundUpdateEvent args)
+    private void UpdateActiveSound(EntityUid uid, ItemToggleActiveSoundComponent activeSound, ref ItemToggledEvent args)
     {
         if (args.Activated)
         {
@@ -259,35 +245,4 @@ public abstract class SharedItemToggleSystem : EntitySystem
             activeSound.PlayingStream = _audio.Stop(activeSound.PlayingStream);
         }
     }
-
-    /// <summary>
-    /// Used to play a toggle sound.
-    /// </summary>
-    private void PlayToggleSound(EntityUid uid, ItemToggleComponent itemToggle, ref ItemTogglePlayToggleSoundEvent args)
-    {
-        SoundSpecifier? soundToPlay;
-        if (args.Activated)
-            soundToPlay = itemToggle.SoundActivate;
-        else
-            soundToPlay = itemToggle.SoundDeactivate;
-
-        if (soundToPlay == null)
-            return;
-
-        if (args.Predicted)
-            _audio.PlayPredicted(soundToPlay, uid, args.User);
-        else
-            _audio.PlayPvs(soundToPlay, uid);
-    }
-
-    /// <summary>
-    /// Used to play a failure to toggle sound.
-    /// </summary>
-    private void PlayFailToggleSound(EntityUid uid, ItemToggleComponent itemToggle, ref ItemTogglePlayFailSoundEvent args)
-    {
-        if (args.Predicted)
-            _audio.PlayPredicted(itemToggle.SoundFailToActivate, uid, args.User);
-        else
-            _audio.PlayPvs(itemToggle.SoundFailToActivate, uid);
-    }
 }
index fe925c554745303950c85ec95a8266e9b87df075..13b98d8533898bd002a79f6b1012fff3fd7eca3a 100644 (file)
@@ -2,6 +2,7 @@ using Content.Shared.Hands.EntitySystems;
 using Content.Shared.Interaction;
 using Content.Shared.Verbs;
 using Content.Shared.Examine;
+using Content.Shared.Item.ItemToggle.Components;
 using Content.Shared.Storage;
 using JetBrains.Annotations;
 using Robust.Shared.Containers;
@@ -21,14 +22,17 @@ public abstract class SharedItemSystem : EntitySystem
     {
         base.Initialize();
         SubscribeLocalEvent<ItemComponent, GetVerbsEvent<InteractionVerb>>(AddPickupVerb);
-        SubscribeLocalEvent<ItemComponent, InteractHandEvent>(OnHandInteract, before: new []{typeof(SharedItemSystem)});
-
-        SubscribeLocalEvent<ItemComponent, ComponentGetState>(OnGetState);
-        SubscribeLocalEvent<ItemComponent, ComponentHandleState>(OnHandleState);
+        SubscribeLocalEvent<ItemComponent, InteractHandEvent>(OnHandInteract);
+        SubscribeLocalEvent<ItemComponent, AfterAutoHandleStateEvent>(OnItemAutoState);
 
         SubscribeLocalEvent<ItemComponent, ExaminedEvent>(OnExamine);
 
-        SubscribeLocalEvent<ItemToggleSizeComponent, ItemToggleSizeUpdateEvent>(OnItemToggle);
+        SubscribeLocalEvent<ItemToggleSizeComponent, ItemToggledEvent>(OnItemToggle);
+    }
+
+    private void OnItemAutoState(EntityUid uid, ItemComponent component, ref AfterAutoHandleStateEvent args)
+    {
+        SetHeldPrefix(uid, component.HeldPrefix, force: true, component);
     }
 
     #region Public API
@@ -42,12 +46,12 @@ public abstract class SharedItemSystem : EntitySystem
         Dirty(uid, component);
     }
 
-    public void SetHeldPrefix(EntityUid uid, string? heldPrefix, ItemComponent? component = null)
+    public void SetHeldPrefix(EntityUid uid, string? heldPrefix, bool force = false, ItemComponent? component = null)
     {
         if (!Resolve(uid, ref component, false))
             return;
 
-        if (component.HeldPrefix == heldPrefix)
+        if (!force && component.HeldPrefix == heldPrefix)
             return;
 
         component.HeldPrefix = heldPrefix;
@@ -81,20 +85,6 @@ public abstract class SharedItemSystem : EntitySystem
         args.Handled = _handsSystem.TryPickup(args.User, uid, animateUser: false);
     }
 
-    private void OnHandleState(EntityUid uid, ItemComponent component, ref ComponentHandleState args)
-    {
-        if (args.Current is not ItemComponentState state)
-            return;
-
-        component.Size = state.Size;
-        SetHeldPrefix(uid, state.HeldPrefix, component);
-    }
-
-    private void OnGetState(EntityUid uid, ItemComponent component, ref ComponentGetState args)
-    {
-        args.State = new ItemComponentState(component.Size, component.HeldPrefix);
-    }
-
     private void AddPickupVerb(EntityUid uid, ItemComponent component, GetVerbsEvent<InteractionVerb> args)
     {
         if (args.Hands == null ||
@@ -211,7 +201,7 @@ public abstract class SharedItemSystem : EntitySystem
     /// <summary>
     /// Used to update the Item component on item toggle (specifically size).
     /// </summary>
-    private void OnItemToggle(EntityUid uid, ItemToggleSizeComponent itemToggleSize, ItemToggleSizeUpdateEvent args)
+    private void OnItemToggle(EntityUid uid, ItemToggleSizeComponent itemToggleSize, ItemToggledEvent args)
     {
         if (!TryComp(uid, out ItemComponent? item))
             return;
index 73de252690777a55997418a3bca72789f8e04666..381728ae280da0c3f932d1f3f832ff86b22a1386 100644 (file)
@@ -13,7 +13,7 @@ namespace Content.Shared.Ninja.Components;
 /// Component for ninja suit abilities and power consumption.
 /// As an implementation detail, dashing with katana is a suit action which isn't ideal.
 /// </summary>
-[RegisterComponent, NetworkedComponent, Access(typeof(SharedNinjaSuitSystem))]
+[RegisterComponent, NetworkedComponent, Access(typeof(SharedNinjaSuitSystem)), AutoGenerateComponentState]
 public sealed partial class NinjaSuitComponent : Component
 {
     /// <summary>
index c98a2171b0d295d715b764e54f99676a0a534eff..e0cc2b7d917470f59ab8a9153075da8c4b1a5e37 100644 (file)
@@ -9,7 +9,7 @@ namespace Content.Shared.Sericulture;
 /// Should be applied to any mob that you want to be able to produce any material with an action and the cost of hunger.
 /// TODO: Probably adjust this to utilize organs?
 /// </summary>
-[RegisterComponent, NetworkedComponent, Access(typeof(SharedSericultureSystem))]
+[RegisterComponent, NetworkedComponent, Access(typeof(SharedSericultureSystem)), AutoGenerateComponentState]
 public sealed partial class SericultureComponent : Component
 {
     /// <summary>
index 42fe8e5b70c1eb090377e8d894ccfe5af6915f9a..1e2c2e6428c06d2181772688d5608634554c4948 100644 (file)
@@ -7,7 +7,7 @@ namespace Content.Shared.Teleportation.Components;
 ///     Marks an entity as being a 'portal' which teleports entities sent through it to linked entities.
 ///     Relies on <see cref="LinkedEntityComponent"/> being set up.
 /// </summary>
-[RegisterComponent, NetworkedComponent]
+[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
 public sealed partial class PortalComponent : Component
 {
     /// <summary>
index 482467297439fb7708f0cdaf5a7411dc450a3535..c6adf00113247bb9d2c07cce4656a44fa8a6246c 100644 (file)
@@ -13,6 +13,7 @@ using Content.Shared.Hands.Components;
 using Content.Shared.Interaction;
 using Content.Shared.Inventory;
 using Content.Shared.Item;
+using Content.Shared.Item.ItemToggle.Components;
 using Content.Shared.Physics;
 using Content.Shared.Popups;
 using Content.Shared.Weapons.Melee.Components;
@@ -29,6 +30,7 @@ using Robust.Shared.Player;
 using Robust.Shared.Prototypes;
 using Robust.Shared.Timing;
 using Robust.Shared.Toolshed.Syntax;
+using ItemToggleMeleeWeaponComponent = Content.Shared.Item.ItemToggle.Components.ItemToggleMeleeWeaponComponent;
 
 namespace Content.Shared.Weapons.Melee;
 
@@ -74,7 +76,7 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
         SubscribeLocalEvent<BonusMeleeDamageComponent, GetHeavyDamageModifierEvent>(OnGetBonusHeavyDamageModifier);
         SubscribeLocalEvent<BonusMeleeAttackRateComponent, GetMeleeAttackRateEvent>(OnGetBonusMeleeAttackRate);
 
-        SubscribeLocalEvent<ItemToggleMeleeWeaponComponent, ItemToggleMeleeWeaponUpdateEvent>(OnItemToggle);
+        SubscribeLocalEvent<ItemToggleMeleeWeaponComponent, ItemToggledEvent>(OnItemToggle);
 
         SubscribeAllEvent<HeavyAttackEvent>(OnHeavyAttack);
         SubscribeAllEvent<LightAttackEvent>(OnLightAttack);
@@ -864,7 +866,7 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
     /// <summary>
     /// Used to update the MeleeWeapon component on item toggle.
     /// </summary>
-    private void OnItemToggle(EntityUid uid, ItemToggleMeleeWeaponComponent itemToggleMelee, ItemToggleMeleeWeaponUpdateEvent args)
+    private void OnItemToggle(EntityUid uid, ItemToggleMeleeWeaponComponent itemToggleMelee, ItemToggledEvent args)
     {
         if (!TryComp(uid, out MeleeWeaponComponent? meleeWeapon))
             return;
similarity index 96%
rename from Content.Shared/Weapons/Reflect/SharedReflectSystem.cs
rename to Content.Shared/Weapons/Reflect/ReflectSystem.cs
index b9dead823194dfb906f2941b6a9aba2f63191838..4a7c2f6b6a7b736365a5b0c48e030e72ee2cc17c 100644 (file)
@@ -6,6 +6,7 @@ using Content.Shared.Database;
 using Content.Shared.Hands;
 using Content.Shared.Inventory;
 using Content.Shared.Inventory.Events;
+using Content.Shared.Item.ItemToggle.Components;
 using Content.Shared.Popups;
 using Content.Shared.Projectiles;
 using Content.Shared.Weapons.Ranged.Components;
@@ -23,7 +24,7 @@ namespace Content.Shared.Weapons.Reflect;
 /// <summary>
 /// This handles reflecting projectiles and hitscan shots.
 /// </summary>
-public abstract class SharedReflectSystem : EntitySystem
+public sealed class ReflectSystem : EntitySystem
 {
     [Dependency] private readonly INetManager _netManager = default!;
     [Dependency] private readonly IRobustRandom _random = default!;
@@ -41,13 +42,14 @@ public abstract class SharedReflectSystem : EntitySystem
 
         SubscribeLocalEvent<ReflectComponent, ProjectileReflectAttemptEvent>(OnReflectCollide);
         SubscribeLocalEvent<ReflectComponent, HitScanReflectAttemptEvent>(OnReflectHitscan);
-        SubscribeLocalEvent<ReflectUserComponent, ProjectileReflectAttemptEvent>(OnReflectUserCollide);
-        SubscribeLocalEvent<ReflectUserComponent, HitScanReflectAttemptEvent>(OnReflectUserHitscan);
-
         SubscribeLocalEvent<ReflectComponent, GotEquippedEvent>(OnReflectEquipped);
         SubscribeLocalEvent<ReflectComponent, GotUnequippedEvent>(OnReflectUnequipped);
         SubscribeLocalEvent<ReflectComponent, GotEquippedHandEvent>(OnReflectHandEquipped);
         SubscribeLocalEvent<ReflectComponent, GotUnequippedHandEvent>(OnReflectHandUnequipped);
+        SubscribeLocalEvent<ReflectComponent, ItemToggledEvent>(OnToggleReflect);
+
+        SubscribeLocalEvent<ReflectUserComponent, ProjectileReflectAttemptEvent>(OnReflectUserCollide);
+        SubscribeLocalEvent<ReflectUserComponent, HitScanReflectAttemptEvent>(OnReflectUserHitscan);
     }
 
     private void OnReflectUserHitscan(EntityUid uid, ReflectUserComponent component, ref HitScanReflectAttemptEvent args)
@@ -209,6 +211,12 @@ public abstract class SharedReflectSystem : EntitySystem
         RefreshReflectUser(args.User);
     }
 
+    private void OnToggleReflect(EntityUid uid, ReflectComponent comp, ref ItemToggledEvent args)
+    {
+        comp.Enabled = args.Activated;
+        Dirty(uid, comp);
+    }
+
     /// <summary>
     /// Refreshes whether someone has reflection potential so we can raise directed events on them.
     /// </summary>
index 399d9b516807aff2237cfef7f47dcf3ab7e0805c..72db0c4a3ab054aac19728fc3ee777194c187be6 100644 (file)
@@ -177,7 +177,7 @@ public sealed class WieldableSystem : EntitySystem
         if (TryComp<ItemComponent>(used, out var item))
         {
             component.OldInhandPrefix = item.HeldPrefix;
-            _itemSystem.SetHeldPrefix(used, component.WieldedInhandPrefix, item);
+            _itemSystem.SetHeldPrefix(used, component.WieldedInhandPrefix, component: item);
         }
 
         component.Wielded = true;
@@ -229,7 +229,7 @@ public sealed class WieldableSystem : EntitySystem
 
         if (TryComp<ItemComponent>(uid, out var item))
         {
-            _itemSystem.SetHeldPrefix(uid, component.OldInhandPrefix, item);
+            _itemSystem.SetHeldPrefix(uid, component.OldInhandPrefix, component: item);
         }
 
         component.Wielded = false;