using Content.Server.Objectives; using Robust.Shared.Audio; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; namespace Content.Server.GameTicking.Rules.Configurations; /// /// Configuration for the Space Ninja antag. /// public sealed class NinjaRuleConfiguration : StationEventRuleConfiguration { /// /// List of objective prototype ids to add /// [DataField("objectives", required: true, customTypeSerializer: typeof(PrototypeIdListSerializer))] public readonly List Objectives = new(); // TODO: move to job and use job??? /// /// List of implants to inject on spawn /// [DataField("implants", required: true, customTypeSerializer: typeof(PrototypeIdListSerializer))] public readonly List Implants = new(); /// /// List of threats that can be called in /// [DataField("threats", required: true)] public readonly List Threats = new(); /// /// Sound played when making the player a ninja via antag control or ghost role /// [DataField("greetingSound", customTypeSerializer: typeof(SoundSpecifierTypeSerializer))] public SoundSpecifier? GreetingSound = new SoundPathSpecifier("/Audio/Misc/ninja_greeting.ogg"); /// /// Distance that the ninja spawns from the station's half AABB radius /// [DataField("spawnDistance")] public float SpawnDistance = 20f; } /// /// A threat that can be called in to the station by a ninja hacking a communications console. /// Generally some kind of mid-round antag, though you could make it call in scrubber backflow if you wanted to. /// You wouldn't do that, right? /// [DataDefinition] public sealed class Threat { /// /// Locale id for the announcement to be made from CentCom. /// [DataField("announcement")] public readonly string Announcement = default!; /// /// The game rule for the threat to be added, it should be able to work when added mid-round otherwise this will do nothing. /// [DataField("rule", customTypeSerializer: typeof(PrototypeIdSerializer))] public readonly string Rule = default!; }