SubscribeLocalEvent<StunbatonComponent, SolutionContainerChangedEvent>(OnSolutionChange);
SubscribeLocalEvent<StunbatonComponent, StaminaDamageOnHitAttemptEvent>(OnStaminaHitAttempt);
SubscribeLocalEvent<StunbatonComponent, ItemToggleActivateAttemptEvent>(TryTurnOn);
- SubscribeLocalEvent<StunbatonComponent, ItemToggledEvent>(ToggleDone);
SubscribeLocalEvent<StunbatonComponent, ChargeChangedEvent>(OnChargeChanged);
}
}
}
- private void ToggleDone(Entity<StunbatonComponent> entity, ref ItemToggledEvent args)
- {
- _item.SetHeldPrefix(entity.Owner, args.Activated ? "on" : "off");
- }
-
private void TryTurnOn(Entity<StunbatonComponent> entity, ref ItemToggleActivateAttemptEvent args)
{
if (!TryComp<BatteryComponent>(entity, out var battery) || battery.CurrentCharge < entity.Comp.EnergyPerUse)
--- /dev/null
+using Robust.Shared.GameStates;
+
+namespace Content.Shared.Clothing.Components;
+
+/// <summary>
+/// Handles the changes to ClothingComponent.EquippedPrefix when toggled.
+/// </summary>
+[RegisterComponent, NetworkedComponent]
+public sealed partial class ToggleClothingPrefixComponent : Component
+{
+ /// <summary>
+ /// Clothing's EquippedPrefix when activated.
+ /// </summary>
+ [DataField]
+ public string? PrefixOn = "on";
+
+ /// <summary>
+ /// Clothing's EquippedPrefix when deactivated.
+ /// </summary>
+ [DataField]
+ public string? PrefixOff;
+}
--- /dev/null
+using Content.Shared.Clothing.Components;
+using Content.Shared.Item.ItemToggle.Components;
+
+namespace Content.Shared.Clothing.EntitySystems;
+
+/// <summary>
+/// On toggle handles the changes to ItemComponent.HeldPrefix. <see cref="ToggleClothingPrefixComponent"/>.
+/// </summary>
+public sealed class ToggleClothingPrefixSystem : EntitySystem
+{
+ [Dependency] private readonly ClothingSystem _clothing = default!;
+
+ /// <inheritdoc/>
+ public override void Initialize()
+ {
+ base.Initialize();
+
+ SubscribeLocalEvent<ToggleClothingPrefixComponent, ItemToggledEvent>(OnToggled);
+ }
+
+ private void OnToggled(Entity<ToggleClothingPrefixComponent> ent, ref ItemToggledEvent args)
+ {
+ _clothing.SetEquippedPrefix(ent, args.Activated ? ent.Comp.PrefixOn : ent.Comp.PrefixOff);
+ }
+}
{
UpdateMagbootEffects(container.Owner, ent, args.Activated);
}
-
- var prefix = args.Activated ? "on" : null;
- _item.SetHeldPrefix(ent, prefix);
- _clothing.SetEquippedPrefix(ent, prefix);
}
private void OnGotUnequipped(Entity<MagbootsComponent> ent, ref ClothingGotUnequippedEvent args)
--- /dev/null
+using Robust.Shared.GameStates;
+
+namespace Content.Shared.Item.ItemToggle.Components;
+
+/// <summary>
+/// Handles the changes to ItemComponent.HeldPrefix when toggled.
+/// </summary>
+[RegisterComponent, NetworkedComponent]
+public sealed partial class ItemTogglePrefixComponent : Component
+{
+ /// <summary>
+ /// Item's HeldPrefix when activated.
+ /// </summary>
+ [DataField]
+ public string? PrefixOn = "on";
+
+ /// <summary>
+ /// Item's HeldPrefix when deactivated.
+ /// </summary>
+ [DataField]
+ public string? PrefixOff;
+}
--- /dev/null
+using Content.Shared.Item.ItemToggle.Components;
+
+namespace Content.Shared.Item.ItemToggle;
+
+/// <summary>
+/// On toggle handles the changes to ItemComponent.HeldPrefix. <see cref="ItemTogglePrefixComponent"/>.
+/// </summary>
+public sealed class ItemTogglePrefixSystem : EntitySystem
+{
+ [Dependency] private readonly SharedItemSystem _item = default!;
+
+ /// <inheritdoc/>
+ public override void Initialize()
+ {
+ base.Initialize();
+
+ SubscribeLocalEvent<ItemTogglePrefixComponent, ItemToggledEvent>(OnToggled);
+ }
+
+ private void OnToggled(Entity<ItemTogglePrefixComponent> ent, ref ItemToggledEvent args)
+ {
+ _item.SetHeldPrefix(ent.Owner, args.Activated ? ent.Comp.PrefixOn : ent.Comp.PrefixOff);
+ }
+}
- type: ComponentToggler
components:
- type: NoSlip
+ - type: ItemTogglePrefix
+ prefixOn: on
+ - type: ToggleClothingPrefix
+ prefixOn: on
- type: Magboots
- type: ClothingSpeedModifier
walkModifier: 0.85
path: /Audio/Machines/button.ogg
params:
variation: 0.250
+ - type: ItemTogglePrefix
+ prefixOn: on
+ prefixOff: off
- type: ItemToggleMeleeWeapon
activatedDamage:
types: