From 342ff5f43b540998b0bb0e12af543809ba58fc2d Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto Date: Thu, 4 Mar 2021 16:57:09 +0100 Subject: [PATCH] Fix server crash when attempting to deploy AME part in space or in your hands. --- .../Components/Power/AME/AMEPartComponent.cs | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/Content.Server/GameObjects/Components/Power/AME/AMEPartComponent.cs b/Content.Server/GameObjects/Components/Power/AME/AMEPartComponent.cs index 2c39dc78ff..a69dbfe12c 100644 --- a/Content.Server/GameObjects/Components/Power/AME/AMEPartComponent.cs +++ b/Content.Server/GameObjects/Components/Power/AME/AMEPartComponent.cs @@ -32,25 +32,26 @@ namespace Content.Server.GameObjects.Components.Power.AME return true; } - if (args.Using.TryGetComponent(out var multitool) && multitool.Qualities == ToolQuality.Multitool) + if (!args.Using.TryGetComponent(out var multitool) || multitool.Qualities != ToolQuality.Multitool) + return true; + + if (!_mapManager.TryGetGrid(args.ClickLocation.GetGridId(_serverEntityManager), out var mapGrid)) + return false; // No AME in space. + + var snapPos = mapGrid.SnapGridCellFor(args.ClickLocation, SnapGridOffset.Center); + if (mapGrid.GetSnapGridCell(snapPos, SnapGridOffset.Center).Any(sc => sc.Owner.HasComponent())) { - - var mapGrid = _mapManager.GetGrid(args.ClickLocation.GetGridId(_serverEntityManager)); - var snapPos = mapGrid.SnapGridCellFor(args.ClickLocation, SnapGridOffset.Center); - if (mapGrid.GetSnapGridCell(snapPos, SnapGridOffset.Center).Any(sc => sc.Owner.HasComponent())) - { - Owner.PopupMessage(args.User, Loc.GetString("Shielding is already there!")); - return true; - } - - var ent = _serverEntityManager.SpawnEntity("AMEShielding", mapGrid.GridTileToLocal(snapPos)); - ent.Transform.LocalRotation = Owner.Transform.LocalRotation; - - EntitySystem.Get().PlayFromEntity(_unwrap, Owner); - - Owner.Delete(); + Owner.PopupMessage(args.User, Loc.GetString("Shielding is already there!")); + return true; } + var ent = _serverEntityManager.SpawnEntity("AMEShielding", mapGrid.GridTileToLocal(snapPos)); + ent.Transform.LocalRotation = Owner.Transform.LocalRotation; + + EntitySystem.Get().PlayFromEntity(_unwrap, Owner); + + Owner.Delete(); + return true; } }