(Smaller) Construction PR - (IC Construction) (#2575)

* Disable Pulling When Buckling an entity

* Projectile Improvements

If you shoot at a person that is critted now it will only hit if you aim at that person otherwise go "above" him and hit other targets.
- Dead people are still unhitable

* Update Content.Server/GameObjects/Components/Buckle/BuckleComponent.cs

Co-authored-by: Víctor Aguilera Puerto <6766154+Zumorica@users.noreply.github.com>

* Firelock In Progress

* Revert "Projectile Improvements"

This reverts commit 5821afc798e49e530d4086d7a9ddbe097805fdc4.

* Firelock Graph

* Revert "Merge branch 'master' into test2"

This reverts commit c69661cc7d9dcdc6d8c0dd45770f9eb94b231463, reversing
changes made to 5f1de8b8d24cd52190addb3df5617cb1012fd52c.

* Bunch of stuff

- Metal Rods
- Reinforced Glass
- SetStackCount Condition
- Tables
- Lattice

* Output2 to FloorTileItemComponent

* Plating, Underplating and Tiles (+FloorTile Improvements)

* Turf Fixes

+ APC Electronics

* Reinforced Glass In-hand textures

* All the fixes

* Final Changes

* (Hopefully) Last commit

* Update Resources/Prototypes/Entities/Constructible/Doors/firelock_frame.yml

Co-authored-by: Paul Ritter <ritter.paul1@googlemail.com>

* Update Content.Server/GameObjects/Components/Atmos/FirelockComponent.cs

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>

* A Few more things

* Edit FirelockComponent.cs

Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>
Co-authored-by: Víctor Aguilera Puerto <6766154+Zumorica@users.noreply.github.com>
Co-authored-by: Paul Ritter <ritter.paul1@googlemail.com>
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
This commit is contained in:
Git-Nivrak
2020-11-20 16:58:06 +02:00
committed by GitHub
parent ab1ce4b541
commit 6d2882c7cf
39 changed files with 821 additions and 79 deletions

View File

@@ -250,6 +250,9 @@ namespace Content.Client.Construction
case StackType.Cable: case StackType.Cable:
return _resourceCache.GetTexture("/Textures/Objects/Tools/cables.rsi/coil-30.png"); return _resourceCache.GetTexture("/Textures/Objects/Tools/cables.rsi/coil-30.png");
case StackType.MetalRod:
return _resourceCache.GetTexture("/Textures/Objects/Materials/materials.rsi/rods.png");
} }
break; break;

View File

@@ -0,0 +1,36 @@
#nullable enable
using System.Threading.Tasks;
using Content.Server.GameObjects.Components.Stack;
using Content.Shared.Construction;
using JetBrains.Annotations;
using Robust.Shared.Interfaces.GameObjects;
using System;
using Robust.Shared.Log;
using Robust.Shared.Serialization;
namespace Content.Server.Construction.Completions
{
[UsedImplicitly]
public class SetStackCount : IGraphAction
{
public int Amount { get; private set; }
public void ExposeData(ObjectSerializer serializer)
{
serializer.DataField(this, x => x.Amount, "amount", 1);
}
public async Task PerformAction(IEntity entity, IEntity? user)
{
if (entity.Deleted) return;
if(!entity.TryGetComponent(out StackComponent? stackComponent)) return;
stackComponent.Count = Math.Min(stackComponent.MaxCount, Amount);
if (Amount > stackComponent.MaxCount)
{
Logger.Warning("StackCount is bigger than maximum stack capacity, for entity " + entity.Name);
}
}
}
}

View File

@@ -1,6 +1,9 @@
#nullable enable #nullable enable
using System;
using System.Threading.Tasks; using System.Threading.Tasks;
using Content.Server.GameObjects.Components.Stack;
using Content.Shared.Construction; using Content.Shared.Construction;
using Content.Shared.Utility;
using JetBrains.Annotations; using JetBrains.Annotations;
using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.IoC; using Robust.Shared.IoC;
@@ -20,6 +23,7 @@ namespace Content.Server.Construction.Completions
serializer.DataField(this, x => x.Amount, "amount", 1); serializer.DataField(this, x => x.Amount, "amount", 1);
} }
public async Task PerformAction(IEntity entity, IEntity? user) public async Task PerformAction(IEntity entity, IEntity? user)
{ {
if (entity.Deleted || string.IsNullOrEmpty(Prototype)) return; if (entity.Deleted || string.IsNullOrEmpty(Prototype)) return;
@@ -27,10 +31,21 @@ namespace Content.Server.Construction.Completions
var entityManager = IoCManager.Resolve<IEntityManager>(); var entityManager = IoCManager.Resolve<IEntityManager>();
var coordinates = entity.Transform.Coordinates; var coordinates = entity.Transform.Coordinates;
for (var i = 0; i < Amount; i++) if (EntityPrototypeHelpers.HasComponent<StackComponent>(Prototype))
{ {
entityManager.SpawnEntity(Prototype, coordinates); var _entity = entityManager.SpawnEntity(Prototype, coordinates);
StackComponent stackComponent = _entity.GetComponent<StackComponent>();
stackComponent.Count = Math.Min(stackComponent.MaxCount, Amount);
} }
else
{
for (var i = 0; i < Amount; i++)
{
entityManager.SpawnEntity(Prototype, coordinates);
}
}
} }
} }
} }

View File

@@ -0,0 +1,42 @@
using System.Threading.Tasks;
using Content.Server.GameObjects.Components.Atmos;
using Content.Server.GameObjects.Components.Doors;
using Content.Shared.Construction;
using JetBrains.Annotations;
using Robust.Shared.GameObjects.Components;
using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.Localization;
using Robust.Shared.Log;
using Robust.Shared.Serialization;
using Robust.Shared.Utility;
namespace Content.Server.Construction.Conditions
{
[UsedImplicitly]
public class DoorWelded : IEdgeCondition
{
public bool Welded { get; private set; }
public void ExposeData(ObjectSerializer serializer)
{
serializer.DataField(this, x => x.Welded, "welded", true);
}
public async Task<bool> Condition(IEntity entity)
{
if (!entity.TryGetComponent(out ServerDoorComponent doorComponent)) return false;
return doorComponent.IsWeldedShut == Welded;
}
public void DoExamine(IEntity entity, FormattedMessage message, bool inDetailsRange)
{
if (!entity.TryGetComponent(out ServerDoorComponent doorComponent)) return;
if (doorComponent.State == ServerDoorComponent.DoorState.Closed && Welded)
message.AddMarkup(Loc.GetString("First, weld the door.\n"));
else if (doorComponent.IsWeldedShut && !Welded)
{
message.AddMarkup(Loc.GetString("First, unweld the door.\n"));
}
}
}
}

View File

@@ -13,6 +13,7 @@ using Robust.Shared.Interfaces.GameObjects;
namespace Content.Server.GameObjects.Components.Atmos namespace Content.Server.GameObjects.Components.Atmos
{ {
[RegisterComponent] [RegisterComponent]
[ComponentReference(typeof(ServerDoorComponent))]
public class FirelockComponent : ServerDoorComponent, IInteractUsing, ICollideBehavior public class FirelockComponent : ServerDoorComponent, IInteractUsing, ICollideBehavior
{ {
public override string Name => "Firelock"; public override string Name => "Firelock";
@@ -68,30 +69,38 @@ namespace Content.Server.GameObjects.Components.Atmos
public override async Task<bool> InteractUsing(InteractUsingEventArgs eventArgs) public override async Task<bool> InteractUsing(InteractUsingEventArgs eventArgs)
{ {
if (await base.InteractUsing(eventArgs))
return false;
if (!eventArgs.Using.TryGetComponent<ToolComponent>(out var tool)) if (!eventArgs.Using.TryGetComponent<ToolComponent>(out var tool))
return false; return false;
if (tool.HasQuality(ToolQuality.Prying)) if (tool.HasQuality(ToolQuality.Prying) && !IsWeldedShut)
{ {
var holdingPressure = IsHoldingPressure(); var holdingPressure = IsHoldingPressure();
var holdingFire = IsHoldingFire(); var holdingFire = IsHoldingFire();
if (State == DoorState.Closed) if (State == DoorState.Closed)
{ {
if(holdingPressure) if (holdingPressure)
Owner.PopupMessage(eventArgs.User, "A gush of air blows in your face... Maybe you should reconsider."); Owner.PopupMessage(eventArgs.User, "A gush of air blows in your face... Maybe you should reconsider.");
} }
if (!await tool.UseTool(eventArgs.User, Owner, holdingPressure || holdingFire ? 1.5f : 0.25f, ToolQuality.Prying)) return false; if (IsWeldedShut || !await tool.UseTool(eventArgs.User, Owner, holdingPressure || holdingFire ? 1.5f : 0.25f, ToolQuality.Prying)) return false;
if (State == DoorState.Closed) if (State == DoorState.Closed)
{
Open(); Open();
}
else if (State == DoorState.Open) else if (State == DoorState.Open)
{
Close(); Close();
}
return true; return true;
} }
return false; return false;
} }
} }

View File

@@ -0,0 +1,11 @@
using Robust.Shared.GameObjects;
namespace Content.Server.GameObjects.Components.Items
{
[RegisterComponent]
class FirelockElectronics : Component
{
public override string Name => "FirelockElectronics";
}
}

View File

@@ -11,6 +11,7 @@ using Robust.Shared.IoC;
using Robust.Shared.Map; using Robust.Shared.Map;
using Robust.Shared.Maths; using Robust.Shared.Maths;
using Robust.Shared.Serialization; using Robust.Shared.Serialization;
using System.Collections.Generic;
namespace Content.Server.GameObjects.Components.Items namespace Content.Server.GameObjects.Components.Items
{ {
@@ -18,15 +19,15 @@ namespace Content.Server.GameObjects.Components.Items
public class FloorTileItemComponent : Component, IAfterInteract public class FloorTileItemComponent : Component, IAfterInteract
{ {
[Dependency] private readonly ITileDefinitionManager _tileDefinitionManager = default!; [Dependency] private readonly ITileDefinitionManager _tileDefinitionManager = default!;
[Dependency] private readonly IMapManager _mapManager = default!;
public override string Name => "FloorTile"; public override string Name => "FloorTile";
private string _outputTile; private List<string> _outputTiles;
public override void ExposeData(ObjectSerializer serializer) public override void ExposeData(ObjectSerializer serializer)
{ {
base.ExposeData(serializer); base.ExposeData(serializer);
serializer.DataField(ref _outputTile, "output", "floor_steel"); serializer.DataField(ref _outputTiles, "outputs", null);
} }
public override void Initialize() public override void Initialize()
@@ -58,31 +59,38 @@ namespace Content.Server.GameObjects.Components.Items
{ {
if (!eventArgs.InRangeUnobstructed(ignoreInsideBlocker: true, popup: true)) return; if (!eventArgs.InRangeUnobstructed(ignoreInsideBlocker: true, popup: true)) return;
if (!Owner.TryGetComponent(out StackComponent stack)) return; if (!Owner.TryGetComponent(out StackComponent stack)) return;
var mapManager = IoCManager.Resolve<IMapManager>();
var location = eventArgs.ClickLocation.AlignWithClosestGridTile(); var location = eventArgs.ClickLocation.AlignWithClosestGridTile();
var locationMap = location.ToMap(Owner.EntityManager); var locationMap = location.ToMap(Owner.EntityManager);
mapManager.TryGetGrid(location.GetGridId(Owner.EntityManager), out var mapGrid);
var desiredTile = (ContentTileDefinition)_tileDefinitionManager[_outputTile]; foreach (var currentTile in _outputTiles)
if (_mapManager.TryGetGrid(location.GetGridId(Owner.EntityManager), out var mapGrid))
{ {
var tile = mapGrid.GetTileRef(location); var currentTileDefinition = (ContentTileDefinition) _tileDefinitionManager[currentTile];
var baseTurf = (ContentTileDefinition)_tileDefinitionManager[tile.Tile.TypeId];
if (HasBaseTurf(desiredTile, baseTurf.Name) && eventArgs.Target == null && stack.Use(1)) if (mapGrid != null)
{ {
PlaceAt(mapGrid, location, desiredTile.TileId); var tile = mapGrid.GetTileRef(location);
var baseTurf = (ContentTileDefinition) _tileDefinitionManager[tile.Tile.TypeId];
if (HasBaseTurf(currentTileDefinition, baseTurf.Name) && stack.Use(1))
{
PlaceAt(mapGrid, location, currentTileDefinition.TileId);
break;
}
} }
} else if (HasBaseTurf(currentTileDefinition, "space"))
else if(HasBaseTurf(desiredTile, "space")) {
{ mapGrid = mapManager.CreateGrid(locationMap.MapId);
mapGrid = _mapManager.CreateGrid(locationMap.MapId); mapGrid.WorldPosition = locationMap.Position;
mapGrid.WorldPosition = locationMap.Position; location = new EntityCoordinates(mapGrid.GridEntityId, Vector2.Zero);
location = new EntityCoordinates(mapGrid.GridEntityId, Vector2.Zero); PlaceAt(mapGrid, location, _tileDefinitionManager[_outputTiles[0]].TileId, mapGrid.TileSize / 2f);
PlaceAt(mapGrid, location, desiredTile.TileId, mapGrid.TileSize/2f); break;
}
} }
} }
} }
} }

View File

@@ -32,7 +32,7 @@ namespace Content.Server.GameObjects.Components
} }
[ViewVariables] [ViewVariables]
int IInteractUsing.Priority => 1; int IInteractUsing.Priority => -10;
public override void ExposeData(ObjectSerializer serializer) public override void ExposeData(ObjectSerializer serializer)
{ {

View File

@@ -0,0 +1,40 @@
using Content.Shared.Maps;
using JetBrains.Annotations;
using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.Map;
using Robust.Shared.Maths;
using Robust.Shared.Serialization;
using System.Collections.Generic;
namespace Content.Shared.Construction.ConstructionConditions
{
[UsedImplicitly]
public class TileType : IConstructionCondition
{
public List<string> TargetTiles { get; private set; }
public void ExposeData(ObjectSerializer serializer)
{
serializer.DataField(this, x => x.TargetTiles, "targets", null);
}
public bool Condition(IEntity user, EntityCoordinates location, Direction direction)
{
if (TargetTiles == null) return true;
var tileFound = location.GetTileRef();
if (tileFound == null)
return false;
var tile = TurfHelpers.GetContentTileDefinition(tileFound.Value.Tile);
foreach (var targetTile in TargetTiles)
{
if (tile.Name == targetTile) {
return true;
}
}
return false;
}
}
}

View File

@@ -125,6 +125,7 @@ namespace Content.Shared.GameObjects.Components
{ {
Metal, Metal,
Glass, Glass,
ReinforcedGlass,
Plasteel, Plasteel,
Cable, Cable,
Wood, Wood,
@@ -139,6 +140,7 @@ namespace Content.Shared.GameObjects.Components
FloorTileCarpet, FloorTileCarpet,
FloorTileWhite, FloorTileWhite,
FloorTileDark, FloorTileDark,
FloorTileWood FloorTileWood,
MetalRod
} }
} }

View File

@@ -54,11 +54,13 @@ namespace Content.Shared.Maps
if (!coordinates.IsValid(entityManager)) if (!coordinates.IsValid(entityManager))
return null; return null;
mapManager ??= IoCManager.Resolve<IMapManager>(); mapManager ??= IoCManager.Resolve<IMapManager>();
if (!mapManager.TryGetGrid(coordinates.GetGridId(entityManager), out var grid)) if (!mapManager.TryGetGrid(coordinates.GetGridId(entityManager), out var grid))
return null; return null;
if (!grid.TryGetTileRef(coordinates, out var tile)) if (!grid.TryGetTileRef(coordinates, out var tile))
return null; return null;

View File

@@ -58,6 +58,10 @@
enabled: false enabled: false
- type: SnapGrid - type: SnapGrid
offset: Center offset: Center
- type: Construction
graph: Firelock
node: Firelock
placement: placement:
mode: SnapgridCenter mode: SnapgridCenter

View File

@@ -0,0 +1,25 @@
- type: entity
id: FirelockFrame
name: Firelock Frame
description: That is a firelock frame.
components:
- type: Sprite
sprite: Constructible/Structures/Doors/firelock.rsi
state: frame1
- type: Construction
graph: Firelock
node: frame1
- type: Clickable
- type: InteractionOutline
- type: Physics
shapes:
- !type:PhysShapeAabb
bounds: "-0.49,-0.49,0.49,0.49"
mask:
- Impassable
layer:
- Opaque
- Impassable
- MobImpassable
- VaultImpassable
- SmallImpassable

View File

@@ -1,4 +1,4 @@
- type: entity - type: entity
id: TableBase id: TableBase
name: "table" name: "table"
description: A square piece of metal standing on four metal legs. description: A square piece of metal standing on four metal legs.
@@ -62,6 +62,9 @@
SteelSheet1: SteelSheet1:
Min: 1 Min: 1
Max: 1 Max: 1
- type: Construction
graph: Tables
node: TableFrame
- type: entity - type: entity
id: TableBar id: TableBar
@@ -100,6 +103,9 @@
SteelSheet1: SteelSheet1:
Min: 1 Min: 1
Max: 1 Max: 1
- type: Construction
graph: Tables
node: MetalTable
- type: entity - type: entity
id: TableR id: TableR
@@ -119,6 +125,9 @@
SteelSheet1: SteelSheet1:
Min: 1 Min: 1
Max: 1 Max: 1
- type: Construction
graph: Tables
node: ReinforcedTable
- type: entity - type: entity
id: TableGlass id: TableGlass
@@ -138,6 +147,9 @@
ShardGlass: ShardGlass:
Min: 1 Min: 1
Max: 1 Max: 1
- type: Construction
graph: Tables
node: GlassTable
- type: entity - type: entity
id: TableGlassR id: TableGlassR
@@ -157,6 +169,9 @@
ShardGlass: ShardGlass:
Min: 1 Min: 1
Max: 1 Max: 1
- type: Construction
graph: Tables
node: RGlassTable
- type: entity - type: entity
id: TableWood id: TableWood
@@ -176,6 +191,9 @@
WoodPlank: WoodPlank:
Min: 1 Min: 1
Max: 1 Max: 1
- type: Construction
graph: Tables
node: WoodTable
- type: entity - type: entity
id: TableCarpet id: TableCarpet
@@ -195,6 +213,9 @@
WoodPlank: WoodPlank:
Min: 1 Min: 1
Max: 1 Max: 1
- type: Construction
graph: Tables
node: PokerTable
- type: entity - type: entity
id: TableStone id: TableStone

View File

@@ -23,3 +23,6 @@
key: catwalk key: catwalk
base: catwalk_ base: catwalk_
- type: Catwalk - type: Catwalk
- type: Construction
graph: Catwalk
node: Catwalk

View File

@@ -0,0 +1,35 @@
- type: entity
name: Metal Rod
parent: BaseItem
id: MetalRod
suffix: full
components:
- type: Sprite
sprite: Objects/Materials/materials.rsi
state: rods
- type: Item
size: 24
icon:
sprite: /Textures/Constructible/Structures/Walls/materials.rsi
state: rods
prefix: inhand
- type: Construction
graph: metalRod
node: MetalRod
- type: Stack
stacktype: enum.StackType.MetalRod
count: 50
max: 50
- type: FloorTile
outputs:
- lattice
- floor_reinforced
- type: entity
parent: MetalRod
id: MetalRodStack1
components:
- type: Stack
stacktype: enum.StackType.MetalRod
count: 1
max: 50

View File

@@ -187,6 +187,9 @@
interfaces: interfaces:
- key: enum.ApcUiKey.Key - key: enum.ApcUiKey.Key
type: ApcBoundUserInterface type: ApcBoundUserInterface
- type: Construction
graph: apc
node: apc
- type: entity - type: entity
id: SolarPanel id: SolarPanel

View File

@@ -0,0 +1,9 @@
- type: entity
id: APCElectronics
parent: BaseItem
name: APC Electronics
description: Circuit used in APC construction.
components:
- type: Sprite
sprite: Constructible/Misc/module.rsi
state: charger_APC

View File

@@ -0,0 +1,10 @@
- type: entity
id: FirelockElectronics
parent: BaseItem
name: Firelock Electronics
description: Advanced circuit board used to detect differences in pressure, temperature and gas concentrations between the two sides of the door.
components:
- type: Sprite
sprite: Constructible/Misc/module.rsi
state: mainboard
- type: FirelockElectronics

View File

@@ -26,6 +26,9 @@
- type: Item - type: Item
sprite: Objects/Materials/sheets.rsi sprite: Objects/Materials/sheets.rsi
HeldPrefix: metal HeldPrefix: metal
- type: FloorTile
outputs:
- underplating
- type: entity - type: entity
id: SteelSheet1 id: SteelSheet1
@@ -66,6 +69,36 @@
stacktype: enum.StackType.Glass stacktype: enum.StackType.Glass
count: 1 count: 1
- type: entity
name: Reinforced Glass
parent: MaterialStack
id: rglass
suffix: Full
components:
- type: Material
materials:
- key: enum.MaterialKeys.Stack
mat: rglass
- type: Stack
stacktype: enum.StackType.ReinforcedGlass
- type: Sprite
sprite: Objects/Materials/sheets.rsi
state: rglass
- type: Item
sprite: Objects/Materials/sheets.rsi
HeldPrefix: rglass
- type: entity
name: Reinforced Glass sheet
id: RGlassSheet1
parent: rglass
suffix: 1
components:
- type: Stack
StackType: enum.StackType.ReinforcedGlass
count: 1
- type: entity - type: entity
name: plasteel sheet name: plasteel sheet
id: PlasteelStack id: PlasteelStack

View File

@@ -1,4 +1,4 @@
- type: entity - type: entity
parent: BaseItem parent: BaseItem
id: FloorTileItemBase id: FloorTileItemBase
description: These could work as a pretty decent throwing weapon. description: These could work as a pretty decent throwing weapon.
@@ -8,7 +8,9 @@
sprite: Objects/Tiles/tile.rsi sprite: Objects/Tiles/tile.rsi
state: tile_steel state: tile_steel
- type: FloorTile - type: FloorTile
output: floor_steel outputs:
- plating
- floor_steel
- type: Stack - type: Stack
stacktype: FloorTileSteel stacktype: FloorTileSteel
count: 1 count: 1
@@ -35,7 +37,9 @@
sprite: Objects/Tiles/tile.rsi sprite: Objects/Tiles/tile.rsi
HeldPrefix: tile_wood HeldPrefix: tile_wood
- type: FloorTile - type: FloorTile
output: floor_wood outputs:
- plating
- floor_wood
- type: Stack - type: Stack
stacktype: FloorTileWood stacktype: FloorTileWood
count: 1 count: 1
@@ -53,7 +57,9 @@
sprite: Objects/Tiles/tile.rsi sprite: Objects/Tiles/tile.rsi
HeldPrefix: tile_white HeldPrefix: tile_white
- type: FloorTile - type: FloorTile
output: floor_white outputs:
- plating
- floor_white
- type: Stack - type: Stack
stacktype: FloorTileWhite stacktype: FloorTileWhite
count: 1 count: 1
@@ -71,7 +77,9 @@
sprite: Objects/Tiles/tile.rsi sprite: Objects/Tiles/tile.rsi
HeldPrefix: tile_dark HeldPrefix: tile_dark
- type: FloorTile - type: FloorTile
output: floor_dark outputs:
- plating
- floor_dark
- type: Stack - type: Stack
stacktype: FloorTileDark stacktype: FloorTileDark
count: 1 count: 1
@@ -89,7 +97,9 @@
sprite: Objects/Tiles/tile.rsi sprite: Objects/Tiles/tile.rsi
HeldPrefix: tile_dark HeldPrefix: tile_dark
- type: FloorTile - type: FloorTile
output: floor_techmaint outputs:
- plating
- floor_techmaint
- type: entity - type: entity
name: floor tile freezer name: floor tile freezer
@@ -103,7 +113,9 @@
sprite: Objects/Tiles/tile.rsi sprite: Objects/Tiles/tile.rsi
HeldPrefix: tile_showroom HeldPrefix: tile_showroom
- type: FloorTile - type: FloorTile
output: floor_freezer outputs:
- plating
- floor_freezer
- type: entity - type: entity
name: floor tile showroom name: floor tile showroom
@@ -117,7 +129,9 @@
sprite: Objects/Tiles/tile.rsi sprite: Objects/Tiles/tile.rsi
HeldPrefix: tile_showroom HeldPrefix: tile_showroom
- type: FloorTile - type: FloorTile
output: floor_showroom outputs:
- plating
- floor_showroom
- type: entity - type: entity
name: floor tile snow name: floor tile snow
@@ -131,7 +145,9 @@
sprite: Objects/Tiles/tile.rsi sprite: Objects/Tiles/tile.rsi
HeldPrefix: tile_silver HeldPrefix: tile_silver
- type: FloorTile - type: FloorTile
output: floor_snow outputs:
- plating
- floor_snow
- type: entity - type: entity
name: floor tile green circuit name: floor tile green circuit
@@ -145,7 +161,9 @@
sprite: Objects/Tiles/tile.rsi sprite: Objects/Tiles/tile.rsi
HeldPrefix: tile_silver HeldPrefix: tile_silver
- type: FloorTile - type: FloorTile
output: floor_green_circuit outputs:
- plating
- floor_green_circuit
- type: entity - type: entity
name: floor tile gold name: floor tile gold
@@ -159,7 +177,9 @@
sprite: Objects/Tiles/tile.rsi sprite: Objects/Tiles/tile.rsi
HeldPrefix: tile_gold HeldPrefix: tile_gold
- type: FloorTile - type: FloorTile
output: floor_gold outputs:
- plating
- floor_gold
- type: entity - type: entity
name: floor tile reinforced name: floor tile reinforced
@@ -173,7 +193,9 @@
sprite: Objects/Tiles/tile.rsi sprite: Objects/Tiles/tile.rsi
HeldPrefix: tile_reinforced HeldPrefix: tile_reinforced
- type: FloorTile - type: FloorTile
output: floor_reinforced outputs:
- plating
- floor_reinforced
- type: entity - type: entity
name: floor tile rock name: floor tile rock
@@ -187,7 +209,9 @@
sprite: Objects/Tiles/tile.rsi sprite: Objects/Tiles/tile.rsi
HeldPrefix: tile_steel HeldPrefix: tile_steel
- type: FloorTile - type: FloorTile
output: floor_rockvault outputs:
- plating
- floor_rockvault
- type: entity - type: entity
name: floor tile mono name: floor tile mono
@@ -201,7 +225,9 @@
sprite: Objects/Tiles/tile.rsi sprite: Objects/Tiles/tile.rsi
HeldPrefix: tile_steel HeldPrefix: tile_steel
- type: FloorTile - type: FloorTile
output: floor_mono outputs:
- plating
- floor_mono
- type: entity - type: entity
name: floor tile linoleum name: floor tile linoleum
@@ -215,7 +241,9 @@
sprite: Objects/Tiles/tile.rsi sprite: Objects/Tiles/tile.rsi
HeldPrefix: tile_steel HeldPrefix: tile_steel
- type: FloorTile - type: FloorTile
output: floor_lino outputs:
- plating
- floor_lino
- type: entity - type: entity
name: floor tile asteroid name: floor tile asteroid
@@ -229,7 +257,9 @@
sprite: Objects/Tiles/tile.rsi sprite: Objects/Tiles/tile.rsi
HeldPrefix: tile_brown HeldPrefix: tile_brown
- type: FloorTile - type: FloorTile
output: floor_asteroid_tile outputs:
- plating
- floor_asteroid_tile
- type: entity - type: entity
name: floor tile hydro name: floor tile hydro
@@ -243,7 +273,9 @@
sprite: Objects/Tiles/tile.rsi sprite: Objects/Tiles/tile.rsi
HeldPrefix: tile_hydro HeldPrefix: tile_hydro
- type: FloorTile - type: FloorTile
output: floor_hydro outputs:
- plating
- floor_hydro
- type: entity - type: entity
name: floor tile dirty name: floor tile dirty
@@ -257,4 +289,6 @@
sprite: Objects/Tiles/tile.rsi sprite: Objects/Tiles/tile.rsi
HeldPrefix: tile_brown HeldPrefix: tile_brown
- type: FloorTile - type: FloorTile
output: floor_steel_dirty outputs:
- plating
- floor_steel_dirty

View File

@@ -0,0 +1,13 @@
- type: constructionGraph
id: apc
start: start
graph:
- node: start
edges:
- to: apc
steps:
- material: Metal
amount: 3
- node: apc
entity: BaseAPC

View File

@@ -0,0 +1,24 @@
- type: constructionGraph
id: Catwalk
start: start
graph:
- node: start
edges:
- to: Catwalk
completed:
- !type:SnapToGrid { }
steps:
- material: MetalRod
amount: 2
- node: Catwalk
entity: Catwalk
edges:
- to: start
completed:
- !type:SpawnPrototype
prototype: MetalRodStack1
amount: 2
- !type:DeleteEntity {}
steps:
- tool: Cutting

View File

@@ -0,0 +1,166 @@
- type: constructionGraph
id: Firelock
start: start
graph:
- node: start
edges:
- to: frame1
completed:
- !type:SnapToGrid { }
steps:
- material: Metal
amount: 3
doAfter: 1
- node: frame1
entity: FirelockFrame
actions:
- !type:SpriteStateChange
state: frame1
edges:
- to: frame2
conditions:
- !type:EntityAnchored
anchored: true
steps:
- material: Cable
amount: 2
doAfter: 1
- to: start
completed:
- !type:SpawnPrototype
prototype: SteelSheet1
amount: 3
- !type:DeleteEntity {}
conditions:
- !type:EntityAnchored
anchored: true
steps:
- tool: Welding
doAfter: 1
- node: frame2
actions:
- !type:SpriteStateChange
state: frame2
edges:
- to: frame3
conditions:
- !type:EntityAnchored
anchored: true
steps:
- component: FirelockElectronics
store: Firelock Electornics
name: Firelock Electornics
icon:
sprite: "Constructible/Misc/module.rsi"
state: "mainboard"
- to: frame1
completed:
- !type:SpawnPrototype
prototype: ApcExtensionCableStack1
amount: 2
conditions:
- !type:EntityAnchored
anchored: true
steps:
- tool: Cutting
doAfter: 1.5
- node: frame3
actions:
- !type:SpriteStateChange
state: frame3
edges:
- to: frame4
conditions:
- !type:EntityAnchored
anchored: true
steps:
- tool: Screwing
doAfter: 0.25
- to: frame2
completed:
- !type:SpawnPrototype
prototype: FirelockElectronics
amount: 1
conditions:
- !type:EntityAnchored
anchored: true
steps:
- tool: Prying
doAfter: 0.25
- node: frame4
entity: FirelockFrame
actions:
- !type:SpriteStateChange
state: frame4
edges:
- to: Firelock
conditions:
- !type:EntityAnchored
anchored: true
steps:
- tool: Anchoring
doAfter: 1
- to: FirelockGlassFrame
conditions:
- !type:EntityAnchored
anchored: true
steps:
- material: Glass
amount: 2
doAfter: 2
- to: frame3
conditions:
- !type:EntityAnchored
anchored: true
steps:
- tool: Screwing
doAfter: 0.75
- node: Firelock
entity: Firelock
edges:
- to: frame4
conditions:
- !type:DoorWelded
welded: true
steps:
- tool: Anchoring
doAfter: 0.25
- node: FirelockGlassFrame
edges:
- to: FirelockGlass
conditions:
- !type:EntityAnchored
anchored: true
steps:
- tool: Anchoring
doAfter: 1
- to: frame4
completed:
- !type:SpawnPrototype
prototype: GlassSheet1
amount: 2
steps:
- tool: Screwing
doAfter: 1
- node: FirelockGlass
entity: FirelockGlass
edges:
- to: FirelockGlassFrame
conditions:
- !type:EntityAnchored
anchored: true
steps:
- tool: Anchoring
doAfter: 1

View File

@@ -0,0 +1,16 @@
- type: constructionGraph
id: metalRod
start: start
graph:
- node: start
edges:
- to: MetalRod
completed:
- !type:SetStackCount
amount: 2
steps:
- material: Metal
amount: 1
- node: MetalRod
entity: MetalRod

View File

@@ -0,0 +1,82 @@
- type: constructionGraph
id: Tables
start: start
graph:
- node: start
edges:
- to: TableFrame
completed:
- !type:SnapToGrid { }
steps:
- material: MetalRod
amount: 2
doAfter: 1
- node: PokerTable
entity: TableCarpet
- node: TableFrame
entity: TableFrame
edges:
- to: start
completed:
- !type:SpawnPrototype
prototype: MetalRod
amount: 2
- !type:DeleteEntity {}
steps:
- tool: Anchoring
doAfter: 1
- to: MetalTable
steps:
- material: Metal
amount: 1
doAfter: 1
- to: ReinforcedTable
steps:
- material: Plasteel
amount: 1
doAfter: 1
- to: GlassTable
steps:
- material: Glass
amount: 1
doAfter: 1
- to: WoodTable
steps:
- material: Wood
amount: 1
doAfter: 1
- to: RGlassTable
steps:
- material: ReinforcedGlass
amount: 1
doAfter: 1
- node: MetalTable
entity: TableMetal
- node: ReinforcedTable
entity: TableR
- node: GlassTable
entity: TableGlass
- node: WoodTable
entity: TableWood
edges:
- to: PokerTable
steps:
- material: Wood
amount: 1
doAfter: 1
- node: RGlassTable
entity: TableGlassR

View File

@@ -1,4 +1,4 @@
- type: constructionGraph - type: constructionGraph
id: window id: window
start: start start: start
graph: graph:
@@ -17,10 +17,7 @@
- to: reinforcedWindow - to: reinforcedWindow
steps: steps:
- material: Metal - material: ReinforcedGlass
amount: 2
doAfter: 2
- material: Glass
amount: 2 amount: 2
doAfter: 2 doAfter: 2
@@ -51,10 +48,7 @@
- to: start - to: start
completed: completed:
- !type:SpawnPrototype - !type:SpawnPrototype
prototype: GlassSheet1 prototype: RGlassSheet1
amount: 2
- !type:SpawnPrototype
prototype: MetalSheet1
amount: 2 amount: 2
- !type:DeleteEntity {} - !type:DeleteEntity {}
steps: steps:

View File

@@ -0,0 +1,10 @@
- type: construction
name: Metal Rod
id: metalRod
graph: metalRod
startNode: start
targetNode: MetalRod
category: Materials
description: A sturdy metal rod that can be used for various purposes.
icon: Objects/Materials/materials.rsi/rods.png
objectType: Item

View File

@@ -110,3 +110,79 @@
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canRotate: false canRotate: false
- type: construction
name: Firelock
id: Firelock
graph: Firelock
startNode: start
targetNode: Firelock
category: Structures
description: This is a firelock - it locks an area when a fire alarm in the area is triggered. Don't get squished!
icon:
sprite: Constructible/Structures/Doors/firelock.rsi
state: closed
objectType: Structure
placementMode: SnapgridCenter
- type: construction
name: Table Frame
id: TableFrame
graph: Tables
startNode: start
targetNode: TableFrame
category: Structures
description: A sturdy frame used in the construction of tables
icon:
sprite: Constructible/Structures/Tables/frame.rsi
state: full
objectType: Structure
placementMode: SnapgridCenter
- type: construction
name: Poker Table
id: PokerTable
graph: Tables
startNode: start
targetNode: PokerTable
category: Structures
description: A square piece of wood standing on four legs. (What did you expect?)
icon:
sprite: Constructible/Structures/Tables/carpet.rsi
state: full
objectType: Structure
placementMode: SnapgridCenter
- type: construction
name: Catwalk
id: Catwalk
graph: Catwalk
startNode: start
targetNode: Catwalk
category: Structures
description: Just like a lattice. Except it looks better.
conditions:
- !type:TileType
targets:
- lattice
- plating
- underplating
icon:
sprite: Constructible/Tiles/catwalk.rsi
state: catwalk_preview
objectType: Structure
placementMode: SnapgridCenter
- type: construction
name: APC
id: apc
graph: apc
startNode: start
targetNode: apc
category: Structures
description: Area Power Controller (APC). Controls power. In an area.
icon:
sprite: Constructible/Power/apc.rsi
state: apc0
objectType: Structure
placementMode: AlignWallProper

View File

@@ -4,7 +4,7 @@
graph: spear graph: spear
startNode: start startNode: start
targetNode: spear targetNode: spear
category: Items/Weapons category: Weapons
description: A crude spear for when you need to put holes in somebody. description: A crude spear for when you need to put holes in somebody.
icon: Objects/Weapons/Melee/spear.rsi/spear.png icon: Objects/Weapons/Melee/spear.rsi/spear.png
objectType: Item objectType: Item

View File

@@ -1,9 +1,8 @@
- type: tile - type: tile
name: floor_dark name: floor_dark
display_name: Dark floor display_name: Dark floor
texture: "dark" texture: "dark"
base_turfs: base_turfs:
- space
- plating - plating
is_subfloor: false is_subfloor: false
can_crowbar: true can_crowbar: true
@@ -16,7 +15,6 @@
display_name: Elevator shaft display_name: Elevator shaft
texture: "elevator_shaft" texture: "elevator_shaft"
base_turfs: base_turfs:
- space
- plating - plating
is_subfloor: false is_subfloor: false
can_crowbar: true can_crowbar: true
@@ -28,7 +26,6 @@
display_name: Freezer display_name: Freezer
texture: "freezer" texture: "freezer"
base_turfs: base_turfs:
- space
- plating - plating
is_subfloor: false is_subfloor: false
can_crowbar: true can_crowbar: true
@@ -41,7 +38,6 @@
display_name: Hydro floor display_name: Hydro floor
texture: "hydro" texture: "hydro"
base_turfs: base_turfs:
- space
- plating - plating
is_subfloor: false is_subfloor: false
can_crowbar: true can_crowbar: true
@@ -53,7 +49,6 @@
display_name: Green circuit floor display_name: Green circuit floor
texture: "green_circuit" texture: "green_circuit"
base_turfs: base_turfs:
- space
- plating - plating
is_subfloor: false is_subfloor: false
can_crowbar: true can_crowbar: true
@@ -66,7 +61,6 @@
display_name: Linoleum floor display_name: Linoleum floor
texture: "lino" texture: "lino"
base_turfs: base_turfs:
- space
- plating - plating
is_subfloor: false is_subfloor: false
can_crowbar: true can_crowbar: true
@@ -79,7 +73,6 @@
display_name: Mono floor display_name: Mono floor
texture: "mono" texture: "mono"
base_turfs: base_turfs:
- space
- plating - plating
is_subfloor: false is_subfloor: false
can_crowbar: true can_crowbar: true
@@ -92,7 +85,6 @@
display_name: Reinforced floor display_name: Reinforced floor
texture: "reinforced" texture: "reinforced"
base_turfs: base_turfs:
- space
- plating - plating
is_subfloor: false is_subfloor: false
can_crowbar: true can_crowbar: true
@@ -105,7 +97,6 @@
display_name: rock floor display_name: rock floor
texture: "rock_vault" texture: "rock_vault"
base_turfs: base_turfs:
- space
- plating - plating
is_subfloor: false is_subfloor: false
can_crowbar: true can_crowbar: true
@@ -118,7 +109,6 @@
display_name: Showroom floor display_name: Showroom floor
texture: "showroom" texture: "showroom"
base_turfs: base_turfs:
- space
- plating - plating
is_subfloor: false is_subfloor: false
can_crowbar: true can_crowbar: true
@@ -131,7 +121,6 @@
display_name: Steel floor display_name: Steel floor
texture: "steel" texture: "steel"
base_turfs: base_turfs:
- space
- plating - plating
is_subfloor: false is_subfloor: false
can_crowbar: true can_crowbar: true
@@ -144,7 +133,6 @@
display_name: Dirty steel floor display_name: Dirty steel floor
texture: "steel_dirty" texture: "steel_dirty"
base_turfs: base_turfs:
- space
- plating - plating
is_subfloor: false is_subfloor: false
can_crowbar: true can_crowbar: true
@@ -157,8 +145,7 @@
display_name: Techmaint Floor display_name: Techmaint Floor
texture: "tech_maint" texture: "tech_maint"
base_turfs: base_turfs:
- space - plating
- underplating
is_subfloor: false is_subfloor: false
can_crowbar: true can_crowbar: true
footstep_sounds: footstep_floor footstep_sounds: footstep_floor
@@ -170,8 +157,7 @@
display_name: White Floor display_name: White Floor
texture: "white" texture: "white"
base_turfs: base_turfs:
- space - plating
- underplating
is_subfloor: false is_subfloor: false
can_crowbar: true can_crowbar: true
footstep_sounds: footstep_floor footstep_sounds: footstep_floor
@@ -194,8 +180,7 @@
display_name: Asteroid Tile display_name: Asteroid Tile
texture: Asteroid/asteroid_tile texture: Asteroid/asteroid_tile
base_turfs: base_turfs:
- space - plating
- underplating
is_subfloor: false is_subfloor: false
can_crowbar: true can_crowbar: true
footstep_sounds: footstep_asteroid footstep_sounds: footstep_asteroid
@@ -262,8 +247,7 @@
display_name: Gold Tile display_name: Gold Tile
texture: gold texture: gold
base_turfs: base_turfs:
- space - plating
- underplating
is_subfloor: false is_subfloor: false
can_crowbar: true can_crowbar: true
footstep_sounds: footstep_floor footstep_sounds: footstep_floor

View File

@@ -3,6 +3,16 @@
display_name: Plating display_name: Plating
texture: plating texture: plating
base_turfs: base_turfs:
- underplating
is_subfloor: true
footstep_sounds: footstep_plating
friction: 0.5
- type: tile
name: lattice
display_name: lattice
texture: lattice
base_turfs:
- space - space
is_subfloor: true is_subfloor: true
footstep_sounds: footstep_plating footstep_sounds: footstep_plating
@@ -13,7 +23,7 @@
display_name: Underplating display_name: Underplating
texture: underplating texture: underplating
base_turfs: base_turfs:
- space - lattice
is_subfloor: true is_subfloor: true
footstep_sounds: footstep_plating footstep_sounds: footstep_plating
friction: 0.5 friction: 0.5

View File

@@ -1,4 +1,4 @@
- type: material - type: material
id: steel id: steel
name: steel name: steel
color: gray color: gray
@@ -18,6 +18,16 @@
thermalConductivity: 0.9 thermalConductivity: 0.9
specificHeat: 840 specificHeat: 840
- type: material
id: rglass
name: Reinforced glass
color: '#49c9a7'
icon: Objects/Materials/sheets.rsi/rglass.png
density: 5000
electricResistivity: 1.0e+13
thermalConductivity: 0.9
specificHeat: 5000
- type: material - type: material
id: gold id: gold
name: gold name: gold

Binary file not shown.

After

Width:  |  Height:  |  Size: 417 B

View File

@@ -165,6 +165,18 @@
"name": "plasteel", "name": "plasteel",
"directions": 1 "directions": 1
}, },
{
"name": "rglass",
"directions": 1
},
{
"name": "rglass-inhand-left",
"directions": 4
},
{
"name": "rglass-inhand-right",
"directions": 4
},
{ {
"name": "researchicon", "name": "researchicon",
"directions": 1 "directions": 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 568 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 723 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 887 B