Localizable craftmenu (#32339)

* Now the name of the target craft items is taken directly from the prototypes

* Deleting unnecessary fields

* Deleting unnecessary fields

* Added suffix field

* Added override via localization keys

* My favorite ItemList and TextureRect have been replaced with ListContainer and EntityPrototypeView

* Fix suffix

* Fix construction ghosts... maybe

* Remove suffix from UI

* Suffixes have been removed from prototypes

* Added a description for the secret door

* Fix search..?

* The Icon field of ConstructionPrototype has been removed

* StackPrototypes used in the construction menu have been localized

* TagConstructionGraphStep used in the construction menu have been localized

* The search bar has been localized

* Fix localization and prototypes

* Recipes are now only loaded when the crafting window is opened.

* Fix crooked merge grid of the crafting menu.

* Localization update

* Fix cyborg graph

* Revert "Recipes are now only loaded when the crafting window is opened."

This reverts commit 97749483542c2d6272bda16edf49612c69a0761a.

* Fix loc

* fix merge

* Fix upstream

* Some of the logic has been moved to Shared

* fix

* Small adjustments

* Very small change

---------

Co-authored-by: EmoGarbage404 <retron404@gmail.com>
This commit is contained in:
Ertanic
2025-05-01 17:21:16 +03:00
committed by GitHub
parent 8d01f90ad2
commit 81507b9d52
125 changed files with 1210 additions and 2476 deletions

View File

@@ -1,8 +1,10 @@
using System.Linq; using System.Linq;
using Content.Shared.Construction.Prototypes; using Content.Shared.Construction.Prototypes;
using Robust.Client.GameObjects;
using Robust.Client.Placement; using Robust.Client.Placement;
using Robust.Client.Utility; using Robust.Client.ResourceManagement;
using Robust.Shared.Map; using Robust.Shared.Map;
using Robust.Shared.Prototypes;
namespace Content.Client.Construction namespace Content.Client.Construction
{ {
@@ -45,7 +47,14 @@ namespace Content.Client.Construction
public override void StartHijack(PlacementManager manager) public override void StartHijack(PlacementManager manager)
{ {
base.StartHijack(manager); base.StartHijack(manager);
manager.CurrentTextures = _prototype?.Layers.Select(sprite => sprite.DirFrame0()).ToList();
if (_prototype is null || !_constructionSystem.TryGetRecipePrototype(_prototype.ID, out var targetProtoId))
return;
if (!IoCManager.Resolve<IPrototypeManager>().TryIndex(targetProtoId, out EntityPrototype? proto))
return;
manager.CurrentTextures = SpriteComponent.GetPrototypeTextures(proto, IoCManager.Resolve<IResourceCache>()).ToList();
} }
} }
} }

View File

@@ -1,11 +1,10 @@
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
using System.Linq;
using Content.Client.Popups; using Content.Client.Popups;
using Content.Shared.Construction; using Content.Shared.Construction;
using Content.Shared.Construction.Prototypes; using Content.Shared.Construction.Prototypes;
using Content.Shared.Construction.Steps;
using Content.Shared.Examine; using Content.Shared.Examine;
using Content.Shared.Input; using Content.Shared.Input;
using Content.Shared.Interaction;
using Content.Shared.Wall; using Content.Shared.Wall;
using JetBrains.Annotations; using JetBrains.Annotations;
using Robust.Client.GameObjects; using Robust.Client.GameObjects;
@@ -15,6 +14,7 @@ using Robust.Shared.Input.Binding;
using Robust.Shared.Map; using Robust.Shared.Map;
using Robust.Shared.Player; using Robust.Shared.Player;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using Robust.Shared.Utility;
namespace Content.Client.Construction namespace Content.Client.Construction
{ {
@@ -25,7 +25,6 @@ namespace Content.Client.Construction
public sealed class ConstructionSystem : SharedConstructionSystem public sealed class ConstructionSystem : SharedConstructionSystem
{ {
[Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IPlayerManager _playerManager = default!;
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly ExamineSystemShared _examineSystem = default!; [Dependency] private readonly ExamineSystemShared _examineSystem = default!;
[Dependency] private readonly SharedTransformSystem _transformSystem = default!; [Dependency] private readonly SharedTransformSystem _transformSystem = default!;
[Dependency] private readonly PopupSystem _popupSystem = default!; [Dependency] private readonly PopupSystem _popupSystem = default!;
@@ -33,6 +32,8 @@ namespace Content.Client.Construction
private readonly Dictionary<int, EntityUid> _ghosts = new(); private readonly Dictionary<int, EntityUid> _ghosts = new();
private readonly Dictionary<string, ConstructionGuide> _guideCache = new(); private readonly Dictionary<string, ConstructionGuide> _guideCache = new();
private readonly Dictionary<string, string> _recipesMetadataCache = [];
public bool CraftingEnabled { get; private set; } public bool CraftingEnabled { get; private set; }
/// <inheritdoc /> /// <inheritdoc />
@@ -40,6 +41,8 @@ namespace Content.Client.Construction
{ {
base.Initialize(); base.Initialize();
WarmupRecipesCache();
UpdatesOutsidePrediction = true; UpdatesOutsidePrediction = true;
SubscribeLocalEvent<LocalPlayerAttachedEvent>(HandlePlayerAttached); SubscribeLocalEvent<LocalPlayerAttachedEvent>(HandlePlayerAttached);
SubscribeNetworkEvent<AckStructureConstructionMessage>(HandleAckStructure); SubscribeNetworkEvent<AckStructureConstructionMessage>(HandleAckStructure);
@@ -63,6 +66,77 @@ namespace Content.Client.Construction
ClearGhost(component.GhostId); ClearGhost(component.GhostId);
} }
public bool TryGetRecipePrototype(string constructionProtoId, [NotNullWhen(true)] out string? targetProtoId)
{
if (_recipesMetadataCache.TryGetValue(constructionProtoId, out targetProtoId))
return true;
targetProtoId = null;
return false;
}
private void WarmupRecipesCache()
{
foreach (var constructionProto in PrototypeManager.EnumeratePrototypes<ConstructionPrototype>())
{
if (!PrototypeManager.TryIndex(constructionProto.Graph, out var graphProto))
continue;
if (constructionProto.TargetNode is not { } targetNodeId)
continue;
if (!graphProto.Nodes.TryGetValue(targetNodeId, out var targetNode))
continue;
// Recursion is for wimps.
var stack = new Stack<ConstructionGraphNode>();
stack.Push(targetNode);
do
{
var node = stack.Pop();
// I never realized if this uid affects anything...
// EntityUid? userUid = args.SenderSession.State.ControlledEntity.HasValue
// ? GetEntity(args.SenderSession.State.ControlledEntity.Value)
// : null;
// We try to get the id of the target prototype, if it fails, we try going through the edges.
if (node.Entity.GetId(null, null, new(EntityManager)) is not { } entityId)
{
// If the stack is not empty, there is a high probability that the loop will go to infinity.
if (stack.Count == 0)
{
foreach (var edge in node.Edges)
{
if (graphProto.Nodes.TryGetValue(edge.Target, out var graphNode))
stack.Push(graphNode);
}
}
continue;
}
// If we got the id of the prototype, we exit the “recursion” by clearing the stack.
stack.Clear();
if (!PrototypeManager.TryIndex(constructionProto.ID, out ConstructionPrototype? recipe))
continue;
if (!PrototypeManager.TryIndex(entityId, out var proto))
continue;
var name = recipe.SetName.HasValue ? Loc.GetString(recipe.SetName) : proto.Name;
var desc = recipe.SetDescription.HasValue ? Loc.GetString(recipe.SetDescription) : proto.Description;
recipe.Name = name;
recipe.Description = desc;
_recipesMetadataCache.Add(constructionProto.ID, entityId);
} while (stack.Count > 0);
}
}
private void OnConstructionGuideReceived(ResponseConstructionGuide ev) private void OnConstructionGuideReceived(ResponseConstructionGuide ev)
{ {
_guideCache[ev.ConstructionId] = ev.Guide; _guideCache[ev.ConstructionId] = ev.Guide;
@@ -88,7 +162,7 @@ namespace Content.Client.Construction
private void HandleConstructionGhostExamined(EntityUid uid, ConstructionGhostComponent component, ExaminedEvent args) private void HandleConstructionGhostExamined(EntityUid uid, ConstructionGhostComponent component, ExaminedEvent args)
{ {
if (component.Prototype == null) if (component.Prototype?.Name is null)
return; return;
using (args.PushGroup(nameof(ConstructionGhostComponent))) using (args.PushGroup(nameof(ConstructionGhostComponent)))
@@ -97,7 +171,7 @@ namespace Content.Client.Construction
"construction-ghost-examine-message", "construction-ghost-examine-message",
("name", component.Prototype.Name))); ("name", component.Prototype.Name)));
if (!_prototypeManager.TryIndex(component.Prototype.Graph, out ConstructionGraphPrototype? graph)) if (!PrototypeManager.TryIndex(component.Prototype.Graph, out var graph))
return; return;
var startNode = graph.Nodes[component.Prototype.StartNode]; var startNode = graph.Nodes[component.Prototype.StartNode];
@@ -198,6 +272,9 @@ namespace Content.Client.Construction
return false; return false;
} }
if (!TryGetRecipePrototype(prototype.ID, out var targetProtoId) || !PrototypeManager.TryIndex(targetProtoId, out EntityPrototype? targetProto))
return false;
if (GhostPresent(loc)) if (GhostPresent(loc))
return false; return false;
@@ -214,17 +291,44 @@ namespace Content.Client.Construction
comp.GhostId = ghost.GetHashCode(); comp.GhostId = ghost.GetHashCode();
EntityManager.GetComponent<TransformComponent>(ghost.Value).LocalRotation = dir.ToAngle(); EntityManager.GetComponent<TransformComponent>(ghost.Value).LocalRotation = dir.ToAngle();
_ghosts.Add(comp.GhostId, ghost.Value); _ghosts.Add(comp.GhostId, ghost.Value);
var sprite = EntityManager.GetComponent<SpriteComponent>(ghost.Value); var sprite = EntityManager.GetComponent<SpriteComponent>(ghost.Value);
sprite.Color = new Color(48, 255, 48, 128); sprite.Color = new Color(48, 255, 48, 128);
for (int i = 0; i < prototype.Layers.Count; i++) if (targetProto.TryGetComponent(out IconComponent? icon, EntityManager.ComponentFactory))
{ {
sprite.AddBlankLayer(i); // There is no way to actually check if this already exists, so we blindly insert a new one sprite.AddBlankLayer(0);
sprite.LayerSetSprite(i, prototype.Layers[i]); sprite.LayerSetSprite(0, icon.Icon);
sprite.LayerSetShader(0, "unshaded");
sprite.LayerSetVisible(0, true);
}
else if (targetProto.Components.TryGetValue("Sprite", out _))
{
var dummy = EntityManager.SpawnEntity(targetProtoId, MapCoordinates.Nullspace);
var targetSprite = EntityManager.EnsureComponent<SpriteComponent>(dummy);
EntityManager.System<AppearanceSystem>().OnChangeData(dummy, targetSprite);
for (var i = 0; i < targetSprite.AllLayers.Count(); i++)
{
if (!targetSprite[i].Visible || !targetSprite[i].RsiState.IsValid)
continue;
var rsi = targetSprite[i].Rsi ?? targetSprite.BaseRSI;
if (rsi is null || !rsi.TryGetState(targetSprite[i].RsiState, out var state) ||
state.StateId.Name is null)
continue;
sprite.AddBlankLayer(i);
sprite.LayerSetSprite(i, new SpriteSpecifier.Rsi(rsi.Path, state.StateId.Name));
sprite.LayerSetShader(i, "unshaded"); sprite.LayerSetShader(i, "unshaded");
sprite.LayerSetVisible(i, true); sprite.LayerSetVisible(i, true);
} }
EntityManager.DeleteEntity(dummy);
}
else
return false;
if (prototype.CanBuildInImpassable) if (prototype.CanBuildInImpassable)
EnsureComp<WallMountComponent>(ghost.Value).Arc = new(Math.Tau); EnsureComp<WallMountComponent>(ghost.Value).Arc = new(Math.Tau);

View File

@@ -1,11 +1,12 @@
<DefaultWindow xmlns="https://spacestation14.io"> <DefaultWindow xmlns="https://spacestation14.io"
xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls">
<BoxContainer Orientation="Horizontal" HorizontalExpand="True"> <BoxContainer Orientation="Horizontal" HorizontalExpand="True">
<BoxContainer Orientation="Vertical" MinWidth="243" Margin="0 0 5 0"> <BoxContainer Orientation="Vertical" MinWidth="243" Margin="0 0 5 0">
<BoxContainer Orientation="Horizontal" HorizontalExpand="True" Margin="0 0 0 5"> <BoxContainer Orientation="Horizontal" HorizontalExpand="True" Margin="0 0 0 5">
<LineEdit Name="SearchBar" PlaceHolder="Search" HorizontalExpand="True"/> <LineEdit Name="SearchBar" PlaceHolder="{Loc 'construction-menu-search'}" HorizontalExpand="True"/>
<OptionButton Name="OptionCategories" Access="Public" MinSize="130 0"/> <OptionButton Name="OptionCategories" Access="Public" MinSize="130 0"/>
</BoxContainer> </BoxContainer>
<ItemList Name="Recipes" Access="Public" SelectMode="Single" VerticalExpand="True"/> <controls:ListContainer Name="Recipes" Access="Public" Group="True" Toggle="True" VerticalExpand="True" />
<ScrollContainer Name="RecipesGridScrollContainer" VerticalExpand="True" Access="Public" Visible="False"> <ScrollContainer Name="RecipesGridScrollContainer" VerticalExpand="True" Access="Public" Visible="False">
<GridContainer Name="RecipesGrid" Columns="5" Access="Public"/> <GridContainer Name="RecipesGrid" Columns="5" Access="Public"/>
</ScrollContainer> </ScrollContainer>
@@ -18,7 +19,7 @@
<Control> <Control>
<BoxContainer Orientation="Vertical" HorizontalExpand="True" Margin="0 0 0 5"> <BoxContainer Orientation="Vertical" HorizontalExpand="True" Margin="0 0 0 5">
<BoxContainer Orientation="Horizontal" Align="Center"> <BoxContainer Orientation="Horizontal" Align="Center">
<TextureRect Name="TargetTexture" HorizontalAlignment="Right" Stretch="Keep" Margin="0 0 10 0"/> <EntityPrototypeView Name="TargetTexture" HorizontalAlignment="Right" Stretch="Fill" Margin="0 0 10 0"/>
<BoxContainer Orientation="Vertical"> <BoxContainer Orientation="Vertical">
<RichTextLabel Name="TargetName"/> <RichTextLabel Name="TargetName"/>
<RichTextLabel Name="TargetDesc"/> <RichTextLabel Name="TargetDesc"/>

View File

@@ -1,14 +1,11 @@
using System;
using System.Numerics; using System.Numerics;
using Content.Client.UserInterface.Controls;
using Content.Shared.Construction.Prototypes;
using Robust.Client.AutoGenerated; using Robust.Client.AutoGenerated;
using Robust.Client.Graphics;
using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.CustomControls;
using Robust.Client.UserInterface.XAML; using Robust.Client.UserInterface.XAML;
using Robust.Shared.Graphics; using Robust.Shared.Prototypes;
using Robust.Shared.IoC;
using Robust.Shared.Localization;
namespace Content.Client.Construction.UI namespace Content.Client.Construction.UI
{ {
@@ -28,7 +25,7 @@ namespace Content.Client.Construction.UI
bool GridViewButtonPressed { get; set; } bool GridViewButtonPressed { get; set; }
bool BuildButtonPressed { get; set; } bool BuildButtonPressed { get; set; }
ItemList Recipes { get; } ListContainer Recipes { get; }
ItemList RecipeStepList { get; } ItemList RecipeStepList { get; }
@@ -36,14 +33,14 @@ namespace Content.Client.Construction.UI
GridContainer RecipesGrid { get; } GridContainer RecipesGrid { get; }
event EventHandler<(string search, string catagory)> PopulateRecipes; event EventHandler<(string search, string catagory)> PopulateRecipes;
event EventHandler<ItemList.Item?> RecipeSelected; event EventHandler<ConstructionMenu.ConstructionMenuListData?> RecipeSelected;
event EventHandler RecipeFavorited; event EventHandler RecipeFavorited;
event EventHandler<bool> BuildButtonToggled; event EventHandler<bool> BuildButtonToggled;
event EventHandler<bool> EraseButtonToggled; event EventHandler<bool> EraseButtonToggled;
event EventHandler ClearAllGhosts; event EventHandler ClearAllGhosts;
void ClearRecipeInfo(); void ClearRecipeInfo();
void SetRecipeInfo(string name, string description, Texture iconTexture, bool isItem, bool isFavorite); void SetRecipeInfo(string name, string description, EntityPrototype? targetPrototype, bool isItem, bool isFavorite);
void ResetPlacement(); void ResetPlacement();
#region Window Control #region Window Control
@@ -94,8 +91,36 @@ namespace Content.Client.Construction.UI
Title = Loc.GetString("construction-menu-title"); Title = Loc.GetString("construction-menu-title");
BuildButton.Text = Loc.GetString("construction-menu-place-ghost"); BuildButton.Text = Loc.GetString("construction-menu-place-ghost");
Recipes.OnItemSelected += obj => RecipeSelected?.Invoke(this, obj.ItemList[obj.ItemIndex]); Recipes.ItemPressed += (_, data) => RecipeSelected?.Invoke(this, data as ConstructionMenuListData);
Recipes.OnItemDeselected += _ => RecipeSelected?.Invoke(this, null); Recipes.NoItemSelected += () => RecipeSelected?.Invoke(this, null);
Recipes.GenerateItem += (data, button) =>
{
if (data is not ConstructionMenuListData (var prototype, var targetPrototype))
return;
var entProtoView = new EntityPrototypeView()
{
SetSize = new(32f),
Stretch = SpriteView.StretchMode.Fill,
Scale = new(2),
Margin = new(0, 2),
};
entProtoView.SetPrototype(targetPrototype);
var label = new Label()
{
Text = prototype.Name,
Margin = new(5, 0),
};
var box = new BoxContainer();
box.AddChild(entProtoView);
box.AddChild(label);
button.AddChild(box);
button.ToolTip = prototype.Description;
button.AddStyleClass(ListContainer.StyleClassListContainerButton);
};
SearchBar.OnTextChanged += _ => SearchBar.OnTextChanged += _ =>
PopulateRecipes?.Invoke(this, (SearchBar.Text, Categories[OptionCategories.SelectedId])); PopulateRecipes?.Invoke(this, (SearchBar.Text, Categories[OptionCategories.SelectedId]));
@@ -121,7 +146,7 @@ namespace Content.Client.Construction.UI
public event EventHandler? ClearAllGhosts; public event EventHandler? ClearAllGhosts;
public event EventHandler<(string search, string catagory)>? PopulateRecipes; public event EventHandler<(string search, string catagory)>? PopulateRecipes;
public event EventHandler<ItemList.Item?>? RecipeSelected; public event EventHandler<ConstructionMenuListData?>? RecipeSelected;
public event EventHandler? RecipeFavorited; public event EventHandler? RecipeFavorited;
public event EventHandler<bool>? BuildButtonToggled; public event EventHandler<bool>? BuildButtonToggled;
public event EventHandler<bool>? EraseButtonToggled; public event EventHandler<bool>? EraseButtonToggled;
@@ -133,13 +158,17 @@ namespace Content.Client.Construction.UI
} }
public void SetRecipeInfo( public void SetRecipeInfo(
string name, string description, Texture iconTexture, bool isItem, bool isFavorite) string name,
string description,
EntityPrototype? targetPrototype,
bool isItem,
bool isFavorite)
{ {
BuildButton.Disabled = false; BuildButton.Disabled = false;
BuildButton.Text = Loc.GetString(isItem ? "construction-menu-place-ghost" : "construction-menu-craft"); BuildButton.Text = Loc.GetString(isItem ? "construction-menu-place-ghost" : "construction-menu-craft");
TargetName.SetMessage(name); TargetName.SetMessage(name);
TargetDesc.SetMessage(description); TargetDesc.SetMessage(description);
TargetTexture.Texture = iconTexture; TargetTexture.SetPrototype(targetPrototype?.ID);
FavoriteButton.Visible = true; FavoriteButton.Visible = true;
FavoriteButton.Text = Loc.GetString( FavoriteButton.Text = Loc.GetString(
isFavorite ? "construction-add-favorite-button" : "construction-remove-from-favorite-button"); isFavorite ? "construction-add-favorite-button" : "construction-remove-from-favorite-button");
@@ -150,9 +179,11 @@ namespace Content.Client.Construction.UI
BuildButton.Disabled = true; BuildButton.Disabled = true;
TargetName.SetMessage(string.Empty); TargetName.SetMessage(string.Empty);
TargetDesc.SetMessage(string.Empty); TargetDesc.SetMessage(string.Empty);
TargetTexture.Texture = null; TargetTexture.SetPrototype(null);
FavoriteButton.Visible = false; FavoriteButton.Visible = false;
RecipeStepList.Clear(); RecipeStepList.Clear();
} }
public sealed record ConstructionMenuListData(ConstructionPrototype Prototype, EntityPrototype TargetPrototype) : ListData;
} }
} }

View File

@@ -10,10 +10,8 @@ using Robust.Client.Placement;
using Robust.Client.Player; using Robust.Client.Player;
using Robust.Client.UserInterface; using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.Controls;
using Robust.Client.Utility;
using Robust.Shared.Enums; using Robust.Shared.Enums;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using static Robust.Client.UserInterface.Controls.BaseButton;
namespace Content.Client.Construction.UI namespace Content.Client.Construction.UI
{ {
@@ -30,18 +28,20 @@ namespace Content.Client.Construction.UI
[Dependency] private readonly IPlacementManager _placementManager = default!; [Dependency] private readonly IPlacementManager _placementManager = default!;
[Dependency] private readonly IUserInterfaceManager _uiManager = default!; [Dependency] private readonly IUserInterfaceManager _uiManager = default!;
[Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IPlayerManager _playerManager = default!;
private readonly SpriteSystem _spriteSystem;
private readonly IConstructionMenuView _constructionView; private readonly IConstructionMenuView _constructionView;
private readonly EntityWhitelistSystem _whitelistSystem; private readonly EntityWhitelistSystem _whitelistSystem;
private readonly SpriteSystem _spriteSystem;
private ConstructionSystem? _constructionSystem; private ConstructionSystem? _constructionSystem;
private ConstructionPrototype? _selected; private ConstructionPrototype? _selected;
private List<ConstructionPrototype> _favoritedRecipes = []; private List<ConstructionPrototype> _favoritedRecipes = [];
private Dictionary<string, TextureButton> _recipeButtons = new(); private Dictionary<string, ContainerButton> _recipeButtons = new();
private string _selectedCategory = string.Empty; private string _selectedCategory = string.Empty;
private string _favoriteCatName = "construction-category-favorites";
private string _forAllCategoryName = "construction-category-all"; private const string FavoriteCatName = "construction-category-favorites";
private const string ForAllCategoryName = "construction-category-all";
private bool CraftingAvailable private bool CraftingAvailable
{ {
get => _uiManager.GetActiveUIWidget<GameTopMenuBar>().CraftingButton.Visible; get => _uiManager.GetActiveUIWidget<GameTopMenuBar>().CraftingButton.Visible;
@@ -98,15 +98,18 @@ namespace Content.Client.Construction.UI
_placementManager.PlacementChanged += OnPlacementChanged; _placementManager.PlacementChanged += OnPlacementChanged;
_constructionView.OnClose += () => _uiManager.GetActiveUIWidget<GameTopMenuBar>().CraftingButton.Pressed = false; _constructionView.OnClose +=
() => _uiManager.GetActiveUIWidget<GameTopMenuBar>().CraftingButton.Pressed = false;
_constructionView.ClearAllGhosts += (_, _) => _constructionSystem?.ClearAllGhosts(); _constructionView.ClearAllGhosts += (_, _) => _constructionSystem?.ClearAllGhosts();
_constructionView.PopulateRecipes += OnViewPopulateRecipes; _constructionView.PopulateRecipes += OnViewPopulateRecipes;
_constructionView.RecipeSelected += OnViewRecipeSelected; _constructionView.RecipeSelected += OnViewRecipeSelected;
_constructionView.BuildButtonToggled += (_, b) => BuildButtonToggled(b); _constructionView.BuildButtonToggled += (_, b) => BuildButtonToggled(b);
_constructionView.EraseButtonToggled += (_, b) => _constructionView.EraseButtonToggled += (_, b) =>
{ {
if (_constructionSystem is null) return; if (_constructionSystem is null)
if (b) _placementManager.Clear(); return;
if (b)
_placementManager.Clear();
_placementManager.ToggleEraserHijacked(new ConstructionPlacementHijack(_constructionSystem, null)); _placementManager.ToggleEraserHijacked(new ConstructionPlacementHijack(_constructionSystem, null));
_constructionView.EraseButtonPressed = b; _constructionView.EraseButtonPressed = b;
}; };
@@ -117,7 +120,7 @@ namespace Content.Client.Construction.UI
OnViewPopulateRecipes(_constructionView, (string.Empty, string.Empty)); OnViewPopulateRecipes(_constructionView, (string.Empty, string.Empty));
} }
public void OnHudCraftingButtonToggled(ButtonToggledEventArgs args) public void OnHudCraftingButtonToggled(BaseButton.ButtonToggledEventArgs args)
{ {
WindowOpen = args.Pressed; WindowOpen = args.Pressed;
} }
@@ -139,7 +142,7 @@ namespace Content.Client.Construction.UI
_constructionView.ResetPlacement(); _constructionView.ResetPlacement();
} }
private void OnViewRecipeSelected(object? sender, ItemList.Item? item) private void OnViewRecipeSelected(object? sender, ConstructionMenu.ConstructionMenuListData? item)
{ {
if (item is null) if (item is null)
{ {
@@ -148,12 +151,15 @@ namespace Content.Client.Construction.UI
return; return;
} }
_selected = (ConstructionPrototype) item.Metadata!; _selected = item.Prototype;
if (_placementManager.IsActive && !_placementManager.Eraser) UpdateGhostPlacement();
if (_placementManager is { IsActive: true, Eraser: false })
UpdateGhostPlacement();
PopulateInfo(_selected); PopulateInfo(_selected);
} }
private void OnGridViewRecipeSelected(object? sender, ConstructionPrototype? recipe) private void OnGridViewRecipeSelected(object? _, ConstructionPrototype? recipe)
{ {
if (recipe is null) if (recipe is null)
{ {
@@ -163,62 +169,21 @@ namespace Content.Client.Construction.UI
} }
_selected = recipe; _selected = recipe;
if (_placementManager.IsActive && !_placementManager.Eraser) UpdateGhostPlacement();
if (_placementManager is { IsActive: true, Eraser: false })
UpdateGhostPlacement();
PopulateInfo(_selected); PopulateInfo(_selected);
} }
private void OnViewPopulateRecipes(object? sender, (string search, string catagory) args) private void OnViewPopulateRecipes(object? sender, (string search, string catagory) args)
{ {
var (search, category) = args; if (_constructionSystem is null)
return;
var recipes = new List<ConstructionPrototype>(); var actualRecipes = GetAndSortRecipes(args);
var isEmptyCategory = string.IsNullOrEmpty(category) || category == _forAllCategoryName;
if (isEmptyCategory)
_selectedCategory = string.Empty;
else
_selectedCategory = category;
foreach (var recipe in _prototypeManager.EnumeratePrototypes<ConstructionPrototype>())
{
if (recipe.Hide)
continue;
if (_playerManager.LocalSession == null
|| _playerManager.LocalEntity == null
|| _whitelistSystem.IsWhitelistFail(recipe.EntityWhitelist, _playerManager.LocalEntity.Value))
continue;
if (!string.IsNullOrEmpty(search))
{
if (!recipe.Name.ToLowerInvariant().Contains(search.Trim().ToLowerInvariant()))
continue;
}
if (!isEmptyCategory)
{
if (category == _favoriteCatName)
{
if (!_favoritedRecipes.Contains(recipe))
{
continue;
}
}
else if (recipe.Category != category)
{
continue;
}
}
recipes.Add(recipe);
}
recipes.Sort((a, b) => string.Compare(a.Name, b.Name, StringComparison.InvariantCulture));
var recipesList = _constructionView.Recipes; var recipesList = _constructionView.Recipes;
recipesList.Clear();
var recipesGrid = _constructionView.RecipesGrid; var recipesGrid = _constructionView.RecipesGrid;
recipesGrid.RemoveAllChildren(); recipesGrid.RemoveAllChildren();
@@ -227,17 +192,35 @@ namespace Content.Client.Construction.UI
if (_constructionView.GridViewButtonPressed) if (_constructionView.GridViewButtonPressed)
{ {
foreach (var recipe in recipes) recipesList.PopulateList([]);
PopulateGrid(recipesGrid, actualRecipes);
}
else
{ {
var itemButton = new TextureButton recipesList.PopulateList(actualRecipes);
}
}
private void PopulateGrid(GridContainer recipesGrid,
IEnumerable<ConstructionMenu.ConstructionMenuListData> actualRecipes)
{ {
TextureNormal = _spriteSystem.Frame0(recipe.Icon), foreach (var recipe in actualRecipes)
VerticalAlignment = Control.VAlignment.Center, {
Name = recipe.Name, var protoView = new EntityPrototypeView()
ToolTip = recipe.Name, {
Scale = new Vector2(1.35f), Scale = new Vector2(1.2f),
ToggleMode = true,
}; };
protoView.SetPrototype(recipe.TargetPrototype);
var itemButton = new ContainerButton()
{
VerticalAlignment = Control.VAlignment.Center,
Name = recipe.TargetPrototype.Name,
ToolTip = recipe.TargetPrototype.Name,
ToggleMode = true,
Children = { protoView },
};
var itemButtonPanelContainer = new PanelContainer var itemButtonPanelContainer = new PanelContainer
{ {
PanelOverride = new StyleBoxFlat { BackgroundColor = StyleNano.ButtonColorDefault }, PanelOverride = new StyleBoxFlat { BackgroundColor = StyleNano.ButtonColorDefault },
@@ -250,37 +233,79 @@ namespace Content.Client.Construction.UI
if (buttonToggledEventArgs.Pressed && if (buttonToggledEventArgs.Pressed &&
_selected != null && _selected != null &&
_recipeButtons.TryGetValue(_selected.Name, out var oldButton)) _recipeButtons.TryGetValue(_selected.Name!, out var oldButton))
{ {
oldButton.Pressed = false; oldButton.Pressed = false;
SelectGridButton(oldButton, false); SelectGridButton(oldButton, false);
} }
OnGridViewRecipeSelected(this, buttonToggledEventArgs.Pressed ? recipe : null); OnGridViewRecipeSelected(this, buttonToggledEventArgs.Pressed ? recipe.Prototype : null);
}; };
recipesGrid.AddChild(itemButtonPanelContainer); recipesGrid.AddChild(itemButtonPanelContainer);
_recipeButtons[recipe.Name] = itemButton; _recipeButtons[recipe.Prototype.Name!] = itemButton;
var isCurrentButtonSelected = _selected == recipe; var isCurrentButtonSelected = _selected == recipe.Prototype;
itemButton.Pressed = isCurrentButtonSelected; itemButton.Pressed = isCurrentButtonSelected;
SelectGridButton(itemButton, isCurrentButtonSelected); SelectGridButton(itemButton, isCurrentButtonSelected);
} }
} }
else
private List<ConstructionMenu.ConstructionMenuListData> GetAndSortRecipes((string, string) args)
{ {
foreach (var recipe in recipes) var recipes = new List<ConstructionMenu.ConstructionMenuListData>();
var (search, category) = args;
var isEmptyCategory = string.IsNullOrEmpty(category) || category == ForAllCategoryName;
_selectedCategory = isEmptyCategory ? string.Empty : category;
foreach (var recipe in _prototypeManager.EnumeratePrototypes<ConstructionPrototype>())
{ {
recipesList.Add(GetItem(recipe, recipesList)); if (recipe.Hide)
} continue;
}
if (_playerManager.LocalSession == null
|| _playerManager.LocalEntity == null
|| _whitelistSystem.IsWhitelistFail(recipe.EntityWhitelist, _playerManager.LocalEntity.Value))
continue;
if (!string.IsNullOrEmpty(search) && (recipe.Name is { } name &&
!name.Contains(search.Trim(),
StringComparison.InvariantCultureIgnoreCase)))
continue;
if (!isEmptyCategory)
{
if ((category != FavoriteCatName || !_favoritedRecipes.Contains(recipe)) &&
recipe.Category != category)
continue;
} }
private void SelectGridButton(TextureButton button, bool select) if (!_constructionSystem!.TryGetRecipePrototype(recipe.ID, out var targetProtoId))
{
Logger.Error("Cannot find the target prototype in the recipe cache with the id \"{0}\" of {1}.",
recipe.ID,
nameof(ConstructionPrototype));
continue;
}
if (!_prototypeManager.TryIndex(targetProtoId, out EntityPrototype? proto))
continue;
recipes.Add(new(recipe, proto));
}
recipes.Sort(
(a, b) => string.Compare(a.Prototype.Name, b.Prototype.Name, StringComparison.InvariantCulture));
return recipes;
}
private void SelectGridButton(BaseButton button, bool select)
{ {
if (button.Parent is not PanelContainer buttonPanel) if (button.Parent is not PanelContainer buttonPanel)
return; return;
button.Modulate = select ? Color.Green : Color.White; button.Modulate = select ? Color.Green : Color.Transparent;
var buttonColor = select ? StyleNano.ButtonColorDefault : Color.Transparent; var buttonColor = select ? StyleNano.ButtonColorDefault : Color.Transparent;
buttonPanel.PanelOverride = new StyleBoxFlat { BackgroundColor = buttonColor }; buttonPanel.PanelOverride = new StyleBoxFlat { BackgroundColor = buttonColor };
} }
@@ -302,12 +327,12 @@ namespace Content.Client.Construction.UI
// hard-coded to show all recipes // hard-coded to show all recipes
var idx = 0; var idx = 0;
categoriesArray[idx++] = _forAllCategoryName; categoriesArray[idx++] = ForAllCategoryName;
// hard-coded to show favorites if it need // hard-coded to show favorites if it need
if (isFavorites) if (isFavorites)
{ {
categoriesArray[idx++] = _favoriteCatName; categoriesArray[idx++] = FavoriteCatName;
} }
var sortedProtoCategories = uniqueCategories.OrderBy(Loc.GetString); var sortedProtoCategories = uniqueCategories.OrderBy(Loc.GetString);
@@ -325,18 +350,31 @@ namespace Content.Client.Construction.UI
if (!string.IsNullOrEmpty(selectCategory) && selectCategory == categoriesArray[i]) if (!string.IsNullOrEmpty(selectCategory) && selectCategory == categoriesArray[i])
_constructionView.OptionCategories.SelectId(i); _constructionView.OptionCategories.SelectId(i);
} }
_constructionView.Categories = categoriesArray; _constructionView.Categories = categoriesArray;
} }
private void PopulateInfo(ConstructionPrototype prototype) private void PopulateInfo(ConstructionPrototype? prototype)
{ {
if (_constructionSystem is null)
return;
_constructionView.ClearRecipeInfo(); _constructionView.ClearRecipeInfo();
if (prototype is null)
return;
if (!_constructionSystem.TryGetRecipePrototype(prototype.ID, out var targetProtoId))
return;
if (!_prototypeManager.TryIndex(targetProtoId, out EntityPrototype? proto))
return;
_constructionView.SetRecipeInfo( _constructionView.SetRecipeInfo(
prototype.Name, prototype.Description, _spriteSystem.Frame0(prototype.Icon), prototype.Name!,
prototype.Description!,
proto,
prototype.Type != ConstructionType.Item, prototype.Type != ConstructionType.Item,
!_favoritedRecipes.Contains(prototype)); !_favoritedRecipes.Contains(prototype));
@@ -349,16 +387,17 @@ namespace Content.Client.Construction.UI
if (_constructionSystem?.GetGuide(prototype) is not { } guide) if (_constructionSystem?.GetGuide(prototype) is not { } guide)
return; return;
foreach (var entry in guide.Entries) foreach (var entry in guide.Entries)
{ {
var text = entry.Arguments != null var text = entry.Arguments != null
? Loc.GetString(entry.Localization, entry.Arguments) : Loc.GetString(entry.Localization); ? Loc.GetString(entry.Localization, entry.Arguments)
: Loc.GetString(entry.Localization);
if (entry.EntryNumber is { } number) if (entry.EntryNumber is { } number)
{ {
text = Loc.GetString("construction-presenter-step-wrapper", text = Loc.GetString("construction-presenter-step-wrapper",
("step-number", number), ("text", text)); ("step-number", number),
("text", text));
} }
// The padding needs to be applied regardless of text length... (See PadLeft documentation) // The padding needs to be applied regardless of text length... (See PadLeft documentation)
@@ -369,23 +408,12 @@ namespace Content.Client.Construction.UI
} }
} }
private ItemList.Item GetItem(ConstructionPrototype recipe, ItemList itemList)
{
return new(itemList)
{
Metadata = recipe,
Text = recipe.Name,
Icon = _spriteSystem.Frame0(recipe.Icon),
TooltipEnabled = true,
TooltipText = recipe.Description,
};
}
private void BuildButtonToggled(bool pressed) private void BuildButtonToggled(bool pressed)
{ {
if (pressed) if (pressed)
{ {
if (_selected == null) return; if (_selected == null)
return;
// not bound to a construction system // not bound to a construction system
if (_constructionSystem is null) if (_constructionSystem is null)
@@ -405,7 +433,8 @@ namespace Content.Client.Construction.UI
{ {
IsTile = false, IsTile = false,
PlacementOption = _selected.PlacementMode PlacementOption = _selected.PlacementMode
}, new ConstructionPlacementHijack(_constructionSystem, _selected)); },
new ConstructionPlacementHijack(_constructionSystem, _selected));
UpdateGhostPlacement(); UpdateGhostPlacement();
} }
@@ -432,35 +461,36 @@ namespace Content.Client.Construction.UI
{ {
IsTile = false, IsTile = false,
PlacementOption = _selected.PlacementMode, PlacementOption = _selected.PlacementMode,
}, new ConstructionPlacementHijack(constructSystem, _selected)); },
new ConstructionPlacementHijack(constructSystem, _selected));
_constructionView.BuildButtonPressed = true; _constructionView.BuildButtonPressed = true;
} }
private void OnSystemLoaded(object? sender, SystemChangedArgs args) private void OnSystemLoaded(object? sender, SystemChangedArgs args)
{ {
if (args.System is ConstructionSystem system) SystemBindingChanged(system); if (args.System is ConstructionSystem system)
SystemBindingChanged(system);
} }
private void OnSystemUnloaded(object? sender, SystemChangedArgs args) private void OnSystemUnloaded(object? sender, SystemChangedArgs args)
{ {
if (args.System is ConstructionSystem) SystemBindingChanged(null); if (args.System is ConstructionSystem)
SystemBindingChanged(null);
} }
private void OnViewFavoriteRecipe() private void OnViewFavoriteRecipe()
{ {
if (_selected is not ConstructionPrototype recipe) if (_selected is null)
return; return;
if (!_favoritedRecipes.Remove(_selected)) if (!_favoritedRecipes.Remove(_selected))
_favoritedRecipes.Add(_selected); _favoritedRecipes.Add(_selected);
if (_selectedCategory == _favoriteCatName) if (_selectedCategory == FavoriteCatName)
{ {
if (_favoritedRecipes.Count > 0) OnViewPopulateRecipes(_constructionView,
OnViewPopulateRecipes(_constructionView, (string.Empty, _favoriteCatName)); _favoritedRecipes.Count > 0 ? (string.Empty, FavoriteCatName) : (string.Empty, string.Empty));
else
OnViewPopulateRecipes(_constructionView, (string.Empty, string.Empty));
} }
PopulateInfo(_selected); PopulateInfo(_selected);
@@ -492,6 +522,9 @@ namespace Content.Client.Construction.UI
private void BindToSystem(ConstructionSystem system) private void BindToSystem(ConstructionSystem system)
{ {
_constructionSystem = system; _constructionSystem = system;
OnViewPopulateRecipes(_constructionView, (string.Empty, string.Empty));
system.ToggleCraftingWindow += SystemOnToggleMenu; system.ToggleCraftingWindow += SystemOnToggleMenu;
system.FlipConstructionPrototype += SystemFlipConstructionPrototype; system.FlipConstructionPrototype += SystemFlipConstructionPrototype;
system.CraftingAvailabilityChanged += SystemCraftingAvailabilityChanged; system.CraftingAvailabilityChanged += SystemCraftingAvailabilityChanged;
@@ -533,7 +566,8 @@ namespace Content.Client.Construction.UI
if (IsAtFront) if (IsAtFront)
{ {
WindowOpen = false; WindowOpen = false;
_uiManager.GetActiveUIWidget<GameTopMenuBar>().CraftingButton.SetClickPressed(false); // This does not call CraftingButtonToggled _uiManager.GetActiveUIWidget<GameTopMenuBar>()
.CraftingButton.SetClickPressed(false); // This does not call CraftingButtonToggled
} }
else else
_constructionView.MoveToFront(); _constructionView.MoveToFront();
@@ -541,7 +575,8 @@ namespace Content.Client.Construction.UI
else else
{ {
WindowOpen = true; WindowOpen = true;
_uiManager.GetActiveUIWidget<GameTopMenuBar>().CraftingButton.SetClickPressed(true); // This does not call CraftingButtonToggled _uiManager.GetActiveUIWidget<GameTopMenuBar>()
.CraftingButton.SetClickPressed(true); // This does not call CraftingButtonToggled
} }
} }

View File

@@ -219,6 +219,7 @@ public sealed class CargoTest
- type: stack - type: stack
id: StackProto id: StackProto
name: stack-steel
spawn: A spawn: A
- type: entity - type: entity

View File

@@ -4,7 +4,6 @@ using Content.Shared.Construction;
using Content.Shared.DoAfter; using Content.Shared.DoAfter;
using JetBrains.Annotations; using JetBrains.Annotations;
using Robust.Server.Containers; using Robust.Server.Containers;
using Robust.Shared.Prototypes;
using Robust.Shared.Random; using Robust.Shared.Random;
using SharedToolSystem = Content.Shared.Tools.Systems.SharedToolSystem; using SharedToolSystem = Content.Shared.Tools.Systems.SharedToolSystem;

View File

@@ -28,7 +28,7 @@ namespace Content.Shared.Construction
[DataField("transform")] [DataField("transform")]
public IGraphTransform[] TransformLogic = Array.Empty<IGraphTransform>(); public IGraphTransform[] TransformLogic = Array.Empty<IGraphTransform>();
[DataField("entity", customTypeSerializer: typeof(GraphNodeEntitySerializer), serverOnly:true)] [DataField("entity", customTypeSerializer: typeof(GraphNodeEntitySerializer))]
public IGraphNodeEntity Entity { get; private set; } = new NullNodeEntity(); public IGraphNodeEntity Entity { get; private set; } = new NullNodeEntity();
/// <summary> /// <summary>

View File

@@ -1,10 +1,8 @@
using Content.Server.Construction.Components;
using Content.Shared.Construction;
using Content.Shared.Construction.Components; using Content.Shared.Construction.Components;
using JetBrains.Annotations; using JetBrains.Annotations;
using Robust.Server.Containers; using Robust.Shared.Containers;
namespace Content.Server.Construction.NodeEntities; namespace Content.Shared.Construction.NodeEntities;
/// <summary> /// <summary>
/// Works for both <see cref="ComputerBoardComponent"/> and <see cref="MachineBoardComponent"/> /// Works for both <see cref="ComputerBoardComponent"/> and <see cref="MachineBoardComponent"/>
@@ -21,7 +19,7 @@ public sealed partial class BoardNodeEntity : IGraphNodeEntity
if (uid == null) if (uid == null)
return null; return null;
var containerSystem = args.EntityManager.EntitySysManager.GetEntitySystem<ContainerSystem>(); var containerSystem = args.EntityManager.EntitySysManager.GetEntitySystem<SharedContainerSystem>();
if (!containerSystem.TryGetContainer(uid.Value, Container, out var container) if (!containerSystem.TryGetContainer(uid.Value, Container, out var container)
|| container.ContainedEntities.Count == 0) || container.ContainedEntities.Count == 0)

View File

@@ -1,8 +1,6 @@
using Content.Shared.Construction.Conditions; using Content.Shared.Construction.Conditions;
using Content.Shared.Whitelist; using Content.Shared.Whitelist;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
using Robust.Shared.Utility;
namespace Content.Shared.Construction.Prototypes; namespace Content.Shared.Construction.Prototypes;
@@ -14,65 +12,57 @@ public sealed partial class ConstructionPrototype : IPrototype
/// <summary> /// <summary>
/// Hide from the construction list /// Hide from the construction list
/// </summary> /// </summary>
[DataField("hide")] [DataField]
public bool Hide = false; public bool Hide = false;
/// <summary> /// <summary>
/// Friendly name displayed in the construction GUI. /// Friendly name displayed in the construction GUI.
/// </summary> /// </summary>
[DataField("name")] [DataField("name")]
public string Name = string.Empty; public LocId? SetName;
public string? Name;
/// <summary> /// <summary>
/// "Useful" description displayed in the construction GUI. /// "Useful" description displayed in the construction GUI.
/// </summary> /// </summary>
[DataField("description")] [DataField("description")]
public string Description = string.Empty; public LocId? SetDescription;
public string? Description;
/// <summary> /// <summary>
/// The <see cref="ConstructionGraphPrototype"/> this construction will be using. /// The <see cref="ConstructionGraphPrototype"/> this construction will be using.
/// </summary> /// </summary>
[DataField("graph", customTypeSerializer: typeof(PrototypeIdSerializer<ConstructionGraphPrototype>), required: true)] [DataField(required: true)]
public string Graph = string.Empty; public ProtoId<ConstructionGraphPrototype> Graph { get; private set; } = string.Empty;
/// <summary> /// <summary>
/// The target <see cref="ConstructionGraphNode"/> this construction will guide the user to. /// The target <see cref="ConstructionGraphNode"/> this construction will guide the user to.
/// </summary> /// </summary>
[DataField("targetNode")] [DataField(required: true)]
public string TargetNode = string.Empty; public string TargetNode { get; private set; } = default!;
/// <summary> /// <summary>
/// The starting <see cref="ConstructionGraphNode"/> this construction will start at. /// The starting <see cref="ConstructionGraphNode"/> this construction will start at.
/// </summary> /// </summary>
[DataField("startNode")] [DataField(required: true)]
public string StartNode = string.Empty; public string StartNode { get; private set; } = default!;
/// <summary>
/// Texture path inside the construction GUI.
/// </summary>
[DataField("icon")]
public SpriteSpecifier Icon = SpriteSpecifier.Invalid;
/// <summary>
/// Texture paths used for the construction ghost.
/// </summary>
[DataField("layers")]
private List<SpriteSpecifier>? _layers;
/// <summary> /// <summary>
/// If you can start building or complete steps on impassable terrain. /// If you can start building or complete steps on impassable terrain.
/// </summary> /// </summary>
[DataField("canBuildInImpassable")] [DataField]
public bool CanBuildInImpassable { get; private set; } public bool CanBuildInImpassable { get; private set; }
/// <summary> /// <summary>
/// If not null, then this is used to check if the entity trying to construct this is whitelisted. /// If not null, then this is used to check if the entity trying to construct this is whitelisted.
/// If they're not whitelisted, hide the item. /// If they're not whitelisted, hide the item.
/// </summary> /// </summary>
[DataField("entityWhitelist")] [DataField]
public EntityWhitelist? EntityWhitelist = null; public EntityWhitelist? EntityWhitelist { get; private set; }
[DataField("category")] public string Category { get; private set; } = ""; [DataField] public string Category { get; private set; } = string.Empty;
[DataField("objectType")] public ConstructionType Type { get; private set; } = ConstructionType.Structure; [DataField("objectType")] public ConstructionType Type { get; private set; } = ConstructionType.Structure;
@@ -80,23 +70,22 @@ public sealed partial class ConstructionPrototype : IPrototype
[IdDataField] [IdDataField]
public string ID { get; private set; } = default!; public string ID { get; private set; } = default!;
[DataField("placementMode")] [DataField]
public string PlacementMode = "PlaceFree"; public string PlacementMode = "PlaceFree";
/// <summary> /// <summary>
/// Whether this construction can be constructed rotated or not. /// Whether this construction can be constructed rotated or not.
/// </summary> /// </summary>
[DataField("canRotate")] [DataField]
public bool CanRotate = true; public bool CanRotate = true;
/// <summary> /// <summary>
/// Construction to replace this construction with when the current one is 'flipped' /// Construction to replace this construction with when the current one is 'flipped'
/// </summary> /// </summary>
[DataField("mirror", customTypeSerializer: typeof(PrototypeIdSerializer<ConstructionPrototype>))] [DataField]
public string? Mirror; public ProtoId<ConstructionPrototype>? Mirror { get; private set; }
public IReadOnlyList<IConstructionCondition> Conditions => _conditions; public IReadOnlyList<IConstructionCondition> Conditions => _conditions;
public IReadOnlyList<SpriteSpecifier> Layers => _layers ?? new List<SpriteSpecifier> { Icon };
} }
public enum ConstructionType public enum ConstructionType

View File

@@ -5,24 +5,26 @@ namespace Content.Shared.Construction.Steps
{ {
public abstract partial class ArbitraryInsertConstructionGraphStep : EntityInsertConstructionGraphStep public abstract partial class ArbitraryInsertConstructionGraphStep : EntityInsertConstructionGraphStep
{ {
[DataField("name")] public string Name { get; private set; } = string.Empty; [DataField] public LocId Name { get; private set; } = string.Empty;
[DataField("icon")] public SpriteSpecifier? Icon { get; private set; } [DataField] public SpriteSpecifier? Icon { get; private set; }
public override void DoExamine(ExaminedEvent examinedEvent) public override void DoExamine(ExaminedEvent examinedEvent)
{ {
if (string.IsNullOrEmpty(Name)) if (string.IsNullOrEmpty(Name))
return; return;
examinedEvent.PushMarkup(Loc.GetString("construction-insert-arbitrary-entity", ("stepName", Name))); var stepName = Loc.GetString(Name);
examinedEvent.PushMarkup(Loc.GetString("construction-insert-arbitrary-entity", ("stepName", stepName)));
} }
public override ConstructionGuideEntry GenerateGuideEntry() public override ConstructionGuideEntry GenerateGuideEntry()
{ {
var stepName = Loc.GetString(Name);
return new ConstructionGuideEntry return new ConstructionGuideEntry
{ {
Localization = "construction-presenter-arbitrary-step", Localization = "construction-presenter-arbitrary-step",
Arguments = new (string, object)[]{("name", Name)}, Arguments = new (string, object)[]{("name", stepName)},
Icon = Icon, Icon = Icon,
}; };
} }

View File

@@ -26,7 +26,7 @@ namespace Content.Shared.Construction.Steps
("componentName", Component))// Terrible. ("componentName", Component))// Terrible.
: Loc.GetString( : Loc.GetString(
"construction-insert-exact-entity", "construction-insert-exact-entity",
("entityName", Name))); ("entityName", Loc.GetString(Name))));
} }
} }
} }

View File

@@ -2,7 +2,6 @@ using System.Diagnostics.CodeAnalysis;
using Content.Shared.Examine; using Content.Shared.Examine;
using Content.Shared.Stacks; using Content.Shared.Stacks;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Shared.Construction.Steps namespace Content.Shared.Construction.Steps
{ {
@@ -11,16 +10,17 @@ namespace Content.Shared.Construction.Steps
{ {
// TODO: Make this use the material system. // TODO: Make this use the material system.
// TODO TODO: Make the material system not shit. // TODO TODO: Make the material system not shit.
[DataField("material", required:true, customTypeSerializer:typeof(PrototypeIdSerializer<StackPrototype>))] [DataField("material", required:true)]
public string MaterialPrototypeId { get; private set; } = "Steel"; public ProtoId<StackPrototype> MaterialPrototypeId { get; private set; }
[DataField("amount")] public int Amount { get; private set; } = 1; [DataField] public int Amount { get; private set; } = 1;
public override void DoExamine(ExaminedEvent examinedEvent) public override void DoExamine(ExaminedEvent examinedEvent)
{ {
var material = IoCManager.Resolve<IPrototypeManager>().Index<StackPrototype>(MaterialPrototypeId); var material = IoCManager.Resolve<IPrototypeManager>().Index(MaterialPrototypeId);
var materialName = Loc.GetString(material.Name, ("amount", Amount));
examinedEvent.PushMarkup(Loc.GetString("construction-insert-material-entity", ("amount", Amount), ("materialName", material.Name))); examinedEvent.PushMarkup(Loc.GetString("construction-insert-material-entity", ("amount", Amount), ("materialName", materialName)));
} }
public override bool EntityValid(EntityUid uid, IEntityManager entityManager, IComponentFactory compFactory) public override bool EntityValid(EntityUid uid, IEntityManager entityManager, IComponentFactory compFactory)
@@ -40,12 +40,13 @@ namespace Content.Shared.Construction.Steps
public override ConstructionGuideEntry GenerateGuideEntry() public override ConstructionGuideEntry GenerateGuideEntry()
{ {
var material = IoCManager.Resolve<IPrototypeManager>().Index<StackPrototype>(MaterialPrototypeId); var material = IoCManager.Resolve<IPrototypeManager>().Index(MaterialPrototypeId);
var materialName = Loc.GetString(material.Name, ("amount", Amount));
return new ConstructionGuideEntry() return new ConstructionGuideEntry()
{ {
Localization = "construction-presenter-material-step", Localization = "construction-presenter-material-step",
Arguments = new (string, object)[]{("amount", Amount), ("material", material.Name)}, Arguments = new (string, object)[]{("amount", Amount), ("material", materialName)},
Icon = material.Icon, Icon = material.Icon,
}; };
} }

View File

@@ -1,7 +1,4 @@
using System.Diagnostics;
using System.Globalization;
using System.Linq; using System.Linq;
using System.Text;
using Content.Shared.Eye.Blinding.Components; using Content.Shared.Eye.Blinding.Components;
using Content.Shared.Ghost; using Content.Shared.Ghost;
using Content.Shared.Interaction; using Content.Shared.Interaction;

View File

@@ -1,5 +1,4 @@
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
using Robust.Shared.Utility; using Robust.Shared.Utility;
namespace Content.Shared.Stacks; namespace Content.Shared.Stacks;
@@ -16,7 +15,7 @@ public sealed partial class StackPrototype : IPrototype
/// </summary> /// </summary>
/// <remarks>This is a localization string ID.</remarks> /// <remarks>This is a localization string ID.</remarks>
[DataField] [DataField]
public string Name { get; private set; } = string.Empty; public LocId Name { get; private set; } = string.Empty;
/// <summary> /// <summary>
/// An icon that will be used to represent this stack type. /// An icon that will be used to represent this stack type.

View File

@@ -5,4 +5,5 @@ construction-menu-place-ghost = Place construction ghost
construction-menu-clear-all = Clear All construction-menu-clear-all = Clear All
construction-menu-eraser-mode = Eraser Mode construction-menu-eraser-mode = Eraser Mode
construction-menu-craft = Craft construction-menu-craft = Craft
construction-menu-search = Search
construction-menu-grid-view = Grid View construction-menu-grid-view = Grid View

View File

@@ -0,0 +1,7 @@
construction-graph-component-any-computer-circuit-board = any computer circuit board
construction-graph-component-door-electronics-circuit-board = door electronics circuit board
construction-graph-component-flash = flash
construction-graph-component-second-flash = second flash
construction-graph-component-power-cell = power cell
construction-graph-component-apc-electronics = APC electronics
construction-graph-component-payload-trigger = trigger

View File

@@ -0,0 +1,2 @@
recipes-secret-door-name = secret door
recipes-secret-door-desc = A secret door disguised as a wall. The perfect solution for hiding your shady dealings.

View File

@@ -0,0 +1,144 @@
# clown
construction-graph-tag-banana-peel = a banana peel
construction-graph-tag-clown-suit = a clown suit
construction-graph-tag-clown-shoes = clown shoes
construction-graph-tag-clown-mask = a clown mask
construction-graph-tag-clown-recorder = clown recorder
construction-graph-tag-clown-bike-horn = bike horn
construction-graph-tag-clowne-horn = broken bike horn
construction-graph-tag-happy-honk-meal = happy honk meal
construction-graph-tag-woeful-cluwne-meal = woeful cluwne meal
# mime
construction-graph-tag-suspenders = suspenders
construction-graph-tag-mime-meal = mime edition happy honk meal
# crayon
construction-graph-tag-purple-crayon = purple crayon
construction-graph-tag-red-crayon = red crayon
construction-graph-tag-yellow-crayon = yellow crayon
construction-graph-tag-black-crayon = black crayon
# eva
construction-graph-tag-eva-suit = an EVA suit
construction-graph-tag-eva-helmet = an EVA helmet
# hud
construction-graph-tag-security-hud = security hud
construction-graph-tag-medical-hud = medical hud
# security
construction-graph-tag-sun-glasses = sun glasses
construction-graph-tag-security-helmet = security helmet
# materials
construction-graph-tag-capacitor = capacitor
construction-graph-tag-voice-trigger = a voice trigger
construction-graph-tag-signal-trigger = a signal trigger
construction-graph-tag-proximity-sensor = proximity sensor
construction-graph-tag-glass-shard = a glass shard
construction-graph-tag-plasma-glass-shard = a plasma glass shard
construction-graph-tag-uranium-glass-shard = a uranium glass shard
construction-graph-tag-reinforced-glass-shard = a reinforced glass shard
construction-graph-tag-grey-flatcap = a grey flatcap
construction-graph-tag-brown-flatcap = a brown flatcap
construction-graph-tag-cuffs = cuffs
construction-graph-tag-payload = payload
construction-graph-tag-empty-can = an empty can
construction-graph-tag-igniter = an igniter
construction-graph-tag-modular-receiver = modular receiver
construction-graph-tag-power-cell-small = power cell small
construction-graph-tag-power-cell = power cell
construction-graph-tag-potato-battery = a potato battery
construction-graph-tag-super-compact-ai-chip = a super-compact AI chip
# other
construction-graph-tag-light-bulb = light bulb
construction-graph-tag-radio = radio
construction-graph-tag-pipe = pipe
construction-graph-tag-human-head = human head
construction-graph-tag-bucket = bucket
construction-graph-tag-borg-arm = borg arm
construction-graph-tag-borg-head = borg head
construction-graph-tag-medkit = medkit
construction-graph-tag-flower = flower
construction-graph-tag-ambrosia = ambrosia
construction-graph-tag-rifle-stock = rifle stock
construction-graph-tag-match-stick = match stick
construction-graph-tag-potato = a potato
construction-graph-tag-wheat-bushel = wheat bushel
construction-graph-tag-corgi-hide = corgi hide
# toys
construction-graph-tag-rubber-ducky = a rubber ducky
construction-graph-tag-ghost = ghost soft toy
construction-graph-tag-ectoplasm = ectoplasm
construction-graph-tag-lizard-plushie = lizard plushie
# carpet
construction-graph-tag-black-carpet = black carpet
construction-graph-tag-blue-carpet = blue carpet
construction-graph-tag-cyan-carpet = cyan carpet
construction-graph-tag-green-carpet = green carpet
construction-graph-tag-orange-carpet = orange carpet
construction-graph-tag-pink-carpet = pink carpet
construction-graph-tag-purple-carpet = purple carpet
construction-graph-tag-red-carpet = red carpet
construction-graph-tag-white-carpet = white carpet
# mechs
construction-graph-tag-hamtr-central-control-module = HAMTR central control module
construction-graph-tag-hamtr-peripherals-control-module = HAMTR peripherals control module
construction-graph-tag-honk-central-control-module = H.O.N.K. central control module
construction-graph-tag-honk-peripherals-control-module = H.O.N.K. peripherals control module
construction-graph-tag-honk-weapon-control-and-targeting-module = H.O.N.K. weapon control and targeting module
construction-graph-tag-ripley-central-control-module = ripley central control module
construction-graph-tag-ripley-peripherals-control-module = ripley peripherals control module
# structures
construction-graph-tag-door-electronics-circuit-board = door electronics circuit board
construction-graph-tag-firelock-electronics-circuit-board = firelock electronics circuit board
construction-graph-tag-conveyor-belt-assembly = conveyor belt assembly
# tools
construction-graph-tag-multitool = a multitool
construction-graph-tag-health-analyzer = health analyzer
# utils
construction-graph-tag-air-alarm-electronics = air alarm electronics
construction-graph-tag-fire-alarm-electronics = fire alarm electronics
construction-graph-tag-mailing-unit-electronics = mailing unit electronics
construction-graph-tag-intercom-electronics = intercom electronics
construction-graph-tag-solar-assembly-parts = solar assembly parts
construction-graph-tag-solar-tracker-electronics = solar tracker electronics
construction-graph-tag-station-map-electronics = station map electronics
construction-graph-tag-signal-timer-electronics = signal timer electronics
construction-graph-tag-screen-timer-electronics = screen timer electronics
construction-graph-tag-brig-timer-electronics = brig timer electronics
construction-graph-tag-wallmount-generator-circuit-board = wallmount generator circuit board
construction-graph-tag-wallmount-apu-circuit-board = wallmount APU circuit board
construction-graph-tag-wallmount-substation-circuit-board = wallmount substation circuit board
construction-graph-tag-surveillance-camera-monitor-board = surveillance camera monitor board
construction-graph-tag-television-board = television board
construction-graph-tag-freezer-electronics = freezer electronics
# crystals
construction-graph-tag-cyan-crystal-shard = cyan crystal shard
construction-graph-tag-blue-crystal-shard = blue crystal shard
construction-graph-tag-pink-crystal-shard = pink crystal shard
construction-graph-tag-orange-crystal-shard = orange crystal shard
construction-graph-tag-red-crystal-shard = red crystal shard
construction-graph-tag-green-crystal-shard = green crystal shard
construction-graph-tag-yellow-crystal-shard = yellow crystal shard
construction-graph-tag-black-crystal-shard = black crystal shard
# unknown
construction-graph-tag-weapon-pistol-chimp-upgrade-kit = pistol CHIMP upgrade kit
construction-graph-tag-torch = torch
# atmos
construction-graph-tag-fire-extinguisher = fire extinguisher
construction-graph-tag-fire-helmet = fire helmet
# salvage
construction-graph-tag-spationaut-hardsuit = spationaut hardsuit

View File

@@ -0,0 +1,234 @@
stack-steel = steel
stack-bananium = bananium
stack-glass = glass
stack-plasteel = plasteel
stack-brass = brass
stack-plastic = plastic
stack-silver = silver
stack-gold = gold
stack-reinforced-glass = reinforced glass
stack-plasma-glass = plasma glass
stack-uranium = uranium
stack-uranium-glass = uranium glass
stack-clockwork-glass = clockwork glass
stack-reinforced-plasma-glass = reinforced plasma glass
stack-reinforced-uranium-glass = reinforced uranium glass
stack-gunpowder = gunpowder
stack-cardboard = cardboard
stack-bones = {$amount ->
[1] bone
*[other] bones
}
stack-cloth = {$amount ->
[1] cloth
*[other] cloths
}
stack-lv-cable = {$amount ->
[1] lv cable
*[other] lv cables
}
stack-mv-cable = {$amount ->
[1] mv cable
*[other] mv cables
}
stack-hv-cable = {$amount ->
[1] hv cable
*[other] hv cables
}
stack-wood-plank = {$amount ->
[1] wood plank
*[other] wood planks
}
stack-durathread = {$amount ->
[1] durathread
*[other] durathreads
}
stack-rods = {$amount ->
[1] rod
*[other] rods
}
stack-meat-sheet = {$amount ->
[1] meat sheet
*[other] meat sheets
}
stack-space-carp-tooth = space carp {$amount ->
[1] tooth
*[other] teeth
}
stack-paper = {$amount ->
[1] paper
*[other] papers
}
stack-diamond = {$amount ->
[1] diamond
*[other] diamonds
}
stack-silk = {$amount ->
[1] silk
*[other] silks
}
stack-cotton = {$amount ->
[1] cotton
*[other] cottons
}
stack-artifact-fragment = artifact {$amount ->
[1] fragment
*[other] fragments
}
# best materials
stack-ground-tobacco = ground tobacco
stack-ground-cannabis = ground cannabis
stack-ground-rainbow-cannabis = ground rainbow cannabis
stack-dried-tobacco-leaves = dried tobacco leaves
stack-dried-cannabis-leaves = dried cannabis leaves
stack-dried-rainbow-cannabis-leaves = dried rainbow cannabis leaves
stack-cigarette-filter = cigarette {$amount ->
[1] filter
*[other] filters
}
stack-rolling-paper = rolling {$amount ->
[1] paper
*[other] papers
}
stack-fulton = fulton
stack-credit = speso
stack-plasma = plasma
stack-biomass = biomass
stack-pyrotton = pyrotton
stack-sharkminnow-tooth = sharkminnow tooth
stack-goliath-hide = goliath hide
stack-telecrystal = telecrystal
stack-gold-ore = gold ore
stack-rough-diamond = rough diamond
stack-iron-ore = iron ore
stack-plasma-ore = plasma ore
stack-silver-ore = silver ore
stack-space-quartz = space quartz
stack-uranium-ore = uranium ore
stack-bananium-ore = bananium ore
stack-coal = coal
stack-salt = salt
stack-inflatable-wall = inflatable wall
stack-inflatable-door = inflatable door
stack-ointment = ointment
stack-aloe-cream = aloe cream
stack-gauze = gauze
stack-brutepack = brutepack
stack-bloodpack = bloodpack
stack-medicated-suture = medicated-suture
stack-regenerative-mesh = regenerative-mesh
stack-capacitor = capacitor
stack-micro-manipulator = micro manipulator
stack-matter-bin = matter bin
stack-pancake = pancake
stack-blueberry-pancake = blueberry pancake
stack-chocolate-chip-pancake = chocolate chip pancake
stack-pizza-box = pizza box
stack-dark-tile = dark tile
stack-dark-steel-diagonal-mini-tile = dark steel diagonal mini tile
stack-dark-steel-diagonal-tile = dark steel diagonal tile
stack-dark-steel-herringbone = dark steel herringbone
stack-dark-steel-mini-tile = dark steel mini tile
stack-dark-steel-mono-tile = dark steel mono tile
stack-dark-steel-pavement = dark steel pavement
stack-dark-steel-vertical-pavement = dark steel vertical pavement
stack-offset-dark-steel-tile = offset dark steel tile
stack-offset-steel-tile = offset steel tile
stack-steel-diagonal-mini-tile = steel diagonal mini tile
stack-steel-diagonal-tile = steel diagonal tile
stack-steel-herringbone = steel herringbone
stack-steel-mini-tile = steel mini tile
stack-steel-mono-tile = steel mono tile
stack-steel-pavement = steel pavement
stack-steel-vertical-pavement = steel vertical pavement
stack-white-tile = white tile
stack-offset-white-steel-tile = offset white steel tile
stack-white-steel-diagonal-mini-tile = white steel diagonal mini tile
stack-white-steel-diagonal-tile = white steel diagonal tile
stack-white-steel-herringbone = white steel herringbone
stack-white-steel-mini-tile = white steel mini tile
stack-white-steel-mono-tile = white steel mono tile
stack-white-steel-pavement = white steel pavement
stack-white-steel-vertical-pavement = white steel vertical pavement
stack-steel-dark-checker-tile = steel dark checker tile
stack-steel-light-checker-tile = steel light checker tile
stack-steel-tile = steel tile
stack-wood-floor = wood floor
stack-techmaint-floor = techmaint floor
stack-freezer-tile = freezer tile
stack-showroom-tile = showroom tile
stack-green-circuit-floor = green-circuit floor
stack-gold-floor = gold floor
stack-mono-tile = mono tile
stack-filled-brass-plate = filled brass plate
stack-smooth-brass-plate = smooth brass plate
stack-linoleum-floor = linoleum floor
stack-hydro-tile = hydro tile
stack-lime-tile = lime tile
stack-dirty-tile = dirty tile
stack-white-shuttle-tile = white shuttle tile
stack-blue-shuttle-tile = blue shuttle tile
stack-orange-shuttle-tile = orange shuttle tile
stack-purple-shuttle-tile = purple shuttle tile
stack-red-shuttle-tile = red shuttle tile
stack-grey-shuttle-tile = grey shuttle tile
stack-black-shuttle-tile = black shuttle tile
stack-eighties-floor-tile = eighties floor tile
stack-blue-arcade-tile = blue arcade tile
stack-red-arcade-tile = red arcade tile
stack-red-carpet-tile = red carpet tile
stack-block-carpet-tile = block carpet tile
stack-blue-carpet-tile = blue carpet tile
stack-green-carpet-tile = green carpet tile
stack-orange-carpet-tile = orange carpet tile
stack-skyblue-carpet-tile = skyblue carpet tile
stack-purple-carpet-tile = purple carpet tile
stack-pink-carpet-tile = pink carpet tile
stack-cyan-carpet-tile = cyan carpet tile
stack-white-carpet-tile = white carpet tile
stack-clown-carpet-tile = clown carpet tile
stack-office-carpet-tile = office carpet tile
stack-boxing-ring-tile = boxing ring tile
stack-gym-floor-tile = gym floor tile
stack-elevator-shaft-tile = elevator shaft tile
stack-rock-vault-tile = rock vault tile
stack-blue-floor-tile = blue floor tile
stack-mining-floor-tile = mining floor tile
stack-dark-mining-floor-tile = dark mining floor tile
stack-light-mining-floor-tile = light mining floor tile
stack-item-bar-floor-tile = item bar floor tile
stack-clown-floor-tile = clown floor tile
stack-mime-floor-tile = mime floor tile
stack-kitchen-floor-tile = kitchen floor tile
stack-laundry-floor-tile = laundry floor tile
stack-concrete-tile = concrete tile
stack-concrete-mono-tile = concrete mono tile
stack-concrete-smooth = concrete smooth
stack-gray-concrete-tile = gray concrete tile
stack-gray-concrete-mono-tile = gray concrete mono tile
stack-gray-concrete-smooth = gray concrete smooth
stack-old-concrete-tile = old concrete tile
stack-old-concrete-mono-tile = old concrete mono tile
stack-old-concrete-smooth = old concrete smooth
stack-silver-floor-tile = silver floor tile
stack-bcircuit-floor-tile = bcircuit floor tile
stack-grass-floor-tile = grass floor tile
stack-grass-jungle-floor-tile = grass jungle floor tile
stack-snow-floor-tile = snow floor tile
stack-wood-patter-floor = wood pattern floor
stack-flesh-floor = flesh floor
stack-steel-maint-floor = steel maint floor
stack-grating-maint-floor = grating maint floor
stack-web-tile = web tile
stack-astro-grass-floor = astro-grass floor
stack-mowed-astro-grass-floor = mowed astro-grass floor
stack-jungle-astro-grass-floor = jungle astro-grass floor
stack-astro-ice-floor = astro-ice floor
stack-astro-snow-floor = astro-snow floor
stack-large-wood-floor = large wood floor
stack-red-circuit-floor = red-circuit floor
stack-asteroid-astro-sand-floor = asteroid astro-sand floor

View File

@@ -63,7 +63,7 @@
- type: stack - type: stack
id: Credit id: Credit
name: speso name: stack-credit
icon: { sprite: /Textures/Objects/Economy/cash.rsi, state: cash } icon: { sprite: /Textures/Objects/Economy/cash.rsi, state: cash }
spawn: SpaceCash spawn: SpaceCash

View File

@@ -1,7 +1,7 @@
# Stack # Stack
- type: stack - type: stack
id: Fulton id: Fulton
name: fulton name: stack-fulton
icon: icon:
sprite: /Textures/Objects/Tools/fulton.rsi sprite: /Textures/Objects/Tools/fulton.rsi
state: extraction_pack state: extraction_pack

View File

@@ -7,19 +7,19 @@
- to: jumpsuit - to: jumpsuit
steps: steps:
- tag: BananaPeel - tag: BananaPeel
name: a banana peel name: construction-graph-tag-banana-peel
icon: icon:
sprite: Objects/Specific/Hydroponics/banana.rsi sprite: Objects/Specific/Hydroponics/banana.rsi
state: peel state: peel
doAfter: 1 doAfter: 1
- tag: BananaPeel - tag: BananaPeel
name: a banana peel name: construction-graph-tag-banana-peel
icon: icon:
sprite: Objects/Specific/Hydroponics/banana.rsi sprite: Objects/Specific/Hydroponics/banana.rsi
state: peel state: peel
doAfter: 1 doAfter: 1
- tag: BananaPeel - tag: BananaPeel
name: a banana peel name: construction-graph-tag-banana-peel
icon: icon:
sprite: Objects/Specific/Hydroponics/banana.rsi sprite: Objects/Specific/Hydroponics/banana.rsi
state: peel state: peel
@@ -28,7 +28,7 @@
amount: 1 amount: 1
doAfter: 1 doAfter: 1
- tag: ClownSuit - tag: ClownSuit
name: a clown suit name: construction-graph-tag-clown-suit
icon: icon:
sprite: Clothing/Uniforms/Jumpsuit/clown.rsi sprite: Clothing/Uniforms/Jumpsuit/clown.rsi
state: icon state: icon
@@ -45,19 +45,19 @@
- to: shoes - to: shoes
steps: steps:
- tag: BananaPeel - tag: BananaPeel
name: a banana peel name: construction-graph-tag-banana-peel
icon: icon:
sprite: Objects/Specific/Hydroponics/banana.rsi sprite: Objects/Specific/Hydroponics/banana.rsi
state: peel state: peel
doAfter: 1 doAfter: 1
- tag: BananaPeel - tag: BananaPeel
name: a banana peel name: construction-graph-tag-banana-peel
icon: icon:
sprite: Objects/Specific/Hydroponics/banana.rsi sprite: Objects/Specific/Hydroponics/banana.rsi
state: peel state: peel
doAfter: 1 doAfter: 1
- tag: BananaPeel - tag: BananaPeel
name: a banana peel name: construction-graph-tag-banana-peel
icon: icon:
sprite: Objects/Specific/Hydroponics/banana.rsi sprite: Objects/Specific/Hydroponics/banana.rsi
state: peel state: peel
@@ -66,7 +66,7 @@
amount: 1 amount: 1
doAfter: 1 doAfter: 1
- tag: ClownShoes - tag: ClownShoes
name: clown shoes name: construction-graph-tag-clown-shoes
icon: icon:
sprite: Clothing/Shoes/Specific/clown.rsi sprite: Clothing/Shoes/Specific/clown.rsi
state: icon state: icon
@@ -83,19 +83,19 @@
- to: mask - to: mask
steps: steps:
- tag: BananaPeel - tag: BananaPeel
name: a banana peel name: construction-graph-tag-banana-peel
icon: icon:
sprite: Objects/Specific/Hydroponics/banana.rsi sprite: Objects/Specific/Hydroponics/banana.rsi
state: peel state: peel
doAfter: 1 doAfter: 1
- tag: BananaPeel - tag: BananaPeel
name: a banana peel name: construction-graph-tag-banana-peel
icon: icon:
sprite: Objects/Specific/Hydroponics/banana.rsi sprite: Objects/Specific/Hydroponics/banana.rsi
state: peel state: peel
doAfter: 1 doAfter: 1
- tag: BananaPeel - tag: BananaPeel
name: a banana peel name: construction-graph-tag-banana-peel
icon: icon:
sprite: Objects/Specific/Hydroponics/banana.rsi sprite: Objects/Specific/Hydroponics/banana.rsi
state: peel state: peel
@@ -104,7 +104,7 @@
amount: 1 amount: 1
doAfter: 1 doAfter: 1
- tag: ClownMask - tag: ClownMask
name: a clown mask name: construction-graph-tag-clown-mask
icon: icon:
sprite: Clothing/Mask/clown.rsi sprite: Clothing/Mask/clown.rsi
state: icon state: icon

View File

@@ -10,37 +10,37 @@
amount: 5 amount: 5
doAfter: 1 doAfter: 1
- tag: SuitEVA - tag: SuitEVA
name: an EVA suit name: construction-graph-tag-eva-suit
icon: icon:
sprite: Clothing/OuterClothing/Suits/eva.rsi sprite: Clothing/OuterClothing/Suits/eva.rsi
state: icon state: icon
doAfter: 1 doAfter: 1
- tag: HelmetEVA - tag: HelmetEVA
name: an EVA helmet name: construction-graph-tag-eva-helmet
icon: icon:
sprite: Clothing/Head/Helmets/eva.rsi sprite: Clothing/Head/Helmets/eva.rsi
state: icon state: icon
doAfter: 1 doAfter: 1
- tag: CrayonPurple - tag: CrayonPurple
name: purple crayon name: construction-graph-tag-purple-crayon
icon: icon:
sprite: Objects/Fun/crayons.rsi sprite: Objects/Fun/crayons.rsi
state: purple state: purple
doAfter: 1 doAfter: 1
- tag: CrayonRed - tag: CrayonRed
name: red crayon name: construction-graph-tag-red-crayon
icon: icon:
sprite: Objects/Fun/crayons.rsi sprite: Objects/Fun/crayons.rsi
state: red state: red
doAfter: 1 doAfter: 1
- tag: CrayonYellow - tag: CrayonYellow
name: yellow crayon name: construction-graph-tag-yellow-crayon
icon: icon:
sprite: Objects/Fun/crayons.rsi sprite: Objects/Fun/crayons.rsi
state: yellow state: yellow
doAfter: 1 doAfter: 1
- tag: ClownRecorder - tag: ClownRecorder
name: clown recorder name: construction-graph-tag-clown-recorder
icon: icon:
sprite: Objects/Fun/clownrecorder.rsi sprite: Objects/Fun/clownrecorder.rsi
state: icon state: icon

View File

@@ -7,13 +7,13 @@
- to: shoes - to: shoes
steps: steps:
- tag: ToyRubberDuck - tag: ToyRubberDuck
name: a rubber ducky name: construction-graph-tag-rubber-ducky
icon: icon:
sprite: Objects/Fun/ducky.rsi sprite: Objects/Fun/ducky.rsi
state: icon state: icon
doAfter: 1 doAfter: 1
- tag: ToyRubberDuck - tag: ToyRubberDuck
name: a rubber ducky name: construction-graph-tag-rubber-ducky
icon: icon:
sprite: Objects/Fun/ducky.rsi sprite: Objects/Fun/ducky.rsi
state: icon state: icon

View File

@@ -7,13 +7,13 @@
- to: glassesSec - to: glassesSec
steps: steps:
- tag: Sunglasses - tag: Sunglasses
name: sun glasses name: construction-graph-tag-sun-glasses
icon: icon:
sprite: Clothing/Eyes/Glasses/sunglasses.rsi sprite: Clothing/Eyes/Glasses/sunglasses.rsi
state: icon state: icon
doAfter: 5 doAfter: 5
- tag: HudSecurity - tag: HudSecurity
name: security hud name: construction-graph-tag-security-hud
icon: icon:
sprite: Clothing/Eyes/Hud/sec.rsi sprite: Clothing/Eyes/Hud/sec.rsi
state: icon state: icon

View File

@@ -7,7 +7,7 @@
- to: helmet - to: helmet
steps: steps:
- tag: SecurityHelmet - tag: SecurityHelmet
name: security helmet name: construction-graph-tag-security-helmet
icon: icon:
sprite: Clothing/Head/Helmets/security.rsi sprite: Clothing/Head/Helmets/security.rsi
state: icon state: icon
@@ -16,7 +16,7 @@
- material: Glass - material: Glass
amount: 1 amount: 1
- tag: LightBulb - tag: LightBulb
name: light bulb name: construction-graph-tag-light-bulb
icon: icon:
sprite: Objects/Power/light_bulb.rsi sprite: Objects/Power/light_bulb.rsi
state: normal state: normal

View File

@@ -7,13 +7,13 @@
- to: shoes - to: shoes
steps: steps:
- tag: PlushieLizard #Weh! - tag: PlushieLizard #Weh!
name: lizard plushie name: construction-graph-tag-lizard-plushie
icon: icon:
sprite: Objects/Fun/toys.rsi sprite: Objects/Fun/toys.rsi
state: plushie_lizard state: plushie_lizard
doAfter: 1 doAfter: 1
- tag: PlushieLizard - tag: PlushieLizard
name: lizard plushie name: construction-graph-tag-lizard-plushie
icon: icon:
sprite: Objects/Fun/toys.rsi sprite: Objects/Fun/toys.rsi
state: plushie_lizard state: plushie_lizard

View File

@@ -7,13 +7,13 @@
- to: medsecHud - to: medsecHud
steps: steps:
- tag: HudMedical - tag: HudMedical
name: medical hud name: construction-graph-tag-medical-hud
icon: icon:
sprite: Clothing/Eyes/Hud/med.rsi sprite: Clothing/Eyes/Hud/med.rsi
state: icon state: icon
doAfter: 5 doAfter: 5
- tag: HudSecurity - tag: HudSecurity
name: security hud name: construction-graph-tag-security-hud
icon: icon:
sprite: Clothing/Eyes/Hud/sec.rsi sprite: Clothing/Eyes/Hud/sec.rsi
state: icon state: icon
@@ -22,7 +22,7 @@
amount: 5 amount: 5
doAfter: 5 doAfter: 5
- tag: Radio - tag: Radio
name: radio name: construction-graph-tag-radio
icon: icon:
sprite: Objects/Devices/communication.rsi sprite: Objects/Devices/communication.rsi
state: walkietalkie state: walkietalkie

View File

@@ -10,31 +10,31 @@
amount: 5 amount: 5
doAfter: 1 doAfter: 1
- tag: SuitEVA - tag: SuitEVA
name: an EVA suit name: construction-graph-tag-eva-suit
icon: icon:
sprite: Clothing/OuterClothing/Suits/eva.rsi sprite: Clothing/OuterClothing/Suits/eva.rsi
state: icon state: icon
doAfter: 1 doAfter: 1
- tag: HelmetEVA - tag: HelmetEVA
name: an EVA helmet name: construction-graph-tag-eva-helmet
icon: icon:
sprite: Clothing/Head/Helmets/eva.rsi sprite: Clothing/Head/Helmets/eva.rsi
state: icon state: icon
doAfter: 1 doAfter: 1
- tag: CrayonRed - tag: CrayonRed
name: red crayon name: construction-graph-tag-red-crayon
icon: icon:
sprite: Objects/Fun/crayons.rsi sprite: Objects/Fun/crayons.rsi
state: red state: red
doAfter: 1 doAfter: 1
- tag: CrayonBlack - tag: CrayonBlack
name: black crayon name: construction-graph-tag-black-crayon
icon: icon:
sprite: Objects/Fun/crayons.rsi sprite: Objects/Fun/crayons.rsi
state: black state: black
doAfter: 1 doAfter: 1
- tag: MimeBelt - tag: MimeBelt
name: suspenders name: construction-graph-tag-suspenders
icon: icon:
sprite: Clothing/Belt/suspenders_red.rsi sprite: Clothing/Belt/suspenders_red.rsi
state: icon state: icon

View File

@@ -7,7 +7,7 @@
- to: bananiumHorn - to: bananiumHorn
steps: steps:
- tag: Pipe - tag: Pipe
name: pipe name: construction-graph-tag-pipe
icon: icon:
sprite: Structures/Piping/Atmospherics/pipe.rsi sprite: Structures/Piping/Atmospherics/pipe.rsi
state: pipeStraight state: pipeStraight
@@ -16,7 +16,7 @@
amount: 4 amount: 4
doAfter: 1 doAfter: 1
- tag: BikeHorn - tag: BikeHorn
name: bike horn name: construction-graph-tag-clown-bike-horn
icon: icon:
sprite: Objects/Fun/bikehorn.rsi sprite: Objects/Fun/bikehorn.rsi
state: icon state: icon

View File

@@ -7,6 +7,7 @@
- to: lit - to: lit
steps: steps:
- tag: Torch - tag: Torch
name: construction-graph-tag-torch
doAfter: 2 doAfter: 2
- node: lit - node: lit

View File

@@ -33,7 +33,7 @@
icon: icon:
sprite: Mobs/Species/Human/parts.rsi sprite: Mobs/Species/Human/parts.rsi
state: "head_m" state: "head_m"
name: human head name: construction-graph-tag-human-head
doAfter: 1 doAfter: 1
- node: chairCursed - node: chairCursed

View File

@@ -24,7 +24,7 @@
steps: steps:
- component: ComputerBoard - component: ComputerBoard
store: board store: board
name: any computer circuit board name: construction-graph-component-any-computer-circuit-board
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "id_mod" state: "id_mod"

View File

@@ -16,14 +16,14 @@
store: part-container store: part-container
- component: Flash - component: Flash
name: flash name: construction-graph-component-flash
store: part-container store: part-container
icon: icon:
sprite: Objects/Weapons/Melee/flash.rsi sprite: Objects/Weapons/Melee/flash.rsi
state: flash state: flash
- component: Flash - component: Flash
name: second flash name: construction-graph-component-second-flash
store: part-container store: part-container
icon: icon:
sprite: Objects/Weapons/Melee/flash.rsi sprite: Objects/Weapons/Melee/flash.rsi

View File

@@ -34,7 +34,7 @@
data: 4 data: 4
- tag: HamtrCentralControlModule - tag: HamtrCentralControlModule
name: HAMTR central control module name: construction-graph-tag-hamtr-central-control-module
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "mainboard" state: "mainboard"
@@ -51,7 +51,7 @@
data: 6 data: 6
- tag: HamtrPeripheralsControlModule - tag: HamtrPeripheralsControlModule
name: HAMTR peripherals control module name: construction-graph-tag-hamtr-peripherals-control-module
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: id_mod state: id_mod
@@ -71,7 +71,7 @@
#currently mechs don't support upgrading. add them back in once that's squared away. #currently mechs don't support upgrading. add them back in once that's squared away.
- component: PowerCell - component: PowerCell
name: power cell name: construction-graph-component-power-cell
store: battery-container store: battery-container
icon: icon:
sprite: Objects/Power/power_cells.rsi sprite: Objects/Power/power_cells.rsi

View File

@@ -14,7 +14,7 @@
data: 1 data: 1
- tag: HonkerCentralControlModule - tag: HonkerCentralControlModule
name: H.O.N.K. central control module name: construction-graph-tag-honk-central-control-module
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "mainboard" state: "mainboard"
@@ -31,7 +31,7 @@
data: 3 data: 3
- tag: HonkerPeripheralsControlModule - tag: HonkerPeripheralsControlModule
name: H.O.N.K. peripherals control module name: construction-graph-tag-honk-peripherals-control-module
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: id_mod state: id_mod
@@ -48,7 +48,7 @@
data: 5 data: 5
- tag: HonkerTargetingControlModule - tag: HonkerTargetingControlModule
name: H.O.N.K. weapon control and targeting module name: construction-graph-tag-honk-weapon-control-and-targeting-module
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: id_mod state: id_mod
@@ -68,7 +68,7 @@
#currently mechs don't support upgrading. add them back in once that's squared away. #currently mechs don't support upgrading. add them back in once that's squared away.
- component: PowerCell - component: PowerCell
name: power cell name: construction-graph-component-power-cell
store: battery-container store: battery-container
icon: icon:
sprite: Objects/Power/power_cells.rsi sprite: Objects/Power/power_cells.rsi
@@ -89,7 +89,7 @@
icon: icon:
sprite: "Clothing/Mask/clown.rsi" sprite: "Clothing/Mask/clown.rsi"
state: "icon" state: "icon"
name: "a clown's mask" name: construction-graph-tag-clown-mask
doAfter: 1 doAfter: 1
completed: completed:
- !type:VisualizerDataInt - !type:VisualizerDataInt
@@ -100,7 +100,7 @@
icon: icon:
sprite: "Clothing/Shoes/Specific/clown.rsi" sprite: "Clothing/Shoes/Specific/clown.rsi"
state: "icon" state: "icon"
name: "a clown's shoes" name: construction-graph-tag-clown-shoes
doAfter: 1 doAfter: 1
completed: completed:
- !type:VisualizerDataInt - !type:VisualizerDataInt

View File

@@ -34,7 +34,7 @@
data: 4 data: 4
- tag: RipleyCentralControlModule - tag: RipleyCentralControlModule
name: ripley central control module name: construction-graph-tag-ripley-central-control-module
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "mainboard" state: "mainboard"
@@ -51,7 +51,7 @@
data: 6 data: 6
- tag: RipleyPeripheralsControlModule - tag: RipleyPeripheralsControlModule
name: ripley peripherals control module name: construction-graph-tag-ripley-peripherals-control-module
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: id_mod state: id_mod
@@ -71,7 +71,7 @@
#currently mechs don't support upgrading. add them back in once that's squared away. #currently mechs don't support upgrading. add them back in once that's squared away.
- component: PowerCell - component: PowerCell
name: power cell name: construction-graph-component-power-cell
store: battery-container store: battery-container
icon: icon:
sprite: Objects/Power/power_cells.rsi sprite: Objects/Power/power_cells.rsi

View File

@@ -7,7 +7,7 @@
- to: vim - to: vim
steps: steps:
- tag: VoiceTrigger - tag: VoiceTrigger
name: a voice trigger name: construction-graph-tag-voice-trigger
icon: icon:
sprite: "Objects/Devices/voice.rsi" sprite: "Objects/Devices/voice.rsi"
state: "voice" state: "voice"
@@ -16,7 +16,7 @@
key: "enum.MechAssemblyVisuals.State" key: "enum.MechAssemblyVisuals.State"
data: 1 data: 1
- component: PowerCell - component: PowerCell
name: a power cell name: construction-graph-component-power-cell
store: battery-container store: battery-container
icon: icon:
sprite: Objects/Power/power_cells.rsi sprite: Objects/Power/power_cells.rsi

View File

@@ -48,7 +48,7 @@
steps: steps:
- component: DoorElectronics - component: DoorElectronics
store: board store: board
name: "door electronics circuit board" name: construction-graph-component-door-electronics-circuit-board
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "door_electronics" state: "door_electronics"

View File

@@ -48,7 +48,7 @@
steps: steps:
- tag: DoorElectronics - tag: DoorElectronics
store: board store: board
name: "door electronics circuit board" name: construction-graph-tag-door-electronics-circuit-board
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "door_electronics" state: "door_electronics"

View File

@@ -47,7 +47,7 @@
steps: steps:
- tag: DoorElectronics - tag: DoorElectronics
store: board store: board
name: door electronics name: construction-graph-tag-door-electronics-circuit-board
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "door_electronics" state: "door_electronics"

View File

@@ -10,7 +10,7 @@
icon: icon:
sprite: Structures/conveyor.rsi sprite: Structures/conveyor.rsi
state: conveyor_loose state: conveyor_loose
name: conveyor belt assembly name: construction-graph-tag-conveyor-belt-assembly
doAfter: 2 doAfter: 2
- node: item - node: item
entity: ConveyorBeltAssembly entity: ConveyorBeltAssembly

View File

@@ -50,7 +50,7 @@
steps: steps:
- tag: FirelockElectronics - tag: FirelockElectronics
store: board store: board
name: firelock electronics name: construction-graph-tag-firelock-electronics-circuit-board
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "mainboard" state: "mainboard"

View File

@@ -42,7 +42,7 @@
- !type:EntityAnchored - !type:EntityAnchored
steps: steps:
- tag: SignalTrigger - tag: SignalTrigger
name: a signal trigger name: construction-graph-tag-signal-trigger
icon: icon:
sprite: Objects/Devices/signaltrigger.rsi sprite: Objects/Devices/signaltrigger.rsi
state: signaltrigger state: signaltrigger

View File

@@ -48,7 +48,7 @@
- to: electronics - to: electronics
steps: steps:
- component: PowerCell - component: PowerCell
name: power cell name: construction-graph-component-power-cell
store: battery-container store: battery-container
icon: icon:
sprite: Objects/Power/power_cells.rsi sprite: Objects/Power/power_cells.rsi

View File

@@ -45,7 +45,7 @@
anchored: true anchored: true
steps: steps:
- component: DoorElectronics - component: DoorElectronics
name: door electronics name: construction-graph-component-door-electronics-circuit-board
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "door_electronics" state: "door_electronics"

View File

@@ -25,7 +25,7 @@
steps: steps:
- component: DoorElectronics - component: DoorElectronics
store: board store: board
name: "door electronics circuit board" name: construction-graph-component-door-electronics-circuit-board
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "door_electronics" state: "door_electronics"

View File

@@ -109,7 +109,7 @@
steps: steps:
- component: DoorElectronics - component: DoorElectronics
store: board store: board
name: "door electronics circuit board" name: construction-graph-component-door-electronics-circuit-board
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "door_electronics" state: "door_electronics"
@@ -183,7 +183,7 @@
steps: steps:
- tag: DoorElectronics - tag: DoorElectronics
store: board store: board
name: "door electronics circuit board" name: construction-graph-tag-door-electronics-circuit-board
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "door_electronics" state: "door_electronics"
@@ -257,7 +257,7 @@
steps: steps:
- tag: DoorElectronics - tag: DoorElectronics
store: board store: board
name: "door electronics circuit board" name: construction-graph-tag-door-electronics-circuit-board
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "door_electronics" state: "door_electronics"
@@ -379,7 +379,7 @@
steps: steps:
- component: DoorElectronics - component: DoorElectronics
store: board store: board
name: "door electronics circuit board" name: construction-graph-component-door-electronics-circuit-board
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "door_electronics" state: "door_electronics"
@@ -491,7 +491,7 @@
steps: steps:
- tag: DoorElectronics - tag: DoorElectronics
store: board store: board
name: "door electronics circuit board" name: construction-graph-tag-door-electronics-circuit-board
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "door_electronics" state: "door_electronics"
@@ -566,7 +566,7 @@
steps: steps:
- tag: DoorElectronics - tag: DoorElectronics
store: board store: board
name: "door electronics circuit board" name: construction-graph-tag-door-electronics-circuit-board
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "door_electronics" state: "door_electronics"
@@ -644,7 +644,7 @@
steps: steps:
- tag: DoorElectronics - tag: DoorElectronics
store: board store: board
name: "door electronics circuit board" name: construction-graph-tag-door-electronics-circuit-board
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "door_electronics" state: "door_electronics"

View File

@@ -40,12 +40,17 @@
icon: icon:
sprite: Objects/Tools/multitool.rsi sprite: Objects/Tools/multitool.rsi
state: icon state: icon
name: a multitool name: construction-graph-tag-multitool
- material: Cable - material: Cable
amount: 2 amount: 2
doAfter: 1 doAfter: 1
- to: memory_cell - to: memory_cell
steps: steps:
- tag: CapacitorStockPart
icon:
sprite: Objects/Misc/stock_parts.rsi
state: capacitor
name: construction-graph-tag-capacitor
- material: Capacitor - material: Capacitor
amount: 1 amount: 1
- material: Cable - material: Cable

View File

@@ -15,7 +15,7 @@
- to: apc - to: apc
steps: steps:
- component: ApcElectronics - component: ApcElectronics
name: "APC electronics" name: construction-graph-component-apc-electronics
doAfter: 2 doAfter: 2
- to: start - to: start
completed: completed:

View File

@@ -37,7 +37,7 @@
steps: steps:
- tag: AirAlarmElectronics - tag: AirAlarmElectronics
store: board store: board
name: "air alarm electronics" name: construction-graph-tag-air-alarm-electronics
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "door_electronics" # /tg/ uses the same sprite, right? state: "door_electronics" # /tg/ uses the same sprite, right?
@@ -116,7 +116,7 @@
steps: steps:
- tag: FireAlarmElectronics - tag: FireAlarmElectronics
store: board store: board
name: "fire alarm electronics" name: construction-graph-tag-fire-alarm-electronics
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "door_electronics" # /tg/ uses the same sprite, right? state: "door_electronics" # /tg/ uses the same sprite, right?

View File

@@ -64,7 +64,7 @@
- to: frame_mailing - to: frame_mailing
steps: steps:
- tag: MailingUnitElectronics - tag: MailingUnitElectronics
name: mailing unit electronics name: construction-graph-tag-mailing-unit-electronics
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "net_wired" state: "net_wired"

View File

@@ -39,7 +39,7 @@
steps: steps:
- tag: IntercomElectronics - tag: IntercomElectronics
store: board store: board
name: "intercom electronics" name: construction-graph-tag-intercom-electronics
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "id_mod" state: "id_mod"

View File

@@ -10,7 +10,7 @@
amount: 1 amount: 1
doAfter: 1 doAfter: 1
- tag: CrystalCyan - tag: CrystalCyan
name: cyan crystal shard name: construction-graph-tag-cyan-crystal-shard
icon: icon:
sprite: Objects/Materials/Shards/crystal.rsi sprite: Objects/Materials/Shards/crystal.rsi
state: shard1 state: shard1
@@ -31,7 +31,7 @@
amount: 1 amount: 1
doAfter: 1 doAfter: 1
- tag: CrystalBlue - tag: CrystalBlue
name: blue crystal shard name: construction-graph-tag-blue-crystal-shard
icon: icon:
sprite: Objects/Materials/Shards/crystal.rsi sprite: Objects/Materials/Shards/crystal.rsi
state: shard1 state: shard1
@@ -51,7 +51,7 @@
amount: 1 amount: 1
doAfter: 1 doAfter: 1
- tag: CrystalYellow - tag: CrystalYellow
name: yellow crystal shard name: construction-graph-tag-yellow-crystal-shard
icon: icon:
sprite: Objects/Materials/Shards/crystal.rsi sprite: Objects/Materials/Shards/crystal.rsi
state: shard1 state: shard1
@@ -71,7 +71,7 @@
amount: 1 amount: 1
doAfter: 1 doAfter: 1
- tag: CrystalPink - tag: CrystalPink
name: pink crystal shard name: construction-graph-tag-pink-crystal-shard
icon: icon:
sprite: Objects/Materials/Shards/crystal.rsi sprite: Objects/Materials/Shards/crystal.rsi
state: shard1 state: shard1
@@ -91,7 +91,7 @@
amount: 1 amount: 1
doAfter: 1 doAfter: 1
- tag: CrystalOrange - tag: CrystalOrange
name: orange crystal shard name: construction-graph-tag-orange-crystal-shard
icon: icon:
sprite: Objects/Materials/Shards/crystal.rsi sprite: Objects/Materials/Shards/crystal.rsi
state: shard1 state: shard1
@@ -111,7 +111,7 @@
amount: 1 amount: 1
doAfter: 1 doAfter: 1
- tag: CrystalBlack - tag: CrystalBlack
name: black crystal shard name: construction-graph-tag-black-crystal-shard
icon: icon:
sprite: Objects/Materials/Shards/crystal.rsi sprite: Objects/Materials/Shards/crystal.rsi
state: shard1 state: shard1
@@ -131,7 +131,7 @@
amount: 1 amount: 1
doAfter: 1 doAfter: 1
- tag: CrystalRed - tag: CrystalRed
name: red crystal shard name: construction-graph-tag-red-crystal-shard
icon: icon:
sprite: Objects/Materials/Shards/crystal.rsi sprite: Objects/Materials/Shards/crystal.rsi
state: shard1 state: shard1
@@ -151,7 +151,7 @@
amount: 1 amount: 1
doAfter: 1 doAfter: 1
- tag: CrystalGreen - tag: CrystalGreen
name: green crystal shard name: construction-graph-tag-green-crystal-shard
icon: icon:
sprite: Objects/Materials/Shards/crystal.rsi sprite: Objects/Materials/Shards/crystal.rsi
state: shard1 state: shard1
@@ -171,7 +171,7 @@
amount: 1 amount: 1
doAfter: 1 doAfter: 1
- tag: CrystalCyan - tag: CrystalCyan
name: cyan crystal shard name: construction-graph-tag-cyan-crystal-shard
icon: icon:
sprite: Objects/Materials/Shards/crystal.rsi sprite: Objects/Materials/Shards/crystal.rsi
state: shard1 state: shard1
@@ -192,7 +192,7 @@
amount: 1 amount: 1
doAfter: 1 doAfter: 1
- tag: CrystalBlue - tag: CrystalBlue
name: blue crystal shard name: construction-graph-tag-blue-crystal-shard
icon: icon:
sprite: Objects/Materials/Shards/crystal.rsi sprite: Objects/Materials/Shards/crystal.rsi
state: shard1 state: shard1
@@ -212,7 +212,7 @@
amount: 1 amount: 1
doAfter: 1 doAfter: 1
- tag: CrystalYellow - tag: CrystalYellow
name: yellow crystal shard name: construction-graph-tag-yellow-crystal-shard
icon: icon:
sprite: Objects/Materials/Shards/crystal.rsi sprite: Objects/Materials/Shards/crystal.rsi
state: shard1 state: shard1
@@ -232,7 +232,7 @@
amount: 1 amount: 1
doAfter: 1 doAfter: 1
- tag: CrystalPink - tag: CrystalPink
name: pink crystal shard name: construction-graph-tag-pink-crystal-shard
icon: icon:
sprite: Objects/Materials/Shards/crystal.rsi sprite: Objects/Materials/Shards/crystal.rsi
state: shard1 state: shard1
@@ -252,7 +252,7 @@
amount: 1 amount: 1
doAfter: 1 doAfter: 1
- tag: CrystalOrange - tag: CrystalOrange
name: orange crystal shard name: construction-graph-tag-orange-crystal-shard
icon: icon:
sprite: Objects/Materials/Shards/crystal.rsi sprite: Objects/Materials/Shards/crystal.rsi
state: shard1 state: shard1
@@ -272,7 +272,7 @@
amount: 1 amount: 1
doAfter: 1 doAfter: 1
- tag: CrystalBlack - tag: CrystalBlack
name: black crystal shard name: construction-graph-tag-black-crystal-shard
icon: icon:
sprite: Objects/Materials/Shards/crystal.rsi sprite: Objects/Materials/Shards/crystal.rsi
state: shard1 state: shard1
@@ -292,7 +292,7 @@
amount: 1 amount: 1
doAfter: 1 doAfter: 1
- tag: CrystalRed - tag: CrystalRed
name: red crystal shard name: construction-graph-tag-red-crystal-shard
icon: icon:
sprite: Objects/Materials/Shards/crystal.rsi sprite: Objects/Materials/Shards/crystal.rsi
state: shard1 state: shard1
@@ -312,7 +312,7 @@
amount: 1 amount: 1
doAfter: 1 doAfter: 1
- tag: CrystalGreen - tag: CrystalGreen
name: green crystal shard name: construction-graph-tag-green-crystal-shard
icon: icon:
sprite: Objects/Materials/Shards/crystal.rsi sprite: Objects/Materials/Shards/crystal.rsi
state: shard1 state: shard1

View File

@@ -7,7 +7,7 @@
- to: solarassembly - to: solarassembly
steps: steps:
- tag: SolarAssemblyFlatpack - tag: SolarAssemblyFlatpack
name: solar assembly parts name: construction-graph-tag-solar-assembly-parts
icon: icon:
sprite: Objects/Devices/flatpack.rsi sprite: Objects/Devices/flatpack.rsi
state: solar-assembly-part state: solar-assembly-part
@@ -57,7 +57,7 @@
- !type:EntityAnchored - !type:EntityAnchored
steps: steps:
- tag: SolarTrackerElectronics - tag: SolarTrackerElectronics
name: solar tracker electronics name: construction-graph-tag-solar-tracker-electronics
icon: icon:
sprite: Objects/Misc/module.rsi sprite: Objects/Misc/module.rsi
state: engineering state: engineering

View File

@@ -39,7 +39,7 @@
steps: steps:
- tag: StationMapElectronics - tag: StationMapElectronics
store: board store: board
name: "station map electronics" name: construction-graph-tag-station-map-electronics
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "door_electronics" # /tg/ uses the same sprite, right? state: "door_electronics" # /tg/ uses the same sprite, right?

View File

@@ -37,7 +37,7 @@
steps: steps:
- tag: TimerSignalElectronics - tag: TimerSignalElectronics
store: board store: board
name: "signal timer electronics" name: construction-graph-tag-signal-timer-electronics
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "charger_APC" state: "charger_APC"
@@ -46,7 +46,7 @@
steps: steps:
- tag: TimerScreenElectronics - tag: TimerScreenElectronics
store: board store: board
name: "screen timer electronics" name: construction-graph-tag-screen-timer-electronics
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "charger_APC" state: "charger_APC"
@@ -55,7 +55,7 @@
steps: steps:
- tag: TimerBrigElectronics - tag: TimerBrigElectronics
store: board store: board
name: "brig timer electronics" name: construction-graph-tag-brig-timer-electronics
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "charger_APC" state: "charger_APC"

View File

@@ -37,7 +37,7 @@
steps: steps:
- tag: WallmountGeneratorElectronics - tag: WallmountGeneratorElectronics
store: board store: board
name: "wallmount generator circuit board" name: construction-graph-tag-wallmount-generator-circuit-board
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "charger_APC" state: "charger_APC"
@@ -46,7 +46,7 @@
steps: steps:
- tag: WallmountGeneratorAPUElectronics - tag: WallmountGeneratorAPUElectronics
store: board store: board
name: "wallmount APU circuit board" name: construction-graph-tag-wallmount-apu-circuit-board
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "charger_APC" state: "charger_APC"

View File

@@ -43,7 +43,7 @@
steps: steps:
- tag: WallmountSubstationElectronics - tag: WallmountSubstationElectronics
store: board store: board
name: "wallmount substation circuit board" name: construction-graph-tag-wallmount-substation-circuit-board
icon: icon:
sprite: "Objects/Misc/module.rsi" sprite: "Objects/Misc/module.rsi"
state: "charger_APC" state: "charger_APC"
@@ -52,7 +52,7 @@
- PowerCell - PowerCell
- PowerCellSmall - PowerCellSmall
store: powercell store: powercell
name: a powercell name: construction-graph-tag-power-cell
icon: icon:
sprite: "Objects/Power/power_cells.rsi" sprite: "Objects/Power/power_cells.rsi"
state: "medium" state: "medium"

View File

@@ -38,7 +38,7 @@
- tool: Screwing - tool: Screwing
doAfter: 2 doAfter: 2
- tag: SurveillanceCameraMonitorCircuitboard - tag: SurveillanceCameraMonitorCircuitboard
name: surveillance camera monitor board name: construction-graph-tag-surveillance-camera-monitor-board
icon: icon:
sprite: Objects/Misc/module.rsi sprite: Objects/Misc/module.rsi
state: cpuboard state: cpuboard
@@ -127,7 +127,7 @@
- tool: Screwing - tool: Screwing
doAfter: 2 doAfter: 2
- tag: ComputerTelevisionCircuitboard - tag: ComputerTelevisionCircuitboard
name: television board name: construction-graph-tag-television-board
icon: icon:
sprite: Objects/Misc/module.rsi sprite: Objects/Misc/module.rsi
state: cpuboard state: cpuboard

View File

@@ -7,13 +7,13 @@
- to: icon - to: icon
steps: steps:
- tag: GlassShard - tag: GlassShard
name: a glass shard name: construction-graph-tag-glass-shard
icon: icon:
sprite: Objects/Materials/Shards/shard.rsi sprite: Objects/Materials/Shards/shard.rsi
state: shard1 state: shard1
doAfter: 1 doAfter: 1
- tag: BrimFlatcapGrey - tag: BrimFlatcapGrey
name: a grey flatcap name: construction-graph-tag-grey-flatcap
icon: icon:
sprite: Clothing/Head/Hats/greyflatcap.rsi sprite: Clothing/Head/Hats/greyflatcap.rsi
state: icon state: icon
@@ -29,13 +29,13 @@
- to: icon - to: icon
steps: steps:
- tag: GlassShard - tag: GlassShard
name: a glass shard name: construction-graph-tag-glass-shard
icon: icon:
sprite: Objects/Materials/Shards/shard.rsi sprite: Objects/Materials/Shards/shard.rsi
state: shard1 state: shard1
doAfter: 1 doAfter: 1
- tag: BrimFlatcapBrown - tag: BrimFlatcapBrown
name: a brown flatcap name: construction-graph-tag-brown-flatcap
icon: icon:
sprite: Clothing/Head/Hats/brownflatcap.rsi sprite: Clothing/Head/Hats/brownflatcap.rsi
state: icon state: icon

View File

@@ -11,7 +11,7 @@
sprite: Objects/Misc/cablecuffs.rsi sprite: Objects/Misc/cablecuffs.rsi
state: cuff state: cuff
color: red color: red
name: cuffs name: construction-graph-tag-cuffs
- material: Steel - material: Steel
amount: 6 amount: 6
doAfter: 2 doAfter: 2

View File

@@ -13,7 +13,7 @@
amount: 1 amount: 1
doAfter: 0.5 doAfter: 0.5
- tag: GlassShard - tag: GlassShard
name: glass shard name: construction-graph-tag-glass-shard
icon: icon:
sprite: Objects/Materials/Shards/shard.rsi sprite: Objects/Materials/Shards/shard.rsi
state: shard1 state: shard1
@@ -37,7 +37,7 @@
amount: 1 amount: 1
doAfter: 0.5 doAfter: 0.5
- tag: PlasmaGlassShard - tag: PlasmaGlassShard
name: plasma glass shard name: construction-graph-tag-plasma-glass-shard
icon: icon:
sprite: Objects/Materials/Shards/shard.rsi sprite: Objects/Materials/Shards/shard.rsi
state: shard1 state: shard1
@@ -61,7 +61,7 @@
amount: 1 amount: 1
doAfter: 0.5 doAfter: 0.5
- tag: UraniumGlassShard - tag: UraniumGlassShard
name: uranium glass shard name: construction-graph-tag-uranium-glass-shard
icon: icon:
sprite: Objects/Materials/Shards/shard.rsi sprite: Objects/Materials/Shards/shard.rsi
state: shard1 state: shard1

View File

@@ -48,13 +48,13 @@
steps: steps:
- component: PayloadTrigger - component: PayloadTrigger
store: payloadTrigger store: payloadTrigger
name: trigger name: construction-graph-component-payload-trigger
doAfter: 0.5 doAfter: 0.5
- to: caseWithPayload - to: caseWithPayload
steps: steps:
- tag: Payload - tag: Payload
store: payload store: payload
name: payload name: construction-graph-tag-payload
doAfter: 0.5 doAfter: 0.5
- node: caseWithTrigger - node: caseWithTrigger
@@ -74,7 +74,7 @@
steps: steps:
- tag: Payload - tag: Payload
store: payload store: payload
name: payload name: construction-graph-tag-payload
doAfter: 0.5 doAfter: 0.5
- node: caseWithPayload - node: caseWithPayload
@@ -94,7 +94,7 @@
steps: steps:
- component: PayloadTrigger - component: PayloadTrigger
store: payloadTrigger store: payloadTrigger
name: trigger name: construction-graph-component-payload-trigger
doAfter: 0.5 doAfter: 0.5
- node: grenade - node: grenade

View File

@@ -22,7 +22,7 @@
icon: icon:
sprite: Objects/Misc/proximity_sensor.rsi sprite: Objects/Misc/proximity_sensor.rsi
state: icon state: icon
name: proximity sensor name: construction-graph-tag-proximity-sensor
- to: start - to: start
completed: completed:
- !type:SpawnPrototype - !type:SpawnPrototype
@@ -52,7 +52,7 @@
steps: steps:
- tag: Payload - tag: Payload
store: payload store: payload
name: payload name: construction-graph-tag-payload
doAfter: 0.5 doAfter: 0.5
- node: mine - node: mine

View File

@@ -30,7 +30,7 @@
impact: High impact: High
steps: steps:
- tag: GlassShard - tag: GlassShard
name: glass shard name: construction-graph-tag-glass-shard
icon: icon:
sprite: Objects/Materials/Shards/shard.rsi sprite: Objects/Materials/Shards/shard.rsi
state: shard1 state: shard1
@@ -73,7 +73,7 @@
impact: High impact: High
steps: steps:
- tag: ReinforcedGlassShard - tag: ReinforcedGlassShard
name: reinforced glass shard name: construction-graph-tag-reinforced-glass-shard
icon: icon:
sprite: Objects/Materials/Shards/shard.rsi sprite: Objects/Materials/Shards/shard.rsi
state: shard1 state: shard1
@@ -116,7 +116,7 @@
impact: High impact: High
steps: steps:
- tag: PlasmaGlassShard - tag: PlasmaGlassShard
name: plasma glass shard name: construction-graph-tag-plasma-glass-shard
icon: icon:
sprite: Objects/Materials/Shards/shard.rsi sprite: Objects/Materials/Shards/shard.rsi
state: shard1 state: shard1
@@ -159,7 +159,7 @@
impact: High impact: High
steps: steps:
- tag: UraniumGlassShard - tag: UraniumGlassShard
name: uranium glass shard name: construction-graph-tag-uranium-glass-shard
icon: icon:
sprite: Objects/Materials/Shards/shard.rsi sprite: Objects/Materials/Shards/shard.rsi
state: shard1 state: shard1

View File

@@ -17,7 +17,7 @@
amount: 3 amount: 3
doAfter: 1 doAfter: 1
- tag: GlassShard - tag: GlassShard
name: glass shard name: construction-graph-tag-glass-shard
icon: icon:
sprite: Objects/Materials/Shards/shard.rsi sprite: Objects/Materials/Shards/shard.rsi
state: shard1 state: shard1
@@ -44,7 +44,7 @@
amount: 3 amount: 3
doAfter: 1 doAfter: 1
- tag: ReinforcedGlassShard - tag: ReinforcedGlassShard
name: reinforced glass shard name: construction-graph-tag-reinforced-glass-shard
icon: icon:
sprite: Objects/Materials/Shards/shard.rsi sprite: Objects/Materials/Shards/shard.rsi
state: shard1 state: shard1
@@ -71,7 +71,7 @@
amount: 3 amount: 3
doAfter: 1 doAfter: 1
- tag: PlasmaGlassShard - tag: PlasmaGlassShard
name: plasma glass shard name: construction-graph-tag-plasma-glass-shard
icon: icon:
sprite: Objects/Materials/Shards/shard.rsi sprite: Objects/Materials/Shards/shard.rsi
state: shard1 state: shard1
@@ -98,7 +98,7 @@
amount: 3 amount: 3
doAfter: 1 doAfter: 1
- tag: UraniumGlassShard - tag: UraniumGlassShard
name: uranium glass shard name: construction-graph-tag-uranium-glass-shard
icon: icon:
sprite: Objects/Materials/Shards/shard.rsi sprite: Objects/Materials/Shards/shard.rsi
state: shard1 state: shard1

View File

@@ -7,6 +7,7 @@
- to: upgraded - to: upgraded
steps: steps:
- tag: WeaponPistolCHIMPUpgradeKit - tag: WeaponPistolCHIMPUpgradeKit
name: construction-graph-tag-weapon-pistol-chimp-upgrade-kit
doAfter: 2 doAfter: 2
- node: upgraded - node: upgraded

View File

@@ -1,142 +1,103 @@
- type: construction - type: construction
name: clown hardsuit
id: ClownHardsuit id: ClownHardsuit
graph: ClownHardsuit graph: ClownHardsuit
startNode: start startNode: start
targetNode: clownHardsuit targetNode: clownHardsuit
category: construction-category-clothing category: construction-category-clothing
description: A modified hardsuit fit for a clown.
icon: { sprite: Clothing/OuterClothing/Hardsuits/clown.rsi, state: icon }
objectType: Item objectType: Item
- type: construction - type: construction
name: mime hardsuit
id: MimeHardsuit id: MimeHardsuit
graph: MimeHardsuit graph: MimeHardsuit
startNode: start startNode: start
targetNode: mimeHardsuit targetNode: mimeHardsuit
category: construction-category-clothing category: construction-category-clothing
description: A modified hardsuit fit for a mime.
icon: { sprite: Clothing/OuterClothing/Hardsuits/mime.rsi, state: icon }
objectType: Item objectType: Item
- type: construction - type: construction
name: bone armor
id: BoneArmor id: BoneArmor
graph: BoneArmor graph: BoneArmor
startNode: start startNode: start
targetNode: armor targetNode: armor
category: construction-category-clothing category: construction-category-clothing
description: Armor made of bones.
icon: { sprite: Clothing/OuterClothing/Armor/bone_armor.rsi, state: icon }
objectType: Item objectType: Item
- type: construction - type: construction
name: bone helmet
id: BoneHelmet id: BoneHelmet
graph: BoneHelmet graph: BoneHelmet
startNode: start startNode: start
targetNode: helmet targetNode: helmet
category: construction-category-clothing category: construction-category-clothing
description: Helmet made of bones.
icon: { sprite: Clothing/Head/Helmets/bone_helmet.rsi, state: icon }
objectType: Item objectType: Item
- type: construction - type: construction
name: banana clown mask
id: BananaClownMask id: BananaClownMask
graph: BananaClownMask graph: BananaClownMask
startNode: start startNode: start
targetNode: mask targetNode: mask
category: construction-category-clothing category: construction-category-clothing
description: A clown mask upgraded with banana peels.
icon: { sprite: Clothing/Mask/clown_banana.rsi, state: icon }
objectType: Item objectType: Item
- type: construction - type: construction
name: banana clown suit
id: BananaClownJumpsuit id: BananaClownJumpsuit
graph: BananaClownJumpsuit graph: BananaClownJumpsuit
startNode: start startNode: start
targetNode: jumpsuit targetNode: jumpsuit
category: construction-category-clothing category: construction-category-clothing
description: A clown suit upgraded with banana peels.
icon: { sprite: Clothing/Uniforms/Jumpsuit/clown_banana.rsi, state: icon }
objectType: Item objectType: Item
- type: construction - type: construction
name: banana clown shoes
id: BananaClownShoes id: BananaClownShoes
graph: BananaClownShoes graph: BananaClownShoes
startNode: start startNode: start
targetNode: shoes targetNode: shoes
category: construction-category-clothing category: construction-category-clothing
description: A pair of clown shoes upgraded with banana peels.
icon: { sprite: Clothing/Shoes/Specific/clown_banana.rsi, state: icon }
objectType: Item objectType: Item
- type: construction - type: construction
name: medsec hud
id: ClothingEyesHudMedSec id: ClothingEyesHudMedSec
graph: HudMedSec graph: HudMedSec
startNode: start startNode: start
targetNode: medsecHud targetNode: medsecHud
category: construction-category-clothing category: construction-category-clothing
description: Two huds joined by arms
icon: { sprite: Clothing/Eyes/Hud/medsec.rsi, state: icon }
objectType: Item objectType: Item
- type: construction - type: construction
name: ducky slippers
id: ClothingShoeSlippersDuck id: ClothingShoeSlippersDuck
graph: ClothingShoeSlippersDuck graph: ClothingShoeSlippersDuck
startNode: start startNode: start
targetNode: shoes targetNode: shoes
category: construction-category-clothing category: construction-category-clothing
description: Comfy, yet haunted by the ghosts of ducks you fed bread to as a child.
icon: { sprite: Clothing/Shoes/Misc/duck-slippers.rsi, state: icon }
objectType: Item objectType: Item
- type: construction - type: construction
name: lizard plushie slippers
id: ClothingShoeSlippersLizard id: ClothingShoeSlippersLizard
graph: ClothingShoeSlippersLizard graph: ClothingShoeSlippersLizard
startNode: start startNode: start
targetNode: shoes targetNode: shoes
category: construction-category-clothing category: construction-category-clothing
description: An adorable pair of slippers that resemble a lizardperson. Combine this with some other green clothing and you'll be the coolest crewmember on the station!
icon: { sprite: Clothing/Shoes/Misc/lizard-slippers.rsi, state: icon }
objectType: Item objectType: Item
- type: construction - type: construction
name: security glasses
id: ClothingEyesGlassesSecurity id: ClothingEyesGlassesSecurity
graph: GlassesSecHUD graph: GlassesSecHUD
startNode: start startNode: start
targetNode: glassesSec targetNode: glassesSec
category: construction-category-clothing category: construction-category-clothing
description: A pair of sunglasses, modified to have a built-in security HUD.
icon: { sprite: Clothing/Eyes/Glasses/secglasses.rsi, state: icon }
objectType: Item objectType: Item
- type: construction - type: construction
name: quiver
id: ClothingBeltQuiver id: ClothingBeltQuiver
graph: Quiver graph: Quiver
startNode: start startNode: start
targetNode: Quiver targetNode: Quiver
category: construction-category-clothing category: construction-category-clothing
description: Can hold up to 15 arrows, and fits snug around your waist.
icon: { sprite: Clothing/Belt/quiver.rsi, state: icon }
objectType: Item objectType: Item
- type: construction - type: construction
name: justice helm
id: ClothingHeadHelmetJustice id: ClothingHeadHelmetJustice
graph: HelmetJustice graph: HelmetJustice
startNode: start startNode: start
targetNode: helmet targetNode: helmet
category: construction-category-clothing category: construction-category-clothing
description: Advanced security gear. Protects the station from ne'er-do-wells.
icon: { sprite: Clothing/Head/Helmets/justice.rsi, state: icon }
objectType: Item objectType: Item

View File

@@ -1,10 +1,7 @@
- type: construction - type: construction
name: bananium horn
id: HornBananium id: HornBananium
graph: BananiumHorn graph: BananiumHorn
startNode: start startNode: start
targetNode: bananiumHorn targetNode: bananiumHorn
category: construction-category-weapons category: construction-category-weapons
description: An air horn made from bananium.
icon: { sprite: Objects/Fun/bananiumhorn.rsi, state: icon }
objectType: Item objectType: Item

View File

@@ -1,15 +1,10 @@
#chairs #chairs
- type: construction - type: construction
name: chair
id: Chair id: Chair
graph: Seat graph: Seat
startNode: start startNode: start
targetNode: chair targetNode: chair
category: construction-category-furniture category: construction-category-furniture
description: You sit in this. Either by will or force.
icon:
sprite: Structures/Furniture/chairs.rsi
state: chair
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -17,16 +12,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: stool
id: Stool id: Stool
graph: Seat graph: Seat
startNode: start startNode: start
targetNode: stool targetNode: stool
category: construction-category-furniture category: construction-category-furniture
description: You sit in this. Either by will or force.
icon:
sprite: Structures/Furniture/chairs.rsi
state: stool
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -34,16 +24,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: bar stool
id: StoolBar id: StoolBar
graph: Seat graph: Seat
startNode: start startNode: start
targetNode: stoolBar targetNode: stoolBar
category: construction-category-furniture category: construction-category-furniture
description: You sit in this. Either by will or force.
icon:
sprite: Structures/Furniture/chairs.rsi
state: bar
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -51,16 +36,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: brass chair
id: ChairBrass id: ChairBrass
graph: Seat graph: Seat
startNode: start startNode: start
targetNode: chairBrass targetNode: chairBrass
category: construction-category-furniture category: construction-category-furniture
description: You sit in this. Either by will or force.
icon:
sprite: Structures/Furniture/chairs.rsi
state: brass_chair
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -68,16 +48,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: office chair
id: ChairOfficeLight id: ChairOfficeLight
graph: Seat graph: Seat
startNode: start startNode: start
targetNode: chairOffice targetNode: chairOffice
category: construction-category-furniture category: construction-category-furniture
description: You sit in this. Either by will or force.
icon:
sprite: Structures/Furniture/chairs.rsi
state: office-white
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -85,16 +60,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: dark office chair
id: ChairOfficeDark id: ChairOfficeDark
graph: Seat graph: Seat
startNode: start startNode: start
targetNode: chairOfficeDark targetNode: chairOfficeDark
category: construction-category-furniture category: construction-category-furniture
description: You sit in this. Either by will or force.
icon:
sprite: Structures/Furniture/chairs.rsi
state: office-dark
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -102,16 +72,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: comfy chair
id: ChairComfy id: ChairComfy
graph: Seat graph: Seat
startNode: start startNode: start
targetNode: chairComfy targetNode: chairComfy
category: construction-category-furniture category: construction-category-furniture
description: It looks comfy.
icon:
sprite: Structures/Furniture/chairs.rsi
state: comfy
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -119,16 +84,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: pilots chair
id: chairPilotSeat id: chairPilotSeat
graph: Seat graph: Seat
startNode: start startNode: start
targetNode: chairPilotSeat targetNode: chairPilotSeat
category: construction-category-furniture category: construction-category-furniture
description: Fit for a captain.
icon:
sprite: Structures/Furniture/chairs.rsi
state: shuttle
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -136,16 +96,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: wooden chair
id: ChairWood id: ChairWood
graph: Seat graph: Seat
startNode: start startNode: start
targetNode: chairWood targetNode: chairWood
category: construction-category-furniture category: construction-category-furniture
description: You sit in this. Either by will or force.
icon:
sprite: Structures/Furniture/chairs.rsi
state: wooden
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -153,16 +108,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: meat chair
id: ChairMeat id: ChairMeat
graph: Seat graph: Seat
startNode: start startNode: start
targetNode: chairMeat targetNode: chairMeat
category: construction-category-furniture category: construction-category-furniture
description: Uncomfortably sweaty.
icon:
sprite: Structures/Furniture/chairs.rsi
state: meat
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -170,16 +120,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: ritual chair
id: ChairRitual id: ChairRitual
graph: RitualSeat graph: RitualSeat
startNode: start startNode: start
targetNode: chairRitual targetNode: chairRitual
category: construction-category-furniture category: construction-category-furniture
description: A strangely carved chair.
icon:
sprite: Structures/Furniture/chairs.rsi
state: ritual
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -187,16 +132,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: folding chair
id: ChairFolding id: ChairFolding
graph: Seat graph: Seat
startNode: start startNode: start
targetNode: chairFolding targetNode: chairFolding
category: construction-category-furniture category: construction-category-furniture
description: An easy to carry chair.
icon:
sprite: Structures/Furniture/folding_chair.rsi
state: folding
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -204,16 +144,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: steel bench
id: ChairSteelBench id: ChairSteelBench
graph: Seat graph: Seat
startNode: start startNode: start
targetNode: chairSteelBench targetNode: chairSteelBench
category: construction-category-furniture category: construction-category-furniture
description: A long chair made for a metro. Really standard design.
icon:
sprite: Structures/Furniture/chairs.rsi
state: steel-bench
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -221,16 +156,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: wooden bench
id: ChairWoodBench id: ChairWoodBench
graph: Seat graph: Seat
startNode: start startNode: start
targetNode: chairWoodBench targetNode: chairWoodBench
category: construction-category-furniture category: construction-category-furniture
description: Did you get a splinter? Well, at least its eco friendly.
icon:
sprite: Structures/Furniture/chairs.rsi
state: wooden-bench
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -238,16 +168,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: comfortable red bench
id: RedComfBench id: RedComfBench
graph: Seat graph: Seat
startNode: start startNode: start
targetNode: redComfBench targetNode: redComfBench
category: construction-category-furniture category: construction-category-furniture
description: A bench with an extremely comfortable backrest.
icon:
sprite: Structures/Furniture/Bench/comf_bench.rsi
state: full
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -255,16 +180,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: comfortable blue bench
id: BlueComfBench id: BlueComfBench
graph: Seat graph: Seat
startNode: start startNode: start
targetNode: blueComfBench targetNode: blueComfBench
category: construction-category-furniture category: construction-category-furniture
description: A bench with an extremely comfortable backrest.
icon:
sprite: Structures/Furniture/Bench/comf_bench.rsi
state: full
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -273,16 +193,11 @@
#tables #tables
- type: construction - type: construction
name: steel table
id: Table id: Table
graph: Table graph: Table
startNode: start startNode: start
targetNode: Table targetNode: Table
category: construction-category-furniture category: construction-category-furniture
description: A square piece of metal standing on four metal legs.
icon:
sprite: Structures/Furniture/Tables/generic.rsi
state: full
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -290,16 +205,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: reinforced steel table
id: TableReinforced id: TableReinforced
graph: Table graph: Table
startNode: start startNode: start
targetNode: TableReinforced targetNode: TableReinforced
category: construction-category-furniture category: construction-category-furniture
description: A square piece of metal standing on four metal legs. Extra robust.
icon:
sprite: Structures/Furniture/Tables/reinforced.rsi
state: full
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -307,16 +217,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: glass table
id: TableGlass id: TableGlass
graph: Table graph: Table
startNode: start startNode: start
targetNode: TableGlass targetNode: TableGlass
category: construction-category-furniture category: construction-category-furniture
description: A square piece of glass, standing on four metal legs.
icon:
sprite: Structures/Furniture/Tables/glass.rsi
state: full
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -324,16 +229,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: reinforced glass table
id: TableReinforcedGlass id: TableReinforcedGlass
graph: Table graph: Table
startNode: start startNode: start
targetNode: TableReinforcedGlass targetNode: TableReinforcedGlass
category: construction-category-furniture category: construction-category-furniture
description: A square piece of glass, standing on four metal legs. Extra robust.
icon:
sprite: Structures/Furniture/Tables/r_glass.rsi
state: full
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -341,16 +241,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: plasma glass table
id: TablePlasmaGlass id: TablePlasmaGlass
graph: Table graph: Table
startNode: start startNode: start
targetNode: TablePlasmaGlass targetNode: TablePlasmaGlass
category: construction-category-furniture category: construction-category-furniture
description: A square piece of plasma glass, standing on four metal legs. Pretty!
icon:
sprite: Structures/Furniture/Tables/plasma.rsi
state: full
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -358,16 +253,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: brass table
id: TableBrass id: TableBrass
graph: Table graph: Table
startNode: start startNode: start
targetNode: TableBrass targetNode: TableBrass
category: construction-category-furniture category: construction-category-furniture
description: A shiny, corrosion resistant brass table. Steampunk!
icon:
sprite: Structures/Furniture/Tables/brass.rsi
state: full
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -375,16 +265,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: wood table
id: TableWood id: TableWood
graph: Table graph: Table
startNode: start startNode: start
targetNode: TableWood targetNode: TableWood
category: construction-category-furniture category: construction-category-furniture
description: Do not apply fire to this. Rumour says it burns easily.
icon:
sprite: Structures/Furniture/Tables/wood.rsi
state: full
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -392,16 +277,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: poker table
id: TableCarpet id: TableCarpet
graph: Table graph: Table
startNode: start startNode: start
targetNode: TableCarpet targetNode: TableCarpet
category: construction-category-furniture category: construction-category-furniture
description: A square piece of wood standing on four legs covered by a cloth. (What did you expect?)
icon:
sprite: Structures/Furniture/Tables/carpet.rsi
state: full
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -409,16 +289,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: fancy black table
id: TableFancyBlack id: TableFancyBlack
graph: Table graph: Table
startNode: start startNode: start
targetNode: TableFancyBlack targetNode: TableFancyBlack
category: construction-category-furniture category: construction-category-furniture
description: A table covered with a beautiful cloth.
icon:
sprite: Structures/Furniture/Tables/Fancy/black.rsi
state: full
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -426,16 +301,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: fancy blue table
id: TableFancyBlue id: TableFancyBlue
graph: Table graph: Table
startNode: start startNode: start
targetNode: TableFancyBlue targetNode: TableFancyBlue
category: construction-category-furniture category: construction-category-furniture
description: A table covered with a beautiful cloth.
icon:
sprite: Structures/Furniture/Tables/Fancy/blue.rsi
state: full
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -443,16 +313,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: fancy cyan table
id: TableFancyCyan id: TableFancyCyan
graph: Table graph: Table
startNode: start startNode: start
targetNode: TableFancyCyan targetNode: TableFancyCyan
category: construction-category-furniture category: construction-category-furniture
description: A table covered with a beautiful cloth.
icon:
sprite: Structures/Furniture/Tables/Fancy/cyan.rsi
state: full
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -460,16 +325,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: fancy green table
id: TableFancyGreen id: TableFancyGreen
graph: Table graph: Table
startNode: start startNode: start
targetNode: TableFancyGreen targetNode: TableFancyGreen
category: construction-category-furniture category: construction-category-furniture
description: A table covered with a beautiful cloth.
icon:
sprite: Structures/Furniture/Tables/Fancy/green.rsi
state: full
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -477,16 +337,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: fancy orange table
id: TableFancyOrange id: TableFancyOrange
graph: Table graph: Table
startNode: start startNode: start
targetNode: TableFancyOrange targetNode: TableFancyOrange
category: construction-category-furniture category: construction-category-furniture
description: A table covered with a beautiful cloth.
icon:
sprite: Structures/Furniture/Tables/Fancy/orange.rsi
state: full
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -494,16 +349,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: fancy purple table
id: TableFancyPurple id: TableFancyPurple
graph: Table graph: Table
startNode: start startNode: start
targetNode: TableFancyPurple targetNode: TableFancyPurple
category: construction-category-furniture category: construction-category-furniture
description: A table covered with a beautiful cloth.
icon:
sprite: Structures/Furniture/Tables/Fancy/purple.rsi
state: full
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -511,16 +361,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: fancy pink table
id: TableFancyPink id: TableFancyPink
graph: Table graph: Table
startNode: start startNode: start
targetNode: TableFancyPink targetNode: TableFancyPink
category: construction-category-furniture category: construction-category-furniture
description: A table covered with a beautiful cloth.
icon:
sprite: Structures/Furniture/Tables/Fancy/pink.rsi
state: full
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -528,16 +373,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: fancy red table
id: TableFancyRed id: TableFancyRed
graph: Table graph: Table
startNode: start startNode: start
targetNode: TableFancyRed targetNode: TableFancyRed
category: construction-category-furniture category: construction-category-furniture
description: A table covered with a beautiful cloth.
icon:
sprite: Structures/Furniture/Tables/Fancy/red.rsi
state: full
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -545,16 +385,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: fancy white table
id: TableFancyWhite id: TableFancyWhite
graph: Table graph: Table
startNode: start startNode: start
targetNode: TableFancyWhite targetNode: TableFancyWhite
category: construction-category-furniture category: construction-category-furniture
description: A table covered with a beautiful cloth.
icon:
sprite: Structures/Furniture/Tables/Fancy/white.rsi
state: full
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -562,16 +397,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: metal counter
id: TableCounterMetal id: TableCounterMetal
graph: Table graph: Table
startNode: start startNode: start
targetNode: CounterMetal targetNode: CounterMetal
category: construction-category-furniture category: construction-category-furniture
description: Looks like a good place to put a drink down.
icon:
sprite: Structures/Furniture/Tables/countermetal.rsi
state: full
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -579,16 +409,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: wood counter
id: TableCounterWood id: TableCounterWood
graph: Table graph: Table
startNode: start startNode: start
targetNode: CounterWood targetNode: CounterWood
category: construction-category-furniture category: construction-category-furniture
description: Do not apply fire to this. Rumour says it burns easily.
icon:
sprite: Structures/Furniture/Tables/counterwood.rsi
state: full
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -597,16 +422,11 @@
#bathroom #bathroom
- type: construction - type: construction
name: toilet
id: ToiletEmpty id: ToiletEmpty
graph: Toilet graph: Toilet
startNode: start startNode: start
targetNode: toilet targetNode: toilet
category: construction-category-furniture category: construction-category-furniture
description: A human excrement flushing apparatus.
icon:
sprite: Structures/Furniture/toilet.rsi
state: disposal
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -616,15 +436,10 @@
#bedroom #bedroom
- type: construction - type: construction
id: Bed id: Bed
name: bed
description: This is used to lie in, sleep in or strap on. Resting here provides extremely slow healing.
graph: bed graph: bed
startNode: start startNode: start
targetNode: bed targetNode: bed
category: construction-category-furniture category: construction-category-furniture
icon:
sprite: Structures/Furniture/furniture.rsi
state: bed
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -633,15 +448,10 @@
- type: construction - type: construction
id: MedicalBed id: MedicalBed
name: medical bed
description: A hospital bed for patients to recover in. Resting here provides fairly slow healing.
graph: bed graph: bed
startNode: start startNode: start
targetNode: medicalbed targetNode: medicalbed
category: construction-category-furniture category: construction-category-furniture
icon:
sprite: Structures/Furniture/furniture.rsi
state: bed-MED
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -650,15 +460,10 @@
- type: construction - type: construction
id: DogBed id: DogBed
name: dog bed
description: A comfy-looking dog bed. You can even strap your pet in, in case the gravity turns off.
graph: bed graph: bed
startNode: start startNode: start
targetNode: dogbed targetNode: dogbed
category: construction-category-furniture category: construction-category-furniture
icon:
sprite: Structures/Furniture/furniture.rsi
state: dogbed
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -667,15 +472,10 @@
- type: construction - type: construction
id: Dresser id: Dresser
name: dresser
description: Wooden dresser, can store things inside itself.
graph: Dresser graph: Dresser
startNode: start startNode: start
targetNode: dresser targetNode: dresser
category: construction-category-furniture category: construction-category-furniture
icon:
sprite: Structures/Furniture/furniture.rsi
state: dresser
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -685,15 +485,10 @@
#racks #racks
- type: construction - type: construction
id: Rack id: Rack
name: rack
description: A rack for storing things on.
graph: Rack graph: Rack
startNode: start startNode: start
targetNode: Rack targetNode: Rack
category: construction-category-furniture category: construction-category-furniture
icon:
sprite: Structures/Furniture/furniture.rsi
state: rack
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -703,15 +498,10 @@
#misc #misc
- type: construction - type: construction
id: MeatSpike id: MeatSpike
name: meat spike
description: A spike found in kitchens butchering animals.
graph: MeatSpike graph: MeatSpike
startNode: start startNode: start
targetNode: MeatSpike targetNode: MeatSpike
category: construction-category-furniture category: construction-category-furniture
icon:
sprite: Structures/meat_spike.rsi
state: spike
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -720,165 +510,110 @@
- type: construction - type: construction
id: Curtains id: Curtains
name: curtains
description: Contains less than 1% mercury.
graph: Curtains graph: Curtains
startNode: start startNode: start
targetNode: Curtains targetNode: Curtains
category: construction-category-furniture category: construction-category-furniture
icon:
sprite: Structures/Decoration/Curtains/hospital.rsi
state: closed
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
- type: construction - type: construction
id: CurtainsBlack id: CurtainsBlack
name: black curtains
description: Hides what others shouldn't see.
graph: Curtains graph: Curtains
startNode: start startNode: start
targetNode: CurtainsBlack targetNode: CurtainsBlack
category: construction-category-furniture category: construction-category-furniture
icon:
sprite: Structures/Decoration/Curtains/black.rsi
state: closed
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
- type: construction - type: construction
id: CurtainsBlue id: CurtainsBlue
name: blue curtains
description: Hides what others shouldn't see.
graph: Curtains graph: Curtains
startNode: start startNode: start
targetNode: CurtainsBlue targetNode: CurtainsBlue
category: construction-category-furniture category: construction-category-furniture
icon:
sprite: Structures/Decoration/Curtains/blue.rsi
state: closed
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
- type: construction - type: construction
id: CurtainsCyan id: CurtainsCyan
name: cyan curtains
description: Hides what others shouldn't see.
graph: Curtains graph: Curtains
startNode: start startNode: start
targetNode: CurtainsCyan targetNode: CurtainsCyan
category: construction-category-furniture category: construction-category-furniture
icon:
sprite: Structures/Decoration/Curtains/cyan.rsi
state: closed
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
- type: construction - type: construction
id: CurtainsGreen id: CurtainsGreen
name: green curtains
description: Hides what others shouldn't see.
graph: Curtains graph: Curtains
startNode: start startNode: start
targetNode: CurtainsGreen targetNode: CurtainsGreen
category: construction-category-furniture category: construction-category-furniture
icon:
sprite: Structures/Decoration/Curtains/green.rsi
state: closed
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
- type: construction - type: construction
id: CurtainsOrange id: CurtainsOrange
name: orange curtains
description: Hides what others shouldn't see.
graph: Curtains graph: Curtains
startNode: start startNode: start
targetNode: CurtainsOrange targetNode: CurtainsOrange
category: construction-category-furniture category: construction-category-furniture
icon:
sprite: Structures/Decoration/Curtains/orange.rsi
state: closed
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
- type: construction - type: construction
id: CurtainsPink id: CurtainsPink
name: pink curtains
description: Hides what others shouldn't see.
graph: Curtains graph: Curtains
startNode: start startNode: start
targetNode: CurtainsPink targetNode: CurtainsPink
category: construction-category-furniture category: construction-category-furniture
icon:
sprite: Structures/Decoration/Curtains/pink.rsi
state: closed
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
- type: construction - type: construction
id: CurtainsPurple id: CurtainsPurple
name: purple curtains
description: Hides what others shouldn't see.
graph: Curtains graph: Curtains
startNode: start startNode: start
targetNode: CurtainsPurple targetNode: CurtainsPurple
category: construction-category-furniture category: construction-category-furniture
icon:
sprite: Structures/Decoration/Curtains/purple.rsi
state: closed
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
- type: construction - type: construction
id: CurtainsRed id: CurtainsRed
name: red curtains
description: Hides what others shouldn't see.
graph: Curtains graph: Curtains
startNode: start startNode: start
targetNode: CurtainsRed targetNode: CurtainsRed
category: construction-category-furniture category: construction-category-furniture
icon:
sprite: Structures/Decoration/Curtains/red.rsi
state: closed
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
- type: construction - type: construction
id: CurtainsWhite id: CurtainsWhite
name: white curtains
description: Hides what others shouldn't see.
graph: Curtains graph: Curtains
startNode: start startNode: start
targetNode: CurtainsWhite targetNode: CurtainsWhite
category: construction-category-furniture category: construction-category-furniture
icon:
sprite: Structures/Decoration/Curtains/white.rsi
state: closed
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
- type: construction - type: construction
id: Bookshelf id: Bookshelf
name: bookshelf
description: Mostly filled with books.
graph: Bookshelf graph: Bookshelf
startNode: start startNode: start
targetNode: bookshelf targetNode: bookshelf
category: construction-category-furniture category: construction-category-furniture
icon:
sprite: Structures/Furniture/bookshelf.rsi
state: base
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -887,15 +622,10 @@
- type: construction - type: construction
id: NoticeBoard id: NoticeBoard
name: notice board
description: Wooden notice board, can store paper inside itself.
graph: NoticeBoard graph: NoticeBoard
startNode: start startNode: start
targetNode: noticeBoard targetNode: noticeBoard
category: construction-category-furniture category: construction-category-furniture
icon:
sprite: Structures/Wallmounts/noticeboard.rsi
state: noticeboard
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canRotate: true canRotate: true
@@ -905,15 +635,10 @@
- type: construction - type: construction
id: Mannequin id: Mannequin
name: mannequin
description: Wooden mannequin designed for clothing displaying
graph: Mannequin graph: Mannequin
startNode: start startNode: start
targetNode: mannequin targetNode: mannequin
category: construction-category-furniture category: construction-category-furniture
icon:
sprite: Structures/Decoration/mannequin.rsi
state: mannequin
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canRotate: true canRotate: true

View File

@@ -1,175 +1,127 @@
- type: construction - type: construction
name: cyan light tube
id: CyanLight id: CyanLight
graph: CyanLight graph: CyanLight
startNode: start startNode: start
targetNode: icon targetNode: icon
category: construction-category-utilities category: construction-category-utilities
description: A high powered light tube containing a cyan crystal.
icon: { sprite: Objects/Power/light_tube.rsi, state: normal }
objectType: Item objectType: Item
- type: construction - type: construction
name: blue light tube
id: BlueLight id: BlueLight
graph: BlueLight graph: BlueLight
startNode: start startNode: start
targetNode: icon targetNode: icon
category: construction-category-utilities category: construction-category-utilities
description: A high powered light tube containing a blue crystal.
icon: { sprite: Objects/Power/light_tube.rsi, state: normal }
objectType: Item objectType: Item
- type: construction - type: construction
name: yellow light tube
id: YellowLight id: YellowLight
graph: YellowLight graph: YellowLight
startNode: start startNode: start
targetNode: icon targetNode: icon
category: construction-category-utilities category: construction-category-utilities
description: A high powered light tube containing a yellow crystal
icon: { sprite: Objects/Power/light_tube.rsi, state: normal }
objectType: Item objectType: Item
- type: construction - type: construction
name: pink light tube
id: PinkLight id: PinkLight
graph: PinkLight graph: PinkLight
startNode: start startNode: start
targetNode: icon targetNode: icon
category: construction-category-utilities category: construction-category-utilities
description: A high powered light tube containing a pink crystal.
icon: { sprite: Objects/Power/light_tube.rsi, state: normal }
objectType: Item objectType: Item
- type: construction - type: construction
name: orange light tube
id: OrangeLight id: OrangeLight
graph: OrangeLight graph: OrangeLight
startNode: start startNode: start
targetNode: icon targetNode: icon
category: construction-category-utilities category: construction-category-utilities
description: A high powered light tube containing an orange crystal.
icon: { sprite: Objects/Power/light_tube.rsi, state: normal }
objectType: Item objectType: Item
- type: construction - type: construction
name: black light tube
id: BlackLight id: BlackLight
graph: BlackLight graph: BlackLight
startNode: start startNode: start
targetNode: icon targetNode: icon
category: construction-category-utilities category: construction-category-utilities
description: A high powered light tube containing a black crystal. It won't be very bright.
icon: { sprite: Objects/Power/light_tube.rsi, state: normal }
objectType: Item objectType: Item
- type: construction - type: construction
name: red light tube
id: RedLight id: RedLight
graph: RedLight graph: RedLight
startNode: start startNode: start
targetNode: icon targetNode: icon
category: construction-category-utilities category: construction-category-utilities
description: A high powered light tube containing a red crystal.
icon: { sprite: Objects/Power/light_tube.rsi, state: normal }
objectType: Item objectType: Item
- type: construction - type: construction
name: green light tube
id: GreenLight id: GreenLight
graph: GreenLight graph: GreenLight
startNode: start startNode: start
targetNode: icon targetNode: icon
category: construction-category-utilities category: construction-category-utilities
description: A high powered light tube containing a green crystal.
icon: { sprite: Objects/Power/light_tube.rsi, state: normal }
objectType: Item objectType: Item
- type: construction - type: construction
name: cyan light bulb
id: CyanLightBulb id: CyanLightBulb
graph: CyanLightBulb graph: CyanLightBulb
startNode: start startNode: start
targetNode: icon targetNode: icon
category: construction-category-utilities category: construction-category-utilities
description: A high powered light bulb containing a cyan crystal.
icon: { sprite: Objects/Power/light_bulb.rsi, state: normal }
objectType: Item objectType: Item
- type: construction - type: construction
name: blue light bulb
id: BlueLightBulb id: BlueLightBulb
graph: BlueLightBulb graph: BlueLightBulb
startNode: start startNode: start
targetNode: icon targetNode: icon
category: construction-category-utilities category: construction-category-utilities
description: A high powered light bulb containing a blue crystal.
icon: { sprite: Objects/Power/light_bulb.rsi, state: normal }
objectType: Item objectType: Item
- type: construction - type: construction
name: yellow light bulb
id: YellowLightBulb id: YellowLightBulb
graph: YellowLightBulb graph: YellowLightBulb
startNode: start startNode: start
targetNode: icon targetNode: icon
category: construction-category-utilities category: construction-category-utilities
description: A high powered light bulb containing a yellow crystal.
icon: { sprite: Objects/Power/light_bulb.rsi, state: normal }
objectType: Item objectType: Item
- type: construction - type: construction
name: pink light bulb
id: PinkLightBulb id: PinkLightBulb
graph: PinkLightBulb graph: PinkLightBulb
startNode: start startNode: start
targetNode: icon targetNode: icon
category: construction-category-utilities category: construction-category-utilities
description: A high powered light bulb containing a pink crystal.
icon: { sprite: Objects/Power/light_bulb.rsi, state: normal }
objectType: Item objectType: Item
- type: construction - type: construction
name: orange light bulb
id: OrangeLightBulb id: OrangeLightBulb
graph: OrangeLightBulb graph: OrangeLightBulb
startNode: start startNode: start
targetNode: icon targetNode: icon
category: construction-category-utilities category: construction-category-utilities
description: A high powered light bulb containing an orange crystal.
icon: { sprite: Objects/Power/light_bulb.rsi, state: normal }
objectType: Item objectType: Item
- type: construction - type: construction
name: black light bulb
id: BlackLightBulb id: BlackLightBulb
graph: BlackLightBulb graph: BlackLightBulb
startNode: start startNode: start
targetNode: icon targetNode: icon
category: construction-category-utilities category: construction-category-utilities
description: A high powered light bulb containing a black crystal. It won't be very bright.
icon: { sprite: Objects/Power/light_bulb.rsi, state: normal }
objectType: Item objectType: Item
- type: construction - type: construction
name: red light bulb
id: RedLightBulb id: RedLightBulb
graph: RedLightBulb graph: RedLightBulb
startNode: start startNode: start
targetNode: icon targetNode: icon
category: construction-category-utilities category: construction-category-utilities
description: A high powered light bulb containing a red crystal.
icon: { sprite: Objects/Power/light_bulb.rsi, state: normal }
objectType: Item objectType: Item
- type: construction - type: construction
name: green light bulb
id: GreenLightBulb id: GreenLightBulb
graph: GreenLightBulb graph: GreenLightBulb
startNode: start startNode: start
targetNode: icon targetNode: icon
category: construction-category-utilities category: construction-category-utilities
description: A high powered light bulb containing a green crystal.
icon: { sprite: Objects/Power/light_bulb.rsi, state: normal }
objectType: Item objectType: Item

View File

@@ -1,20 +1,13 @@
- type: construction - type: construction
name: computer
id: Computer id: Computer
graph: Computer graph: Computer
startNode: start startNode: start
targetNode: computer targetNode: computer
category: construction-category-machines category: construction-category-machines
description: A frame used to construct anything with a computer circuitboard.
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Machines/parts.rsi
state: 4
- type: construction - type: construction
name: machine frame
description: A machine under construction. Needs more parts.
id: MachineFrame id: MachineFrame
graph: Machine graph: Machine
startNode: start startNode: start
@@ -22,38 +15,25 @@
category: construction-category-machines category: construction-category-machines
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Machines/parts.rsi
state: "box_0"
# Switching # Switching
- type: construction - type: construction
name: two-way lever
id: TwoWayLeverRecipe id: TwoWayLeverRecipe
graph: LeverGraph graph: LeverGraph
startNode: start startNode: start
targetNode: LeverNode targetNode: LeverNode
category: construction-category-machines category: construction-category-machines
description: A lever to control machines. It has 3 modes.
objectType: Structure objectType: Structure
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/conveyor.rsi
state: switch-off
conditions: conditions:
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: light switch
id: LightSwitchRecipe id: LightSwitchRecipe
graph: LightSwitchGraph graph: LightSwitchGraph
startNode: start startNode: start
targetNode: LightSwitchNode targetNode: LightSwitchNode
category: construction-category-machines category: construction-category-machines
description: A switch for toggling lights that are connected to the same apc.
icon:
sprite: Structures/Wallmounts/switch.rsi
state: on
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canRotate: true canRotate: true
@@ -63,16 +43,11 @@
hide: true #TODO: Fix the lightswitch, issue #34659. Until then, keep hidden so people don't build it and get confused. hide: true #TODO: Fix the lightswitch, issue #34659. Until then, keep hidden so people don't build it and get confused.
- type: construction - type: construction
name: signal switch
id: SignalSwitchRecipe id: SignalSwitchRecipe
graph: SignalSwitchGraph graph: SignalSwitchGraph
startNode: start startNode: start
targetNode: SignalSwitchNode targetNode: SignalSwitchNode
category: construction-category-machines category: construction-category-machines
description: It's a switch for toggling power to things.
icon:
sprite: Structures/Wallmounts/switch.rsi
state: on
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canRotate: true canRotate: true
@@ -81,16 +56,11 @@
- !type:WallmountCondition - !type:WallmountCondition
- type: construction - type: construction
name: signal button
id: SignalButtonRecipe id: SignalButtonRecipe
graph: SignalButtonGraph graph: SignalButtonGraph
startNode: start startNode: start
targetNode: SignalButtonNode targetNode: SignalButtonNode
category: construction-category-machines category: construction-category-machines
description: It's a button for activating something.
icon:
sprite: Structures/Wallmounts/switch.rsi
state: on
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canRotate: true canRotate: true
@@ -99,16 +69,11 @@
- !type:WallmountCondition - !type:WallmountCondition
- type: construction - type: construction
name: directional light switch
id: LightSwitchDirectionalRecipe id: LightSwitchDirectionalRecipe
graph: LightSwitchDirectionalGraph graph: LightSwitchDirectionalGraph
startNode: start startNode: start
targetNode: LightSwitchDirectionalNode targetNode: LightSwitchDirectionalNode
category: construction-category-machines category: construction-category-machines
description: A switch for toggling lights that are connected to the same apc.
icon:
sprite: Structures/Wallmounts/switch.rsi
state: on
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canRotate: true canRotate: true
@@ -118,16 +83,11 @@
hide: true #TODO: Fix the lightswitch, issue #34659. Until then, keep hidden so people don't build it and get confused. hide: true #TODO: Fix the lightswitch, issue #34659. Until then, keep hidden so people don't build it and get confused.
- type: construction - type: construction
name: directional signal switch
id: SignalSwitchDirectionalRecipe id: SignalSwitchDirectionalRecipe
graph: SignalSwitchDirectionalGraph graph: SignalSwitchDirectionalGraph
startNode: start startNode: start
targetNode: SignalSwitchDirectionalNode targetNode: SignalSwitchDirectionalNode
category: construction-category-machines category: construction-category-machines
description: It's a switch for toggling power to things.
icon:
sprite: Structures/Wallmounts/switch.rsi
state: on
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canRotate: true canRotate: true
@@ -136,16 +96,11 @@
- !type:WallmountCondition - !type:WallmountCondition
- type: construction - type: construction
name: directional signal button
id: SignalButtonDirectionalRecipe id: SignalButtonDirectionalRecipe
graph: SignalButtonDirectionalGraph graph: SignalButtonDirectionalGraph
startNode: start startNode: start
targetNode: SignalButtonDirectionalNode targetNode: SignalButtonDirectionalNode
category: construction-category-machines category: construction-category-machines
description: It's a button for activating something.
icon:
sprite: Structures/Wallmounts/switch.rsi
state: on
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canRotate: true canRotate: true

View File

@@ -1,131 +1,95 @@
- type: construction - type: construction
name: metal rod
id: MetalRod id: MetalRod
graph: MetalRod graph: MetalRod
startNode: start startNode: start
targetNode: MetalRod targetNode: MetalRod
category: construction-category-materials category: construction-category-materials
description: A sturdy metal rod that can be used for various purposes.
icon: { sprite: Objects/Materials/parts.rsi, state: rods }
objectType: Item objectType: Item
- type: construction - type: construction
name: reinforced glass
description: A reinforced sheet of glass.
id: SheetRGlass id: SheetRGlass
graph: Glass graph: Glass
startNode: start startNode: start
targetNode: SheetRGlass targetNode: SheetRGlass
category: construction-category-materials category: construction-category-materials
icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: rglass }
objectType: Item objectType: Item
- type: construction - type: construction
name: clockwork glass
description: A brass-reinforced sheet of glass.
id: SheetClockworkGlass id: SheetClockworkGlass
graph: Glass graph: Glass
startNode: start startNode: start
targetNode: SheetClockworkGlass targetNode: SheetClockworkGlass
category: construction-category-materials category: construction-category-materials
icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: cglass }
objectType: Item objectType: Item
- type: construction - type: construction
name: plasma glass
description: A sheet of translucent plasma.
id: SheetPGlass id: SheetPGlass
graph: Glass graph: Glass
startNode: start startNode: start
targetNode: SheetPGlass targetNode: SheetPGlass
category: construction-category-materials category: construction-category-materials
icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: pglass }
objectType: Item objectType: Item
- type: construction - type: construction
name: reinforced plasma glass
description: A reinforced sheet of translucent plasma.
id: SheetRPGlass id: SheetRPGlass
graph: Glass graph: Glass
startNode: start startNode: start
targetNode: SheetRPGlass targetNode: SheetRPGlass
category: construction-category-materials category: construction-category-materials
icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: rpglass }
objectType: Item objectType: Item
- type: construction - type: construction
name: reinforced plasma glass
description: A reinforced sheet of translucent plasma.
id: SheetRPGlass0 id: SheetRPGlass0
graph: Glass graph: Glass
startNode: start startNode: start
targetNode: SheetRPGlass0 targetNode: SheetRPGlass0
category: construction-category-materials category: construction-category-materials
icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: rpglass }
objectType: Item objectType: Item
- type: construction - type: construction
name: reinforced plasma glass
description: A reinforced sheet of translucent plasma.
id: SheetRPGlass1 id: SheetRPGlass1
graph: Glass graph: Glass
startNode: start startNode: start
targetNode: SheetRPGlass1 targetNode: SheetRPGlass1
category: construction-category-materials category: construction-category-materials
icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: rpglass }
objectType: Item objectType: Item
- type: construction - type: construction
name: durathread
id: MaterialDurathread id: MaterialDurathread
graph: Durathread graph: Durathread
startNode: start startNode: start
targetNode: MaterialDurathread targetNode: MaterialDurathread
category: construction-category-materials category: construction-category-materials
description: A high-quality thread used to make durable clothes.
icon: { sprite: Objects/Materials/materials.rsi, state: durathread }
objectType: Item objectType: Item
- type: construction - type: construction
name: uranium glass
description: A sheet of uranium glass.
id: SheetUGlass id: SheetUGlass
graph: Glass graph: Glass
startNode: start startNode: start
targetNode: SheetUGlass targetNode: SheetUGlass
category: construction-category-materials category: construction-category-materials
icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: uglass }
objectType: Item objectType: Item
- type: construction - type: construction
name: reinforced uranium glass
description: A reinforced sheet of uranium glass.
id: SheetRUGlass id: SheetRUGlass
graph: Glass graph: Glass
startNode: start startNode: start
targetNode: SheetRUGlass targetNode: SheetRUGlass
category: construction-category-materials category: construction-category-materials
icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: ruglass }
objectType: Item objectType: Item
- type: construction - type: construction
name: reinforced uranium glass
description: A reinforced sheet of uranium glass.
id: SheetRUGlass0 id: SheetRUGlass0
graph: Glass graph: Glass
startNode: start startNode: start
targetNode: SheetRUGlass0 targetNode: SheetRUGlass0
category: construction-category-materials category: construction-category-materials
icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: ruglass }
objectType: Item objectType: Item
- type: construction - type: construction
name: reinforced uranium glass
description: A reinforced sheet of uranium glass.
id: SheetRUGlass1 id: SheetRUGlass1
graph: Glass graph: Glass
startNode: start startNode: start
targetNode: SheetRUGlass1 targetNode: SheetRUGlass1
category: construction-category-materials category: construction-category-materials
icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: ruglass }
objectType: Item objectType: Item

View File

@@ -1,25 +1,15 @@
- type: construction - type: construction
name: modular grenade
id: ModularGrenadeRecipe id: ModularGrenadeRecipe
graph: ModularGrenadeGraph graph: ModularGrenadeGraph
startNode: start startNode: start
targetNode: grenade targetNode: grenade
category: construction-category-weapons category: construction-category-weapons
description: Construct a grenade using a trigger and a payload.
icon:
sprite: Objects/Weapons/Grenades/modular.rsi
state: complete
objectType: Item objectType: Item
- type: construction - type: construction
name: modular mine
id: ModularMineRecipe id: ModularMineRecipe
graph: ModularMineGraph graph: ModularMineGraph
startNode: start startNode: start
targetNode: mine targetNode: mine
category: construction-category-weapons category: construction-category-weapons
description: Construct a landmine using a payload.
icon:
sprite: Objects/Misc/landmine.rsi
state: landmine
objectType: Item objectType: Item

View File

@@ -1,15 +1,10 @@
#bureaucracy #bureaucracy
- type: construction - type: construction
id: FilingCabinet id: FilingCabinet
name: filing cabinet
description: A cabinet for all your filing needs.
graph: FilingCabinet graph: FilingCabinet
startNode: start startNode: start
targetNode: filingCabinet targetNode: filingCabinet
category: construction-category-storage category: construction-category-storage
icon:
sprite: Structures/Storage/cabinets.rsi
state: filingcabinet
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -18,15 +13,10 @@
- type: construction - type: construction
id: TallCabinet id: TallCabinet
name: tall cabinet
description: A cabinet for all your filing needs.
graph: FilingCabinet graph: FilingCabinet
startNode: start startNode: start
targetNode: tallCabinet targetNode: tallCabinet
category: construction-category-storage category: construction-category-storage
icon:
sprite: Structures/Storage/cabinets.rsi
state: tallcabinet
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -35,15 +25,10 @@
- type: construction - type: construction
id: ChestDrawer id: ChestDrawer
name: chest drawer
description: A small drawer for all your filing needs, Now with wheels!
graph: FilingCabinet graph: FilingCabinet
startNode: start startNode: start
targetNode: chestDrawer targetNode: chestDrawer
category: construction-category-storage category: construction-category-storage
icon:
sprite: Structures/Storage/cabinets.rsi
state: chestdrawer
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -53,15 +38,10 @@
# ItemCabinets # ItemCabinets
- type: construction - type: construction
id: ShowCase id: ShowCase
name: showcase
description: A sturdy showcase for an expensive exhibit.
graph: GlassBox graph: GlassBox
startNode: start startNode: start
targetNode: glassBox targetNode: glassBox
category: construction-category-storage category: construction-category-storage
icon:
sprite: Structures/Storage/glassbox.rsi
state: icon
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -72,14 +52,9 @@
# Normals # Normals
- type: construction - type: construction
id: ShelfWood id: ShelfWood
name: wooden shelf
description: A convenient place to place, well, anything really.
graph: Shelf graph: Shelf
startNode: start startNode: start
targetNode: ShelfWood targetNode: ShelfWood
icon:
sprite: Structures/Storage/Shelfs/wood.rsi
state: base
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
@@ -88,14 +63,9 @@
- type: construction - type: construction
id: ShelfMetal id: ShelfMetal
name: metal shelf
description: A sturdy place to place, well, anything really.
graph: Shelf graph: Shelf
startNode: start startNode: start
targetNode: ShelfMetal targetNode: ShelfMetal
icon:
sprite: Structures/Storage/Shelfs/metal.rsi
state: base
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
@@ -104,14 +74,9 @@
- type: construction - type: construction
id: ShelfGlass id: ShelfGlass
name: glass shelf
description: Just like a normal shelf! But fragile and without the walls!
graph: Shelf graph: Shelf
startNode: start startNode: start
targetNode: ShelfGlass targetNode: ShelfGlass
icon:
sprite: Structures/Storage/Shelfs/glass.rsi
state: base
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
@@ -121,14 +86,9 @@
# Reinforced # Reinforced
- type: construction - type: construction
id: ShelfRWood id: ShelfRWood
name: sturdy wooden shelf
description: The perfect place to store all your vintage records.
graph: Shelf graph: Shelf
startNode: start startNode: start
targetNode: ShelfRWood targetNode: ShelfRWood
icon:
sprite: Structures/Storage/Shelfs/wood.rsi
state: rbase
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
@@ -137,14 +97,9 @@
- type: construction - type: construction
id: ShelfRMetal id: ShelfRMetal
name: sturdy metal shelf
description: Nice and strong, and keeps your maints loot secure.
graph: Shelf graph: Shelf
startNode: start startNode: start
targetNode: ShelfRMetal targetNode: ShelfRMetal
icon:
sprite: Structures/Storage/Shelfs/metal.rsi
state: rbase
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
@@ -153,14 +108,9 @@
- type: construction - type: construction
id: ShelfRGlass id: ShelfRGlass
name: sturdy glass shelf
description: See through, decent strength, shiny plastic case. Whats not to love?
graph: Shelf graph: Shelf
startNode: start startNode: start
targetNode: ShelfRGlass targetNode: ShelfRGlass
icon:
sprite: Structures/Storage/Shelfs/glass.rsi
state: rbase
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
@@ -170,14 +120,9 @@
# Departmental # Departmental
- type: construction - type: construction
id: ShelfBar id: ShelfBar
name: bar shelf
description: A convenient place for all your extra booze, specifically designed to hold more bottles!
graph: Shelf graph: Shelf
startNode: start startNode: start
targetNode: ShelfBar targetNode: ShelfBar
icon:
sprite: Structures/Storage/Shelfs/Departments/Service/bar.rsi
state: base
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
@@ -186,14 +131,9 @@
- type: construction - type: construction
id: ShelfKitchen id: ShelfKitchen
name: kitchen shelf
description: Holds your knifes, spice, and everything nice!
graph: Shelf graph: Shelf
startNode: start startNode: start
targetNode: ShelfKitchen targetNode: ShelfKitchen
icon:
sprite: Structures/Storage/Shelfs/Departments/Service/kitchen.rsi
state: base
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
@@ -202,14 +142,9 @@
- type: construction - type: construction
id: ShelfChemistry id: ShelfChemistry
name: chemical shelf
description: Perfect for keeping the most important chemicals safe, and out of the clumsy clowns hands!
graph: Shelf graph: Shelf
startNode: start startNode: start
targetNode: ShelfChemistry targetNode: ShelfChemistry
icon:
sprite: Structures/Storage/Shelfs/Departments/Medical/chemistry.rsi
state: base
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true

File diff suppressed because it is too large Load Diff

View File

@@ -1,54 +1,39 @@
- type: construction - type: construction
name: torch
id: LightTorch id: LightTorch
graph: LightTorch graph: LightTorch
startNode: start startNode: start
targetNode: torch targetNode: torch
category: construction-category-tools category: construction-category-tools
description: A torch fashioned from some wood.
icon: { sprite: Objects/Misc/torch.rsi, state: icon }
objectType: Item objectType: Item
- type: construction - type: construction
name: logic gate
id: LogicGate id: LogicGate
graph: LogicGate graph: LogicGate
startNode: start startNode: start
targetNode: logic_gate targetNode: logic_gate
category: construction-category-tools category: construction-category-tools
description: A binary logic gate for signals.
icon: { sprite: Objects/Devices/gates.rsi, state: or_icon }
objectType: Item objectType: Item
- type: construction - type: construction
name: edge detector
id: EdgeDetector id: EdgeDetector
graph: LogicGate graph: LogicGate
startNode: start startNode: start
targetNode: edge_detector targetNode: edge_detector
category: construction-category-tools category: construction-category-tools
description: An edge detector for signals.
icon: { sprite: Objects/Devices/gates.rsi, state: edge_detector }
objectType: Item objectType: Item
- type: construction - type: construction
name: power sensor
id: PowerSensor id: PowerSensor
graph: LogicGate graph: LogicGate
startNode: start startNode: start
targetNode: power_sensor targetNode: power_sensor
category: construction-category-tools category: construction-category-tools
description: A power network checking device for signals.
icon: { sprite: Objects/Devices/gates.rsi, state: power_sensor }
objectType: Item objectType: Item
- type: construction - type: construction
name: memory cell
id: MemoryCell id: MemoryCell
graph: LogicGate graph: LogicGate
startNode: start startNode: start
targetNode: memory_cell targetNode: memory_cell
category: construction-category-tools category: construction-category-tools
description: A memory cell for signals.
icon: { sprite: Objects/Devices/gates.rsi, state: memory_cell }
objectType: Item objectType: Item

View File

@@ -1,44 +1,29 @@
# SURVEILLANCE # SURVEILLANCE
- type: construction - type: construction
name: camera
id: camera id: camera
graph: SurveillanceCamera graph: SurveillanceCamera
startNode: start startNode: start
targetNode: camera targetNode: camera
category: construction-category-utilities category: construction-category-utilities
description: "Surveillance camera. It's watching. Soon."
icon:
sprite: Structures/Wallmounts/camera.rsi
state: camera
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
- type: construction - type: construction
name: telescreen
id: WallmountTelescreen id: WallmountTelescreen
graph: WallmountTelescreen graph: WallmountTelescreen
startNode: start startNode: start
targetNode: Telescreen targetNode: Telescreen
category: construction-category-utilities category: construction-category-utilities
description: "A surveillance camera monitor for the wall."
icon:
sprite: Structures/Machines/computers.rsi
state: telescreen_frame
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
- type: construction - type: construction
name: station map
id: StationMap id: StationMap
graph: StationMap graph: StationMap
startNode: start startNode: start
targetNode: station_map targetNode: station_map
category: construction-category-structures category: construction-category-structures
description: A station map.
icon:
sprite: Structures/Machines/station_map.rsi
state: station_map0
placementMode: SnapgridCenter placementMode: SnapgridCenter
objectType: Structure objectType: Structure
canRotate: true canRotate: true
@@ -48,84 +33,57 @@
# POWER # POWER
- type: construction - type: construction
name: APC
id: APC id: APC
graph: APC graph: APC
startNode: start startNode: start
targetNode: apc targetNode: apc
category: construction-category-utilities category: construction-category-utilities
description: "Area Power Controller (APC). Controls power. In an area."
icon:
sprite: Structures/Power/apc.rsi
state: base
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
- type: construction - type: construction
name: cable terminal
id: CableTerminal id: CableTerminal
graph: CableTerminal graph: CableTerminal
startNode: start startNode: start
targetNode: cable_terminal targetNode: cable_terminal
category: construction-category-utilities category: construction-category-utilities
description: "Input of devices such as the SMES. The red cables needs to face the device."
icon:
sprite: Structures/Power/cable_terminal.rsi
state: term
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
- type: construction - type: construction
name: wallmount substation
id: WallmountSubstation id: WallmountSubstation
graph: WallmountSubstation graph: WallmountSubstation
startNode: start startNode: start
targetNode: substation targetNode: substation
category: construction-category-utilities category: construction-category-utilities
description: "A wallmount substation for compact spaces. Make sure to place cable underneath before building the wall."
icon:
sprite: Structures/Power/substation.rsi
state: substation_wall
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
- type: construction - type: construction
name: wallmount generator
id: WallmountGenerator id: WallmountGenerator
graph: WallmountGenerator graph: WallmountGenerator
startNode: start startNode: start
targetNode: generator targetNode: generator
category: construction-category-utilities category: construction-category-utilities
description: "A wallmount generator for compact spaces. Make sure to place cable underneath before building the wall."
icon:
sprite: Structures/Power/Generation/wallmount_generator.rsi
state: panel
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
- type: construction - type: construction
name: wallmount APU
id: WallmountGeneratorAPU id: WallmountGeneratorAPU
graph: WallmountGenerator graph: WallmountGenerator
startNode: start startNode: start
targetNode: APU targetNode: APU
category: construction-category-utilities category: construction-category-utilities
description: "A wallmount APU for compact shuttles. Make sure to place cable underneath before building the wall."
icon:
sprite: Structures/Power/Generation/wallmount_generator.rsi
state: panel
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
# DISPOSALS # DISPOSALS
- type: construction - type: construction
name: disposal unit
description: A pneumatic waste disposal unit.
id: DisposalUnit id: DisposalUnit
graph: DisposalMachine graph: DisposalMachine
startNode: start startNode: start
@@ -133,13 +91,8 @@
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/disposal.rsi
state: "disposal"
- type: construction - type: construction
name: mailing unit
description: A pneumatic mail delivery unit.
id: MailingUnit id: MailingUnit
graph: DisposalMachine graph: DisposalMachine
startNode: start startNode: start
@@ -147,27 +100,17 @@
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/disposal.rsi
state: "mailing"
- type: construction - type: construction
name: disposal pipe
id: DisposalPipe id: DisposalPipe
description: A huge pipe segment used for constructing disposal systems.
graph: DisposalPipe graph: DisposalPipe
startNode: start startNode: start
targetNode: pipe targetNode: pipe
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/disposal.rsi
state: conpipe-s
- type: construction - type: construction
name: disposal tagger
description: A pipe that tags entities for routing.
id: DisposalTagger id: DisposalTagger
graph: DisposalPipe graph: DisposalPipe
startNode: start startNode: start
@@ -175,13 +118,8 @@
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/disposal.rsi
state: conpipe-tagger
- type: construction - type: construction
name: disposal trunk
description: A pipe trunk used as an entry point for disposal systems.
id: DisposalTrunk id: DisposalTrunk
graph: DisposalPipe graph: DisposalPipe
startNode: start startNode: start
@@ -189,13 +127,8 @@
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/disposal.rsi
state: conpipe-t
- type: construction - type: construction
name: disposal router
description: A three-way router. Entities with matching tags get routed to the side.
id: DisposalRouter id: DisposalRouter
graph: DisposalPipe graph: DisposalPipe
startNode: start startNode: start
@@ -203,15 +136,10 @@
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/disposal.rsi
state: conpipe-j1s
mirror: DisposalRouterFlipped mirror: DisposalRouterFlipped
- type: construction - type: construction
hide: true hide: true
name: disposal router
description: A three-way router. Entities with matching tags get routed to the side.
id: DisposalRouterFlipped id: DisposalRouterFlipped
graph: DisposalPipe graph: DisposalPipe
startNode: start startNode: start
@@ -219,14 +147,9 @@
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/disposal.rsi
state: conpipe-j2s
mirror: DisposalRouter mirror: DisposalRouter
- type: construction - type: construction
name: disposal signal router
description: A signal-controlled three-way router.
id: DisposalSignalRouter id: DisposalSignalRouter
graph: DisposalPipe graph: DisposalPipe
startNode: start startNode: start
@@ -234,15 +157,10 @@
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/disposal.rsi
state: signal-router-free
mirror: DisposalSignalRouterFlipped mirror: DisposalSignalRouterFlipped
- type: construction - type: construction
hide: true hide: true
name: disposal signal router
description: A signal-controlled three-way router.
id: DisposalSignalRouterFlipped id: DisposalSignalRouterFlipped
graph: DisposalPipe graph: DisposalPipe
startNode: start startNode: start
@@ -250,14 +168,9 @@
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/disposal.rsi
state: signal-router-flipped-free
mirror: DisposalSignalRouter mirror: DisposalSignalRouter
- type: construction - type: construction
name: disposal junction
description: A three-way junction. The arrow indicates where items exit.
id: DisposalJunction id: DisposalJunction
graph: DisposalPipe graph: DisposalPipe
startNode: start startNode: start
@@ -265,15 +178,10 @@
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/disposal.rsi
state: conpipe-j1
mirror: DisposalJunctionFlipped mirror: DisposalJunctionFlipped
- type: construction - type: construction
hide: true hide: true
name: disposal junction
description: A three-way junction. The arrow indicates where items exit.
id: DisposalJunctionFlipped id: DisposalJunctionFlipped
graph: DisposalPipe graph: DisposalPipe
startNode: start startNode: start
@@ -281,14 +189,9 @@
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/disposal.rsi
state: conpipe-j2
mirror: DisposalJunction mirror: DisposalJunction
- type: construction - type: construction
name: disposal Y junction
description: A three-way junction with another exit point.
id: DisposalYJunction id: DisposalYJunction
graph: DisposalPipe graph: DisposalPipe
startNode: start startNode: start
@@ -296,13 +199,8 @@
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/disposal.rsi
state: conpipe-y
- type: construction - type: construction
name: disposal bend
description: A tube bent at a 90 degree angle.
id: DisposalBend id: DisposalBend
graph: DisposalPipe graph: DisposalPipe
startNode: start startNode: start
@@ -310,22 +208,14 @@
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/disposal.rsi
state: conpipe-c
# ATMOS # ATMOS
- type: construction - type: construction
name: air alarm
id: AirAlarmFixture id: AirAlarmFixture
graph: AirAlarm graph: AirAlarm
startNode: start startNode: start
targetNode: air_alarm targetNode: air_alarm
category: construction-category-structures category: construction-category-structures
description: An air alarm. Alarms... air?
icon:
sprite: Structures/Wallmounts/air_monitors.rsi
state: alarm0
placementMode: SnapgridCenter placementMode: SnapgridCenter
objectType: Structure objectType: Structure
canRotate: true canRotate: true
@@ -334,16 +224,11 @@
- !type:WallmountCondition {} - !type:WallmountCondition {}
- type: construction - type: construction
name: fire alarm
id: FireAlarm id: FireAlarm
graph: FireAlarm graph: FireAlarm
startNode: start startNode: start
targetNode: fire_alarm targetNode: fire_alarm
category: construction-category-structures category: construction-category-structures
description: A fire alarm. Spicy!
icon:
sprite: Structures/Wallmounts/air_monitors.rsi
state: fire0
placementMode: SnapgridCenter placementMode: SnapgridCenter
objectType: Structure objectType: Structure
canRotate: true canRotate: true
@@ -352,110 +237,73 @@
- !type:WallmountCondition {} - !type:WallmountCondition {}
- type: construction - type: construction
name: air sensor
id: AirSensor id: AirSensor
graph: AirSensor graph: AirSensor
startNode: start startNode: start
targetNode: sensor targetNode: sensor
category: construction-category-structures category: construction-category-structures
description: An air sensor. Senses air.
icon:
sprite: Structures/Specific/Atmospherics/sensor.rsi
state: gsensor1
placementMode: SnapgridCenter placementMode: SnapgridCenter
objectType: Structure objectType: Structure
canRotate: true canRotate: true
- type: construction - type: construction
name: gas pipe sensor
id: GasPipeSensor id: GasPipeSensor
graph: GasPipeSensor graph: GasPipeSensor
startNode: start startNode: start
targetNode: sensor targetNode: sensor
category: construction-category-structures category: construction-category-structures
description: Reports on the status of the gas within the attached pipe network.
icon:
sprite: Structures/Piping/Atmospherics/gas_pipe_sensor.rsi
state: icon
placementMode: SnapgridCenter placementMode: SnapgridCenter
objectType: Structure objectType: Structure
canRotate: true canRotate: true
# ATMOS PIPES # ATMOS PIPES
- type: construction - type: construction
name: gas pipe half
id: GasPipeHalf id: GasPipeHalf
description: Half of a gas pipe. No skateboards.
graph: GasPipe graph: GasPipe
startNode: start startNode: start
targetNode: half targetNode: half
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
icon:
sprite: Structures/Piping/Atmospherics/pipe.rsi
state: pipeHalf
- type: construction - type: construction
name: gas pipe straight
id: GasPipeStraight id: GasPipeStraight
description: A straight pipe segment.
graph: GasPipe graph: GasPipe
startNode: start startNode: start
targetNode: straight targetNode: straight
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
icon:
sprite: Structures/Piping/Atmospherics/pipe.rsi
state: pipeStraight
- type: construction - type: construction
name: gas pipe bend
id: GasPipeBend id: GasPipeBend
description: A pipe segment bent at a 90 degree angle.
graph: GasPipe graph: GasPipe
startNode: start startNode: start
targetNode: bend targetNode: bend
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
icon:
sprite: Structures/Piping/Atmospherics/pipe.rsi
state: pipeBend
- type: construction - type: construction
name: gas pipe T junction
id: GasPipeTJunction id: GasPipeTJunction
description: A pipe segment with a T junction.
graph: GasPipe graph: GasPipe
startNode: start startNode: start
targetNode: tjunction targetNode: tjunction
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
icon:
sprite: Structures/Piping/Atmospherics/pipe.rsi
state: pipeTJunction
- type: construction - type: construction
name: gas pipe fourway
id: GasPipeFourway id: GasPipeFourway
description: A pipe segment with a fourway junction.
graph: GasPipe graph: GasPipe
startNode: start startNode: start
targetNode: fourway targetNode: fourway
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
icon:
sprite: Structures/Piping/Atmospherics/pipe.rsi
state: pipeFourway
# ATMOS UNARY # ATMOS UNARY
- type: construction - type: construction
name: air vent
description: Pumps gas into the room.
id: GasVentPump id: GasVentPump
graph: GasUnary graph: GasUnary
startNode: start startNode: start
@@ -463,20 +311,10 @@
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/Atmospherics/vent.rsi
state: vent_off
layers:
- sprite: Structures/Piping/Atmospherics/pipe.rsi
state: pipeHalf
- sprite: Structures/Piping/Atmospherics/vent.rsi
state: vent_off
conditions: conditions:
- !type:NoUnstackableInTile - !type:NoUnstackableInTile
- type: construction - type: construction
name: passive vent
description: Unpowered vent that equalises gases on both sides.
id: GasPassiveVent id: GasPassiveVent
graph: GasUnary graph: GasUnary
startNode: start startNode: start
@@ -484,20 +322,10 @@
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/Atmospherics/vent.rsi
state: vent_passive
layers:
- sprite: Structures/Piping/Atmospherics/pipe.rsi
state: pipeHalf
- sprite: Structures/Piping/Atmospherics/vent.rsi
state: vent_passive
conditions: conditions:
- !type:NoUnstackableInTile - !type:NoUnstackableInTile
- type: construction - type: construction
name: air scrubber
description: Sucks gas into connected pipes.
id: GasVentScrubber id: GasVentScrubber
graph: GasUnary graph: GasUnary
startNode: start startNode: start
@@ -505,20 +333,10 @@
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/Atmospherics/scrubber.rsi
state: scrub_off
layers:
- sprite: Structures/Piping/Atmospherics/pipe.rsi
state: pipeHalf
- sprite: Structures/Piping/Atmospherics/scrubber.rsi
state: scrub_off
conditions: conditions:
- !type:NoUnstackableInTile - !type:NoUnstackableInTile
- type: construction - type: construction
name: air injector
description: Injects air into the atmosphere.
id: GasOutletInjector id: GasOutletInjector
graph: GasUnary graph: GasUnary
startNode: start startNode: start
@@ -526,42 +344,22 @@
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/Atmospherics/outletinjector.rsi
state: injector
layers:
- sprite: Structures/Piping/Atmospherics/pipe.rsi
state: pipeHalf
- sprite: Structures/Piping/Atmospherics/outletinjector.rsi
state: injector
conditions: conditions:
- !type:NoUnstackableInTile - !type:NoUnstackableInTile
# ATMOS BINARY # ATMOS BINARY
- type: construction - type: construction
name: gas pump
id: GasPressurePump id: GasPressurePump
description: A pump that moves gas by pressure.
graph: GasBinary graph: GasBinary
startNode: start startNode: start
targetNode: pressurepump targetNode: pressurepump
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/Atmospherics/pump.rsi
state: pumpPressure
layers:
- sprite: Structures/Piping/Atmospherics/pipe.rsi
state: pipeStraight
- sprite: Structures/Piping/Atmospherics/pump.rsi
state: pumpPressure
conditions: conditions:
- !type:NoUnstackableInTile - !type:NoUnstackableInTile
- type: construction - type: construction
name: volumetric gas pump
description: A pump that moves gas by volume.
id: GasVolumePump id: GasVolumePump
graph: GasBinary graph: GasBinary
startNode: start startNode: start
@@ -569,162 +367,89 @@
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/Atmospherics/pump.rsi
state: pumpVolume
layers:
- sprite: Structures/Piping/Atmospherics/pipe.rsi
state: pipeStraight
- sprite: Structures/Piping/Atmospherics/pump.rsi
state: pumpVolume
conditions: conditions:
- !type:NoUnstackableInTile - !type:NoUnstackableInTile
- type: construction - type: construction
id: GasPassiveGate id: GasPassiveGate
name: passive gate
description: A one-way air valve that does not require power.
graph: GasBinary graph: GasBinary
startNode: start startNode: start
targetNode: passivegate targetNode: passivegate
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/Atmospherics/pump.rsi
state: pumpPassiveGate
layers:
- sprite: Structures/Piping/Atmospherics/pipe.rsi
state: pipeStraight
- sprite: Structures/Piping/Atmospherics/pump.rsi
state: pumpPassiveGate
conditions: conditions:
- !type:NoUnstackableInTile - !type:NoUnstackableInTile
- type: construction - type: construction
id: GasValve id: GasValve
name: manual valve
description: A pipe with a valve that can be used to disable the flow of gas through it.
graph: GasBinary graph: GasBinary
startNode: start startNode: start
targetNode: valve targetNode: valve
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/Atmospherics/pump.rsi
state: pumpManualValve
layers:
- sprite: Structures/Piping/Atmospherics/pipe.rsi
state: pipeStraight
- sprite: Structures/Piping/Atmospherics/pump.rsi
state: pumpManualValve
conditions: conditions:
- !type:NoUnstackableInTile - !type:NoUnstackableInTile
- type: construction - type: construction
id: SignalControlledValve id: SignalControlledValve
name: signal valve
description: Valve controlled by signal inputs.
graph: GasBinary graph: GasBinary
startNode: start startNode: start
targetNode: signalvalve targetNode: signalvalve
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/Atmospherics/pump.rsi
state: pumpSignalValve
layers:
- sprite: Structures/Piping/Atmospherics/pipe.rsi
state: pipeStraight
- sprite: Structures/Piping/Atmospherics/pump.rsi
state: pumpSignalValve
conditions: conditions:
- !type:NoUnstackableInTile - !type:NoUnstackableInTile
- type: construction - type: construction
id: GasPort id: GasPort
name: connector port
description: For connecting portable devices related to atmospherics control.
graph: GasBinary graph: GasBinary
startNode: start startNode: start
targetNode: port targetNode: port
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/Atmospherics/gascanisterport.rsi
state: gasCanisterPort
layers:
- sprite: Structures/Piping/Atmospherics/pipe.rsi
state: pipeHalf
- sprite: Structures/Piping/Atmospherics/gascanisterport.rsi
state: gasCanisterPort
conditions: conditions:
- !type:NoUnstackableInTile - !type:NoUnstackableInTile
- type: construction - type: construction
id: GasDualPortVentPump id: GasDualPortVentPump
name: dual-port air vent
description: Has a valve and a pump attached to it. There are two ports, one is an input for releasing air, the other is an output when siphoning.
graph: GasBinary graph: GasBinary
startNode: start startNode: start
targetNode: dualportventpump targetNode: dualportventpump
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/Atmospherics/vent.rsi
state: vent_off
layers:
- sprite: Structures/Piping/Atmospherics/pipe.rsi
state: pipeStraight
- sprite: Structures/Piping/Atmospherics/vent.rsi
state: vent_off
- type: construction - type: construction
id: HeatExchanger id: HeatExchanger
name: radiator
description: Transfers heat between the pipe and its surroundings.
graph: GasBinary graph: GasBinary
startNode: start startNode: start
targetNode: radiator targetNode: radiator
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/Atmospherics/heatexchanger.rsi
state: heStraight
- type: construction - type: construction
id: HeatExchangerBend id: HeatExchangerBend
name: radiator bend
description: Transfers heat between the pipe and its surroundings.
graph: GasBinary graph: GasBinary
startNode: start startNode: start
targetNode: bendradiator targetNode: bendradiator
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/Atmospherics/heatexchanger.rsi
state: heBend
# ATMOS TRINARY # ATMOS TRINARY
- type: construction - type: construction
id: GasFilter id: GasFilter
name: gas filter
description: Very useful for filtering gases.
graph: GasTrinary graph: GasTrinary
startNode: start startNode: start
targetNode: filter targetNode: filter
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/Atmospherics/gasfilter.rsi
state: gasFilter
mirror: GasFilterFlipped mirror: GasFilterFlipped
conditions: conditions:
- !type:NoUnstackableInTile - !type:NoUnstackableInTile
@@ -732,34 +457,24 @@
- type: construction - type: construction
id: GasFilterFlipped id: GasFilterFlipped
hide: true hide: true
name: gas filter
description: Very useful for filtering gases.
graph: GasTrinary graph: GasTrinary
startNode: start startNode: start
targetNode: filterflipped targetNode: filterflipped
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/Atmospherics/gasfilter.rsi
state: gasFilterF
mirror: GasFilter mirror: GasFilter
conditions: conditions:
- !type:NoUnstackableInTile - !type:NoUnstackableInTile
- type: construction - type: construction
id: GasMixer id: GasMixer
name: gas mixer
description: Very useful for mixing gases.
graph: GasTrinary graph: GasTrinary
startNode: start startNode: start
targetNode: mixer targetNode: mixer
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/Atmospherics/gasmixer.rsi
state: gasMixer
mirror: GasMixerFlipped mirror: GasMixerFlipped
conditions: conditions:
- !type:NoUnstackableInTile - !type:NoUnstackableInTile
@@ -767,49 +482,34 @@
- type: construction - type: construction
id: GasMixerFlipped id: GasMixerFlipped
hide: true hide: true
name: gas mixer
description: Very useful for mixing gases.
graph: GasTrinary graph: GasTrinary
startNode: start startNode: start
targetNode: mixerflipped targetNode: mixerflipped
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/Atmospherics/gasmixer.rsi
state: gasMixerF
mirror: GasMixer mirror: GasMixer
conditions: conditions:
- !type:NoUnstackableInTile - !type:NoUnstackableInTile
- type: construction - type: construction
id: PressureControlledValve id: PressureControlledValve
name: pneumatic valve
description: A bidirectional valve controlled by pressure. Opens if the output pipe is lower than the pressure of the control pipe by 101.325 kPa.
graph: GasTrinary graph: GasTrinary
startNode: start startNode: start
targetNode: pneumaticvalve targetNode: pneumaticvalve
category: construction-category-utilities category: construction-category-utilities
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
icon:
sprite: Structures/Piping/Atmospherics/pneumaticvalve.rsi
state: off
conditions: conditions:
- !type:NoUnstackableInTile - !type:NoUnstackableInTile
# INTERCOM # INTERCOM
- type: construction - type: construction
name: intercom
id: IntercomAssembly id: IntercomAssembly
graph: Intercom graph: Intercom
startNode: start startNode: start
targetNode: intercom targetNode: intercom
category: construction-category-structures category: construction-category-structures
description: An intercom. For when the station just needs to know something.
icon:
sprite: Structures/Wallmounts/intercom.rsi
state: base
placementMode: SnapgridCenter placementMode: SnapgridCenter
objectType: Structure objectType: Structure
canRotate: true canRotate: true
@@ -819,16 +519,11 @@
# TIMERS # TIMERS
- type: construction - type: construction
name: signal timer
id: SignalTimer id: SignalTimer
graph: Timer graph: Timer
startNode: start startNode: start
targetNode: signal targetNode: signal
category: construction-category-utilities category: construction-category-utilities
description: "A wallmounted timer for sending timed signals to things."
icon:
sprite: Structures/Wallmounts/switch.rsi
state: on
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: true
@@ -836,16 +531,11 @@
- !type:WallmountCondition - !type:WallmountCondition
- type: construction - type: construction
name: screen timer
id: ScreenTimer id: ScreenTimer
graph: Timer graph: Timer
startNode: start startNode: start
targetNode: screen targetNode: screen
category: construction-category-utilities category: construction-category-utilities
description: "A wallmounted timer for sending timed signals to things. This one has a screen for displaying text."
icon:
sprite: Structures/Wallmounts/signalscreen.rsi
state: signalscreen
objectType: Structure objectType: Structure
canRotate: false canRotate: false
placementMode: SnapgridCenter placementMode: SnapgridCenter
@@ -854,16 +544,11 @@
- !type:WallmountCondition - !type:WallmountCondition
- type: construction - type: construction
name: brig timer
id: BrigTimer id: BrigTimer
graph: Timer graph: Timer
startNode: start startNode: start
targetNode: brig targetNode: brig
category: construction-category-utilities category: construction-category-utilities
description: "A wallmounted timer for sending timed signals to things. This one has a screen for displaying text and requires security access to use."
icon:
sprite: Structures/Wallmounts/signalscreen.rsi
state: signalscreen
objectType: Structure objectType: Structure
canRotate: false canRotate: false
placementMode: SnapgridCenter placementMode: SnapgridCenter

View File

@@ -1,219 +1,159 @@
- type: construction - type: construction
name: grey bladed flatcap
id: BladedFlatcapGrey id: BladedFlatcapGrey
graph: BladedFlatcapGrey graph: BladedFlatcapGrey
startNode: start startNode: start
targetNode: icon targetNode: icon
category: construction-category-weapons category: construction-category-weapons
description: An inconspicuous hat with glass shards sewn into the brim.
icon: { sprite: Clothing/Head/Hats/greyflatcap.rsi, state: icon }
objectType: Item objectType: Item
- type: construction - type: construction
name: brown bladed flatcap
id: BladedFlatcapBrown id: BladedFlatcapBrown
graph: BladedFlatcapBrown graph: BladedFlatcapBrown
startNode: start startNode: start
targetNode: icon targetNode: icon
category: construction-category-weapons category: construction-category-weapons
description: An inconspicuous hat with glass shards sewn into the brim.
icon: { sprite: Clothing/Head/Hats/brownflatcap.rsi, state: icon }
objectType: Item objectType: Item
- type: construction - type: construction
name: glass shiv
id: Shiv id: Shiv
graph: Shiv graph: Shiv
startNode: start startNode: start
targetNode: icon targetNode: icon
category: construction-category-weapons category: construction-category-weapons
description: A glass shard with a piece of cloth wrapped around it.
icon: { sprite: Objects/Weapons/Melee/shiv.rsi, state: icon }
objectType: Item objectType: Item
- type: construction - type: construction
name: reinforced shiv
id: ReinforcedShiv id: ReinforcedShiv
graph: ReinforcedShiv graph: ReinforcedShiv
startNode: start startNode: start
targetNode: icon targetNode: icon
category: construction-category-weapons category: construction-category-weapons
description: A reinforced glass shard with a piece of cloth wrapped around it.
icon: { sprite: Objects/Weapons/Melee/reinforced_shiv.rsi, state: icon }
objectType: Item objectType: Item
- type: construction - type: construction
name: plasma shiv
id: PlasmaShiv id: PlasmaShiv
graph: PlasmaShiv graph: PlasmaShiv
startNode: start startNode: start
targetNode: icon targetNode: icon
category: construction-category-weapons category: construction-category-weapons
description: A plasma shard with a piece of cloth wrapped around it.
icon: { sprite: Objects/Weapons/Melee/plasma_shiv.rsi, state: icon }
objectType: Item objectType: Item
- type: construction - type: construction
name: uranium shiv
id: UraniumShiv id: UraniumShiv
graph: UraniumShiv graph: UraniumShiv
startNode: start startNode: start
targetNode: icon targetNode: icon
category: construction-category-weapons category: construction-category-weapons
description: A uranium shard with a piece of cloth wrapped around it.
icon: { sprite: Objects/Weapons/Melee/uranium_shiv.rsi, state: icon }
objectType: Item objectType: Item
- type: construction - type: construction
name: crude spear
id: Spear id: Spear
graph: Spear graph: Spear
startNode: start startNode: start
targetNode: spear targetNode: spear
category: construction-category-weapons category: construction-category-weapons
description: A crude spear for when you need to put holes in somebody.
icon: { sprite: Objects/Weapons/Melee/spear.rsi, state: spear }
objectType: Item objectType: Item
- type: construction - type: construction
name: crude reinforced spear
id: SpearReinforced id: SpearReinforced
graph: SpearReinforced graph: SpearReinforced
startNode: start startNode: start
targetNode: spear targetNode: spear
category: construction-category-weapons category: construction-category-weapons
description: A crude reinforced spear for when you need to put holes in somebody.
icon: { sprite: Objects/Weapons/Melee/reinforced_spear.rsi, state: spear }
objectType: Item objectType: Item
- type: construction - type: construction
name: crude plasma spear
id: SpearPlasma id: SpearPlasma
graph: SpearPlasma graph: SpearPlasma
startNode: start startNode: start
targetNode: spear targetNode: spear
category: construction-category-weapons category: construction-category-weapons
description: A crude plasma spear for when you need to put holes in somebody.
icon: { sprite: Objects/Weapons/Melee/plasma_spear.rsi, state: spear }
objectType: Item objectType: Item
- type: construction - type: construction
name: crude uranium spear
id: SpearUranium id: SpearUranium
graph: SpearUranium graph: SpearUranium
startNode: start startNode: start
targetNode: spear targetNode: spear
category: construction-category-weapons category: construction-category-weapons
description: A crude uranium spear for when you need to put holes in somebody.
icon: { sprite: Objects/Weapons/Melee/uranium_spear.rsi, state: spear }
objectType: Item objectType: Item
- type: construction - type: construction
name: sharkminnow tooth spear
id: SpearSharkMinnow id: SpearSharkMinnow
graph: SpearSharkMinnow graph: SpearSharkMinnow
startNode: start startNode: start
targetNode: spear targetNode: spear
category: construction-category-weapons category: construction-category-weapons
description: A crude spear with a sharkminnow tooth for when you need to put holes in somebody.
icon: { sprite: Objects/Weapons/Melee/sharkminnow_spear.rsi, state: spear }
objectType: Item objectType: Item
- type: construction - type: construction
name: makeshift bola
id: Bola id: Bola
graph: Bola graph: Bola
startNode: start startNode: start
targetNode: bola targetNode: bola
category: construction-category-weapons category: construction-category-weapons
description: A simple weapon for tripping someone at a distance.
icon: { sprite: Objects/Weapons/Throwable/bola.rsi, state: icon }
objectType: Item objectType: Item
- type: construction - type: construction
name: wooden buckler
id: WoodenBuckler id: WoodenBuckler
graph: WoodenBuckler graph: WoodenBuckler
startNode: start startNode: start
targetNode: woodenBuckler targetNode: woodenBuckler
category: construction-category-weapons category: construction-category-weapons
description: A nicely carved wooden shield!
icon: { sprite: Objects/Weapons/Melee/shields.rsi, state: buckler-icon }
objectType: Item objectType: Item
- type: construction - type: construction
name: makeshift shield
id: MakeshiftShield id: MakeshiftShield
graph: MakeshiftShield graph: MakeshiftShield
startNode: start startNode: start
targetNode: makeshiftShield targetNode: makeshiftShield
category: construction-category-weapons category: construction-category-weapons
description: Crude and falling apart. Why would you make this?
icon: { sprite: Objects/Weapons/Melee/shields.rsi, state: makeshift-icon }
objectType: Item objectType: Item
- type: construction - type: construction
name: glass shard arrow
id: ImprovisedArrow id: ImprovisedArrow
graph: ImprovisedArrow graph: ImprovisedArrow
startNode: start startNode: start
targetNode: ImprovisedArrow targetNode: ImprovisedArrow
category: construction-category-weapons category: construction-category-weapons
description: An arrow tipped with pieces of a glass shard, for use with a bow.
icon: { sprite: Objects/Weapons/Guns/Bow/bow.rsi, state: wielded-arrow }
objectType: Item objectType: Item
- type: construction - type: construction
name: carp tooth arrow
id: ImprovisedArrowCarp id: ImprovisedArrowCarp
graph: ImprovisedArrowCarp graph: ImprovisedArrowCarp
startNode: start startNode: start
targetNode: ImprovisedArrowCarp targetNode: ImprovisedArrowCarp
category: construction-category-weapons category: construction-category-weapons
description: An arrow tipped with a carp tooth, for use with a bow.
icon: { sprite: Objects/Weapons/Guns/Bow/bow.rsi, state: wielded-arrow }
objectType: Item objectType: Item
- type: construction - type: construction
name: plasma glass shard arrow
id: ImprovisedArrowPlasma id: ImprovisedArrowPlasma
graph: ImprovisedArrowPlasma graph: ImprovisedArrowPlasma
startNode: start startNode: start
targetNode: ImprovisedArrowPlasma targetNode: ImprovisedArrowPlasma
category: construction-category-weapons category: construction-category-weapons
description: An arrow tipped with pieces of a plasma glass shard, for use with a bow.
icon: { sprite: Objects/Weapons/Guns/Bow/bow.rsi, state: wielded-arrow }
objectType: Item objectType: Item
- type: construction - type: construction
name: uranium glass shard arrow
id: ImprovisedArrowUranium id: ImprovisedArrowUranium
graph: ImprovisedArrowUranium graph: ImprovisedArrowUranium
startNode: start startNode: start
targetNode: ImprovisedArrowUranium targetNode: ImprovisedArrowUranium
category: construction-category-weapons category: construction-category-weapons
description: An arrow tipped with pieces of a uranium glass shard, for use with a bow.
icon: { sprite: Objects/Weapons/Guns/Bow/bow.rsi, state: wielded-arrow }
objectType: Item objectType: Item
- type: construction - type: construction
name: improvised bow
id: ImprovisedBow id: ImprovisedBow
graph: ImprovisedBow graph: ImprovisedBow
startNode: start startNode: start
targetNode: ImprovisedBow targetNode: ImprovisedBow
category: construction-category-weapons category: construction-category-weapons
description: A shoddily constructed bow made out of wood and cloth. It's not much, but it's gotten the job done for millennia.
icon: { sprite: Objects/Weapons/Guns/Bow/bow.rsi, state: unwielded }
objectType: Item objectType: Item
- type: construction - type: construction
name: bone spear
id: SpearBone id: SpearBone
graph: SpearBone graph: SpearBone
startNode: start startNode: start
targetNode: spear targetNode: spear
category: construction-category-weapons category: construction-category-weapons
description: Bones and silk combined together.
icon: { sprite: Objects/Weapons/Melee/bone_spear.rsi, state: spear }
objectType: Item objectType: Item

View File

@@ -1,14 +1,9 @@
- type: construction - type: construction
name: web wall
id: WallWeb id: WallWeb
graph: WebStructures graph: WebStructures
startNode: start startNode: start
targetNode: wall targetNode: wall
category: construction-category-structures category: construction-category-structures
description: A fairly weak yet silky smooth wall.
icon:
sprite: Structures/Walls/web.rsi
state: full
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canRotate: false canRotate: false
@@ -20,16 +15,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: web table
id: TableWeb id: TableWeb
graph: WebStructures graph: WebStructures
startNode: start startNode: start
targetNode: table targetNode: table
category: construction-category-furniture category: construction-category-furniture
description: Essential for any serious web development.
icon:
sprite: Structures/Furniture/Tables/web.rsi
state: full
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canRotate: false canRotate: false
@@ -41,16 +31,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: web bed
id: WebBed id: WebBed
graph: WebStructures graph: WebStructures
startNode: start startNode: start
targetNode: bed targetNode: bed
category: construction-category-furniture category: construction-category-furniture
description: Fun fact, you eating spiders in your sleep is false.
icon:
sprite: Structures/Web/bed.rsi
state: icon
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canRotate: false canRotate: false
@@ -62,16 +47,11 @@
- !type:TileNotBlocked - !type:TileNotBlocked
- type: construction - type: construction
name: web chair
id: ChairWeb id: ChairWeb
graph: WebStructures graph: WebStructures
startNode: start startNode: start
targetNode: chair targetNode: chair
category: construction-category-furniture category: construction-category-furniture
description: You want to get serious about web development? Get this chair!
icon:
sprite: Structures/Web/chair.rsi
state: icon
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false
@@ -80,16 +60,11 @@
- SpiderCraft - SpiderCraft
- type: construction - type: construction
name: web crate
id: CrateWeb id: CrateWeb
graph: WebStructures graph: WebStructures
startNode: start startNode: start
targetNode: crate targetNode: crate
category: construction-category-storage category: construction-category-storage
description: For containment of food and other things. Not as durable as a normal crate, and can't be welded shut.
icon:
sprite: Structures/Storage/Crates/web.rsi
state: icon
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canRotate: false canRotate: false
@@ -99,16 +74,11 @@
- SpiderCraft - SpiderCraft
- type: construction - type: construction
name: web door
id: WebDoor id: WebDoor
graph: WebStructures graph: WebStructures
startNode: start startNode: start
targetNode: door targetNode: door
category: construction-category-structures category: construction-category-structures
description: A manual door made from web, normally placed right before a pit or trap.
icon:
sprite: Structures/Doors/web_door.rsi
state: closed
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: false canBuildInImpassable: false

View File

@@ -10,18 +10,18 @@
icon: icon:
sprite: Objects/Tools/bucket.rsi sprite: Objects/Tools/bucket.rsi
state: icon state: icon
name: bucket name: construction-graph-tag-bucket
- tag: ProximitySensor - tag: ProximitySensor
icon: icon:
sprite: Objects/Misc/proximity_sensor.rsi sprite: Objects/Misc/proximity_sensor.rsi
state: icon state: icon
name: proximity sensor name: construction-graph-tag-proximity-sensor
doAfter: 2 doAfter: 2
- tag: BorgArm - tag: BorgArm
icon: icon:
sprite: Mobs/Silicon/drone.rsi sprite: Mobs/Silicon/drone.rsi
state: l_hand state: l_hand
name: borg arm name: construction-graph-tag-borg-arm
doAfter: 2 doAfter: 2
- node: bot - node: bot
entity: MobCleanBot entity: MobCleanBot

View File

@@ -10,24 +10,24 @@
icon: icon:
sprite: Objects/Misc/fire_extinguisher.rsi sprite: Objects/Misc/fire_extinguisher.rsi
state: fire_extinguisher_open state: fire_extinguisher_open
name: fire extinguisher name: construction-graph-tag-fire-extinguisher
- tag: FireHelmet - tag: FireHelmet
icon: icon:
sprite: Clothing/Head/Helmets/firehelmet.rsi sprite: Clothing/Head/Helmets/firehelmet.rsi
state: icon state: icon
name: fire helmet name: construction-graph-tag-fire-helmet
doAfter: 2 doAfter: 2
- tag: ProximitySensor - tag: ProximitySensor
icon: icon:
sprite: Objects/Misc/proximity_sensor.rsi sprite: Objects/Misc/proximity_sensor.rsi
state: icon state: icon
name: proximity sensor name: construction-graph-tag-proximity-sensor
doAfter: 2 doAfter: 2
- tag: BorgArm - tag: BorgArm
icon: icon:
sprite: Mobs/Silicon/drone.rsi sprite: Mobs/Silicon/drone.rsi
state: l_hand state: l_hand
name: borg arm name: construction-graph-tag-borg-arm
doAfter: 2 doAfter: 2
- node: bot - node: bot
entity: MobFireBot entity: MobFireBot

View File

@@ -10,23 +10,23 @@
icon: icon:
sprite: Objects/Storage/Happyhonk/clown.rsi sprite: Objects/Storage/Happyhonk/clown.rsi
state: box state: box
name: happy honk meal name: construction-graph-tag-happy-honk-meal
- tag: BikeHorn - tag: BikeHorn
icon: icon:
sprite: Objects/Fun/bikehorn.rsi sprite: Objects/Fun/bikehorn.rsi
state: icon state: icon
name: bike horn name: construction-graph-tag-clown-bike-horn
doAfter: 2 doAfter: 2
- tag: ProximitySensor - tag: ProximitySensor
icon: icon:
sprite: Objects/Misc/proximity_sensor.rsi sprite: Objects/Misc/proximity_sensor.rsi
state: icon state: icon
name: proximity sensor name: construction-graph-tag-proximity-sensor
- tag: BorgArm - tag: BorgArm
icon: icon:
sprite: Mobs/Silicon/drone.rsi sprite: Mobs/Silicon/drone.rsi
state: l_hand state: l_hand
name: borg arm name: construction-graph-tag-borg-arm
doAfter: 2 doAfter: 2
- node: bot - node: bot
entity: MobHonkBot entity: MobHonkBot
@@ -43,23 +43,23 @@
icon: icon:
sprite: Objects/Storage/Happyhonk/cluwne.rsi sprite: Objects/Storage/Happyhonk/cluwne.rsi
state: box state: box
name: woeful cluwne meal name: construction-graph-tag-woeful-cluwne-meal
- tag: CluwneHorn - tag: CluwneHorn
icon: icon:
sprite: Objects/Fun/cluwnehorn.rsi sprite: Objects/Fun/cluwnehorn.rsi
state: icon state: icon
name: broken bike horn name: construction-graph-tag-clowne-horn
doAfter: 2 doAfter: 2
- tag: ProximitySensor - tag: ProximitySensor
icon: icon:
sprite: Objects/Misc/proximity_sensor.rsi sprite: Objects/Misc/proximity_sensor.rsi
state: icon state: icon
name: proximity sensor name: construction-graph-tag-proximity-sensor
- tag: BorgArm - tag: BorgArm
icon: icon:
sprite: Mobs/Silicon/drone.rsi sprite: Mobs/Silicon/drone.rsi
state: l_hand state: l_hand
name: borg arm name: construction-graph-tag-borg-arm
doAfter: 2 doAfter: 2
- node: bot - node: bot
entity: MobJonkBot entity: MobJonkBot

View File

@@ -10,24 +10,24 @@
icon: icon:
sprite: Objects/Specific/Medical/firstaidkits.rsi sprite: Objects/Specific/Medical/firstaidkits.rsi
state: firstaid state: firstaid
name: medkit name: construction-graph-tag-medkit
- tag: DiscreteHealthAnalyzer - tag: DiscreteHealthAnalyzer
icon: icon:
sprite: Objects/Specific/Medical/healthanalyzer.rsi sprite: Objects/Specific/Medical/healthanalyzer.rsi
state: analyzer state: analyzer
name: health analyzer name: construction-graph-tag-health-analyzer
doAfter: 2 doAfter: 2
- tag: ProximitySensor - tag: ProximitySensor
icon: icon:
sprite: Objects/Misc/proximity_sensor.rsi sprite: Objects/Misc/proximity_sensor.rsi
state: icon state: icon
name: proximity sensor name: construction-graph-tag-proximity-sensor
doAfter: 2 doAfter: 2
- tag: BorgArm - tag: BorgArm
icon: icon:
sprite: Mobs/Silicon/drone.rsi sprite: Mobs/Silicon/drone.rsi
state: l_hand state: l_hand
name: borg arm name: construction-graph-tag-borg-arm
doAfter: 2 doAfter: 2
- node: bot - node: bot
entity: MobMedibot entity: MobMedibot

View File

@@ -10,35 +10,35 @@
icon: icon:
sprite: Objects/Storage/Happyhonk/mime.rsi sprite: Objects/Storage/Happyhonk/mime.rsi
state: box state: box
name: mime edition happy honk meal name: construction-graph-tag-mime-meal
- tag: MimeBelt - tag: MimeBelt
icon: icon:
sprite: Clothing/Belt/suspenders_red.rsi sprite: Clothing/Belt/suspenders_red.rsi
state: icon state: icon
name: suspenders name: construction-graph-tag-suspenders
doAfter: 2 doAfter: 2
- tag: ProximitySensor - tag: ProximitySensor
icon: icon:
sprite: Objects/Misc/proximity_sensor.rsi sprite: Objects/Misc/proximity_sensor.rsi
state: icon state: icon
name: proximity sensor name: construction-graph-tag-proximity-sensor
- tag: BorgHead - tag: BorgHead
icon: icon:
sprite: Objects/Specific/Robotics/cyborg_parts.rsi sprite: Objects/Specific/Robotics/cyborg_parts.rsi
state: borg_head state: borg_head
name: borg head name: construction-graph-tag-borg-head
doAfter: 2 doAfter: 2
- tag: BorgArm - tag: BorgArm
icon: icon:
sprite: Mobs/Silicon/drone.rsi sprite: Mobs/Silicon/drone.rsi
state: l_hand state: l_hand
name: borg arm name: construction-graph-tag-borg-arm
doAfter: 2 doAfter: 2
- tag: BorgArm - tag: BorgArm
icon: icon:
sprite: Mobs/Silicon/drone.rsi sprite: Mobs/Silicon/drone.rsi
state: l_hand state: l_hand
name: borg arm name: construction-graph-tag-borg-arm
doAfter: 2 doAfter: 2
- node: bot - node: bot
entity: MobMimeBot entity: MobMimeBot

View File

@@ -10,12 +10,12 @@
icon: icon:
sprite: Objects/Misc/proximity_sensor.rsi sprite: Objects/Misc/proximity_sensor.rsi
state: icon state: icon
name: proximity sensor name: construction-graph-tag-proximity-sensor
- tag: BorgHead - tag: BorgHead
icon: icon:
sprite: Objects/Specific/Robotics/cyborg_parts.rsi sprite: Objects/Specific/Robotics/cyborg_parts.rsi
state: borg_head state: borg_head
name: borg head name: construction-graph-tag-borg-head
doAfter: 1 doAfter: 1
- material: Steel - material: Steel
amount: 10 amount: 10

View File

@@ -10,7 +10,7 @@
icon: icon:
sprite: Clothing/OuterClothing/Hardsuits/spatio.rsi sprite: Clothing/OuterClothing/Hardsuits/spatio.rsi
state: icon state: icon
name: spationaut hardsuit name: construction-graph-tag-spationaut-hardsuit
doAfter: 10 doAfter: 10
- material: Durathread - material: Durathread
amount: 5 amount: 5

View File

@@ -7,13 +7,13 @@
- to: empty - to: empty
steps: steps:
- tag: DrinkCan - tag: DrinkCan
name: an empty can name: construction-graph-tag-empty-can
icon: icon:
sprite: Objects/Consumable/Drinks/cola.rsi sprite: Objects/Consumable/Drinks/cola.rsi
state: icon_open state: icon_open
doAfter: 1 doAfter: 1
- tag: Igniter - tag: Igniter
name: an igniter name: construction-graph-tag-igniter
icon: icon:
sprite: Objects/Devices/igniter.rsi sprite: Objects/Devices/igniter.rsi
state: icon state: icon

View File

@@ -7,17 +7,17 @@
- to: flowerwreath - to: flowerwreath
steps: steps:
- tag: Flower - tag: Flower
name: flower name: construction-graph-tag-flower
icon: icon:
sprite: Objects/Specific/Hydroponics/poppy.rsi sprite: Objects/Specific/Hydroponics/poppy.rsi
state: produce state: produce
- tag: Flower - tag: Flower
name: flower name: construction-graph-tag-flower
icon: icon:
sprite: Objects/Specific/Hydroponics/poppy.rsi sprite: Objects/Specific/Hydroponics/poppy.rsi
state: produce state: produce
- tag: Ambrosia - tag: Ambrosia
name: ambrosia name: construction-graph-tag-ambrosia
icon: icon:
sprite: Objects/Specific/Hydroponics/ambrosia_vulgaris.rsi sprite: Objects/Specific/Hydroponics/ambrosia_vulgaris.rsi
state: produce state: produce

View File

@@ -10,17 +10,17 @@
icon: icon:
sprite: Structures/Piping/Atmospherics/pipe.rsi sprite: Structures/Piping/Atmospherics/pipe.rsi
state: pipeStraight state: pipeStraight
name: pipe name: construction-graph-tag-pipe
- tag: ModularReceiver - tag: ModularReceiver
icon: icon:
sprite: Objects/Misc/modular_receiver.rsi sprite: Objects/Misc/modular_receiver.rsi
state: icon state: icon
name: modular receiver name: construction-graph-tag-modular-receiver
- tag: RifleStock - tag: RifleStock
icon: icon:
sprite: Objects/Misc/rifle_stock.rsi sprite: Objects/Misc/rifle_stock.rsi
state: icon state: icon
name: rifle stock name: construction-graph-tag-rifle-stock
- material: Cloth - material: Cloth
amount: 3 amount: 3
doAfter: 10 doAfter: 10

View File

@@ -13,61 +13,61 @@
amount: 1 amount: 1
doAfter: 0.5 doAfter: 0.5
- tag: GlassShard - tag: GlassShard
name: glass shard name: construction-graph-tag-glass-shard
icon: icon:
sprite: Objects/Materials/Shards/shard.rsi sprite: Objects/Materials/Shards/shard.rsi
state: shard1 state: shard1
doAfter: 0.5 doAfter: 0.5
- tag: GlassShard - tag: GlassShard
name: glass shard name: construction-graph-tag-glass-shard
icon: icon:
sprite: Objects/Materials/Shards/shard.rsi sprite: Objects/Materials/Shards/shard.rsi
state: shard2 state: shard2
doAfter: 0.5 doAfter: 0.5
- tag: GlassShard - tag: GlassShard
name: glass shard name: construction-graph-tag-glass-shard
icon: icon:
sprite: Objects/Materials/Shards/shard.rsi sprite: Objects/Materials/Shards/shard.rsi
state: shard1 state: shard1
doAfter: 0.5 doAfter: 0.5
- tag: GlassShard - tag: GlassShard
name: glass shard name: construction-graph-tag-glass-shard
icon: icon:
sprite: Objects/Materials/Shards/shard.rsi sprite: Objects/Materials/Shards/shard.rsi
state: shard3 state: shard3
doAfter: 0.5 doAfter: 0.5
- tag: Matchstick - tag: Matchstick
name: match stick name: construction-graph-tag-match-stick
icon: icon:
sprite: Objects/Tools/matches.rsi sprite: Objects/Tools/matches.rsi
state: match_unlit state: match_unlit
doAfter: 0.5 doAfter: 0.5
- tag: Matchstick - tag: Matchstick
name: match stick name: construction-graph-tag-match-stick
icon: icon:
sprite: Objects/Tools/matches.rsi sprite: Objects/Tools/matches.rsi
state: match_unlit state: match_unlit
doAfter: 0.5 doAfter: 0.5
- tag: Matchstick - tag: Matchstick
name: match stick name: construction-graph-tag-match-stick
icon: icon:
sprite: Objects/Tools/matches.rsi sprite: Objects/Tools/matches.rsi
state: match_unlit state: match_unlit
doAfter: 0.5 doAfter: 0.5
- tag: Matchstick - tag: Matchstick
name: match stick name: construction-graph-tag-match-stick
icon: icon:
sprite: Objects/Tools/matches.rsi sprite: Objects/Tools/matches.rsi
state: match_unlit state: match_unlit
doAfter: 0.5 doAfter: 0.5
- tag: Matchstick - tag: Matchstick
name: match stick name: construction-graph-tag-match-stick
icon: icon:
sprite: Objects/Tools/matches.rsi sprite: Objects/Tools/matches.rsi
state: match_unlit state: match_unlit
doAfter: 0.5 doAfter: 0.5
- tag: Matchstick - tag: Matchstick
name: match stick name: construction-graph-tag-match-stick
icon: icon:
sprite: Objects/Tools/matches.rsi sprite: Objects/Tools/matches.rsi
state: match_unlit state: match_unlit

View File

@@ -9,7 +9,7 @@
- material: MetalRod - material: MetalRod
amount: 1 amount: 1
- tag: PowerCellSmall - tag: PowerCellSmall
name: power cell small name: construction-graph-tag-power-cell-small
icon: icon:
sprite: Objects/Power/power_cells.rsi sprite: Objects/Power/power_cells.rsi
state: small state: small
@@ -18,9 +18,9 @@
sprite: Objects/Misc/cablecuffs.rsi sprite: Objects/Misc/cablecuffs.rsi
state: cuff state: cuff
color: red color: red
name: cuffs name: construction-graph-tag-cuffs
- tag: Igniter - tag: Igniter
name: igniter name: construction-graph-tag-igniter
icon: icon:
sprite: Objects/Devices/igniter.rsi sprite: Objects/Devices/igniter.rsi
state: icon state: icon

View File

@@ -10,7 +10,7 @@
icon: icon:
sprite: Structures/Piping/Atmospherics/pipe.rsi sprite: Structures/Piping/Atmospherics/pipe.rsi
state: pipeStraight state: pipeStraight
name: pipe name: construction-graph-tag-pipe
- material: Steel - material: Steel
amount: 1 amount: 1
doAfter: 3 doAfter: 3

View File

@@ -10,13 +10,13 @@
icon: icon:
sprite: Structures/Piping/Atmospherics/pipe.rsi sprite: Structures/Piping/Atmospherics/pipe.rsi
state: pipeStraight state: pipeStraight
name: pipe name: construction-graph-tag-pipe
- tag: Handcuffs - tag: Handcuffs
icon: icon:
sprite: Objects/Misc/cablecuffs.rsi sprite: Objects/Misc/cablecuffs.rsi
state: cuff state: cuff
color: red color: red
name: cuffs name: construction-graph-tag-cuffs
- material: Steel - material: Steel
amount: 6 amount: 6
doAfter: 10 doAfter: 10

View File

@@ -7,7 +7,7 @@
- to: potatobattery - to: potatobattery
steps: steps:
- tag: Potato - tag: Potato
name: a potato name: construction-graph-tag-potato
icon: icon:
sprite: Objects/Specific/Hydroponics/potato.rsi sprite: Objects/Specific/Hydroponics/potato.rsi
state: produce state: produce
@@ -30,13 +30,13 @@
- to: potatoai - to: potatoai
steps: steps:
- tag: PotatoBattery - tag: PotatoBattery
name: a potato battery name: construction-graph-tag-potato-battery
icon: icon:
sprite: Objects/Power/power_cells.rsi sprite: Objects/Power/power_cells.rsi
state: potato state: potato
doAfter: 1 doAfter: 1
- tag: SmallAIChip - tag: SmallAIChip
name: a super-compact AI chip name: construction-graph-tag-super-compact-ai-chip
icon: icon:
sprite: Objects/Misc/potatoai_chip.rsi sprite: Objects/Misc/potatoai_chip.rsi
state: icon state: icon

View File

@@ -12,7 +12,7 @@
amount: 2 amount: 2
doAfter: 5 doAfter: 5
- tag: FreezerElectronics - tag: FreezerElectronics
name: freezer electronics name: construction-graph-tag-freezer-electronics
icon: icon:
sprite: Objects/Misc/module.rsi sprite: Objects/Misc/module.rsi
state: door_electronics state: door_electronics

View File

@@ -75,7 +75,7 @@
amount: 2 amount: 2
doAfter: 5 doAfter: 5
- tag: FreezerElectronics - tag: FreezerElectronics
name: freezer electronics name: construction-graph-tag-freezer-electronics
icon: icon:
sprite: Objects/Misc/module.rsi sprite: Objects/Misc/module.rsi
state: door_electronics state: door_electronics

View File

@@ -7,22 +7,22 @@
- to: strawhat - to: strawhat
steps: steps:
- tag: Wheat - tag: Wheat
name: wheat bushel name: construction-graph-tag-wheat-bushel
icon: icon:
sprite: Objects/Specific/Hydroponics/wheat.rsi sprite: Objects/Specific/Hydroponics/wheat.rsi
state: produce state: produce
- tag: Wheat - tag: Wheat
name: wheat bushel name: construction-graph-tag-wheat-bushel
icon: icon:
sprite: Objects/Specific/Hydroponics/wheat.rsi sprite: Objects/Specific/Hydroponics/wheat.rsi
state: produce state: produce
- tag: Wheat - tag: Wheat
name: wheat bushel name: construction-graph-tag-wheat-bushel
icon: icon:
sprite: Objects/Specific/Hydroponics/wheat.rsi sprite: Objects/Specific/Hydroponics/wheat.rsi
state: produce state: produce
- tag: Wheat - tag: Wheat
name: wheat bushel name: construction-graph-tag-wheat-bushel
icon: icon:
sprite: Objects/Specific/Hydroponics/wheat.rsi sprite: Objects/Specific/Hydroponics/wheat.rsi
state: produce state: produce

Some files were not shown because too many files have changed in this diff Show More