using Robust.Shared.GameStates; namespace Content.Shared.Silicons.Borgs.Components; /// /// This is used for modules that can be inserted into borgs /// to give them unique abilities and attributes. /// [RegisterComponent, NetworkedComponent, Access(typeof(SharedBorgSystem))] [AutoGenerateComponentState] public sealed partial class BorgModuleComponent : Component { /// /// The entity this module is installed into /// [DataField("installedEntity")] public EntityUid? InstalledEntity; public bool Installed => InstalledEntity != null; /// /// If true, this is a "default" module that cannot be removed from a borg. /// [DataField] [AutoNetworkedField] public bool DefaultModule; } /// /// Raised on a module when it is installed in order to add specific behavior to an entity. /// /// [ByRefEvent] public readonly record struct BorgModuleInstalledEvent(EntityUid ChassisEnt); /// /// Raised on a module when it's uninstalled in order to /// /// [ByRefEvent] public readonly record struct BorgModuleUninstalledEvent(EntityUid ChassisEnt);