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 <milonpl.git@proton.me>
This commit is contained in:
@@ -28,7 +28,6 @@ namespace Content.Server.Stunnable.Systems
|
||||
SubscribeLocalEvent<StunbatonComponent, SolutionContainerChangedEvent>(OnSolutionChange);
|
||||
SubscribeLocalEvent<StunbatonComponent, StaminaDamageOnHitAttemptEvent>(OnStaminaHitAttempt);
|
||||
SubscribeLocalEvent<StunbatonComponent, ItemToggleActivateAttemptEvent>(TryTurnOn);
|
||||
SubscribeLocalEvent<StunbatonComponent, ItemToggledEvent>(ToggleDone);
|
||||
SubscribeLocalEvent<StunbatonComponent, ChargeChangedEvent>(OnChargeChanged);
|
||||
}
|
||||
|
||||
@@ -55,11 +54,6 @@ namespace Content.Server.Stunnable.Systems
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
@@ -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<MagbootsComponent> ent, ref ClothingGotUnequippedEvent args)
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
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;
|
||||
}
|
||||
24
Content.Shared/Item/ItemToggle/ItemTogglePrefixSystem.cs
Normal file
24
Content.Shared/Item/ItemToggle/ItemTogglePrefixSystem.cs
Normal file
@@ -0,0 +1,24 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
@@ -18,6 +18,10 @@
|
||||
- type: ComponentToggler
|
||||
components:
|
||||
- type: NoSlip
|
||||
- type: ItemTogglePrefix
|
||||
prefixOn: on
|
||||
- type: ToggleClothingPrefix
|
||||
prefixOn: on
|
||||
- type: Magboots
|
||||
- type: ClothingSpeedModifier
|
||||
walkModifier: 0.85
|
||||
|
||||
@@ -25,6 +25,9 @@
|
||||
path: /Audio/Machines/button.ogg
|
||||
params:
|
||||
variation: 0.250
|
||||
- type: ItemTogglePrefix
|
||||
prefixOn: on
|
||||
prefixOff: off
|
||||
- type: ItemToggleMeleeWeapon
|
||||
activatedDamage:
|
||||
types:
|
||||
|
||||
Reference in New Issue
Block a user