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)))