using Content.Shared.Actions; using Content.Shared.Actions.ActionTypes; using Robust.Shared.Containers; using Robust.Shared.Utility; namespace Content.Server.Guardian { /// /// Given to guardian users upon establishing a guardian link with the entity /// [RegisterComponent] public sealed class GuardianHostComponent : Component { /// /// Guardian hosted within the component /// /// /// Can be null if the component is added at any time. /// public EntityUid? HostedGuardian; /// /// Container which holds the guardian /// [ViewVariables] public ContainerSlot GuardianContainer = default!; [DataField("action")] public InstantAction Action = new() { DisplayName = "action-name-guardian", Description = "action-description-guardian", Icon = new SpriteSpecifier.Texture(new ResourcePath("Interface/Actions/manifest.png")), UseDelay = TimeSpan.FromSeconds(2), CheckCanInteract = false, // allow use while stunned, etc. Gets removed on death anyways. Event = new GuardianToggleActionEvent(), }; } public sealed class GuardianToggleActionEvent : InstantActionEvent { }; }