From f0cb9f05ee298108b6f0315861e4147bad5d3f08 Mon Sep 17 00:00:00 2001 From: Exp Date: Thu, 1 Oct 2020 13:48:42 +0200 Subject: [PATCH] Fix server crashing when portal is deleted (#2157) -Fix server crashing when using the teleporter --- .../Components/Movement/ServerPortalComponent.cs | 6 ++++-- .../Components/Movement/ServerTeleporterComponent.cs | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Content.Server/GameObjects/Components/Movement/ServerPortalComponent.cs b/Content.Server/GameObjects/Components/Movement/ServerPortalComponent.cs index ca948a52f7..5ed3700e3f 100644 --- a/Content.Server/GameObjects/Components/Movement/ServerPortalComponent.cs +++ b/Content.Server/GameObjects/Components/Movement/ServerPortalComponent.cs @@ -87,7 +87,7 @@ namespace Content.Server.GameObjects.Components.Movement public void TryChangeState(PortalState targetState) { - if (Owner == null) + if (Owner == null || Deleted) { return; } @@ -102,6 +102,9 @@ namespace Content.Server.GameObjects.Components.Movement private void ReleaseCooldown(IEntity entity) { + if (Owner == null || Deleted) + return; + if (ImmuneEntities.Contains(entity)) { ImmuneEntities.Remove(entity); @@ -189,7 +192,6 @@ namespace Content.Server.GameObjects.Components.Movement // Departure // Do we need to rate-limit sounds to stop ear BLAST? soundPlayer.PlayAtCoords(_departureSound, entity.Transform.Coordinates); - entity.Transform.AttachToGridOrMap(); entity.Transform.Coordinates = position; soundPlayer.PlayAtCoords(_arrivalSound, entity.Transform.Coordinates); TryChangeState(PortalState.RecentlyTeleported); diff --git a/Content.Server/GameObjects/Components/Movement/ServerTeleporterComponent.cs b/Content.Server/GameObjects/Components/Movement/ServerTeleporterComponent.cs index 2794f08c03..856d81e08b 100644 --- a/Content.Server/GameObjects/Components/Movement/ServerTeleporterComponent.cs +++ b/Content.Server/GameObjects/Components/Movement/ServerTeleporterComponent.cs @@ -222,7 +222,7 @@ namespace Content.Server.GameObjects.Components.Movement public void Teleport(IEntity user, Vector2 vector) { // Messy maybe? - var targetGrid = user.ToCoordinates(vector); + var targetGrid = user.Transform.Coordinates.WithPosition(vector); var soundPlayer = EntitySystem.Get(); // If portals use those, otherwise just move em over