]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Fix anomaly vessels not generating points (#14137)
authorNemanja <98561806+EmoGarbage404@users.noreply.github.com>
Thu, 16 Feb 2023 04:16:20 +0000 (23:16 -0500)
committerGitHub <noreply@github.com>
Thu, 16 Feb 2023 04:16:20 +0000 (00:16 -0400)
Content.Server/Anomaly/AnomalySystem.Vessel.cs
Content.Server/Research/Systems/ResearchSystem.Client.cs
Content.Server/Research/Systems/ResearchSystem.Server.cs
Content.Server/Research/Systems/ResearchSystem.cs

index 4809a613fd7357735ae57ef79dec7a2ff6de4282..8d2710280a13582dd9a286e42af620f59fde2fd0 100644 (file)
@@ -88,10 +88,7 @@ public sealed partial class AnomalySystem
     private void OnVesselGetPointsPerSecond(EntityUid uid, AnomalyVesselComponent component, ref ResearchServerGetPointsPerSecondEvent args)
     {
         if (!this.IsPowered(uid, EntityManager) || component.Anomaly is not {} anomaly)
-        {
-            args.Points = 0;
             return;
-        }
 
         args.Points += (int) (GetAnomalyPointValue(anomaly) * component.PointMultiplier);
     }
index 180396bd8d7b82de966330323b8ba2d3afbd7f4c..d1041fb1c3d2cf94a1ce1df4bd19ece355101c29 100644 (file)
@@ -10,7 +10,7 @@ public sealed partial class ResearchSystem
 {
     private void InitializeClient()
     {
-        SubscribeLocalEvent<ResearchClientComponent, ComponentStartup>(OnClientStartup);
+        SubscribeLocalEvent<ResearchClientComponent, MapInitEvent>(OnClientMapInit);
         SubscribeLocalEvent<ResearchClientComponent, ComponentShutdown>(OnClientShutdown);
         SubscribeLocalEvent<ResearchClientComponent, BoundUIOpenedEvent>(OnClientUIOpen);
         SubscribeLocalEvent<ResearchClientComponent, ConsoleServerSyncMessage>(OnConsoleSync);
@@ -26,12 +26,11 @@ public sealed partial class ResearchSystem
 
     private void OnClientSelected(EntityUid uid, ResearchClientComponent component, ResearchClientServerSelectedMessage args)
     {
-        var server = GetServerById(args.ServerId);
-        if (server == null)
+        if (!TryGetServerById(args.ServerId, out var serveruid, out var serverComponent))
             return;
 
-        UnregisterClient(uid, clientComponent: component);
-        RegisterClient(uid, server.Owner, component, server);
+        UnregisterClient(uid, component);
+        RegisterClient(uid, serveruid.Value, component, serverComponent);
     }
 
     private void OnClientDeselected(EntityUid uid, ResearchClientComponent component, ResearchClientServerDeselectedMessage args)
@@ -66,7 +65,7 @@ public sealed partial class ResearchSystem
         UpdateClientInterface(uid, component);
     }
 
-    private void OnClientStartup(EntityUid uid, ResearchClientComponent component, ComponentStartup args)
+    private void OnClientMapInit(EntityUid uid, ResearchClientComponent component, MapInitEvent args)
     {
         var allServers = EntityQuery<ResearchServerComponent>(true).ToArray();
         if (allServers.Length > 0)
index acaf70e07d21fb88142d1b108a83153d0d78f34a..d7a9c5fafb4706ac3d6a5a502d5d2b5fa55b09ad 100644 (file)
@@ -140,7 +140,7 @@ public sealed partial class ResearchSystem
         if (!CanRun(uid))
             return points;
 
-        var ev = new ResearchServerGetPointsPerSecondEvent(component.Owner, points);
+        var ev = new ResearchServerGetPointsPerSecondEvent(uid, points);
         foreach (var client in component.Clients)
         {
             RaiseLocalEvent(client, ref ev);
index dcd8710cbd24337f08905cd85438b01564beca6d..0e1630b788e649698fafd0495fffeac8465e7716 100644 (file)
@@ -1,3 +1,4 @@
+using System.Diagnostics.CodeAnalysis;
 using System.Linq;
 using Content.Shared.Research.Components;
 using Content.Shared.Research.Systems;
@@ -28,16 +29,22 @@ namespace Content.Server.Research.Systems
         /// Gets a server based on it's unique numeric id.
         /// </summary>
         /// <param name="id"></param>
+        /// <param name="serverUid"></param>
+        /// <param name="serverComponent"></param>
         /// <returns></returns>
-        public ResearchServerComponent? GetServerById(int id)
+        public bool TryGetServerById(int id, [NotNullWhen(true)] out EntityUid? serverUid, [NotNullWhen(true)] out ResearchServerComponent? serverComponent)
         {
+            serverUid = null;
+            serverComponent = null;
             foreach (var server in EntityQuery<ResearchServerComponent>())
             {
-                if (server.Id == id)
-                    return server;
+                if (server.Id != id)
+                    continue;
+                serverUid = server.Owner;
+                serverComponent = server;
+                return true;
             }
-
-            return null;
+            return false;
         }
 
         /// <summary>