using Content.Shared.Item.ItemToggle.Components; namespace Content.Shared.Item.ItemToggle; /// /// Handles component manipulation. /// public sealed class ComponentTogglerSystem : EntitySystem { public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnToggled); } private void OnToggled(Entity ent, ref ItemToggledEvent args) { ToggleComponent(ent, args.Activated); } // Goobstation - Make this system more flexible public void ToggleComponent(EntityUid uid, bool activate) { if (!TryComp(uid, out var component)) return; var target = component.Parent ? Transform(uid).ParentUid : uid; if (activate) EntityManager.AddComponents(target, component.Components); else EntityManager.RemoveComponents(target, component.RemoveComponents ?? component.Components); } }