Merge pull request #4368 from mirrorcult/2021-07-16/windoors

Windoors
This commit is contained in:
ShadowCommander
2021-08-05 23:09:38 -07:00
committed by GitHub
26 changed files with 735 additions and 25 deletions

View File

@@ -64,7 +64,7 @@
- type: Appearance
visuals:
- type: AirlockVisualizer
animation_time: 0.6
animationTime: 0.6
- type: WiresVisualizer
- type: Wires
BoardName: "Firelock Control"
@@ -113,7 +113,7 @@
fixtures:
- shape:
!type:PhysShapeRect
bounds: "0.49,-0.49,-0.49,-0.2" # don't want this colliding with walls or they won't close
bounds: "-0.2,-0.49,-0.49,0.49" # don't want this colliding with walls or they won't close
mask:
- MobImpassable
layer:

View File

@@ -0,0 +1,76 @@
- type: entity
id: WindoorAssembly
name: windoor assembly
description: It opens, it closes, and you can see through it!
parent: BaseStructure
components:
- type: InteractionOutline
- type: Sprite
netsync: false
drawdepth: FloorObjects
sprite: Structures/Doors/Windoors/windoor.rsi
layers:
- state: assembly
- type: Physics
fixtures:
- shape:
!type:PhysShapeAabb
bounds: "-0.2,-0.49,-0.49,0.49"
mass: 30
mask:
- Impassable
- VaultImpassable
- type: Anchorable
- type: Pullable
- type: Rotatable
- type: Damageable
resistances: metallicResistances
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 300
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
- !type:SpawnEntitiesBehavior
spawn:
SheetSteel1:
min: 1
max: 3
- type: Construction
graph: windoor
node: assembly
placement:
mode: SnapgridCenter
- type: entity
id: WindoorAssemblySecure
name: secure windoor assembly
description: It opens, it closes, and you can see through it! This one looks tough.
parent: WindoorAssembly
components:
- type: Sprite
netsync: false
drawdepth: Mobs
sprite: Structures/Doors/Windoors/windoor.rsi
layers:
- state: secure_underlay
- state: assembly
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 600
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
- !type:SpawnEntitiesBehavior
spawn:
SheetPlasteel1:
min: 1
max: 2
- type: Construction
graph: windoor
node: assemblySecure

View File

@@ -0,0 +1,135 @@
- type: entity
id: BaseWindoor
parent: BaseStructure
abstract: true
placement:
mode: SnapgridCenter
components:
- type: InteractionOutline
- type: Physics
fixtures:
- shape:
!type:PhysShapeAabb
bounds: "-0.2,-0.49,-0.49,0.49"
mass: 50
layer:
- Impassable
- MobImpassable
- VaultImpassable
- SmallImpassable
mask:
- VaultImpassable
- type: Sprite
netsync: false
drawdepth: FloorObjects
sprite: Structures/Doors/Windoors/windoor.rsi
layers:
- state: closed
map: ["enum.DoorVisualLayers.Base"]
- state: closed_unlit
shader: unshaded
map: ["enum.DoorVisualLayers.BaseUnlit"]
- state: welded
map: ["enum.DoorVisualLayers.BaseWelded"]
- state: bolted_unlit
shader: unshaded
map: ["enum.DoorVisualLayers.BaseBolted"]
- state: panel_open
map: ["enum.WiresVisualLayers.MaintenancePanel"]
- type: ApcPowerReceiver
- type: Damageable
resistances: glassResistances
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 200
behaviors:
- !type:SpawnEntitiesBehavior
spawn:
ShardGlass:
min: 1
max: 2
SheetSteel1:
min: 2
max: 4
- !type:DoActsBehavior
acts: [ "Destruction" ]
- type: AccessReader
- type: Airlock
openPanelVisible: true
- type: Door
weldable: false
openSound:
path: /Audio/Machines/windoor_open.ogg
closeSound:
path: /Audio/Machines/windoor_open.ogg
denySound:
path: /Audio/Machines/airlock_deny.ogg
- type: Wires
BoardName: "Windoor Control"
LayoutId: Airlock
- type: UserInterface
interfaces:
- key: enum.WiresUiKey.Key
type: WiresBoundUserInterface
- type: Appearance
visuals:
- type: AirlockVisualizer
animationTime: 0.9
denyAnimationTime: 0.4
animatedPanel: false
openUnlitVisible: true
- type: WiresVisualizer
- type: Construction
graph: windoor
node: windoor
- type: entity
id: BaseSecureWindoor
parent: BaseWindoor
abstract: true
components:
- type: Airtight
fixVacuum: true
noAirWhenFullyAirBlocked: false
airBlockedDirection:
- South
- type: Sprite
netsync: false
drawdepth: FloorObjects
sprite: Structures/Doors/Windoors/windoor.rsi
layers:
- state: secure_underlay
- state: closed
map: [ "enum.DoorVisualLayers.Base" ]
- state: closed_unlit
shader: unshaded
map: [ "enum.DoorVisualLayers.BaseUnlit" ]
- state: welded
map: [ "enum.DoorVisualLayers.BaseWelded" ]
- state: bolted_unlit
shader: unshaded
map: [ "enum.DoorVisualLayers.BaseBolted" ]
- state: panel_open
map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
visible: false
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 400
behaviors:
- !type:SpawnEntitiesBehavior
spawn:
ShardGlass:
min: 1
max: 2
SheetPlasteel1:
min: 1
max: 2
- !type:DoActsBehavior
acts: [ "Destruction" ]
- type: Construction
graph: windoor
node: windoorSecure

View File

@@ -0,0 +1,48 @@
- type: entity
id: Windoor
parent: BaseWindoor
name: windoor
description: It's a window and a sliding door. Wow!
- type: entity
id: WindoorSecure
parent: BaseSecureWindoor
name: secure windoor
description: It's a sturdy window and a sliding door. Wow!
# TODO remove these with parameterized prototypes/whatever we end up doing
# Bar windoor
- type: entity
parent: Windoor
id: WindoorBarLocked
suffix: Bar, Locked
components:
- type: AccessReader
access: [["Bar"]]
# Chemistry windoor
- type: entity
parent: WindoorSecure
id: WindoorMedicalLocked
suffix: Medical, Locked
components:
- type: AccessReader
access: [["Medical"]]
# HOP's office windoor
- type: entity
parent: WindoorSecure
id: WindoorCommandLocked
suffix: Command, Locked
components:
- type: AccessReader
access: [["Command"]]
# Cargo windoor
- type: entity
parent: Windoor
id: WindoorCargoLocked
suffix: Cargo, Locked
components:
- type: AccessReader
access: [["Cargo"]]