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:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -80,7 +80,9 @@
|
||||
doAfter: 0.25
|
||||
- to: frame2
|
||||
completed:
|
||||
- !type:EmptyAllContainers {}
|
||||
- !type:EmptyAllContainers
|
||||
pickup: true
|
||||
emptyAtUser: true
|
||||
conditions:
|
||||
- !type:EntityAnchored
|
||||
anchored: true
|
||||
|
||||
@@ -80,7 +80,9 @@
|
||||
- !type:EntityAnchored {}
|
||||
- !type:DoorWelded {}
|
||||
completed:
|
||||
- !type:EmptyAllContainers {}
|
||||
- !type:EmptyAllContainers
|
||||
pickup: true
|
||||
emptyAtUser: true
|
||||
steps:
|
||||
- tool: Prying
|
||||
doAfter: 5
|
||||
|
||||
@@ -54,7 +54,9 @@
|
||||
doAfter: 2.5
|
||||
- to: assembly
|
||||
completed:
|
||||
- !type:EmptyAllContainers {}
|
||||
- !type:EmptyAllContainers
|
||||
pickup: true
|
||||
emptyAtUser: true
|
||||
steps:
|
||||
- tool: Prying
|
||||
doAfter: 1
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -66,7 +66,9 @@
|
||||
- !type:ContainerNotEmpty
|
||||
container: board
|
||||
completed:
|
||||
- !type:EmptyAllContainers {}
|
||||
- !type:EmptyAllContainers
|
||||
pickup: true
|
||||
emptyAtUser: true
|
||||
steps:
|
||||
- tool: Prying
|
||||
doAfter: 1
|
||||
|
||||
@@ -70,7 +70,9 @@
|
||||
- !type:ContainerNotEmpty
|
||||
container: board
|
||||
completed:
|
||||
- !type:EmptyAllContainers {}
|
||||
- !type:EmptyAllContainers
|
||||
pickup: true
|
||||
emptyAtUser: true
|
||||
steps:
|
||||
- tool: Prying
|
||||
doAfter: 1
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -68,7 +68,9 @@
|
||||
- !type:ContainerNotEmpty
|
||||
container: board
|
||||
completed:
|
||||
- !type:EmptyAllContainers {}
|
||||
- !type:EmptyAllContainers
|
||||
pickup: true
|
||||
emptyAtUser: true
|
||||
steps:
|
||||
- tool: Prying
|
||||
doAfter: 1
|
||||
|
||||
Reference in New Issue
Block a user