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 Content.Shared.Hands.Components;
|
||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
using Robust.Server.Containers;
|
using Robust.Server.Containers;
|
||||||
|
using Robust.Server.GameObjects;
|
||||||
using Robust.Shared.Containers;
|
using Robust.Shared.Containers;
|
||||||
|
using Robust.Shared.GameObjects;
|
||||||
|
using Robust.Shared.Map;
|
||||||
|
|
||||||
namespace Content.Server.Construction.Completions
|
namespace Content.Server.Construction.Completions
|
||||||
{
|
{
|
||||||
@@ -14,9 +17,15 @@ namespace Content.Server.Construction.Completions
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Whether or not the user should attempt to pick up the removed entities.
|
/// Whether or not the user should attempt to pick up the removed entities.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[DataField("pickup")]
|
[DataField]
|
||||||
public bool Pickup = false;
|
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)
|
public void PerformAction(EntityUid uid, EntityUid? userUid, IEntityManager entityManager)
|
||||||
{
|
{
|
||||||
if (!entityManager.TryGetComponent(uid, out ContainerManagerComponent? containerManager))
|
if (!entityManager.TryGetComponent(uid, out ContainerManagerComponent? containerManager))
|
||||||
@@ -24,6 +33,7 @@ namespace Content.Server.Construction.Completions
|
|||||||
|
|
||||||
var containerSys = entityManager.EntitySysManager.GetEntitySystem<ContainerSystem>();
|
var containerSys = entityManager.EntitySysManager.GetEntitySystem<ContainerSystem>();
|
||||||
var handSys = entityManager.EntitySysManager.GetEntitySystem<HandsSystem>();
|
var handSys = entityManager.EntitySysManager.GetEntitySystem<HandsSystem>();
|
||||||
|
var transformSys = entityManager.EntitySysManager.GetEntitySystem<TransformSystem>();
|
||||||
|
|
||||||
HandsComponent? hands = null;
|
HandsComponent? hands = null;
|
||||||
var pickup = Pickup && entityManager.TryGetComponent(userUid, out hands);
|
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))
|
foreach (var ent in containerSys.EmptyContainer(container, true, reparent: !pickup))
|
||||||
{
|
{
|
||||||
|
if (EmptyAtUser && userUid is not null)
|
||||||
|
transformSys.DropNextTo(ent, (EntityUid) userUid);
|
||||||
|
|
||||||
if (pickup)
|
if (pickup)
|
||||||
handSys.PickupOrDrop(userUid, ent, handsComp: hands);
|
handSys.PickupOrDrop(userUid, ent, handsComp: hands);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,6 +54,12 @@
|
|||||||
key: walls
|
key: walls
|
||||||
mode: NoSprite
|
mode: NoSprite
|
||||||
- type: Occluder
|
- type: Occluder
|
||||||
|
- type: ContainerFill
|
||||||
|
containers:
|
||||||
|
battery-container: [ PowerCellMedium ]
|
||||||
|
- type: ContainerContainer
|
||||||
|
containers:
|
||||||
|
battery-container: !type:Container
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: BaseSecretDoorAssembly
|
id: BaseSecretDoorAssembly
|
||||||
|
|||||||
@@ -81,7 +81,9 @@
|
|||||||
conditions:
|
conditions:
|
||||||
- !type:EntityAnchored {}
|
- !type:EntityAnchored {}
|
||||||
completed:
|
completed:
|
||||||
- !type:EmptyAllContainers {}
|
- !type:EmptyAllContainers
|
||||||
|
pickup: true
|
||||||
|
emptyAtUser: true
|
||||||
steps:
|
steps:
|
||||||
- tool: Prying
|
- tool: Prying
|
||||||
doAfter: 5
|
doAfter: 5
|
||||||
@@ -102,7 +104,9 @@
|
|||||||
conditions:
|
conditions:
|
||||||
- !type:EntityAnchored {}
|
- !type:EntityAnchored {}
|
||||||
completed:
|
completed:
|
||||||
- !type:EmptyAllContainers {}
|
- !type:EmptyAllContainers
|
||||||
|
pickup: true
|
||||||
|
emptyAtUser: true
|
||||||
- !type:SpawnPrototype
|
- !type:SpawnPrototype
|
||||||
prototype: SheetRGlass1
|
prototype: SheetRGlass1
|
||||||
amount: 1
|
amount: 1
|
||||||
@@ -169,7 +173,9 @@
|
|||||||
- !type:WirePanel {}
|
- !type:WirePanel {}
|
||||||
- !type:AllWiresCut
|
- !type:AllWiresCut
|
||||||
completed:
|
completed:
|
||||||
- !type:EmptyAllContainers {}
|
- !type:EmptyAllContainers
|
||||||
|
pickup: true
|
||||||
|
emptyAtUser: true
|
||||||
steps:
|
steps:
|
||||||
- tool: Prying
|
- tool: Prying
|
||||||
doAfter: 5
|
doAfter: 5
|
||||||
|
|||||||
@@ -80,7 +80,9 @@
|
|||||||
doAfter: 0.25
|
doAfter: 0.25
|
||||||
- to: frame2
|
- to: frame2
|
||||||
completed:
|
completed:
|
||||||
- !type:EmptyAllContainers {}
|
- !type:EmptyAllContainers
|
||||||
|
pickup: true
|
||||||
|
emptyAtUser: true
|
||||||
conditions:
|
conditions:
|
||||||
- !type:EntityAnchored
|
- !type:EntityAnchored
|
||||||
anchored: true
|
anchored: true
|
||||||
|
|||||||
@@ -80,7 +80,9 @@
|
|||||||
- !type:EntityAnchored {}
|
- !type:EntityAnchored {}
|
||||||
- !type:DoorWelded {}
|
- !type:DoorWelded {}
|
||||||
completed:
|
completed:
|
||||||
- !type:EmptyAllContainers {}
|
- !type:EmptyAllContainers
|
||||||
|
pickup: true
|
||||||
|
emptyAtUser: true
|
||||||
steps:
|
steps:
|
||||||
- tool: Prying
|
- tool: Prying
|
||||||
doAfter: 5
|
doAfter: 5
|
||||||
|
|||||||
@@ -54,7 +54,9 @@
|
|||||||
doAfter: 2.5
|
doAfter: 2.5
|
||||||
- to: assembly
|
- to: assembly
|
||||||
completed:
|
completed:
|
||||||
- !type:EmptyAllContainers {}
|
- !type:EmptyAllContainers
|
||||||
|
pickup: true
|
||||||
|
emptyAtUser: true
|
||||||
steps:
|
steps:
|
||||||
- tool: Prying
|
- tool: Prying
|
||||||
doAfter: 1
|
doAfter: 1
|
||||||
|
|||||||
@@ -113,7 +113,9 @@
|
|||||||
- !type:WirePanel {}
|
- !type:WirePanel {}
|
||||||
- !type:AllWiresCut
|
- !type:AllWiresCut
|
||||||
completed:
|
completed:
|
||||||
- !type:EmptyAllContainers {}
|
- !type:EmptyAllContainers
|
||||||
|
pickup: true
|
||||||
|
emptyAtUser: true
|
||||||
steps:
|
steps:
|
||||||
- tool: Anchoring
|
- tool: Anchoring
|
||||||
doAfter: 1
|
doAfter: 1
|
||||||
@@ -213,7 +215,9 @@
|
|||||||
container: board
|
container: board
|
||||||
- !type:AllWiresCut
|
- !type:AllWiresCut
|
||||||
completed:
|
completed:
|
||||||
- !type:EmptyAllContainers {}
|
- !type:EmptyAllContainers
|
||||||
|
pickup: true
|
||||||
|
emptyAtUser: true
|
||||||
steps:
|
steps:
|
||||||
- tool: Anchoring
|
- tool: Anchoring
|
||||||
doAfter: 4
|
doAfter: 4
|
||||||
|
|||||||
@@ -70,7 +70,9 @@
|
|||||||
- !type:ContainerNotEmpty
|
- !type:ContainerNotEmpty
|
||||||
container: board
|
container: board
|
||||||
completed:
|
completed:
|
||||||
- !type:EmptyAllContainers {}
|
- !type:EmptyAllContainers
|
||||||
|
pickup: true
|
||||||
|
emptyAtUser: true
|
||||||
steps:
|
steps:
|
||||||
- tool: Prying
|
- tool: Prying
|
||||||
doAfter: 1
|
doAfter: 1
|
||||||
@@ -147,7 +149,9 @@
|
|||||||
- !type:ContainerNotEmpty
|
- !type:ContainerNotEmpty
|
||||||
container: board
|
container: board
|
||||||
completed:
|
completed:
|
||||||
- !type:EmptyAllContainers {}
|
- !type:EmptyAllContainers
|
||||||
|
pickup: true
|
||||||
|
emptyAtUser: true
|
||||||
steps:
|
steps:
|
||||||
- tool: Prying
|
- tool: Prying
|
||||||
doAfter: 1
|
doAfter: 1
|
||||||
|
|||||||
@@ -66,7 +66,9 @@
|
|||||||
- !type:ContainerNotEmpty
|
- !type:ContainerNotEmpty
|
||||||
container: board
|
container: board
|
||||||
completed:
|
completed:
|
||||||
- !type:EmptyAllContainers {}
|
- !type:EmptyAllContainers
|
||||||
|
pickup: true
|
||||||
|
emptyAtUser: true
|
||||||
steps:
|
steps:
|
||||||
- tool: Prying
|
- tool: Prying
|
||||||
doAfter: 1
|
doAfter: 1
|
||||||
|
|||||||
@@ -70,7 +70,9 @@
|
|||||||
- !type:ContainerNotEmpty
|
- !type:ContainerNotEmpty
|
||||||
container: board
|
container: board
|
||||||
completed:
|
completed:
|
||||||
- !type:EmptyAllContainers {}
|
- !type:EmptyAllContainers
|
||||||
|
pickup: true
|
||||||
|
emptyAtUser: true
|
||||||
steps:
|
steps:
|
||||||
- tool: Prying
|
- tool: Prying
|
||||||
doAfter: 1
|
doAfter: 1
|
||||||
|
|||||||
@@ -84,7 +84,9 @@
|
|||||||
- !type:ContainerNotEmpty
|
- !type:ContainerNotEmpty
|
||||||
container: board
|
container: board
|
||||||
completed:
|
completed:
|
||||||
- !type:EmptyAllContainers {}
|
- !type:EmptyAllContainers
|
||||||
|
pickup: true
|
||||||
|
emptyAtUser: true
|
||||||
|
|
||||||
- node: screenElectronics
|
- node: screenElectronics
|
||||||
edges:
|
edges:
|
||||||
@@ -101,7 +103,9 @@
|
|||||||
- !type:ContainerNotEmpty
|
- !type:ContainerNotEmpty
|
||||||
container: board
|
container: board
|
||||||
completed:
|
completed:
|
||||||
- !type:EmptyAllContainers {}
|
- !type:EmptyAllContainers
|
||||||
|
pickup: true
|
||||||
|
emptyAtUser: true
|
||||||
|
|
||||||
- node: brigElectronics
|
- node: brigElectronics
|
||||||
edges:
|
edges:
|
||||||
@@ -118,7 +122,9 @@
|
|||||||
- !type:ContainerNotEmpty
|
- !type:ContainerNotEmpty
|
||||||
container: board
|
container: board
|
||||||
completed:
|
completed:
|
||||||
- !type:EmptyAllContainers {}
|
- !type:EmptyAllContainers
|
||||||
|
pickup: true
|
||||||
|
emptyAtUser: true
|
||||||
|
|
||||||
- node: screenGlass
|
- node: screenGlass
|
||||||
entity: TimerFrame
|
entity: TimerFrame
|
||||||
|
|||||||
@@ -84,7 +84,9 @@
|
|||||||
- !type:ContainerNotEmpty
|
- !type:ContainerNotEmpty
|
||||||
container: board
|
container: board
|
||||||
completed:
|
completed:
|
||||||
- !type:EmptyAllContainers {}
|
- !type:EmptyAllContainers
|
||||||
|
pickup: true
|
||||||
|
emptyAtUser: true
|
||||||
steps:
|
steps:
|
||||||
- tool: Prying
|
- tool: Prying
|
||||||
doAfter: 1
|
doAfter: 1
|
||||||
@@ -98,7 +100,9 @@
|
|||||||
- !type:ContainerNotEmpty
|
- !type:ContainerNotEmpty
|
||||||
container: board
|
container: board
|
||||||
completed:
|
completed:
|
||||||
- !type:EmptyAllContainers {}
|
- !type:EmptyAllContainers
|
||||||
|
pickup: true
|
||||||
|
emptyAtUser: true
|
||||||
steps:
|
steps:
|
||||||
- tool: Prying
|
- tool: Prying
|
||||||
doAfter: 1
|
doAfter: 1
|
||||||
|
|||||||
@@ -68,7 +68,9 @@
|
|||||||
- !type:ContainerNotEmpty
|
- !type:ContainerNotEmpty
|
||||||
container: board
|
container: board
|
||||||
completed:
|
completed:
|
||||||
- !type:EmptyAllContainers {}
|
- !type:EmptyAllContainers
|
||||||
|
pickup: true
|
||||||
|
emptyAtUser: true
|
||||||
steps:
|
steps:
|
||||||
- tool: Prying
|
- tool: Prying
|
||||||
doAfter: 1
|
doAfter: 1
|
||||||
|
|||||||
Reference in New Issue
Block a user