From b45e53603db3a8169f5a80fac3f0f009d9cc4972 Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Sun, 10 Sep 2023 14:16:37 +1200 Subject: [PATCH] Remove IContainer and move functions to the container system. (#19834) --- Content.Client/Actions/ActionsSystem.cs | 4 ++-- .../Inventory/InventoryUIController.cs | 3 ++- .../Click/InteractionSystemTests.cs | 2 +- .../Unit/EntitySystems/DisposableSystem.cs | 2 +- .../Unit/EntitySystems/DisposalUnitSystem.cs | 4 ++-- .../Explosion/EntitySystems/TriggerSystem.cs | 2 +- .../EntitySystems/EventHorizonSystem.cs | 6 +++--- .../EntityConsumedByEventHorizonEvent.cs | 4 ++-- .../Events/EventHorizonConsumedEntityEvent.cs | 4 ++-- Content.Shared/Actions/SharedActionsSystem.cs | 8 ++++---- .../Body/Systems/SharedBodySystem.Organs.cs | 4 +++- .../Body/Systems/SharedBodySystem.Parts.cs | 2 +- .../Containers/ItemSlot/ItemSlotsSystem.cs | 13 +++++++----- .../EntitySystems/SharedHandsSystem.Drop.cs | 10 ++++++---- .../EntitySystems/SharedHandsSystem.Pickup.cs | 2 +- .../Implants/SharedImplanterSystem.cs | 2 +- .../Helpers/SharedUnoccludedExtensions.cs | 20 +++++++++---------- .../Inventory/InventorySystem.Equip.cs | 8 +++----- .../Borgs/Components/BorgChassisComponent.cs | 2 +- 19 files changed, 54 insertions(+), 48 deletions(-) diff --git a/Content.Client/Actions/ActionsSystem.cs b/Content.Client/Actions/ActionsSystem.cs index 2d9b777abd..709bd09483 100644 --- a/Content.Client/Actions/ActionsSystem.cs +++ b/Content.Client/Actions/ActionsSystem.cs @@ -72,7 +72,7 @@ namespace Content.Client.Actions _actionHoldersQueue.Enqueue(uid); } - protected override void AddActionInternal(EntityUid holderId, EntityUid actionId, IContainer container, ActionsComponent holder) + protected override void AddActionInternal(EntityUid holderId, EntityUid actionId, BaseContainer container, ActionsComponent holder) { // Sometimes the client receives actions from the server, before predicting that newly added components will add // their own shared actions. Just in case those systems ever decided to directly access action properties (e.g., @@ -87,7 +87,7 @@ namespace Content.Client.Actions } } - public override void AddAction(EntityUid holderId, EntityUid actionId, EntityUid? provider, ActionsComponent? holder = null, BaseActionComponent? action = null, bool dirty = true, IContainer? actionContainer = null) + public override void AddAction(EntityUid holderId, EntityUid actionId, EntityUid? provider, ActionsComponent? holder = null, BaseActionComponent? action = null, bool dirty = true, BaseContainer? actionContainer = null) { if (!Resolve(holderId, ref holder, false)) return; diff --git a/Content.Client/UserInterface/Systems/Inventory/InventoryUIController.cs b/Content.Client/UserInterface/Systems/Inventory/InventoryUIController.cs index 23b6a026ef..7b71cc28df 100644 --- a/Content.Client/UserInterface/Systems/Inventory/InventoryUIController.cs +++ b/Content.Client/UserInterface/Systems/Inventory/InventoryUIController.cs @@ -27,6 +27,7 @@ public sealed class InventoryUIController : UIController, IOnStateEntered(hoverEntity); var fits = _inventorySystem.CanEquip(player.Value, held, control.SlotName, out _, slotDef) && - container.CanInsert(held, _entities); + _container.CanInsert(held, container); hoverSprite.CopyFrom(sprite); hoverSprite.Color = fits ? new Color(0, 255, 0, 127) : new Color(255, 0, 0, 127); diff --git a/Content.IntegrationTests/Tests/Interaction/Click/InteractionSystemTests.cs b/Content.IntegrationTests/Tests/Interaction/Click/InteractionSystemTests.cs index 402569981a..b05f273265 100644 --- a/Content.IntegrationTests/Tests/Interaction/Click/InteractionSystemTests.cs +++ b/Content.IntegrationTests/Tests/Interaction/Click/InteractionSystemTests.cs @@ -341,7 +341,7 @@ namespace Content.IntegrationTests.Tests.Interaction.Click EntityUid target = default; EntityUid item = default; EntityUid containerEntity = default; - IContainer container = null; + BaseContainer container = null; await server.WaitAssertion(() => { diff --git a/Content.Server/Disposal/Unit/EntitySystems/DisposableSystem.cs b/Content.Server/Disposal/Unit/EntitySystems/DisposableSystem.cs index 83e079746e..3edc2a5fa7 100644 --- a/Content.Server/Disposal/Unit/EntitySystems/DisposableSystem.cs +++ b/Content.Server/Disposal/Unit/EntitySystems/DisposableSystem.cs @@ -57,7 +57,7 @@ namespace Content.Server.Disposal.Unit.EntitySystems if (!Resolve(uid, ref holder)) return false; - if (!holder.Container.CanInsert(toInsert)) + if (!_containerSystem.CanInsert(toInsert, holder.Container)) { return false; } diff --git a/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs b/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs index e97215f646..53e058c73e 100644 --- a/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs +++ b/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs @@ -753,10 +753,10 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem public override bool CanInsert(EntityUid uid, SharedDisposalUnitComponent component, EntityUid entity) { - if (!base.CanInsert(uid, component, entity) || component is not SharedDisposalUnitComponent serverComp) + if (!base.CanInsert(uid, component, entity)) return false; - return serverComp.Container.CanInsert(entity); + return _containerSystem.CanInsert(entity, component.Container); } /// diff --git a/Content.Server/Explosion/EntitySystems/TriggerSystem.cs b/Content.Server/Explosion/EntitySystems/TriggerSystem.cs index e5d8f69850..427edf21e3 100644 --- a/Content.Server/Explosion/EntitySystems/TriggerSystem.cs +++ b/Content.Server/Explosion/EntitySystems/TriggerSystem.cs @@ -236,7 +236,7 @@ namespace Content.Server.Explosion.EntitySystems if (user != null) { // Check if entity is bomb/mod. grenade/etc - if (_container.TryGetContainer(uid, "payload", out IContainer? container) && + if (_container.TryGetContainer(uid, "payload", out BaseContainer? container) && container.ContainedEntities.Count > 0 && TryComp(container.ContainedEntities[0], out ChemicalPayloadComponent? chemicalPayloadComponent)) { diff --git a/Content.Server/Singularity/EntitySystems/EventHorizonSystem.cs b/Content.Server/Singularity/EntitySystems/EventHorizonSystem.cs index 69d1fd7c34..fd9eb3e8c6 100644 --- a/Content.Server/Singularity/EntitySystems/EventHorizonSystem.cs +++ b/Content.Server/Singularity/EntitySystems/EventHorizonSystem.cs @@ -120,7 +120,7 @@ public sealed class EventHorizonSystem : SharedEventHorizonSystem /// /// Makes an event horizon consume a given entity. /// - public void ConsumeEntity(EntityUid hungry, EntityUid morsel, EventHorizonComponent eventHorizon, IContainer? outerContainer = null) + public void ConsumeEntity(EntityUid hungry, EntityUid morsel, EventHorizonComponent eventHorizon, BaseContainer? outerContainer = null) { if (!EntityManager.IsQueuedForDeletion(morsel) // I saw it log twice a few times for some reason? && (HasComp(morsel) @@ -140,7 +140,7 @@ public sealed class EventHorizonSystem : SharedEventHorizonSystem /// /// Makes an event horizon attempt to consume a given entity. /// - public bool AttemptConsumeEntity(EntityUid hungry, EntityUid morsel, EventHorizonComponent eventHorizon, IContainer? outerContainer = null) + public bool AttemptConsumeEntity(EntityUid hungry, EntityUid morsel, EventHorizonComponent eventHorizon, BaseContainer? outerContainer = null) { if (!CanConsumeEntity(hungry, morsel, eventHorizon)) return false; @@ -192,7 +192,7 @@ public sealed class EventHorizonSystem : SharedEventHorizonSystem /// Excludes the event horizon itself. /// All immune entities within the container will be dumped to a given container or the map/grid if that is impossible. /// - public void ConsumeEntitiesInContainer(EntityUid hungry, IContainer container, EventHorizonComponent eventHorizon, IContainer? outerContainer = null) + public void ConsumeEntitiesInContainer(EntityUid hungry, BaseContainer container, EventHorizonComponent eventHorizon, BaseContainer? outerContainer = null) { // Removing the immune entities from the container needs to be deferred until after iteration or the iterator raises an error. List immune = new(); diff --git a/Content.Server/Singularity/Events/EntityConsumedByEventHorizonEvent.cs b/Content.Server/Singularity/Events/EntityConsumedByEventHorizonEvent.cs index 84e8a8ff2b..ce5184c717 100644 --- a/Content.Server/Singularity/Events/EntityConsumedByEventHorizonEvent.cs +++ b/Content.Server/Singularity/Events/EntityConsumedByEventHorizonEvent.cs @@ -8,7 +8,7 @@ namespace Content.Server.Singularity.Events; /// [ByRefEvent] public readonly record struct EntityConsumedByEventHorizonEvent -(EntityUid entity, EntityUid eventHorizonUid, EventHorizonComponent eventHorizon, IContainer? container) +(EntityUid entity, EntityUid eventHorizonUid, EventHorizonComponent eventHorizon, BaseContainer? container) { /// /// The entity being consumed by the event horizon. @@ -29,5 +29,5 @@ public readonly record struct EntityConsumedByEventHorizonEvent /// The innermost container of the entity being consumed by the event horizon that is not also in the process of being consumed by the event horizon. /// Used to correctly dump out the contents containers that are consumed by the event horizon. /// - public readonly IContainer? Container = container; + public readonly BaseContainer? Container = container; } diff --git a/Content.Server/Singularity/Events/EventHorizonConsumedEntityEvent.cs b/Content.Server/Singularity/Events/EventHorizonConsumedEntityEvent.cs index 1934219517..d71b1da7e7 100644 --- a/Content.Server/Singularity/Events/EventHorizonConsumedEntityEvent.cs +++ b/Content.Server/Singularity/Events/EventHorizonConsumedEntityEvent.cs @@ -8,7 +8,7 @@ namespace Content.Server.Singularity.Events; /// [ByRefEvent] public readonly record struct EventHorizonConsumedEntityEvent -(EntityUid entity, EntityUid eventHorizonUid, EventHorizonComponent eventHorizon, IContainer? container) +(EntityUid entity, EntityUid eventHorizonUid, EventHorizonComponent eventHorizon, BaseContainer? container) { /// /// The entity being consumed by the event horizon. @@ -29,5 +29,5 @@ public readonly record struct EventHorizonConsumedEntityEvent /// The innermost container of the entity being consumed by the event horizon that is not also in the process of being consumed by the event horizon. /// Used to correctly dump out the contents containers that are consumed by the event horizon. /// - public readonly IContainer? Container = container; + public readonly BaseContainer? Container = container; } diff --git a/Content.Shared/Actions/SharedActionsSystem.cs b/Content.Shared/Actions/SharedActionsSystem.cs index 12e5c2260a..b281249c55 100644 --- a/Content.Shared/Actions/SharedActionsSystem.cs +++ b/Content.Shared/Actions/SharedActionsSystem.cs @@ -177,7 +177,7 @@ public abstract class SharedActionsSystem : EntitySystem protected bool TryGetContainer( EntityUid holderId, - [NotNullWhen(true)] out IContainer? container, + [NotNullWhen(true)] out BaseContainer? container, ContainerManagerComponent? containerManager = null) { return _containerSystem.TryGetContainer(holderId, ActionContainerId, out container, containerManager); @@ -185,7 +185,7 @@ public abstract class SharedActionsSystem : EntitySystem protected bool TryGetProvidedContainer( EntityUid providerId, - [NotNullWhen(true)] out IContainer? container, + [NotNullWhen(true)] out BaseContainer? container, ContainerManagerComponent? containerManager = null) { return _containerSystem.TryGetContainer(providerId, ProvidedActionContainerId, out container, containerManager); @@ -550,7 +550,7 @@ public abstract class SharedActionsSystem : EntitySystem /// Component of /// Component of /// Action container of - public virtual void AddAction(EntityUid holderId, EntityUid actionId, EntityUid? provider, ActionsComponent? holder = null, BaseActionComponent? action = null, bool dirty = true, IContainer? actionContainer = null) + public virtual void AddAction(EntityUid holderId, EntityUid actionId, EntityUid? provider, ActionsComponent? holder = null, BaseActionComponent? action = null, bool dirty = true, BaseContainer? actionContainer = null) { action ??= GetActionData(actionId); // TODO remove when action subscriptions are split up @@ -572,7 +572,7 @@ public abstract class SharedActionsSystem : EntitySystem Dirty(holderId, holder); } - protected virtual void AddActionInternal(EntityUid holderId, EntityUid actionId, IContainer container, ActionsComponent holder) + protected virtual void AddActionInternal(EntityUid holderId, EntityUid actionId, BaseContainer container, ActionsComponent holder) { container.Insert(actionId); holder.Actions.Add(actionId); diff --git a/Content.Shared/Body/Systems/SharedBodySystem.Organs.cs b/Content.Shared/Body/Systems/SharedBodySystem.Organs.cs index dbfadc6a0f..292864839a 100644 --- a/Content.Shared/Body/Systems/SharedBodySystem.Organs.cs +++ b/Content.Shared/Body/Systems/SharedBodySystem.Organs.cs @@ -12,6 +12,8 @@ namespace Content.Shared.Body.Systems; public partial class SharedBodySystem { + [Dependency] private readonly SharedContainerSystem _container = default!; + private void InitializeOrgans() { SubscribeLocalEvent(OnOrganGetState); @@ -35,7 +37,7 @@ public partial class SharedBodySystem slot.Child == null && Resolve(organId.Value, ref organ, false) && Containers.TryGetContainer(slot.Parent, BodyContainerId, out var container) && - container.CanInsert(organId.Value); + _container.CanInsert(organId.Value, container); } private void OnOrganGetState(EntityUid uid, OrganComponent organ, ref ComponentGetState args) diff --git a/Content.Shared/Body/Systems/SharedBodySystem.Parts.cs b/Content.Shared/Body/Systems/SharedBodySystem.Parts.cs index 8c55fe9cdd..f86c4a8bfc 100644 --- a/Content.Shared/Body/Systems/SharedBodySystem.Parts.cs +++ b/Content.Shared/Body/Systems/SharedBodySystem.Parts.cs @@ -171,7 +171,7 @@ public partial class SharedBodySystem Resolve(partId.Value, ref part, false) && (slot.Type == null || slot.Type == part.PartType) && Containers.TryGetContainer(slot.Parent, BodyContainerId, out var container) && - container.CanInsert(partId.Value); + _container.CanInsert(partId.Value, container); } public virtual bool AttachPart( diff --git a/Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs b/Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs index 1e56d6936b..f69e8d4d2f 100644 --- a/Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs +++ b/Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs @@ -246,6 +246,9 @@ namespace Content.Shared.Containers.ItemSlots /// public bool CanInsert(EntityUid uid, EntityUid usedUid, EntityUid? user, ItemSlot slot, bool swap = false, EntityUid? popup = null) { + if (slot.ContainerSlot == null) + return false; + if (slot.Locked) return false; @@ -265,7 +268,7 @@ namespace Content.Shared.Containers.ItemSlots if (ev.Cancelled) return false; - return slot.ContainerSlot?.CanInsertIfEmpty(usedUid, EntityManager) ?? false; + return _containers.CanInsert(usedUid, slot.ContainerSlot, assumeEmpty: true); } /// @@ -325,16 +328,16 @@ namespace Content.Shared.Containers.ItemSlots public bool CanEject(EntityUid uid, EntityUid? user, ItemSlot slot) { - if (slot.Locked || slot.Item == null) + if (slot.Locked || slot.ContainerSlot?.ContainedEntity is not {} item) return false; - var ev = new ItemSlotEjectAttemptEvent(uid, slot.Item.Value, user, slot); + var ev = new ItemSlotEjectAttemptEvent(uid, item, user, slot); RaiseLocalEvent(uid, ref ev); - RaiseLocalEvent(slot.Item.Value, ref ev); + RaiseLocalEvent(item, ref ev); if (ev.Cancelled) return false; - return slot.ContainerSlot?.CanRemove(slot.Item.Value, EntityManager) ?? false; + return _containers.CanRemove(item, slot.ContainerSlot); } /// diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs index 87edd47282..e43f2561a1 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs @@ -8,6 +8,8 @@ namespace Content.Shared.Hands.EntitySystems; public abstract partial class SharedHandsSystem : EntitySystem { + [Dependency] private readonly SharedContainerSystem _container = default!; + private void InitializeDrop() { SubscribeLocalEvent(HandleEntityRemoved); @@ -32,10 +34,10 @@ public abstract partial class SharedHandsSystem : EntitySystem /// public bool CanDropHeld(EntityUid uid, Hand hand, bool checkActionBlocker = true) { - if (hand.HeldEntity == null) + if (hand.Container?.ContainedEntity is not {} held) return false; - if (!hand.Container!.CanRemove(hand.HeldEntity.Value, EntityManager)) + if (!_container.CanRemove(held, hand.Container)) return false; if (checkActionBlocker && !_actionBlocker.CanDrop(uid)) @@ -110,7 +112,7 @@ public abstract partial class SharedHandsSystem : EntitySystem /// /// Attempts to move a held item from a hand into a container that is not another hand, without dropping it on the floor in-between. /// - public bool TryDropIntoContainer(EntityUid uid, EntityUid entity, IContainer targetContainer, bool checkActionBlocker = true, HandsComponent? handsComp = null) + public bool TryDropIntoContainer(EntityUid uid, EntityUid entity, BaseContainer targetContainer, bool checkActionBlocker = true, HandsComponent? handsComp = null) { if (!Resolve(uid, ref handsComp)) return false; @@ -121,7 +123,7 @@ public abstract partial class SharedHandsSystem : EntitySystem if (!CanDropHeld(uid, hand, checkActionBlocker)) return false; - if (!targetContainer.CanInsert(entity, EntityManager)) + if (!_container.CanInsert(entity, targetContainer)) return false; DoDrop(uid, hand, false, handsComp); diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs index eaa10ed077..e62723df06 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs @@ -181,7 +181,7 @@ public abstract partial class SharedHandsSystem : EntitySystem return false; // check can insert (including raising attempt events). - return handContainer.CanInsert(entity, EntityManager); + return _containerSystem.CanInsert(entity, handContainer); } /// diff --git a/Content.Shared/Implants/SharedImplanterSystem.cs b/Content.Shared/Implants/SharedImplanterSystem.cs index 6d0a65f238..1cf9f44663 100644 --- a/Content.Shared/Implants/SharedImplanterSystem.cs +++ b/Content.Shared/Implants/SharedImplanterSystem.cs @@ -111,7 +111,7 @@ public abstract class SharedImplanterSystem : EntitySystem continue; //Don't remove a permanent implant and look for the next that can be drawn - if (!implantContainer.CanRemove(implant)) + if (!_container.CanRemove(implant, implantContainer)) { var implantName = Identity.Entity(implant, EntityManager); var targetName = Identity.Entity(target, EntityManager); diff --git a/Content.Shared/Interaction/Helpers/SharedUnoccludedExtensions.cs b/Content.Shared/Interaction/Helpers/SharedUnoccludedExtensions.cs index 0a13fc4f1b..9ea48a89c8 100644 --- a/Content.Shared/Interaction/Helpers/SharedUnoccludedExtensions.cs +++ b/Content.Shared/Interaction/Helpers/SharedUnoccludedExtensions.cs @@ -32,7 +32,7 @@ namespace Content.Shared.Interaction.Helpers public static bool InRangeUnOccluded( this EntityUid origin, - IContainer other, + BaseContainer other, float range = InteractionRange, Ignored? predicate = null, bool ignoreInsideBlocker = true) @@ -90,7 +90,7 @@ namespace Content.Shared.Interaction.Helpers public static bool InRangeUnOccluded( this IComponent origin, - IContainer other, + BaseContainer other, float range = InteractionRange, Ignored? predicate = null, bool ignoreInsideBlocker = true) @@ -130,7 +130,7 @@ namespace Content.Shared.Interaction.Helpers #region Containers public static bool InRangeUnOccluded( - this IContainer origin, + this BaseContainer origin, EntityUid other, float range = InteractionRange, Ignored? predicate = null, @@ -143,7 +143,7 @@ namespace Content.Shared.Interaction.Helpers } public static bool InRangeUnOccluded( - this IContainer origin, + this BaseContainer origin, IComponent other, float range = InteractionRange, Ignored? predicate = null, @@ -155,8 +155,8 @@ namespace Content.Shared.Interaction.Helpers } public static bool InRangeUnOccluded( - this IContainer origin, - IContainer other, + this BaseContainer origin, + BaseContainer other, float range = InteractionRange, Ignored? predicate = null, bool ignoreInsideBlocker = true) @@ -169,7 +169,7 @@ namespace Content.Shared.Interaction.Helpers } public static bool InRangeUnOccluded( - this IContainer origin, + this BaseContainer origin, EntityCoordinates other, float range = InteractionRange, Ignored? predicate = null, @@ -181,7 +181,7 @@ namespace Content.Shared.Interaction.Helpers } public static bool InRangeUnOccluded( - this IContainer origin, + this BaseContainer origin, MapCoordinates other, float range = InteractionRange, Ignored? predicate = null, @@ -226,7 +226,7 @@ namespace Content.Shared.Interaction.Helpers public static bool InRangeUnOccluded( this EntityCoordinates origin, - IContainer other, + BaseContainer other, float range = InteractionRange, Ignored? predicate = null, bool ignoreInsideBlocker = true) @@ -304,7 +304,7 @@ namespace Content.Shared.Interaction.Helpers public static bool InRangeUnOccluded( this MapCoordinates origin, - IContainer other, + BaseContainer other, float range = InteractionRange, Ignored? predicate = null, bool ignoreInsideBlocker = true) diff --git a/Content.Shared/Inventory/InventorySystem.Equip.cs b/Content.Shared/Inventory/InventorySystem.Equip.cs index 25dcf56921..f3181a87b1 100644 --- a/Content.Shared/Inventory/InventorySystem.Equip.cs +++ b/Content.Shared/Inventory/InventorySystem.Equip.cs @@ -360,7 +360,7 @@ public abstract partial class InventorySystem } //we need to do this to make sure we are 100% removing this entity, since we are now dropping dependant slots - if (!force && !slotContainer.CanRemove(removedItem.Value)) + if (!force && !_containerSystem.CanRemove(removedItem.Value, slotContainer)) return false; foreach (var slotDef in GetSlots(target, inventory)) @@ -426,14 +426,12 @@ public abstract partial class InventorySystem if ((containerSlot == null || slotDefinition == null) && !TryGetSlotContainer(target, slot, out containerSlot, out slotDefinition, inventory)) return false; - if (containerSlot.ContainedEntity == null) + if (containerSlot.ContainedEntity is not {} itemUid) return false; - if (!containerSlot.ContainedEntity.HasValue || !containerSlot.CanRemove(containerSlot.ContainedEntity.Value)) + if (!_containerSystem.CanRemove(itemUid, containerSlot)) return false; - var itemUid = containerSlot.ContainedEntity.Value; - // make sure the user can actually reach the target if (!CanAccess(actor, target, itemUid)) { diff --git a/Content.Shared/Silicons/Borgs/Components/BorgChassisComponent.cs b/Content.Shared/Silicons/Borgs/Components/BorgChassisComponent.cs index 36441b50ad..71d3a7bd16 100644 --- a/Content.Shared/Silicons/Borgs/Components/BorgChassisComponent.cs +++ b/Content.Shared/Silicons/Borgs/Components/BorgChassisComponent.cs @@ -33,7 +33,7 @@ public sealed partial class BorgChassisComponent : Component public string BrainContainerId = "borg_brain"; [ViewVariables(VVAccess.ReadWrite)] - public ContainerSlot BrainContainer = new(); + public ContainerSlot BrainContainer = default!; public EntityUid? BrainEntity => BrainContainer.ContainedEntity; #endregion