From b8338bc64c978819facdffaa3f7b04c385443c57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Aguilera=20Puerto?= Date: Sun, 7 Jun 2020 15:32:38 +0200 Subject: [PATCH] Fix exceptions on round restarts due to accessing deleted entities' components --- .../Components/Markers/ConditionalSpawnerComponent.cs | 3 ++- Content.Server/GameObjects/Components/Power/PowerDevice.cs | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Content.Server/GameObjects/Components/Markers/ConditionalSpawnerComponent.cs b/Content.Server/GameObjects/Components/Markers/ConditionalSpawnerComponent.cs index a97f899776..a41c72b31d 100644 --- a/Content.Server/GameObjects/Components/Markers/ConditionalSpawnerComponent.cs +++ b/Content.Server/GameObjects/Components/Markers/ConditionalSpawnerComponent.cs @@ -91,7 +91,8 @@ namespace Content.Server.GameObjects.Components.Markers return; } - _entityManager.SpawnEntity(_robustRandom.Pick(Prototypes), Owner.Transform.GridPosition); + if(!Owner.Deleted) + _entityManager.SpawnEntity(_robustRandom.Pick(Prototypes), Owner.Transform.GridPosition); } public void MapInit() diff --git a/Content.Server/GameObjects/Components/Power/PowerDevice.cs b/Content.Server/GameObjects/Components/Power/PowerDevice.cs index ba986fa324..03e7bd363a 100644 --- a/Content.Server/GameObjects/Components/Power/PowerDevice.cs +++ b/Content.Server/GameObjects/Components/Power/PowerDevice.cs @@ -286,7 +286,7 @@ namespace Content.Server.GameObjects.Components.Power private void ConnectToBestProvider() { //Any values we can connect to or are we already connected to a node, cancel! - if (!AvailableProviders.Any() || Connected == DrawTypes.Node || Deleted) + if (!AvailableProviders.Any() || Connected == DrawTypes.Node || Deleted || Owner.Deleted) return; //Get the starting value for our loop @@ -300,6 +300,9 @@ namespace Content.Server.GameObjects.Components.Power foreach (var availprovider in AvailableProviders) { + if (availprovider.Owner.Deleted) + continue; + //Find distance to new provider var distance = (availprovider.Owner.GetComponent().WorldPosition - position).LengthSquared;