From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
Date: Sun, 5 Feb 2023 19:44:35 +0000 (-0500)
Subject: fix ripleys being able to grab everything (#13944)
X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=587df4c6257de6054dfdf473dabcd0aa6fbe3f68;p=space-station-14.git
fix ripleys being able to grab everything (#13944)
Co-authored-by: AJCM-git <60196617+AJCM-git@users.noreply.github.com>
---
diff --git a/Content.Server/Mech/Equipment/EntitySystems/MechGrabberSystem.cs b/Content.Server/Mech/Equipment/EntitySystems/MechGrabberSystem.cs
index e81c40b58f..e0a59ed8ce 100644
--- a/Content.Server/Mech/Equipment/EntitySystems/MechGrabberSystem.cs
+++ b/Content.Server/Mech/Equipment/EntitySystems/MechGrabberSystem.cs
@@ -4,12 +4,12 @@ using Content.Server.Interaction;
using Content.Server.Mech.Components;
using Content.Server.Mech.Equipment.Components;
using Content.Server.Mech.Systems;
-using Content.Shared.Construction.Components;
using Content.Shared.Interaction;
using Content.Shared.Mech;
using Content.Shared.Mech.Equipment.Components;
using Content.Shared.Mobs.Components;
using Content.Shared.Wall;
+using Robust.Server.GameObjects;
using Robust.Shared.Containers;
using Robust.Shared.Map;
using Robust.Shared.Physics;
@@ -27,6 +27,7 @@ public sealed class MechGrabberSystem : EntitySystem
[Dependency] private readonly DoAfterSystem _doAfter = default!;
[Dependency] private readonly InteractionSystem _interaction = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!;
+ [Dependency] private readonly TransformSystem _transform = default!;
///
public override void Initialize()
@@ -78,8 +79,10 @@ public sealed class MechGrabberSystem : EntitySystem
var mechxform = Transform(mech);
var xform = Transform(toRemove);
xform.AttachToGridOrMap();
- xform.WorldPosition = mechxform.WorldPosition + mechxform.WorldRotation.RotateVec(component.DepositOffset);
- xform.WorldRotation = Angle.Zero;
+
+ var offset = _transform.GetWorldPosition(mechxform) + _transform.GetWorldRotation(mechxform).RotateVec(component.DepositOffset);
+ _transform.SetWorldPosition(xform, offset);
+ _transform.SetWorldRotation(xform, Angle.Zero);
_mech.UpdateUserInterface(mech);
}
@@ -122,13 +125,16 @@ public sealed class MechGrabberSystem : EntitySystem
if (args.Handled || args.Target is not {} target)
return;
- if (TryComp(uid, out var physics) && physics.BodyType == BodyType.Static && !HasComp(uid) ||
+ if (TryComp(target, out var physics) && physics.BodyType == BodyType.Static ||
HasComp(target) ||
HasComp(target))
{
return;
}
+ if (Transform(target).Anchored)
+ return;
+
if (component.ItemContainer.ContainedEntities.Count >= component.MaxContents)
return;