proper sprites + visualizes nicely
@@ -17,9 +17,26 @@ namespace Content.Client.Doors
|
|||||||
{
|
{
|
||||||
private const string AnimationKey = "airlock_animation";
|
private const string AnimationKey = "airlock_animation";
|
||||||
|
|
||||||
[DataField("animation_time")]
|
[DataField("animationTime")]
|
||||||
private float _delay = 0.8f;
|
private float _delay = 0.8f;
|
||||||
|
|
||||||
|
[DataField("denyAnimationTime")]
|
||||||
|
private float _denyDelay = 0.3f;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Whether the maintenance panel is animated or stays static.
|
||||||
|
/// False for windoors.
|
||||||
|
/// </summary>
|
||||||
|
[DataField("animatedPanel")]
|
||||||
|
private bool _animatedPanel = true;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Whether the BaseUnlit layer should still be visible when the airlock
|
||||||
|
/// is opened.
|
||||||
|
/// </summary>
|
||||||
|
[DataField("openUnlitVisible")]
|
||||||
|
private bool _openUnlitVisible = false;
|
||||||
|
|
||||||
private Animation CloseAnimation = default!;
|
private Animation CloseAnimation = default!;
|
||||||
private Animation OpenAnimation = default!;
|
private Animation OpenAnimation = default!;
|
||||||
private Animation DenyAnimation = default!;
|
private Animation DenyAnimation = default!;
|
||||||
@@ -38,10 +55,13 @@ namespace Content.Client.Doors
|
|||||||
flickUnlit.LayerKey = DoorVisualLayers.BaseUnlit;
|
flickUnlit.LayerKey = DoorVisualLayers.BaseUnlit;
|
||||||
flickUnlit.KeyFrames.Add(new AnimationTrackSpriteFlick.KeyFrame("closing_unlit", 0f));
|
flickUnlit.KeyFrames.Add(new AnimationTrackSpriteFlick.KeyFrame("closing_unlit", 0f));
|
||||||
|
|
||||||
var flickMaintenancePanel = new AnimationTrackSpriteFlick();
|
if (_animatedPanel)
|
||||||
CloseAnimation.AnimationTracks.Add(flickMaintenancePanel);
|
{
|
||||||
flickMaintenancePanel.LayerKey = WiresVisualizer.WiresVisualLayers.MaintenancePanel;
|
var flickMaintenancePanel = new AnimationTrackSpriteFlick();
|
||||||
flickMaintenancePanel.KeyFrames.Add(new AnimationTrackSpriteFlick.KeyFrame("panel_closing", 0f));
|
CloseAnimation.AnimationTracks.Add(flickMaintenancePanel);
|
||||||
|
flickMaintenancePanel.LayerKey = WiresVisualizer.WiresVisualLayers.MaintenancePanel;
|
||||||
|
flickMaintenancePanel.KeyFrames.Add(new AnimationTrackSpriteFlick.KeyFrame("panel_closing", 0f));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
OpenAnimation = new Animation {Length = TimeSpan.FromSeconds(_delay)};
|
OpenAnimation = new Animation {Length = TimeSpan.FromSeconds(_delay)};
|
||||||
@@ -56,24 +76,21 @@ namespace Content.Client.Doors
|
|||||||
flickUnlit.LayerKey = DoorVisualLayers.BaseUnlit;
|
flickUnlit.LayerKey = DoorVisualLayers.BaseUnlit;
|
||||||
flickUnlit.KeyFrames.Add(new AnimationTrackSpriteFlick.KeyFrame("opening_unlit", 0f));
|
flickUnlit.KeyFrames.Add(new AnimationTrackSpriteFlick.KeyFrame("opening_unlit", 0f));
|
||||||
|
|
||||||
var flickMaintenancePanel = new AnimationTrackSpriteFlick();
|
if (_animatedPanel)
|
||||||
OpenAnimation.AnimationTracks.Add(flickMaintenancePanel);
|
{
|
||||||
flickMaintenancePanel.LayerKey = WiresVisualizer.WiresVisualLayers.MaintenancePanel;
|
var flickMaintenancePanel = new AnimationTrackSpriteFlick();
|
||||||
flickMaintenancePanel.KeyFrames.Add(new AnimationTrackSpriteFlick.KeyFrame("panel_opening", 0f));
|
OpenAnimation.AnimationTracks.Add(flickMaintenancePanel);
|
||||||
|
flickMaintenancePanel.LayerKey = WiresVisualizer.WiresVisualLayers.MaintenancePanel;
|
||||||
var sound = new AnimationTrackPlaySound();
|
flickMaintenancePanel.KeyFrames.Add(new AnimationTrackSpriteFlick.KeyFrame("panel_opening", 0f));
|
||||||
OpenAnimation.AnimationTracks.Add(sound);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DenyAnimation = new Animation {Length = TimeSpan.FromSeconds(0.3f)};
|
DenyAnimation = new Animation {Length = TimeSpan.FromSeconds(_denyDelay)};
|
||||||
{
|
{
|
||||||
var flick = new AnimationTrackSpriteFlick();
|
var flick = new AnimationTrackSpriteFlick();
|
||||||
DenyAnimation.AnimationTracks.Add(flick);
|
DenyAnimation.AnimationTracks.Add(flick);
|
||||||
flick.LayerKey = DoorVisualLayers.BaseUnlit;
|
flick.LayerKey = DoorVisualLayers.BaseUnlit;
|
||||||
flick.KeyFrames.Add(new AnimationTrackSpriteFlick.KeyFrame("deny_unlit", 0f));
|
flick.KeyFrames.Add(new AnimationTrackSpriteFlick.KeyFrame("deny_unlit", 0f));
|
||||||
|
|
||||||
var sound = new AnimationTrackPlaySound();
|
|
||||||
DenyAnimation.AnimationTracks.Add(sound);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,13 +125,16 @@ namespace Content.Client.Doors
|
|||||||
{
|
{
|
||||||
case DoorVisualState.Open:
|
case DoorVisualState.Open:
|
||||||
sprite.LayerSetState(DoorVisualLayers.Base, "open");
|
sprite.LayerSetState(DoorVisualLayers.Base, "open");
|
||||||
unlitVisible = false;
|
unlitVisible = _openUnlitVisible;
|
||||||
|
if (_openUnlitVisible)
|
||||||
|
{
|
||||||
|
sprite.LayerSetState(DoorVisualLayers.BaseUnlit, "open_unlit");
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case DoorVisualState.Closed:
|
case DoorVisualState.Closed:
|
||||||
sprite.LayerSetState(DoorVisualLayers.Base, "closed");
|
sprite.LayerSetState(DoorVisualLayers.Base, "closed");
|
||||||
sprite.LayerSetState(DoorVisualLayers.BaseUnlit, "closed_unlit");
|
sprite.LayerSetState(DoorVisualLayers.BaseUnlit, "closed_unlit");
|
||||||
sprite.LayerSetState(DoorVisualLayers.BaseBolted, "bolted_unlit");
|
sprite.LayerSetState(DoorVisualLayers.BaseBolted, "bolted_unlit");
|
||||||
sprite.LayerSetState(WiresVisualizer.WiresVisualLayers.MaintenancePanel, "panel_open");
|
|
||||||
break;
|
break;
|
||||||
case DoorVisualState.Opening:
|
case DoorVisualState.Opening:
|
||||||
animPlayer.Play(OpenAnimation, AnimationKey);
|
animPlayer.Play(OpenAnimation, AnimationKey);
|
||||||
|
|||||||
@@ -59,6 +59,12 @@ namespace Content.Server.Doors.Components
|
|||||||
[DataField("powerWiresTimeout")]
|
[DataField("powerWiresTimeout")]
|
||||||
public float PowerWiresTimeout = 5.0f;
|
public float PowerWiresTimeout = 5.0f;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Whether the maintenance panel should be visible even if the airlock is opened.
|
||||||
|
/// </summary>
|
||||||
|
[DataField("openPanelVisible")]
|
||||||
|
public bool OpenPanelVisible = false;
|
||||||
|
|
||||||
private CancellationTokenSource _powerWiresPulsedTimerCancel = new();
|
private CancellationTokenSource _powerWiresPulsedTimerCancel = new();
|
||||||
private bool _powerWiresPulsed;
|
private bool _powerWiresPulsed;
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,9 @@ namespace Content.Server.Doors.Systems
|
|||||||
// Only show the maintenance panel if the airlock is closed
|
// Only show the maintenance panel if the airlock is closed
|
||||||
if (component.WiresComponent != null)
|
if (component.WiresComponent != null)
|
||||||
{
|
{
|
||||||
component.WiresComponent.IsPanelVisible = args.State != SharedDoorComponent.DoorState.Open;
|
component.WiresComponent.IsPanelVisible =
|
||||||
|
args.State != SharedDoorComponent.DoorState.Open
|
||||||
|
|| component.OpenPanelVisible;
|
||||||
}
|
}
|
||||||
// If the door is closed, we should look if the bolt was locked while closing
|
// If the door is closed, we should look if the bolt was locked while closing
|
||||||
component.UpdateBoltLightStatus();
|
component.UpdateBoltLightStatus();
|
||||||
|
|||||||
@@ -64,7 +64,7 @@
|
|||||||
- type: Appearance
|
- type: Appearance
|
||||||
visuals:
|
visuals:
|
||||||
- type: AirlockVisualizer
|
- type: AirlockVisualizer
|
||||||
animation_time: 0.6
|
animationTime: 0.6
|
||||||
- type: WiresVisualizer
|
- type: WiresVisualizer
|
||||||
- type: Wires
|
- type: Wires
|
||||||
BoardName: "Firelock Control"
|
BoardName: "Firelock Control"
|
||||||
|
|||||||
@@ -22,20 +22,20 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
netsync: false
|
netsync: false
|
||||||
drawdepth: FloorObjects
|
drawdepth: FloorObjects
|
||||||
sprite: Structures/Doors/Windoors/glass.rsi
|
sprite: Structures/Doors/Windoors/windoor.rsi
|
||||||
layers:
|
layers:
|
||||||
- state: closed
|
- state: closed
|
||||||
map: [ "enum.DoorVisualLayers.Base" ]
|
map: ["enum.DoorVisualLayers.Base"]
|
||||||
- state: closed_unlit
|
- state: closed_unlit
|
||||||
shader: unshaded
|
shader: unshaded
|
||||||
map: [ "enum.DoorVisualLayers.BaseUnlit" ]
|
map: ["enum.DoorVisualLayers.BaseUnlit"]
|
||||||
- state: welded
|
- state: welded
|
||||||
map: [ "enum.DoorVisualLayers.BaseWelded" ]
|
map: ["enum.DoorVisualLayers.BaseWelded"]
|
||||||
- state: bolted_unlit
|
- state: bolted_unlit
|
||||||
shader: unshaded
|
shader: unshaded
|
||||||
map: [ "enum.DoorVisualLayers.BaseBolted" ]
|
map: ["enum.DoorVisualLayers.BaseBolted"]
|
||||||
- state: panel_open
|
- state: panel_open
|
||||||
map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
|
map: ["enum.WiresVisualLayers.MaintenancePanel"]
|
||||||
- type: ApcPowerReceiver
|
- type: ApcPowerReceiver
|
||||||
- type: Damageable
|
- type: Damageable
|
||||||
resistances: glassResistances
|
resistances: glassResistances
|
||||||
@@ -54,10 +54,14 @@
|
|||||||
acts: [ "Destruction" ]
|
acts: [ "Destruction" ]
|
||||||
- type: AccessReader
|
- type: AccessReader
|
||||||
- type: Airlock
|
- type: Airlock
|
||||||
|
openPanelVisible: true
|
||||||
- type: Door
|
- type: Door
|
||||||
openSound: /Audio/Machines/windoor_open.ogg
|
openSound:
|
||||||
closeSound: /Audio/Machines/windoor_open.ogg
|
path: /Audio/Machines/windoor_open.ogg
|
||||||
denySound: /Audio/Machines/airlock_deny.ogg
|
closeSound:
|
||||||
|
path: /Audio/Machines/windoor_open.ogg
|
||||||
|
denySound:
|
||||||
|
path: /Audio/Machines/airlock_deny.ogg
|
||||||
- type: Wires
|
- type: Wires
|
||||||
BoardName: "Windoor Control"
|
BoardName: "Windoor Control"
|
||||||
LayoutId: Airlock
|
LayoutId: Airlock
|
||||||
@@ -68,9 +72,11 @@
|
|||||||
- type: Appearance
|
- type: Appearance
|
||||||
visuals:
|
visuals:
|
||||||
- type: AirlockVisualizer
|
- type: AirlockVisualizer
|
||||||
hasMaintenancePanel: false
|
animationTime: 0.9
|
||||||
openCloseUnlit: false
|
denyAnimationTime: 0.4
|
||||||
delay: 0.7
|
animatedPanel: false
|
||||||
|
openUnlitVisible: true
|
||||||
|
- type: WiresVisualizer
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: BaseSecureWindoor
|
id: BaseSecureWindoor
|
||||||
@@ -83,7 +89,24 @@
|
|||||||
airBlockedDirection:
|
airBlockedDirection:
|
||||||
- South
|
- South
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Structures/Doors/Windoors/secure.rsi
|
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
|
- type: Destructible
|
||||||
thresholds:
|
thresholds:
|
||||||
- trigger:
|
- trigger:
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
name: secure windoor
|
name: secure windoor
|
||||||
description: It's a sturdy window and a sliding door. Wow!
|
description: It's a sturdy window and a sliding door. Wow!
|
||||||
|
|
||||||
|
# TODO remove these with parameterized prototypes/whatever we end up doing
|
||||||
# Bar windoor
|
# Bar windoor
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: Windoor
|
parent: Windoor
|
||||||
|
|||||||
@@ -1,47 +0,0 @@
|
|||||||
- 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!
|
|
||||||
|
|
||||||
# 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"]]
|
|
||||||
@@ -1,112 +0,0 @@
|
|||||||
- 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/glass.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
|
|
||||||
- !type:DoActsBehavior
|
|
||||||
acts: [ "Destruction" ]
|
|
||||||
- type: AccessReader
|
|
||||||
- type: Airlock
|
|
||||||
- type: Door
|
|
||||||
- type: Wires
|
|
||||||
BoardName: "Windoor Control"
|
|
||||||
LayoutId: Airlock
|
|
||||||
- type: UserInterface
|
|
||||||
interfaces:
|
|
||||||
- key: enum.WiresUiKey.Key
|
|
||||||
type: WiresBoundUserInterface
|
|
||||||
- type: Appearance
|
|
||||||
visuals:
|
|
||||||
- type: AirlockVisualizer
|
|
||||||
open_sound: /Audio/Machines/windoor_open.ogg
|
|
||||||
close_sound: /Audio/Machines/windoor_open.ogg
|
|
||||||
deny_sound: /Audio/Machines/airlock_deny.ogg
|
|
||||||
hasMaintenancePanel: false
|
|
||||||
openCloseUnlit: false
|
|
||||||
delay: 0.7
|
|
||||||
|
|
||||||
- type: entity
|
|
||||||
id: BaseSecureWindoor
|
|
||||||
parent: BaseWindoor
|
|
||||||
abstract: true
|
|
||||||
components:
|
|
||||||
- type: Airtight
|
|
||||||
fixVacuum: true
|
|
||||||
noAirWhenFullyAirBlocked: false
|
|
||||||
airBlockedDirection:
|
|
||||||
- South
|
|
||||||
- type: Sprite
|
|
||||||
sprite: Structures/Doors/Windoors/secure.rsi
|
|
||||||
- type: Destructible
|
|
||||||
thresholds:
|
|
||||||
- trigger:
|
|
||||||
!type:DamageTrigger
|
|
||||||
damage: 400
|
|
||||||
behaviors:
|
|
||||||
- !type:SpawnEntitiesBehavior
|
|
||||||
spawn:
|
|
||||||
ShardGlass:
|
|
||||||
min: 1
|
|
||||||
max: 2
|
|
||||||
- !type:SpawnEntitiesBehavior
|
|
||||||
spawn:
|
|
||||||
MetalRod:
|
|
||||||
min: 1
|
|
||||||
max: 3
|
|
||||||
- !type:DoActsBehavior
|
|
||||||
acts: [ "Destruction" ]
|
|
||||||
|
|
||||||
# "0.49,-0.49,-0.49,-0.2"
|
|
||||||
# to:
|
|
||||||
# (-0.2, -0.49), (-0.2, 0.49), (-0.49, 0.49), (-0.49, -0.49)
|
|
||||||
# what i want is:
|
|
||||||
# (0.49, -0.49), (0.49, -0.2), (-0.49, -0.2), (-0.49, -0.49)
|
|
||||||
# which is:
|
|
||||||
# "-0.2,-0.49,-0.49,0.49"
|
|
||||||
|
Before Width: | Height: | Size: 146 B |
|
Before Width: | Height: | Size: 146 B |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 146 B |
|
Before Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 146 B |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 146 B |
|
Before Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 146 B |
|
Before Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
@@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"name":1,
|
|
||||||
"size": {"x":32,"y":32},
|
|
||||||
"states":
|
|
||||||
[
|
|
||||||
{"name":"assembly2","directions":4,"delays":[[0.3,0.3],[0.3,0.3],[0.3,0.3],[0.3,0.3]]},
|
|
||||||
{"name":"assembly1","directions":4},
|
|
||||||
{"name":"closed","directions":4},
|
|
||||||
{"name":"closing","directions":4,"delays":[[0.1,0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1,0.1]]},
|
|
||||||
{"name":"open","directions":4},
|
|
||||||
{"name":"opening","directions":4,"delays":[[0.1,0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1,0.1]]},
|
|
||||||
{"name":"deny_unlit","directions":4,"delays":[[0.1,0.2,0.1],[0.1,0.2,0.1],[0.1,0.2,0.1],[0.1,0.2,0.1]]},
|
|
||||||
{"name":"spark","directions":4,"delays":[[0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1]]},
|
|
||||||
{"name":"closed_unlit","directions":4},
|
|
||||||
{"name":"panel_open","directions":4},
|
|
||||||
{"name":"welded","directions":4},
|
|
||||||
{"name":"bolted_unlit","directions":4}
|
|
||||||
],
|
|
||||||
"license":"CC-BY-SA-3.0",
|
|
||||||
"copyright":"https://github.com/tgstation/tgstation/blob/3681006d7102045e334e8eddb23a8685fcdb258a/icons/obj/doors/windoor.dmi"
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 146 B |
|
Before Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 146 B |
|
Before Width: | Height: | Size: 907 B After Width: | Height: | Size: 907 B |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 141 B |
|
Before Width: | Height: | Size: 843 B After Width: | Height: | Size: 843 B |
|
After Width: | Height: | Size: 130 B |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 302 B |
|
After Width: | Height: | Size: 176 B |
@@ -6,15 +6,19 @@
|
|||||||
{"name":"assembly2","directions":4,"delays":[[0.3,0.3],[0.3,0.3],[0.3,0.3],[0.3,0.3]]},
|
{"name":"assembly2","directions":4,"delays":[[0.3,0.3],[0.3,0.3],[0.3,0.3],[0.3,0.3]]},
|
||||||
{"name":"assembly1","directions":4},
|
{"name":"assembly1","directions":4},
|
||||||
{"name":"closed","directions":4},
|
{"name":"closed","directions":4},
|
||||||
|
{"name":"closed_unlit","directions":4},
|
||||||
{"name":"closing","directions":4,"delays":[[0.1,0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1,0.1]]},
|
{"name":"closing","directions":4,"delays":[[0.1,0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1,0.1]]},
|
||||||
|
{"name":"closing_unlit","directions":4,"delays":[[0.1,0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1,0.1]]},
|
||||||
{"name":"open","directions":4},
|
{"name":"open","directions":4},
|
||||||
|
{"name":"open_unlit","directions":4},
|
||||||
{"name":"opening","directions":4,"delays":[[0.1,0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1,0.1]]},
|
{"name":"opening","directions":4,"delays":[[0.1,0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1,0.1]]},
|
||||||
|
{"name":"opening_unlit","directions":4,"delays":[[0.1,0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1,0.1]]},
|
||||||
{"name":"deny_unlit","directions":4,"delays":[[0.1,0.2,0.1],[0.1,0.2,0.1],[0.1,0.2,0.1],[0.1,0.2,0.1]]},
|
{"name":"deny_unlit","directions":4,"delays":[[0.1,0.2,0.1],[0.1,0.2,0.1],[0.1,0.2,0.1],[0.1,0.2,0.1]]},
|
||||||
{"name":"spark","directions":4,"delays":[[0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1]]},
|
{"name":"spark","directions":4,"delays":[[0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1]]},
|
||||||
{"name":"closed_unlit","directions":4},
|
|
||||||
{"name":"panel_open","directions":4},
|
{"name":"panel_open","directions":4},
|
||||||
|
{"name":"bolted_unlit","directions":4},
|
||||||
{"name":"welded","directions":4},
|
{"name":"welded","directions":4},
|
||||||
{"name":"bolted_unlit","directions":4}
|
{"name":"secure_underlay","directions":4}
|
||||||
],
|
],
|
||||||
"license":"CC-BY-SA-3.0",
|
"license":"CC-BY-SA-3.0",
|
||||||
"copyright":"https://github.com/tgstation/tgstation/blob/3681006d7102045e334e8eddb23a8685fcdb258a/icons/obj/doors/windoor.dmi"
|
"copyright":"https://github.com/tgstation/tgstation/blob/3681006d7102045e334e8eddb23a8685fcdb258a/icons/obj/doors/windoor.dmi"
|
||||||
|
Before Width: | Height: | Size: 728 B After Width: | Height: | Size: 728 B |
|
After Width: | Height: | Size: 132 B |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 287 B |
|
After Width: | Height: | Size: 747 B |
|
After Width: | Height: | Size: 476 B |
|
After Width: | Height: | Size: 518 B |
|
After Width: | Height: | Size: 109 B |