diff --git a/Content.Server/GameTicking/Rules/AntagLoadProfileRuleSystem.cs b/Content.Server/GameTicking/Rules/AntagLoadProfileRuleSystem.cs index b93904c685..3527e2a11c 100644 --- a/Content.Server/GameTicking/Rules/AntagLoadProfileRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/AntagLoadProfileRuleSystem.cs @@ -31,16 +31,18 @@ public sealed class AntagLoadProfileRuleSystem : GameRuleSystem(SharedHumanoidAppearanceSystem.DefaultSpecies); } + if (ent.Comp.SpeciesOverride != null + && (ent.Comp.SpeciesOverrideBlacklist?.Contains(new ProtoId(species.ID)) ?? false)) + { + species = _proto.Index(ent.Comp.SpeciesOverride.Value); + } + args.Entity = Spawn(species.Prototype); _humanoid.LoadProfile(args.Entity.Value, profile?.WithSpecies(species.ID)); } diff --git a/Content.Server/GameTicking/Rules/Components/AntagLoadProfileRuleCOmponent.cs b/Content.Server/GameTicking/Rules/Components/AntagLoadProfileRuleCOmponent.cs index 0816902ad4..3a4cb5fc75 100644 --- a/Content.Server/GameTicking/Rules/Components/AntagLoadProfileRuleCOmponent.cs +++ b/Content.Server/GameTicking/Rules/Components/AntagLoadProfileRuleCOmponent.cs @@ -10,8 +10,14 @@ namespace Content.Server.GameTicking.Rules.Components; public sealed partial class AntagLoadProfileRuleComponent : Component { /// - /// If specified, the profile loaded will be made into this species. + /// If specified, the profile loaded will be made into this species if the chosen species matches the blacklist. /// [DataField] public ProtoId? SpeciesOverride; + + /// + /// List of species that trigger the override + /// + [DataField] + public HashSet>? SpeciesOverrideBlacklist; } diff --git a/Resources/Prototypes/GameRules/roundstart.yml b/Resources/Prototypes/GameRules/roundstart.yml index da198a25d0..d5cd6a3f97 100644 --- a/Resources/Prototypes/GameRules/roundstart.yml +++ b/Resources/Prototypes/GameRules/roundstart.yml @@ -82,6 +82,11 @@ - type: AntagSelection - type: AntagLoadProfileRule speciesOverride: Human + speciesOverrideBlacklist: + #Species that do not work with nukies should be included in this list. + #Once the issues are fixed the species should be removed from this list to be enabled. + #Balance concerns are not a valid reason to disable a species, except for high-impact Nukie-specific exploits. + - Vox - type: entity parent: BaseNukeopsRule