Fix windoor deconstruction (#6581)
This commit is contained in:
@@ -5,7 +5,6 @@ using Content.Server.Construction;
|
|||||||
using Content.Server.Construction.Components;
|
using Content.Server.Construction.Components;
|
||||||
using Content.Server.Tools;
|
using Content.Server.Tools;
|
||||||
using Content.Server.Tools.Components;
|
using Content.Server.Tools.Components;
|
||||||
using Content.Server.Doors.Components;
|
|
||||||
using Content.Shared.Access.Components;
|
using Content.Shared.Access.Components;
|
||||||
using Content.Shared.Access.Systems;
|
using Content.Shared.Access.Systems;
|
||||||
using Content.Shared.Doors;
|
using Content.Shared.Doors;
|
||||||
@@ -15,8 +14,6 @@ using Content.Shared.Interaction;
|
|||||||
using Content.Shared.Tag;
|
using Content.Shared.Tag;
|
||||||
using Robust.Shared.Audio;
|
using Robust.Shared.Audio;
|
||||||
using Robust.Shared.Containers;
|
using Robust.Shared.Containers;
|
||||||
using Robust.Shared.GameObjects;
|
|
||||||
using Robust.Shared.IoC;
|
|
||||||
using Robust.Shared.Physics.Dynamics;
|
using Robust.Shared.Physics.Dynamics;
|
||||||
using Robust.Shared.Player;
|
using Robust.Shared.Player;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -154,7 +151,9 @@ public sealed class DoorSystem : SharedDoorSystem
|
|||||||
RaiseLocalEvent(target, canEv, false);
|
RaiseLocalEvent(target, canEv, false);
|
||||||
|
|
||||||
if (canEv.Cancelled)
|
if (canEv.Cancelled)
|
||||||
return false;
|
// mark handled, as airlock component will cancel after generating a pop-up & you don't want to pry a tile
|
||||||
|
// under a windoor.
|
||||||
|
return true;
|
||||||
|
|
||||||
var modEv = new DoorGetPryTimeModifierEvent();
|
var modEv = new DoorGetPryTimeModifierEvent();
|
||||||
RaiseLocalEvent(target, modEv, false);
|
RaiseLocalEvent(target, modEv, false);
|
||||||
@@ -293,19 +292,16 @@ public sealed class DoorSystem : SharedDoorSystem
|
|||||||
|
|
||||||
var container = uid.EnsureContainer<Container>("board", out var existed);
|
var container = uid.EnsureContainer<Container>("board", out var existed);
|
||||||
|
|
||||||
/* // TODO ShadowCommander: Re-enable when access is added to boards. Requires map update.
|
if (existed & container.ContainedEntities.Count != 0)
|
||||||
if (existed)
|
{
|
||||||
{
|
// We already contain a board. Note: We don't check if it's the right one!
|
||||||
// We already contain a board. Note: We don't check if it's the right one!
|
return;
|
||||||
if (container.ContainedEntities.Count != 0)
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var board = Owner.EntityManager.SpawnEntity(_boardPrototype, Owner.Transform.Coordinates);
|
var board = EntityManager.SpawnEntity(door.BoardPrototype, Transform(uid).Coordinates);
|
||||||
|
|
||||||
if(!container.Insert(board))
|
if(!container.Insert(board))
|
||||||
Logger.Warning($"Couldn't insert board {board} into door {Owner}!");
|
Logger.Warning($"Couldn't insert board {ToPrettyString(board)} into door {ToPrettyString(uid)}!");
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -76,6 +76,7 @@
|
|||||||
- type: Door
|
- type: Door
|
||||||
canCrush: false
|
canCrush: false
|
||||||
weldable: false
|
weldable: false
|
||||||
|
board: DoorElectronics
|
||||||
openSound:
|
openSound:
|
||||||
path: /Audio/Machines/windoor_open.ogg
|
path: /Audio/Machines/windoor_open.ogg
|
||||||
closeSound:
|
closeSound:
|
||||||
|
|||||||
@@ -76,32 +76,15 @@
|
|||||||
- node: airlock
|
- node: airlock
|
||||||
entity: Airlock
|
entity: Airlock
|
||||||
edges:
|
edges:
|
||||||
- to: wired
|
- to: wired #TODO DOOR ELECTRONICS. If door electronics ever govern access permissions, this step should probably be further down? It makes it too easy to swap permissions around. See also windoor.
|
||||||
conditions:
|
conditions:
|
||||||
- !type:EntityAnchored {}
|
- !type:EntityAnchored {}
|
||||||
- !type:DoorWelded {}
|
- !type:DoorWelded {}
|
||||||
- !type:AirlockBolted
|
- !type:AirlockBolted
|
||||||
value: false
|
value: false
|
||||||
- !type:WirePanel {}
|
- !type:WirePanel {}
|
||||||
- !type:ContainerNotEmpty # TODO ShadowCommander: Remove when map gets updated
|
|
||||||
container: board
|
|
||||||
completed:
|
completed:
|
||||||
- !type:EmptyAllContainers {}
|
- !type:EmptyAllContainers {}
|
||||||
steps:
|
steps:
|
||||||
- tool: Prying
|
- tool: Prying
|
||||||
doAfter: 5
|
doAfter: 5
|
||||||
- to: wired # TODO ShadowCommander: Remove when board spawning is implemented in ServerDoorComponent.cs. Needs a map update.
|
|
||||||
conditions:
|
|
||||||
- !type:EntityAnchored {}
|
|
||||||
- !type:DoorWelded {}
|
|
||||||
- !type:AirlockBolted
|
|
||||||
value: false
|
|
||||||
- !type:WirePanel {}
|
|
||||||
- !type:ContainerEmpty
|
|
||||||
container: board
|
|
||||||
completed:
|
|
||||||
- !type:SpawnPrototype
|
|
||||||
prototype: DoorElectronics
|
|
||||||
steps:
|
|
||||||
- tool: Prying
|
|
||||||
doAfter: 5
|
|
||||||
|
|||||||
@@ -112,8 +112,6 @@
|
|||||||
- !type:AirlockBolted
|
- !type:AirlockBolted
|
||||||
value: false
|
value: false
|
||||||
- !type:WirePanel {}
|
- !type:WirePanel {}
|
||||||
- !type:ContainerNotEmpty # TODO ShadowCommander: Remove when map gets updated
|
|
||||||
container: board
|
|
||||||
completed:
|
completed:
|
||||||
- !type:EmptyAllContainers {}
|
- !type:EmptyAllContainers {}
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
Reference in New Issue
Block a user