using Content.Shared.Actions; using Content.Shared.Whitelist; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; namespace Content.Shared.Implants.Components; /// /// Subdermal implants get stored in a container on an entity and grant the entity special actions /// The actions can be activated via an action, a passive ability (ie tracking), or a reactive ability (ie on death) or some sort of combination /// They're added and removed with implanters /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] public sealed partial class SubdermalImplantComponent : Component { /// /// Used where you want the implant to grant the owner an instant action. /// [ViewVariables(VVAccess.ReadWrite)] [DataField("implantAction")] public EntProtoId? ImplantAction; [DataField, AutoNetworkedField] public EntityUid? Action; /// /// The entity this implant is inside /// [ViewVariables, AutoNetworkedField] public EntityUid? ImplantedEntity; /// /// Should this implant be removeable? /// [ViewVariables(VVAccess.ReadWrite)] [DataField("permanent"), AutoNetworkedField] public bool Permanent = false; /// /// Target whitelist for this implant specifically. /// Only checked if the implanter allows implanting on the target to begin with. /// [DataField] public EntityWhitelist? Whitelist; /// /// Target blacklist for this implant specifically. /// Only checked if the implanter allows implanting on the target to begin with. /// [DataField] public EntityWhitelist? Blacklist; /// /// If set, this ProtoId is used when attempting to draw the implant instead. /// Useful if the implant is a child to another implant and you don't want to differentiate between them when drawing. /// [DataField] public EntProtoId? DrawableProtoIdOverride; } /// /// Used for opening the storage implant via action. /// public sealed partial class OpenStorageImplantEvent : InstantActionEvent { } public sealed partial class UseFreedomImplantEvent : InstantActionEvent { } /// /// Used for triggering trigger events on the implant via action /// public sealed partial class ActivateImplantEvent : InstantActionEvent { } /// /// Used for opening the uplink implant via action. /// public sealed partial class OpenUplinkImplantEvent : InstantActionEvent { } public sealed partial class UseScramImplantEvent : InstantActionEvent { } public sealed partial class UseDnaScramblerImplantEvent : InstantActionEvent { }