diff --git a/Content.Server/GameTicking/Rules/TraitorRuleSystem.cs b/Content.Server/GameTicking/Rules/TraitorRuleSystem.cs index 29b7b91895..24f413dceb 100644 --- a/Content.Server/GameTicking/Rules/TraitorRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/TraitorRuleSystem.cs @@ -184,6 +184,9 @@ public sealed class TraitorRuleSystem : GameRuleSystem var startingBalance = _cfg.GetCVar(CCVars.TraitorStartingBalance); + if (mind.CurrentJob != null) + startingBalance = Math.Max(startingBalance - mind.CurrentJob.Prototype.AntagAdvantage, 0); + if (!_uplink.AddUplink(mind.OwnedEntity!.Value, startingBalance)) return false; diff --git a/Content.Shared/Roles/JobPrototype.cs b/Content.Shared/Roles/JobPrototype.cs index 300870bcaa..14bd3548bb 100644 --- a/Content.Shared/Roles/JobPrototype.cs +++ b/Content.Shared/Roles/JobPrototype.cs @@ -53,6 +53,13 @@ namespace Content.Shared.Roles [DataField("weight")] public int Weight { get; private set; } + /// + /// A numerical score for how much easier this job is for antagonists. + /// For traitors, reduces starting TC by this amount. Other gamemodes can use it for whatever they find fitting. + /// + [DataField("antagAdvantage")] + public int AntagAdvantage = 0; + [DataField("startingGear", customTypeSerializer: typeof(PrototypeIdSerializer))] public string? StartingGear { get; private set; }