Fix wallmount board dropping at random side of the wall (#21920)

* empty wallmount board at user

* change to DropNextTo

* add emptyAtUser to doors
This commit is contained in:
qwerltaz
2023-12-06 04:03:31 +01:00
committed by GitHub
parent 55c8ad04cd
commit daa70fc92c
13 changed files with 127 additions and 72 deletions

View File

@@ -3,7 +3,10 @@ using Content.Shared.Construction;
using Content.Shared.Hands.Components;
using JetBrains.Annotations;
using Robust.Server.Containers;
using Robust.Server.GameObjects;
using Robust.Shared.Containers;
using Robust.Shared.GameObjects;
using Robust.Shared.Map;
namespace Content.Server.Construction.Completions
{
@@ -14,9 +17,15 @@ namespace Content.Server.Construction.Completions
/// <summary>
/// Whether or not the user should attempt to pick up the removed entities.
/// </summary>
[DataField("pickup")]
[DataField]
public bool Pickup = false;
/// <summary>
/// Whether or not to empty the container at the user's location.
/// </summary>
[DataField]
public bool EmptyAtUser = false;
public void PerformAction(EntityUid uid, EntityUid? userUid, IEntityManager entityManager)
{
if (!entityManager.TryGetComponent(uid, out ContainerManagerComponent? containerManager))
@@ -24,6 +33,7 @@ namespace Content.Server.Construction.Completions
var containerSys = entityManager.EntitySysManager.GetEntitySystem<ContainerSystem>();
var handSys = entityManager.EntitySysManager.GetEntitySystem<HandsSystem>();
var transformSys = entityManager.EntitySysManager.GetEntitySystem<TransformSystem>();
HandsComponent? hands = null;
var pickup = Pickup && entityManager.TryGetComponent(userUid, out hands);
@@ -32,6 +42,9 @@ namespace Content.Server.Construction.Completions
{
foreach (var ent in containerSys.EmptyContainer(container, true, reparent: !pickup))
{
if (EmptyAtUser && userUid is not null)
transformSys.DropNextTo(ent, (EntityUid) userUid);
if (pickup)
handSys.PickupOrDrop(userUid, ent, handsComp: hands);
}

View File

@@ -54,6 +54,12 @@
key: walls
mode: NoSprite
- type: Occluder
- type: ContainerFill
containers:
battery-container: [ PowerCellMedium ]
- type: ContainerContainer
containers:
battery-container: !type:Container
- type: entity
id: BaseSecretDoorAssembly

View File

@@ -81,7 +81,9 @@
conditions:
- !type:EntityAnchored {}
completed:
- !type:EmptyAllContainers {}
- !type:EmptyAllContainers
pickup: true
emptyAtUser: true
steps:
- tool: Prying
doAfter: 5
@@ -102,7 +104,9 @@
conditions:
- !type:EntityAnchored {}
completed:
- !type:EmptyAllContainers {}
- !type:EmptyAllContainers
pickup: true
emptyAtUser: true
- !type:SpawnPrototype
prototype: SheetRGlass1
amount: 1
@@ -169,7 +173,9 @@
- !type:WirePanel {}
- !type:AllWiresCut
completed:
- !type:EmptyAllContainers {}
- !type:EmptyAllContainers
pickup: true
emptyAtUser: true
steps:
- tool: Prying
doAfter: 5

View File

@@ -80,7 +80,9 @@
doAfter: 0.25
- to: frame2
completed:
- !type:EmptyAllContainers {}
- !type:EmptyAllContainers
pickup: true
emptyAtUser: true
conditions:
- !type:EntityAnchored
anchored: true

View File

@@ -80,7 +80,9 @@
- !type:EntityAnchored {}
- !type:DoorWelded {}
completed:
- !type:EmptyAllContainers {}
- !type:EmptyAllContainers
pickup: true
emptyAtUser: true
steps:
- tool: Prying
doAfter: 5

View File

@@ -54,7 +54,9 @@
doAfter: 2.5
- to: assembly
completed:
- !type:EmptyAllContainers {}
- !type:EmptyAllContainers
pickup: true
emptyAtUser: true
steps:
- tool: Prying
doAfter: 1

View File

@@ -113,7 +113,9 @@
- !type:WirePanel {}
- !type:AllWiresCut
completed:
- !type:EmptyAllContainers {}
- !type:EmptyAllContainers
pickup: true
emptyAtUser: true
steps:
- tool: Anchoring
doAfter: 1
@@ -213,7 +215,9 @@
container: board
- !type:AllWiresCut
completed:
- !type:EmptyAllContainers {}
- !type:EmptyAllContainers
pickup: true
emptyAtUser: true
steps:
- tool: Anchoring
doAfter: 4

View File

@@ -70,7 +70,9 @@
- !type:ContainerNotEmpty
container: board
completed:
- !type:EmptyAllContainers {}
- !type:EmptyAllContainers
pickup: true
emptyAtUser: true
steps:
- tool: Prying
doAfter: 1
@@ -147,7 +149,9 @@
- !type:ContainerNotEmpty
container: board
completed:
- !type:EmptyAllContainers {}
- !type:EmptyAllContainers
pickup: true
emptyAtUser: true
steps:
- tool: Prying
doAfter: 1

View File

@@ -66,7 +66,9 @@
- !type:ContainerNotEmpty
container: board
completed:
- !type:EmptyAllContainers {}
- !type:EmptyAllContainers
pickup: true
emptyAtUser: true
steps:
- tool: Prying
doAfter: 1

View File

@@ -70,7 +70,9 @@
- !type:ContainerNotEmpty
container: board
completed:
- !type:EmptyAllContainers {}
- !type:EmptyAllContainers
pickup: true
emptyAtUser: true
steps:
- tool: Prying
doAfter: 1

View File

@@ -84,7 +84,9 @@
- !type:ContainerNotEmpty
container: board
completed:
- !type:EmptyAllContainers {}
- !type:EmptyAllContainers
pickup: true
emptyAtUser: true
- node: screenElectronics
edges:
@@ -101,7 +103,9 @@
- !type:ContainerNotEmpty
container: board
completed:
- !type:EmptyAllContainers {}
- !type:EmptyAllContainers
pickup: true
emptyAtUser: true
- node: brigElectronics
edges:
@@ -118,7 +122,9 @@
- !type:ContainerNotEmpty
container: board
completed:
- !type:EmptyAllContainers {}
- !type:EmptyAllContainers
pickup: true
emptyAtUser: true
- node: screenGlass
entity: TimerFrame

View File

@@ -84,7 +84,9 @@
- !type:ContainerNotEmpty
container: board
completed:
- !type:EmptyAllContainers {}
- !type:EmptyAllContainers
pickup: true
emptyAtUser: true
steps:
- tool: Prying
doAfter: 1
@@ -98,7 +100,9 @@
- !type:ContainerNotEmpty
container: board
completed:
- !type:EmptyAllContainers {}
- !type:EmptyAllContainers
pickup: true
emptyAtUser: true
steps:
- tool: Prying
doAfter: 1

View File

@@ -68,7 +68,9 @@
- !type:ContainerNotEmpty
container: board
completed:
- !type:EmptyAllContainers {}
- !type:EmptyAllContainers
pickup: true
emptyAtUser: true
steps:
- tool: Prying
doAfter: 1