Files
tbd-station-14/Content.Server/Item/ItemToggle/ItemToggleSystem.cs
metalgearsloth 2166958bd0 AutoCompState + ItemToggle fixes (#23422)
* 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
2024-01-03 17:24:02 +11:00

60 lines
2.0 KiB
C#

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;
public sealed class ItemToggleSystem : SharedItemToggleSystem
{
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<ItemToggleComponent, ItemToggledEvent>(Toggle);
}
private void Toggle(EntityUid uid, ItemToggleComponent comp, ref ItemToggledEvent args)
{
if (args.Activated == true)
{
if (TryComp<ItemToggleSharpComponent>(uid, out var itemSharpness))
{
if (itemSharpness.ActivatedSharp)
EnsureComp<SharpComponent>(uid);
}
if (!TryComp<ItemToggleDisarmMalusComponent>(uid, out var itemToggleDisarmMalus) ||
!TryComp<DisarmMalusComponent>(uid, out var malus))
return;
//Default the deactivated DisarmMalus to the item's value before activation happens.
itemToggleDisarmMalus.DeactivatedDisarmMalus ??= malus.Malus;
if (itemToggleDisarmMalus.ActivatedDisarmMalus != null)
{
malus.Malus = (float) itemToggleDisarmMalus.ActivatedDisarmMalus;
}
}
else
{
if (TryComp<ItemToggleSharpComponent>(uid, out var itemSharpness))
{
if (itemSharpness.ActivatedSharp)
RemCompDeferred<SharpComponent>(uid);
}
if (!TryComp<ItemToggleDisarmMalusComponent>(uid, out var itemToggleDisarmMalus) ||
!TryComp<DisarmMalusComponent>(uid, out var malus))
return;
if (itemToggleDisarmMalus.DeactivatedDisarmMalus != null)
{
malus.Malus = (float) itemToggleDisarmMalus.DeactivatedDisarmMalus;
}
}
}
}