using Content.Shared.DoAfter; using Content.Shared.Whitelist; using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; namespace Content.Shared._DV.Construction; /// /// Component for an upgrade kit that upgrades allowed machines then deletes itself. /// [RegisterComponent, NetworkedComponent, Access(typeof(UpgradeKitSystem))] public sealed partial class UpgradeKitComponent : Component { /// /// A whitelist that entities must match to be upgraded. /// [DataField(required: true)] public EntityWhitelist Whitelist = new(); /// /// A blacklist that entities cannot match to be upgraded. /// [DataField(required: true)] public EntityWhitelist Blacklist = new(); /// /// Components added to the machine after it's upgraded. /// Some of these must blacklist it from upgrades to prevent stacking. /// [DataField(required: true)] public ComponentRegistry Components = new(); /// /// How long the doafter is /// [DataField] public TimeSpan Delay = TimeSpan.FromSeconds(4); /// /// Sound played when upgrading an entity. /// [DataField] public SoundSpecifier? UpgradeSound = new SoundPathSpecifier("/Audio/Items/rped.ogg"); public EntityUid? SoundStream; } [Serializable, NetSerializable] public sealed partial class UpgradeKitDoAfterEvent : SimpleDoAfterEvent;