diff --git a/Content.Server/Research/Components/ResearchServerComponent.cs b/Content.Server/Research/Components/ResearchServerComponent.cs index 4a9460cf8f..0b43434076 100644 --- a/Content.Server/Research/Components/ResearchServerComponent.cs +++ b/Content.Server/Research/Components/ResearchServerComponent.cs @@ -11,6 +11,12 @@ namespace Content.Server.Research.Components [ViewVariables(VVAccess.ReadWrite)] [DataField("points")] public int Points = 0; + /// + /// To encourage people to spend points, + /// will not accept passive points gain above this number for each source. + /// + [DataField("passiveLimitPerSource")] + public int PassiveLimitPerSource = 30000; [ViewVariables(VVAccess.ReadOnly)] public int Id { get; set; } [ViewVariables(VVAccess.ReadOnly)] diff --git a/Content.Server/Research/Systems/ResearchSystem.Server.cs b/Content.Server/Research/Systems/ResearchSystem.Server.cs index b563b0c4ef..76251a546f 100644 --- a/Content.Server/Research/Systems/ResearchSystem.Server.cs +++ b/Content.Server/Research/Systems/ResearchSystem.Server.cs @@ -1,4 +1,5 @@ using Content.Server.Power.EntitySystems; +using Content.Server.Station.Systems; using Content.Server.Research.Components; using Content.Shared.Research.Prototypes; @@ -6,6 +7,7 @@ namespace Content.Server.Research; public sealed partial class ResearchSystem { + [Dependency] private readonly StationSystem _stationSystem = default!; private void InitializeServer() { SubscribeLocalEvent(OnServerStartup); @@ -35,6 +37,10 @@ public sealed partial class ResearchSystem public bool RegisterServerClient(ResearchServerComponent component, ResearchClientComponent clientComponent) { + // Has to be on the same station + if (_stationSystem.GetOwningStation(component.Owner) != _stationSystem.GetOwningStation(clientComponent.Owner)) + return false; + // TODO: This is shit but I'm just trying to fix RND for now until it gets bulldozed if (TryComp(clientComponent.Owner, out var source)) { @@ -96,7 +102,8 @@ public sealed partial class ResearchSystem { var points = 0; - if (CanRun(component)) + // Is our machine powered, and are we below our limit of passive point gain? + if (CanRun(component) && component.Points < (component.PassiveLimitPerSource * component.PointSources.Count)) { foreach (var source in component.PointSources) {