(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:
@@ -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;
|
||||||
|
|
||||||
|
|||||||
36
Content.Server/Construction/Completions/SetStackCount.cs
Normal file
36
Content.Server/Construction/Completions/SetStackCount.cs
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
42
Content.Server/Construction/Conditions/DoorWelded.cs
Normal file
42
Content.Server/Construction/Conditions/DoorWelded.cs
Normal 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"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
using Robust.Shared.GameObjects;
|
||||||
|
|
||||||
|
|
||||||
|
namespace Content.Server.GameObjects.Components.Items
|
||||||
|
{
|
||||||
|
[RegisterComponent]
|
||||||
|
class FirelockElectronics : Component
|
||||||
|
{
|
||||||
|
public override string Name => "FirelockElectronics";
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -23,3 +23,6 @@
|
|||||||
key: catwalk
|
key: catwalk
|
||||||
base: catwalk_
|
base: catwalk_
|
||||||
- type: Catwalk
|
- type: Catwalk
|
||||||
|
- type: Construction
|
||||||
|
graph: Catwalk
|
||||||
|
node: Catwalk
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
13
Resources/Prototypes/Recipes/Construction/Graphs/APC.yml
Normal file
13
Resources/Prototypes/Recipes/Construction/Graphs/APC.yml
Normal 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
|
||||||
24
Resources/Prototypes/Recipes/Construction/Graphs/catwalk.yml
Normal file
24
Resources/Prototypes/Recipes/Construction/Graphs/catwalk.yml
Normal 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
|
||||||
166
Resources/Prototypes/Recipes/Construction/Graphs/firelock.yml
Normal file
166
Resources/Prototypes/Recipes/Construction/Graphs/firelock.yml
Normal 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
|
||||||
@@ -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
|
||||||
82
Resources/Prototypes/Recipes/Construction/Graphs/tables.yml
Normal file
82
Resources/Prototypes/Recipes/Construction/Graphs/tables.yml
Normal 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
|
||||||
@@ -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:
|
||||||
|
|||||||
10
Resources/Prototypes/Recipes/Construction/materials.yml
Normal file
10
Resources/Prototypes/Recipes/Construction/materials.yml
Normal 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
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
BIN
Resources/Textures/Constructible/Tiles/lattice.png
Normal file
BIN
Resources/Textures/Constructible/Tiles/lattice.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 417 B |
@@ -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 |
BIN
Resources/Textures/Objects/Materials/sheets.rsi/rglass.png
Normal file
BIN
Resources/Textures/Objects/Materials/sheets.rsi/rglass.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 887 B |
Reference in New Issue
Block a user