Respriting the codebase (#4820)
* Walls * Airlocks mostly ported * Disposal Unit * Tiles * Lighting * Catwalk * Windows * Some vending machine work * More Vending Machines * Rest of vending machine sprites ported * Fixes to vending machines * Tables (This took a lot of work) * Fixes low walls being required for window smoothing - Also replaces window damage visualization * Plasma Window * APC * SMES + Reorganized parts.yml * Furniture and Organization and Removed Shelf * Renamed seats.yml to chairs.yml * Dispensers * Lazy-fixed the glass airlocks * Don't need this no more * Tilez * blue circuit my fucking beloved * Switches lights to cev one * Conveyors and Switch * Reorients lights * !ALERT! MAP CHANGES !ALERT! Co-authored-by: Vera Aguilera Puerto <gradientvera@outlook.com>
@@ -206,7 +206,7 @@ namespace Content.Client.Wall.Components
|
||||
{
|
||||
if (Owner.EntityManager.TryGetComponent(entity, out WindowComponent? window))
|
||||
{
|
||||
window.UpdateSprite();
|
||||
//window.UpdateSprite();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,116 +1,11 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using Content.Client.Wall.Components;
|
||||
using Content.Shared.Window;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.IoC;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Serialization.Manager.Attributes;
|
||||
using static Content.Client.IconSmoothing.IconSmoothComponent;
|
||||
|
||||
namespace Content.Client.Window
|
||||
{
|
||||
[RegisterComponent]
|
||||
[ComponentReference(typeof(SharedWindowComponent))]
|
||||
public sealed class WindowComponent : SharedWindowComponent
|
||||
public class WindowComponent : SharedWindowComponent
|
||||
{
|
||||
[Dependency] private readonly IMapManager _mapManager = default!;
|
||||
|
||||
[DataField("base")]
|
||||
private string? _stateBase;
|
||||
|
||||
private ISpriteComponent? _sprite;
|
||||
|
||||
protected override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
_sprite = Owner.GetComponent<ISpriteComponent>();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Startup()
|
||||
{
|
||||
base.Startup();
|
||||
|
||||
Owner.EntityManager.EventBus.RaiseEvent(EventSource.Local, new WindowSmoothDirtyEvent(Owner));
|
||||
|
||||
if (_sprite != null)
|
||||
{
|
||||
var state0 = $"{_stateBase}0";
|
||||
const string cracksRSIPath = "/Textures/Structures/Windows/cracks.rsi";
|
||||
_sprite.LayerMapSet(CornerLayers.SE, _sprite.AddLayerState(state0));
|
||||
_sprite.LayerSetDirOffset(CornerLayers.SE, SpriteComponent.DirectionOffset.None);
|
||||
_sprite.LayerMapSet(WindowDamageLayers.DamageSE, _sprite.AddLayerState("0_1", cracksRSIPath));
|
||||
_sprite.LayerSetVisible(WindowDamageLayers.DamageSE, false);
|
||||
|
||||
_sprite.LayerMapSet(CornerLayers.NE, _sprite.AddLayerState(state0));
|
||||
_sprite.LayerSetDirOffset(CornerLayers.NE, SpriteComponent.DirectionOffset.CounterClockwise);
|
||||
_sprite.LayerMapSet(WindowDamageLayers.DamageNE, _sprite.AddLayerState("0_1", cracksRSIPath));
|
||||
_sprite.LayerSetDirOffset(WindowDamageLayers.DamageNE, SpriteComponent.DirectionOffset.CounterClockwise);
|
||||
_sprite.LayerSetVisible(WindowDamageLayers.DamageNE, false);
|
||||
|
||||
_sprite.LayerMapSet(CornerLayers.NW, _sprite.AddLayerState(state0));
|
||||
_sprite.LayerSetDirOffset(CornerLayers.NW, SpriteComponent.DirectionOffset.Flip);
|
||||
_sprite.LayerMapSet(WindowDamageLayers.DamageNW, _sprite.AddLayerState("0_1", cracksRSIPath));
|
||||
_sprite.LayerSetDirOffset(WindowDamageLayers.DamageNW, SpriteComponent.DirectionOffset.Flip);
|
||||
_sprite.LayerSetVisible(WindowDamageLayers.DamageNW, false);
|
||||
|
||||
_sprite.LayerMapSet(CornerLayers.SW, _sprite.AddLayerState(state0));
|
||||
_sprite.LayerSetDirOffset(CornerLayers.SW, SpriteComponent.DirectionOffset.Clockwise);
|
||||
_sprite.LayerMapSet(WindowDamageLayers.DamageSW, _sprite.AddLayerState("0_1", cracksRSIPath));
|
||||
_sprite.LayerSetDirOffset(WindowDamageLayers.DamageSW, SpriteComponent.DirectionOffset.Clockwise);
|
||||
_sprite.LayerSetVisible(WindowDamageLayers.DamageSW, false);
|
||||
}
|
||||
}
|
||||
|
||||
public void AnchorStateChanged()
|
||||
{
|
||||
Owner.EntityManager.EventBus.RaiseEvent(EventSource.Local, new WindowSmoothDirtyEvent(Owner));
|
||||
}
|
||||
|
||||
public void UpdateSprite()
|
||||
{
|
||||
var lowWall = FindLowWall();
|
||||
if (lowWall == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (_sprite != null)
|
||||
{
|
||||
_sprite.LayerSetState(CornerLayers.NE, $"{_stateBase}{(int) lowWall.LastCornerNE}");
|
||||
_sprite.LayerSetState(CornerLayers.SE, $"{_stateBase}{(int) lowWall.LastCornerSE}");
|
||||
_sprite.LayerSetState(CornerLayers.SW, $"{_stateBase}{(int) lowWall.LastCornerSW}");
|
||||
_sprite.LayerSetState(CornerLayers.NW, $"{_stateBase}{(int) lowWall.LastCornerNW}");
|
||||
}
|
||||
}
|
||||
|
||||
private LowWallComponent? FindLowWall()
|
||||
{
|
||||
if (!Owner.Transform.Anchored)
|
||||
return null;
|
||||
|
||||
var grid = _mapManager.GetGrid(Owner.Transform.GridID);
|
||||
var coords = Owner.Transform.Coordinates;
|
||||
foreach (var entity in grid.GetLocal(coords))
|
||||
{
|
||||
if (Owner.EntityManager.TryGetComponent(entity, out LowWallComponent? lowWall))
|
||||
{
|
||||
return lowWall;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
[SuppressMessage("ReSharper", "InconsistentNaming")]
|
||||
public enum WindowDamageLayers : byte
|
||||
{
|
||||
DamageSE,
|
||||
DamageNE,
|
||||
DamageNW,
|
||||
DamageSW
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Shared.GameObjects;
|
||||
|
||||
namespace Content.Client.Window
|
||||
{
|
||||
[UsedImplicitly]
|
||||
public sealed class WindowSystem : EntitySystem
|
||||
{
|
||||
private readonly Queue<IEntity> _dirtyEntities = new();
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<WindowSmoothDirtyEvent>(HandleDirtyEvent);
|
||||
SubscribeLocalEvent<WindowComponent, AnchorStateChangedEvent>(HandleAnchorChanged);
|
||||
}
|
||||
|
||||
private void HandleDirtyEvent(WindowSmoothDirtyEvent ev)
|
||||
{
|
||||
if (ev.Sender.HasComponent<WindowComponent>())
|
||||
{
|
||||
_dirtyEntities.Enqueue(ev.Sender);
|
||||
}
|
||||
}
|
||||
|
||||
private static void HandleAnchorChanged(EntityUid uid, WindowComponent component, ref AnchorStateChangedEvent args)
|
||||
{
|
||||
component.AnchorStateChanged();
|
||||
}
|
||||
|
||||
public override void FrameUpdate(float frameTime)
|
||||
{
|
||||
base.FrameUpdate(frameTime);
|
||||
|
||||
// Performance: This could be spread over multiple updates, or made parallel.
|
||||
while (_dirtyEntities.Count > 0)
|
||||
{
|
||||
var entity = _dirtyEntities.Dequeue();
|
||||
if (entity.Deleted)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
entity.GetComponent<WindowComponent>().UpdateSprite();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Event raised by a <see cref="WindowComponent"/> when it needs to be recalculated.
|
||||
/// </summary>
|
||||
public sealed class WindowSmoothDirtyEvent : EntityEventArgs
|
||||
{
|
||||
public IEntity Sender { get; }
|
||||
|
||||
public WindowSmoothDirtyEvent(IEntity sender)
|
||||
{
|
||||
Sender = sender;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,68 +1,59 @@
|
||||
using System;
|
||||
using Content.Client.Wall.Components;
|
||||
using Content.Shared.Rounding;
|
||||
using Content.Shared.Window;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.IoC;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Log;
|
||||
using Robust.Shared.Serialization.Manager.Attributes;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Client.Window
|
||||
{
|
||||
[UsedImplicitly]
|
||||
public sealed class WindowVisualizer : AppearanceVisualizer
|
||||
{
|
||||
[DataField("crackRsi")]
|
||||
public ResourcePath CrackRsi { get; } = new ("/Textures/Structures/Windows/cracks.rsi");
|
||||
|
||||
public override void InitializeEntity(IEntity entity)
|
||||
{
|
||||
if (!entity.TryGetComponent(out ISpriteComponent? sprite))
|
||||
return;
|
||||
|
||||
sprite.LayerMapReserveBlank(WindowDamageLayers.Layer);
|
||||
sprite.LayerSetVisible(WindowDamageLayers.Layer, false);
|
||||
sprite.LayerSetRSI(WindowDamageLayers.Layer, CrackRsi);
|
||||
}
|
||||
|
||||
public override void OnChangeData(AppearanceComponent component)
|
||||
{
|
||||
base.OnChangeData(component);
|
||||
|
||||
var sprite = component.Owner.GetComponent<ISpriteComponent>();
|
||||
if (!component.Owner.Transform.Anchored)
|
||||
return;
|
||||
|
||||
var lowWall = FindLowWall(IoCManager.Resolve<IMapManager>(), component.Owner.Transform);
|
||||
if (lowWall == null)
|
||||
if (!component.Owner.TryGetComponent(out ISpriteComponent? sprite))
|
||||
return;
|
||||
|
||||
if (component.TryGetData(WindowVisuals.Damage, out float fraction))
|
||||
{
|
||||
var level = Math.Min(ContentHelpers.RoundToLevels(fraction, 1, 7), 5);
|
||||
var level = Math.Min(ContentHelpers.RoundToLevels(fraction, 1, 5), 3);
|
||||
|
||||
if (level == 0)
|
||||
{
|
||||
foreach (var val in Enum.GetValues(typeof(WindowDamageLayers)))
|
||||
{
|
||||
if (val == null) continue;
|
||||
sprite.LayerSetVisible((WindowDamageLayers) val, false);
|
||||
}
|
||||
sprite.LayerSetVisible(WindowDamageLayers.Layer, false);
|
||||
return;
|
||||
}
|
||||
foreach (var val in Enum.GetValues(typeof(WindowDamageLayers)))
|
||||
{
|
||||
if (val == null) continue;
|
||||
sprite.LayerSetVisible((WindowDamageLayers) val, true);
|
||||
}
|
||||
|
||||
sprite.LayerSetState(WindowDamageLayers.DamageNE, $"{(int) lowWall.LastCornerNE}_{level}");
|
||||
sprite.LayerSetState(WindowDamageLayers.DamageSE, $"{(int) lowWall.LastCornerSE}_{level}");
|
||||
sprite.LayerSetState(WindowDamageLayers.DamageSW, $"{(int) lowWall.LastCornerSW}_{level}");
|
||||
sprite.LayerSetState(WindowDamageLayers.DamageNW, $"{(int) lowWall.LastCornerNW}_{level}");
|
||||
Logger.Info($"LEVEL: {level} DMG: {fraction}");
|
||||
|
||||
sprite.LayerSetVisible(WindowDamageLayers.Layer, true);
|
||||
sprite.LayerSetState(WindowDamageLayers.Layer, $"{level}");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private static LowWallComponent? FindLowWall(IMapManager mapManager, ITransformComponent transform)
|
||||
public enum WindowDamageLayers : byte
|
||||
{
|
||||
var grid = mapManager.GetGrid(transform.GridID);
|
||||
var coords = transform.Coordinates;
|
||||
foreach (var entity in grid.GetLocal(coords))
|
||||
{
|
||||
if (transform.Owner.EntityManager.TryGetComponent(entity, out LowWallComponent? lowWall))
|
||||
{
|
||||
return lowWall;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
Layer,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,11 @@
|
||||
using System;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.Serialization;
|
||||
using Robust.Shared.GameStates;
|
||||
|
||||
namespace Content.Shared.Window
|
||||
{
|
||||
[NetworkedComponent]
|
||||
public class SharedWindowComponent : Component
|
||||
{
|
||||
public override string Name => "Window";
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public enum WindowVisuals
|
||||
{
|
||||
Damage
|
||||
}
|
||||
}
|
||||
|
||||
12
Content.Shared/Window/WindowVisuals.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared.Window
|
||||
{
|
||||
[Serializable, NetSerializable]
|
||||
public enum WindowVisuals
|
||||
{
|
||||
Damage
|
||||
}
|
||||
}
|
||||
@@ -4,8 +4,9 @@
|
||||
description: A booze dispenser with a single slot for a container to be filled.
|
||||
parent: ReagentDispenserBase
|
||||
components:
|
||||
- type: Rotatable
|
||||
- type: Sprite
|
||||
sprite: Structures/dispensers.rsi
|
||||
state: booze_dispenser
|
||||
state: booze
|
||||
- type: ReagentDispenser
|
||||
pack: BoozeDispenserInventory
|
||||
|
||||
@@ -6,10 +6,7 @@
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Structures/dispensers.rsi
|
||||
state: industrial_dispenser
|
||||
- type: Icon
|
||||
sprite: Structures/dispensers.rsi
|
||||
state: industrial_dispenser
|
||||
state: industrial-working
|
||||
- type: ReagentDispenser
|
||||
pack: ChemDispenserStandardInventory
|
||||
- type: ApcPowerReceiver
|
||||
|
||||
@@ -4,8 +4,9 @@
|
||||
parent: ReagentDispenserBase
|
||||
description: A beverage dispenser with a selection of soda and several other common beverages. Has a single fill slot for containers.
|
||||
components:
|
||||
- type: Rotatable
|
||||
- type: Sprite
|
||||
sprite: Structures/dispensers.rsi
|
||||
state: soda_dispenser
|
||||
state: soda
|
||||
- type: ReagentDispenser
|
||||
pack: SodaDispenserInventory
|
||||
|
||||
@@ -64,66 +64,6 @@
|
||||
graph: table
|
||||
node: Table
|
||||
|
||||
- type: entity
|
||||
id: TableBar
|
||||
parent: TableBase
|
||||
name: bar table
|
||||
description: Fancy table. Perfect for serving drinks.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Structures/Furniture/Tables/bar.rsi
|
||||
- type: Icon
|
||||
sprite: Structures/Furniture/Tables/bar.rsi
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 1
|
||||
behaviors:
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
path: /Audio/Effects/metalbreak.ogg
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
SheetSteel1:
|
||||
min: 1
|
||||
max: 1
|
||||
MaterialCloth1:
|
||||
min: 1
|
||||
max: 1
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
- type: Construction
|
||||
graph: table
|
||||
node: TableBar
|
||||
|
||||
- type: entity
|
||||
id: TableMetal
|
||||
parent: TableBase
|
||||
name: metal table
|
||||
description: Just a metal table.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Structures/Furniture/Tables/metal.rsi
|
||||
- type: Icon
|
||||
sprite: Structures/Furniture/Tables/metal.rsi
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 15
|
||||
behaviors:
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
path: /Audio/Effects/metalbreak.ogg
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
SheetSteel1:
|
||||
min: 1
|
||||
max: 1
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
|
||||
- type: entity
|
||||
id: TableReinforced
|
||||
parent: TableBase
|
||||
@@ -217,6 +157,39 @@
|
||||
graph: table
|
||||
node: TableReinforcedGlass
|
||||
|
||||
- type: entity
|
||||
id: TablePlasmaGlass
|
||||
parent: TableBase
|
||||
name: plasma glass table
|
||||
description: A square piece of plasma glass, standing on four metal legs. Pretty!
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Structures/Furniture/Tables/plasma.rsi
|
||||
- type: Icon
|
||||
sprite: Structures/Furniture/Tables/plasma.rsi
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 20
|
||||
behaviors:
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
path: /Audio/Effects/glass_break2.ogg
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
ShardGlassPlasma:
|
||||
min: 1
|
||||
max: 1
|
||||
PartRodMetal1:
|
||||
min: 1
|
||||
max: 1
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
- type: Construction
|
||||
graph: table
|
||||
node: TablePlasmaGlass
|
||||
|
||||
- type: entity
|
||||
id: TableWood
|
||||
parent: TableBase
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
- VaultImpassable
|
||||
- SmallImpassable
|
||||
- type: Sprite
|
||||
sprite: Structures/Furniture/furniture.rsi
|
||||
sprite: Structures/Furniture/chairs.rsi
|
||||
noRot: true
|
||||
- type: Strap
|
||||
position: Stand
|
||||
@@ -50,7 +50,6 @@
|
||||
- type: Rotatable
|
||||
- type: Sprite
|
||||
state: chair
|
||||
color: "#8e9799"
|
||||
- type: Physics
|
||||
fixtures:
|
||||
- shape:
|
||||
@@ -72,8 +71,7 @@
|
||||
components:
|
||||
- type: Anchorable
|
||||
- type: Sprite
|
||||
state: stool_base
|
||||
color: "#8e9799"
|
||||
state: stool
|
||||
- type: Physics
|
||||
bodyType: Static
|
||||
fixtures:
|
||||
@@ -99,7 +97,7 @@
|
||||
rotateWhileAnchored: true
|
||||
- type: Anchorable
|
||||
- type: Sprite
|
||||
state: bar_stool
|
||||
state: bar
|
||||
- type: Physics
|
||||
bodyType: Static
|
||||
fixtures:
|
||||
@@ -122,7 +120,7 @@
|
||||
- type: Rotatable
|
||||
rotateWhileAnchored: true
|
||||
- type: Sprite
|
||||
state: officechair_white
|
||||
state: office-white
|
||||
- type: Physics
|
||||
fixtures:
|
||||
- shape:
|
||||
@@ -142,7 +140,7 @@
|
||||
parent: ChairOfficeLight
|
||||
components:
|
||||
- type: Sprite
|
||||
state: officechair_dark
|
||||
state: office-dark
|
||||
- type: Construction
|
||||
graph: seat
|
||||
node: chairOfficeDark
|
||||
@@ -157,7 +155,7 @@
|
||||
anchored: true
|
||||
- type: Anchorable
|
||||
- type: Sprite
|
||||
state: comfychair_preview
|
||||
state: comfy
|
||||
- type: Physics
|
||||
bodyType: Static
|
||||
fixtures:
|
||||
@@ -178,8 +176,7 @@
|
||||
parent: SeatBase
|
||||
components:
|
||||
- type: Sprite
|
||||
state: wooden_chair
|
||||
color: "white"
|
||||
state: wooden
|
||||
- type: Rotatable
|
||||
- type: Physics
|
||||
fixtures:
|
||||
@@ -226,8 +223,7 @@
|
||||
- type: Anchorable
|
||||
- type: Rotatable
|
||||
- type: Sprite
|
||||
sprite: Structures/Furniture/furniture.rsi
|
||||
state: shuttle_chair
|
||||
state: shuttle
|
||||
netsync: false
|
||||
- type: Physics
|
||||
bodyType: Static
|
||||
@@ -498,6 +498,7 @@
|
||||
visuals:
|
||||
- type: VendingMachineVisualizer
|
||||
normalUnshaded: true
|
||||
ejectUnshaded: true
|
||||
denyUnshaded: true
|
||||
broken: true
|
||||
- type: WiresVisualizer
|
||||
|
||||
@@ -1,48 +1,3 @@
|
||||
- type: entity
|
||||
abstract: true
|
||||
id: BaseSubstation
|
||||
parent: BaseMachine
|
||||
name: substation
|
||||
description: Reduces the voltage of electricity put into it.
|
||||
placement:
|
||||
mode: SnapgridCenter
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Structures/Power/substation.rsi
|
||||
layers:
|
||||
- state: substation
|
||||
- state: screen
|
||||
shader: unshaded
|
||||
- state: full
|
||||
shader: unshaded
|
||||
- type: Battery
|
||||
maxCharge: 1000
|
||||
startingCharge: 1000
|
||||
- type: ExaminableBattery
|
||||
- type: PointLight
|
||||
radius: 1.5
|
||||
energy: 1.6
|
||||
color: "#3db83b"
|
||||
castShadows: false
|
||||
- type: NodeContainer
|
||||
examinable: true
|
||||
nodes:
|
||||
input:
|
||||
!type:CableDeviceNode
|
||||
nodeGroupID: HVPower
|
||||
output:
|
||||
!type:CableDeviceNode
|
||||
nodeGroupID: MVPower
|
||||
- type: BatteryCharger
|
||||
voltage: High
|
||||
- type: BatteryDischarger
|
||||
voltage: Medium
|
||||
- type: PowerNetworkBattery
|
||||
maxSupply: 150000
|
||||
maxChargeRate: 5000
|
||||
supplyRampTolerance: 5000
|
||||
supplyRampRate: 1000
|
||||
|
||||
- type: entity
|
||||
abstract: true
|
||||
id: BaseApc
|
||||
@@ -16,8 +16,6 @@
|
||||
sprite: Structures/Power/smes.rsi
|
||||
layers:
|
||||
- state: smes
|
||||
- state: smes-display
|
||||
shader: unshaded
|
||||
- type: Smes
|
||||
- type: Appearance
|
||||
visuals:
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
- type: entity
|
||||
abstract: true
|
||||
id: BaseSubstation
|
||||
parent: BaseMachine
|
||||
name: substation
|
||||
description: Reduces the voltage of electricity put into it.
|
||||
placement:
|
||||
mode: SnapgridCenter
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Structures/Power/substation.rsi
|
||||
layers:
|
||||
- state: substation
|
||||
- state: screen
|
||||
shader: unshaded
|
||||
- state: full
|
||||
shader: unshaded
|
||||
- type: Battery
|
||||
maxCharge: 1000
|
||||
startingCharge: 1000
|
||||
- type: ExaminableBattery
|
||||
- type: PointLight
|
||||
radius: 1.5
|
||||
energy: 1.6
|
||||
color: "#3db83b"
|
||||
castShadows: false
|
||||
- type: NodeContainer
|
||||
examinable: true
|
||||
nodes:
|
||||
input:
|
||||
!type:CableDeviceNode
|
||||
nodeGroupID: HVPower
|
||||
output:
|
||||
!type:CableDeviceNode
|
||||
nodeGroupID: MVPower
|
||||
- type: BatteryCharger
|
||||
voltage: High
|
||||
- type: BatteryDischarger
|
||||
voltage: Medium
|
||||
- type: PowerNetworkBattery
|
||||
maxSupply: 150000
|
||||
maxChargeRate: 5000
|
||||
supplyRampTolerance: 5000
|
||||
supplyRampRate: 1000
|
||||
@@ -46,12 +46,3 @@
|
||||
max: 1
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
|
||||
- type: entity
|
||||
id: Shelf
|
||||
parent: Rack
|
||||
name: shelf
|
||||
description: A shelf for storing things on.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: shelf
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
name: grille
|
||||
description: A flimsy framework of iron rods.
|
||||
components:
|
||||
- type: CanBuildWindowOnTop
|
||||
- type: Sprite
|
||||
netsync: false
|
||||
drawdepth: Walls
|
||||
|
||||
@@ -306,7 +306,6 @@
|
||||
name: reinforced wall
|
||||
components:
|
||||
- type: Sprite
|
||||
color: "#889192"
|
||||
sprite: Structures/Walls/solid.rsi
|
||||
- type: Icon
|
||||
sprite: Structures/Walls/solid.rsi
|
||||
@@ -421,7 +420,6 @@
|
||||
components:
|
||||
- type: RCDDeconstructWhitelist
|
||||
- type: Sprite
|
||||
color: "#889192"
|
||||
sprite: Structures/Walls/solid.rsi
|
||||
- type: Construction
|
||||
graph: girder
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
max: 2
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
- type: Window
|
||||
- type: IconSmooth
|
||||
base: pwindow
|
||||
- type: Construction
|
||||
graph: window
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
max: 2
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
- type: Window
|
||||
- type: IconSmooth
|
||||
base: rwindow
|
||||
- type: Construction
|
||||
graph: window
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
components:
|
||||
- type: RCDDeconstructWhitelist
|
||||
- type: Sprite
|
||||
color: "#DDDDDD"
|
||||
netsync: false
|
||||
drawdepth: WallTops
|
||||
sprite: Structures/Windows/window.rsi
|
||||
@@ -50,8 +49,10 @@
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
- type: Airtight
|
||||
- type: Window
|
||||
- type: IconSmooth
|
||||
key: windows
|
||||
base: window
|
||||
- type: Window
|
||||
- type: Construction
|
||||
graph: window
|
||||
node: window
|
||||
|
||||
@@ -51,6 +51,12 @@
|
||||
amount: 1
|
||||
doAfter: 1
|
||||
|
||||
- to: TablePlasmaGlass
|
||||
steps:
|
||||
- material: PlasmaGlass
|
||||
amount: 1
|
||||
doAfter: 1
|
||||
|
||||
- to: TableWood
|
||||
steps:
|
||||
- material: WoodPlank
|
||||
@@ -69,24 +75,6 @@
|
||||
- tool: Anchoring
|
||||
doAfter: 1
|
||||
|
||||
- to: TableBar
|
||||
steps:
|
||||
- material: Cloth
|
||||
amount: 1
|
||||
doAfter: 1
|
||||
|
||||
- node: TableBar
|
||||
entity: TableBar
|
||||
edges:
|
||||
- to: Table
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: MaterialCloth1
|
||||
amount: 1
|
||||
steps:
|
||||
- tool: Prying
|
||||
doAfter: 1
|
||||
|
||||
- node: TableReinforced
|
||||
entity: TableReinforced
|
||||
edges:
|
||||
@@ -123,6 +111,18 @@
|
||||
- tool: Anchoring
|
||||
doAfter: 1
|
||||
|
||||
- node: TablePlasmaGlass
|
||||
entity: TablePlasmaGlass
|
||||
edges:
|
||||
- to: TableFrame
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: SheetPGlass1
|
||||
amount: 1
|
||||
steps:
|
||||
- tool: Anchoring
|
||||
doAfter: 1
|
||||
|
||||
- node: TableWood
|
||||
entity: TableWood
|
||||
edges:
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
category: Furniture
|
||||
description: You sit in this. Either by will or force.
|
||||
icon:
|
||||
sprite: Structures/Furniture/furniture.rsi
|
||||
sprite: Structures/Furniture/chairs.rsi
|
||||
state: chair
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
@@ -24,8 +24,8 @@
|
||||
category: Furniture
|
||||
description: You sit in this. Either by will or force.
|
||||
icon:
|
||||
sprite: Structures/Furniture/furniture.rsi
|
||||
state: stool_base
|
||||
sprite: Structures/Furniture/chairs.rsi
|
||||
state: stool
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
@@ -41,8 +41,8 @@
|
||||
category: Furniture
|
||||
description: You sit in this. Either by will or force.
|
||||
icon:
|
||||
sprite: Structures/Furniture/furniture.rsi
|
||||
state: bar_stool
|
||||
sprite: Structures/Furniture/chairs.rsi
|
||||
state: bar
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
@@ -58,8 +58,8 @@
|
||||
category: Furniture
|
||||
description: You sit in this. Either by will or force.
|
||||
icon:
|
||||
sprite: Structures/Furniture/furniture.rsi
|
||||
state: officechair_white
|
||||
sprite: Structures/Furniture/chairs.rsi
|
||||
state: office-white
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
@@ -75,8 +75,8 @@
|
||||
category: Furniture
|
||||
description: You sit in this. Either by will or force.
|
||||
icon:
|
||||
sprite: Structures/Furniture/furniture.rsi
|
||||
state: officechair_dark
|
||||
sprite: Structures/Furniture/chairs.rsi
|
||||
state: office-dark
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
@@ -92,8 +92,8 @@
|
||||
category: Furniture
|
||||
description: It looks comfy.
|
||||
icon:
|
||||
sprite: Structures/Furniture/furniture.rsi
|
||||
state: comfychair_preview
|
||||
sprite: Structures/Furniture/chairs.rsi
|
||||
state: comfy
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
@@ -109,8 +109,8 @@
|
||||
category: Furniture
|
||||
description: You sit in this. Either by will or force.
|
||||
icon:
|
||||
sprite: Structures/Furniture/furniture.rsi
|
||||
state: wooden_chair
|
||||
sprite: Structures/Furniture/chairs.rsi
|
||||
state: wooden
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
|
||||
@@ -15,23 +15,6 @@
|
||||
conditions:
|
||||
- !type:TileNotBlocked {}
|
||||
|
||||
- type: construction
|
||||
name: bar table
|
||||
id: TableBar
|
||||
graph: table
|
||||
startNode: start
|
||||
targetNode: TableBar
|
||||
category: Structures
|
||||
description: A fancy table. Perfect for serving drinks.
|
||||
icon:
|
||||
sprite: Structures/Furniture/Tables/bar.rsi
|
||||
state: full
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
conditions:
|
||||
- !type:TileNotBlocked {}
|
||||
|
||||
- type: construction
|
||||
name: reinforced table
|
||||
id: TableReinforced
|
||||
@@ -83,6 +66,23 @@
|
||||
conditions:
|
||||
- !type:TileNotBlocked {}
|
||||
|
||||
- type: construction
|
||||
name: plasma glass table
|
||||
id: TablePlasmaGlass
|
||||
graph: table
|
||||
startNode: start
|
||||
targetNode: TablePlasmaGlass
|
||||
category: Structures
|
||||
description: A square piece of plasma glass, standing on four metal legs. Pretty!
|
||||
icon:
|
||||
sprite: Structures/Furniture/Tables/plasma.rsi
|
||||
state: full
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
conditions:
|
||||
- !type:TileNotBlocked {}
|
||||
|
||||
- type: construction
|
||||
name: wood table
|
||||
id: TableWood
|
||||
@@ -115,4 +115,4 @@
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
conditions:
|
||||
- !type:TileNotBlocked {}
|
||||
- !type:TileNotBlocked {}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
- plating
|
||||
is_subfloor: false
|
||||
can_crowbar: true
|
||||
footstep_sounds:
|
||||
footstep_sounds:
|
||||
collection: footstep_floor
|
||||
friction: 0.30
|
||||
item_drop: FloorTileItemDark
|
||||
@@ -61,6 +61,18 @@
|
||||
friction: 0.30
|
||||
item_drop: FloorTileItemGCircuit
|
||||
|
||||
- type: tile
|
||||
name: floor_blue_circuit
|
||||
display_name: Blue circuit floor
|
||||
texture: "blue_circuit"
|
||||
base_turfs:
|
||||
- plating
|
||||
is_subfloor: false
|
||||
can_crowbar: true
|
||||
footstep_sounds:
|
||||
collection: footstep_floor
|
||||
friction: 0.30
|
||||
|
||||
- type: tile
|
||||
name: floor_lino
|
||||
display_name: Linoleum floor
|
||||
@@ -274,6 +286,18 @@
|
||||
friction: 0.30
|
||||
item_drop: FloorTileItemGold
|
||||
|
||||
- type: tile
|
||||
name: floor_silver
|
||||
display_name: Silver Tile
|
||||
texture: silver
|
||||
base_turfs:
|
||||
- plating
|
||||
is_subfloor: false
|
||||
can_crowbar: true
|
||||
footstep_sounds:
|
||||
collection: footstep_floor
|
||||
friction: 0.30
|
||||
|
||||
- type: tile
|
||||
name: floor_glass
|
||||
display_name: glass floor
|
||||
@@ -300,54 +324,6 @@
|
||||
friction: 0.30
|
||||
item_drop: SheetRGlass1
|
||||
|
||||
- type: tile
|
||||
name: floor_warning1
|
||||
display_name: Warning Tile
|
||||
texture: steel_warning1
|
||||
base_turfs:
|
||||
- plating
|
||||
is_subfloor: false
|
||||
can_crowbar: true
|
||||
footstep_sounds:
|
||||
collection: footstep_floor
|
||||
friction: 0.30
|
||||
|
||||
- type: tile
|
||||
name: floor_warning2
|
||||
display_name: Beware Tile
|
||||
texture: steel_warning2
|
||||
base_turfs:
|
||||
- plating
|
||||
is_subfloor: false
|
||||
can_crowbar: true
|
||||
footstep_sounds:
|
||||
collection: footstep_floor
|
||||
friction: 0.30
|
||||
|
||||
- type: tile
|
||||
name: floor_white_warning1
|
||||
display_name: White Warning Tile
|
||||
texture: white_warning1
|
||||
base_turfs:
|
||||
- plating
|
||||
is_subfloor: false
|
||||
can_crowbar: true
|
||||
footstep_sounds:
|
||||
collection: footstep_floor
|
||||
friction: 0.30
|
||||
|
||||
- type: tile
|
||||
name: floor_white_warning2
|
||||
display_name: White Beware Tile
|
||||
texture: white_warning2
|
||||
base_turfs:
|
||||
- plating
|
||||
is_subfloor: false
|
||||
can_crowbar: true
|
||||
footstep_sounds:
|
||||
collection: footstep_floor
|
||||
friction: 0.30
|
||||
|
||||
- type: tile
|
||||
name: floor_blue
|
||||
display_name: Blue Tile
|
||||
|
||||
|
Before Width: | Height: | Size: 211 B |
@@ -1,215 +0,0 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from cev-eris at https://github.com/discordia-space/CEV-Eris/commit/4f4f8e186bd6ded4d424fad1dee49d3d969adc7c",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": ""
|
||||
},
|
||||
{
|
||||
"name": "tile"
|
||||
},
|
||||
{
|
||||
"name": "tile-white-techfloor"
|
||||
},
|
||||
{
|
||||
"name": "tile_bcarpet"
|
||||
},
|
||||
{
|
||||
"name": "tile_blucarpet"
|
||||
},
|
||||
{
|
||||
"name": "tile_cafe"
|
||||
},
|
||||
{
|
||||
"name": "tile_carpet"
|
||||
},
|
||||
{
|
||||
"name": "tile_dark"
|
||||
},
|
||||
{
|
||||
"name": "tile_dark_bluecorner"
|
||||
},
|
||||
{
|
||||
"name": "tile_dark_brownperforated"
|
||||
},
|
||||
{
|
||||
"name": "tile_dark_brownplatform"
|
||||
},
|
||||
{
|
||||
"name": "tile_dark_cargo"
|
||||
},
|
||||
{
|
||||
"name": "tile_dark_cyancorner"
|
||||
},
|
||||
{
|
||||
"name": "tile_dark_danger"
|
||||
},
|
||||
{
|
||||
"name": "tile_dark_golden"
|
||||
},
|
||||
{
|
||||
"name": "tile_dark_grayperforated"
|
||||
},
|
||||
{
|
||||
"name": "tile_dark_grayplatform"
|
||||
},
|
||||
{
|
||||
"name": "tile_dark_monofloor"
|
||||
},
|
||||
{
|
||||
"name": "tile_dark_orangecorner"
|
||||
},
|
||||
{
|
||||
"name": "tile_dark_panels"
|
||||
},
|
||||
{
|
||||
"name": "tile_dark_techfloor"
|
||||
},
|
||||
{
|
||||
"name": "tile_dark_techfloor_grid"
|
||||
},
|
||||
{
|
||||
"name": "tile_dark_violetcorener"
|
||||
},
|
||||
{
|
||||
"name": "tile_gaycarpet"
|
||||
},
|
||||
{
|
||||
"name": "tile_grass"
|
||||
},
|
||||
{
|
||||
"name": "tile_oracarpet"
|
||||
},
|
||||
{
|
||||
"name": "tile_purcarpet"
|
||||
},
|
||||
{
|
||||
"name": "tile_sblucarpet"
|
||||
},
|
||||
{
|
||||
"name": "tile_steel"
|
||||
},
|
||||
{
|
||||
"name": "tile_steel_bar_dance"
|
||||
},
|
||||
{
|
||||
"name": "tile_steel_bar_flat"
|
||||
},
|
||||
{
|
||||
"name": "tile_steel_bar_light"
|
||||
},
|
||||
{
|
||||
"name": "tile_steel_bluecorner"
|
||||
},
|
||||
{
|
||||
"name": "tile_steel_brownperforated"
|
||||
},
|
||||
{
|
||||
"name": "tile_steel_brownplatform"
|
||||
},
|
||||
{
|
||||
"name": "tile_steel_cargo"
|
||||
},
|
||||
{
|
||||
"name": "tile_steel_cyancorner"
|
||||
},
|
||||
{
|
||||
"name": "tile_steel_danger"
|
||||
},
|
||||
{
|
||||
"name": "tile_steel_golden"
|
||||
},
|
||||
{
|
||||
"name": "tile_steel_grayperforated"
|
||||
},
|
||||
{
|
||||
"name": "tile_steel_grayplatform"
|
||||
},
|
||||
{
|
||||
"name": "tile_steel_monofloor"
|
||||
},
|
||||
{
|
||||
"name": "tile_steel_orangecorner"
|
||||
},
|
||||
{
|
||||
"name": "tile_steel_panels"
|
||||
},
|
||||
{
|
||||
"name": "tile_steel_techfloor"
|
||||
},
|
||||
{
|
||||
"name": "tile_steel_techfloor_grid"
|
||||
},
|
||||
{
|
||||
"name": "tile_steel_violetcorener"
|
||||
},
|
||||
{
|
||||
"name": "tile_techmaint"
|
||||
},
|
||||
{
|
||||
"name": "tile_techmaint_cargo"
|
||||
},
|
||||
{
|
||||
"name": "tile_techmaint_panels"
|
||||
},
|
||||
{
|
||||
"name": "tile_techmaint_perforated"
|
||||
},
|
||||
{
|
||||
"name": "tile_turcarpet"
|
||||
},
|
||||
{
|
||||
"name": "tile_white"
|
||||
},
|
||||
{
|
||||
"name": "tile_white_bluecorner"
|
||||
},
|
||||
{
|
||||
"name": "tile_white_brownperforated"
|
||||
},
|
||||
{
|
||||
"name": "tile_white_brownplatform"
|
||||
},
|
||||
{
|
||||
"name": "tile_white_cargo"
|
||||
},
|
||||
{
|
||||
"name": "tile_white_cyancorner"
|
||||
},
|
||||
{
|
||||
"name": "tile_white_danger"
|
||||
},
|
||||
{
|
||||
"name": "tile_white_golden"
|
||||
},
|
||||
{
|
||||
"name": "tile_white_grayperforated"
|
||||
},
|
||||
{
|
||||
"name": "tile_white_grayplatform"
|
||||
},
|
||||
{
|
||||
"name": "tile_white_monofloor"
|
||||
},
|
||||
{
|
||||
"name": "tile_white_orangecorner"
|
||||
},
|
||||
{
|
||||
"name": "tile_white_panels"
|
||||
},
|
||||
{
|
||||
"name": "tile_white_techfloor_grid"
|
||||
},
|
||||
{
|
||||
"name": "tile_white_violetcorener"
|
||||
},
|
||||
{
|
||||
"name": "tile_wood"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
Before Width: | Height: | Size: 237 B |
|
Before Width: | Height: | Size: 182 B |
|
Before Width: | Height: | Size: 203 B |
|
Before Width: | Height: | Size: 202 B |
|
Before Width: | Height: | Size: 232 B |
|
Before Width: | Height: | Size: 202 B |
|
Before Width: | Height: | Size: 198 B |
|
Before Width: | Height: | Size: 229 B |
|
Before Width: | Height: | Size: 260 B |
|
Before Width: | Height: | Size: 210 B |
|
Before Width: | Height: | Size: 210 B |
|
Before Width: | Height: | Size: 221 B |
|
Before Width: | Height: | Size: 249 B |
|
Before Width: | Height: | Size: 249 B |
|
Before Width: | Height: | Size: 260 B |
|
Before Width: | Height: | Size: 210 B |
|
Before Width: | Height: | Size: 217 B |
|
Before Width: | Height: | Size: 225 B |
|
Before Width: | Height: | Size: 312 B |
|
Before Width: | Height: | Size: 235 B |
|
Before Width: | Height: | Size: 173 B |
|
Before Width: | Height: | Size: 223 B |
|
Before Width: | Height: | Size: 202 B |
|
Before Width: | Height: | Size: 386 B |
|
Before Width: | Height: | Size: 202 B |
|
Before Width: | Height: | Size: 203 B |
|
Before Width: | Height: | Size: 202 B |
|
Before Width: | Height: | Size: 204 B |
|
Before Width: | Height: | Size: 385 B |
|
Before Width: | Height: | Size: 224 B |
|
Before Width: | Height: | Size: 269 B |
|
Before Width: | Height: | Size: 241 B |
|
Before Width: | Height: | Size: 254 B |
|
Before Width: | Height: | Size: 207 B |
|
Before Width: | Height: | Size: 210 B |
|
Before Width: | Height: | Size: 237 B |
|
Before Width: | Height: | Size: 257 B |
|
Before Width: | Height: | Size: 253 B |
|
Before Width: | Height: | Size: 257 B |
|
Before Width: | Height: | Size: 207 B |
|
Before Width: | Height: | Size: 225 B |
|
Before Width: | Height: | Size: 237 B |
|
Before Width: | Height: | Size: 315 B |
|
Before Width: | Height: | Size: 235 B |
|
Before Width: | Height: | Size: 173 B |
|
Before Width: | Height: | Size: 236 B |
|
Before Width: | Height: | Size: 210 B |
|
Before Width: | Height: | Size: 210 B |
|
Before Width: | Height: | Size: 255 B |
|
Before Width: | Height: | Size: 242 B |
|
Before Width: | Height: | Size: 202 B |
|
Before Width: | Height: | Size: 203 B |
|
Before Width: | Height: | Size: 234 B |
|
Before Width: | Height: | Size: 247 B |
|
Before Width: | Height: | Size: 198 B |
|
Before Width: | Height: | Size: 214 B |
|
Before Width: | Height: | Size: 234 B |
|
Before Width: | Height: | Size: 259 B |
|
Before Width: | Height: | Size: 252 B |
|
Before Width: | Height: | Size: 245 B |
|
Before Width: | Height: | Size: 196 B |
|
Before Width: | Height: | Size: 226 B |
|
Before Width: | Height: | Size: 233 B |
|
Before Width: | Height: | Size: 325 B |
|
Before Width: | Height: | Size: 172 B |
|
Before Width: | Height: | Size: 241 B |
|
Before Width: | Height: | Size: 314 B |
|
Before Width: | Height: | Size: 198 B After Width: | Height: | Size: 207 B |
|
Before Width: | Height: | Size: 427 B After Width: | Height: | Size: 447 B |
|
Before Width: | Height: | Size: 408 B After Width: | Height: | Size: 499 B |
@@ -43,6 +43,9 @@
|
||||
{
|
||||
"name": "steel_techfloor_grid"
|
||||
},
|
||||
{
|
||||
"name": "silver"
|
||||
},
|
||||
{
|
||||
"name": "dark_techfloor_grid"
|
||||
},
|
||||
|
||||
|
Before Width: | Height: | Size: 198 B After Width: | Height: | Size: 326 B |