From f797483a89fc6a7d1a8700bbc0fd85d5817fa4db Mon Sep 17 00:00:00 2001
From: HellCatten <126400932+HellCatten@users.noreply.github.com>
Date: Fri, 30 Aug 2024 22:33:35 +0300
Subject: [PATCH] Changed ContainingSlot/SlotDef checks. Added ForcePickup.
---
.../Storage/Components/MagnetPickupComponent.cs | 6 +++---
.../Storage/EntitySystems/MagnetPickupSystem.cs | 15 ++++++++-------
2 files changed, 11 insertions(+), 10 deletions(-)
diff --git a/Content.Shared/Storage/Components/MagnetPickupComponent.cs b/Content.Shared/Storage/Components/MagnetPickupComponent.cs
index 3467439a6d..b6bbe0438e 100644
--- a/Content.Shared/Storage/Components/MagnetPickupComponent.cs
+++ b/Content.Shared/Storage/Components/MagnetPickupComponent.cs
@@ -13,10 +13,10 @@ public sealed partial class MagnetPickupComponent : Component
public TimeSpan NextScan = TimeSpan.Zero;
///
- /// What container slot the magnet needs to be in to work.
+ /// If true, ignores SlotFlags and can magnet pickup on hands/ground.
///
- [ViewVariables(VVAccess.ReadWrite), DataField("slotFlags")]
- public SlotFlags SlotFlags = SlotFlags.BELT;
+ [ViewVariables(VVAccess.ReadWrite)]
+ public bool ForcePickup = true;
[ViewVariables(VVAccess.ReadWrite), DataField("range")]
public float Range = 1f;
diff --git a/Content.Shared/Storage/EntitySystems/MagnetPickupSystem.cs b/Content.Shared/Storage/EntitySystems/MagnetPickupSystem.cs
index dc87aee3d7..c7398f0fc2 100644
--- a/Content.Shared/Storage/EntitySystems/MagnetPickupSystem.cs
+++ b/Content.Shared/Storage/EntitySystems/MagnetPickupSystem.cs
@@ -22,7 +22,7 @@ public sealed class MagnetPickupSystem : EntitySystem
[Dependency] private readonly SharedTransformSystem _transform = default!;
[Dependency] private readonly SharedStorageSystem _storage = default!;
[Dependency] private readonly SharedItemToggleSystem _itemToggle = default!; // WD EDIT
- [Dependency] private readonly SharedItemSystem _item = default!;
+ [Dependency] private readonly SharedItemSystem _item = default!; // White Dream
private static readonly TimeSpan ScanDelay = TimeSpan.FromSeconds(1);
@@ -32,7 +32,7 @@ public override void Initialize()
{
base.Initialize();
_physicsQuery = GetEntityQuery();
- SubscribeLocalEvent(ToggleDone);
+ SubscribeLocalEvent(ToggleDone); // White Dream
SubscribeLocalEvent(onExamined); // WD EDIT
SubscribeLocalEvent(OnMagnetMapInit);
}
@@ -42,7 +42,7 @@ private void OnMagnetMapInit(EntityUid uid, MagnetPickupComponent component, Map
component.NextScan = _timing.CurTime;
}
- //WD EDIT
+ //WD EDIT start
private void onExamined(Entity entity, ref ExaminedEvent args)
{
var onMsg = _itemToggle.IsActivated(entity.Owner)
@@ -55,6 +55,7 @@ private void ToggleDone(Entity entity, ref ItemToggledEve
{
_item.SetHeldPrefix(entity.Owner, args.Activated ? "on" : "off");
}
+ //WD EDIT end
public override void Update(float frameTime)
{
@@ -77,11 +78,11 @@ public override void Update(float frameTime)
comp.NextScan += ScanDelay;
- if (!_inventory.TryGetContainingSlot((uid, xform, meta), out var slotDef))
- continue;
-
- if ((slotDef.SlotFlags & comp.SlotFlags) == 0x0)
+ // WD EDIT START. Added ForcePickup.
+ if (!comp.ForcePickup &&
+ !_inventory.TryGetContainingSlot((uid, xform, meta), out var slotDef))
continue;
+ //WD EDIT END.
// No space
if (!_storage.HasSpace((uid, storage)))