using System.Linq;
using Content.Shared.Construction.Prototypes;
+using Robust.Client.GameObjects;
using Robust.Client.Placement;
-using Robust.Client.Utility;
+using Robust.Client.ResourceManagement;
using Robust.Shared.Map;
+using Robust.Shared.Prototypes;
namespace Content.Client.Construction
{
public override void StartHijack(PlacementManager 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();
}
}
}
using System.Diagnostics.CodeAnalysis;
+using System.Linq;
using Content.Client.Popups;
using Content.Shared.Construction;
using Content.Shared.Construction.Prototypes;
-using Content.Shared.Construction.Steps;
using Content.Shared.Examine;
using Content.Shared.Input;
-using Content.Shared.Interaction;
using Content.Shared.Wall;
using JetBrains.Annotations;
using Robust.Client.GameObjects;
using Robust.Shared.Map;
using Robust.Shared.Player;
using Robust.Shared.Prototypes;
+using Robust.Shared.Utility;
namespace Content.Client.Construction
{
public sealed class ConstructionSystem : SharedConstructionSystem
{
[Dependency] private readonly IPlayerManager _playerManager = default!;
- [Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly ExamineSystemShared _examineSystem = default!;
[Dependency] private readonly SharedTransformSystem _transformSystem = default!;
[Dependency] private readonly PopupSystem _popupSystem = default!;
private readonly Dictionary<int, EntityUid> _ghosts = new();
private readonly Dictionary<string, ConstructionGuide> _guideCache = new();
+ private readonly Dictionary<string, string> _recipesMetadataCache = [];
+
public bool CraftingEnabled { get; private set; }
/// <inheritdoc />
{
base.Initialize();
+ WarmupRecipesCache();
+
UpdatesOutsidePrediction = true;
SubscribeLocalEvent<LocalPlayerAttachedEvent>(HandlePlayerAttached);
SubscribeNetworkEvent<AckStructureConstructionMessage>(HandleAckStructure);
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)
{
_guideCache[ev.ConstructionId] = ev.Guide;
private void HandleConstructionGhostExamined(EntityUid uid, ConstructionGhostComponent component, ExaminedEvent args)
{
- if (component.Prototype == null)
+ if (component.Prototype?.Name is null)
return;
using (args.PushGroup(nameof(ConstructionGhostComponent)))
"construction-ghost-examine-message",
("name", component.Prototype.Name)));
- if (!_prototypeManager.TryIndex(component.Prototype.Graph, out ConstructionGraphPrototype? graph))
+ if (!PrototypeManager.TryIndex(component.Prototype.Graph, out var graph))
return;
var startNode = graph.Nodes[component.Prototype.StartNode];
return false;
}
+ if (!TryGetRecipePrototype(prototype.ID, out var targetProtoId) || !PrototypeManager.TryIndex(targetProtoId, out EntityPrototype? targetProto))
+ return false;
+
if (GhostPresent(loc))
return false;
comp.GhostId = ghost.GetHashCode();
EntityManager.GetComponent<TransformComponent>(ghost.Value).LocalRotation = dir.ToAngle();
_ghosts.Add(comp.GhostId, ghost.Value);
+
var sprite = EntityManager.GetComponent<SpriteComponent>(ghost.Value);
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(0);
+ sprite.LayerSetSprite(0, icon.Icon);
+ sprite.LayerSetShader(0, "unshaded");
+ sprite.LayerSetVisible(0, true);
+ }
+ else if (targetProto.Components.TryGetValue("Sprite", out _))
{
- sprite.AddBlankLayer(i); // There is no way to actually check if this already exists, so we blindly insert a new one
- sprite.LayerSetSprite(i, prototype.Layers[i]);
- sprite.LayerSetShader(i, "unshaded");
- sprite.LayerSetVisible(i, true);
+ 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.LayerSetVisible(i, true);
+ }
+
+ EntityManager.DeleteEntity(dummy);
}
+ else
+ return false;
if (prototype.CanBuildInImpassable)
EnsureComp<WallMountComponent>(ghost.Value).Arc = new(Math.Tau);
-<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="Vertical" MinWidth="243" Margin="0 0 5 0">
<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"/>
</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">
<GridContainer Name="RecipesGrid" Columns="5" Access="Public"/>
</ScrollContainer>
<Control>
<BoxContainer Orientation="Vertical" HorizontalExpand="True" Margin="0 0 0 5">
<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">
<RichTextLabel Name="TargetName"/>
<RichTextLabel Name="TargetDesc"/>
-using System;
using System.Numerics;
+using Content.Client.UserInterface.Controls;
+using Content.Shared.Construction.Prototypes;
using Robust.Client.AutoGenerated;
-using Robust.Client.Graphics;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.CustomControls;
using Robust.Client.UserInterface.XAML;
-using Robust.Shared.Graphics;
-using Robust.Shared.IoC;
-using Robust.Shared.Localization;
-
+using Robust.Shared.Prototypes;
namespace Content.Client.Construction.UI
{
bool GridViewButtonPressed { get; set; }
bool BuildButtonPressed { get; set; }
- ItemList Recipes { get; }
+ ListContainer Recipes { get; }
ItemList RecipeStepList { get; }
GridContainer RecipesGrid { get; }
event EventHandler<(string search, string catagory)> PopulateRecipes;
- event EventHandler<ItemList.Item?> RecipeSelected;
+ event EventHandler<ConstructionMenu.ConstructionMenuListData?> RecipeSelected;
event EventHandler RecipeFavorited;
event EventHandler<bool> BuildButtonToggled;
event EventHandler<bool> EraseButtonToggled;
event EventHandler ClearAllGhosts;
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();
#region Window Control
Title = Loc.GetString("construction-menu-title");
BuildButton.Text = Loc.GetString("construction-menu-place-ghost");
- Recipes.OnItemSelected += obj => RecipeSelected?.Invoke(this, obj.ItemList[obj.ItemIndex]);
- Recipes.OnItemDeselected += _ => RecipeSelected?.Invoke(this, null);
+ Recipes.ItemPressed += (_, data) => RecipeSelected?.Invoke(this, data as ConstructionMenuListData);
+ 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 += _ =>
PopulateRecipes?.Invoke(this, (SearchBar.Text, Categories[OptionCategories.SelectedId]));
public event EventHandler? ClearAllGhosts;
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<bool>? BuildButtonToggled;
public event EventHandler<bool>? EraseButtonToggled;
}
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.Text = Loc.GetString(isItem ? "construction-menu-place-ghost" : "construction-menu-craft");
TargetName.SetMessage(name);
TargetDesc.SetMessage(description);
- TargetTexture.Texture = iconTexture;
+ TargetTexture.SetPrototype(targetPrototype?.ID);
FavoriteButton.Visible = true;
FavoriteButton.Text = Loc.GetString(
isFavorite ? "construction-add-favorite-button" : "construction-remove-from-favorite-button");
BuildButton.Disabled = true;
TargetName.SetMessage(string.Empty);
TargetDesc.SetMessage(string.Empty);
- TargetTexture.Texture = null;
+ TargetTexture.SetPrototype(null);
FavoriteButton.Visible = false;
RecipeStepList.Clear();
}
+
+ public sealed record ConstructionMenuListData(ConstructionPrototype Prototype, EntityPrototype TargetPrototype) : ListData;
}
}
using Robust.Client.Player;
using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls;
-using Robust.Client.Utility;
using Robust.Shared.Enums;
using Robust.Shared.Prototypes;
-using static Robust.Client.UserInterface.Controls.BaseButton;
namespace Content.Client.Construction.UI
{
[Dependency] private readonly IPlacementManager _placementManager = default!;
[Dependency] private readonly IUserInterfaceManager _uiManager = default!;
[Dependency] private readonly IPlayerManager _playerManager = default!;
+ private readonly SpriteSystem _spriteSystem;
private readonly IConstructionMenuView _constructionView;
private readonly EntityWhitelistSystem _whitelistSystem;
- private readonly SpriteSystem _spriteSystem;
private ConstructionSystem? _constructionSystem;
private ConstructionPrototype? _selected;
private List<ConstructionPrototype> _favoritedRecipes = [];
- private Dictionary<string, TextureButton> _recipeButtons = new();
+ private Dictionary<string, ContainerButton> _recipeButtons = new();
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
{
get => _uiManager.GetActiveUIWidget<GameTopMenuBar>().CraftingButton.Visible;
_placementManager.PlacementChanged += OnPlacementChanged;
- _constructionView.OnClose += () => _uiManager.GetActiveUIWidget<GameTopMenuBar>().CraftingButton.Pressed = false;
+ _constructionView.OnClose +=
+ () => _uiManager.GetActiveUIWidget<GameTopMenuBar>().CraftingButton.Pressed = false;
_constructionView.ClearAllGhosts += (_, _) => _constructionSystem?.ClearAllGhosts();
_constructionView.PopulateRecipes += OnViewPopulateRecipes;
_constructionView.RecipeSelected += OnViewRecipeSelected;
_constructionView.BuildButtonToggled += (_, b) => BuildButtonToggled(b);
_constructionView.EraseButtonToggled += (_, b) =>
{
- if (_constructionSystem is null) return;
- if (b) _placementManager.Clear();
+ if (_constructionSystem is null)
+ return;
+ if (b)
+ _placementManager.Clear();
_placementManager.ToggleEraserHijacked(new ConstructionPlacementHijack(_constructionSystem, null));
_constructionView.EraseButtonPressed = b;
};
OnViewPopulateRecipes(_constructionView, (string.Empty, string.Empty));
}
- public void OnHudCraftingButtonToggled(ButtonToggledEventArgs args)
+ public void OnHudCraftingButtonToggled(BaseButton.ButtonToggledEventArgs args)
{
WindowOpen = args.Pressed;
}
_constructionView.ResetPlacement();
}
- private void OnViewRecipeSelected(object? sender, ItemList.Item? item)
+ private void OnViewRecipeSelected(object? sender, ConstructionMenu.ConstructionMenuListData? item)
{
if (item is null)
{
return;
}
- _selected = (ConstructionPrototype) item.Metadata!;
- if (_placementManager.IsActive && !_placementManager.Eraser) UpdateGhostPlacement();
+ _selected = item.Prototype;
+
+ if (_placementManager is { IsActive: true, Eraser: false })
+ UpdateGhostPlacement();
+
PopulateInfo(_selected);
}
- private void OnGridViewRecipeSelected(object? sender, ConstructionPrototype? recipe)
+ private void OnGridViewRecipeSelected(object? _, ConstructionPrototype? recipe)
{
if (recipe is null)
{
}
_selected = recipe;
- if (_placementManager.IsActive && !_placementManager.Eraser) UpdateGhostPlacement();
+
+ if (_placementManager is { IsActive: true, Eraser: false })
+ UpdateGhostPlacement();
+
PopulateInfo(_selected);
}
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;
+ var recipesList = _constructionView.Recipes;
+ var recipesGrid = _constructionView.RecipesGrid;
+ recipesGrid.RemoveAllChildren();
- if (isEmptyCategory)
- _selectedCategory = string.Empty;
- else
- _selectedCategory = category;
+ _constructionView.RecipesGridScrollContainer.Visible = _constructionView.GridViewButtonPressed;
+ _constructionView.Recipes.Visible = !_constructionView.GridViewButtonPressed;
- foreach (var recipe in _prototypeManager.EnumeratePrototypes<ConstructionPrototype>())
+ if (_constructionView.GridViewButtonPressed)
{
- if (recipe.Hide)
- continue;
+ recipesList.PopulateList([]);
+ PopulateGrid(recipesGrid, actualRecipes);
+ }
+ else
+ {
+ recipesList.PopulateList(actualRecipes);
+ }
+ }
- if (_playerManager.LocalSession == null
- || _playerManager.LocalEntity == null
- || _whitelistSystem.IsWhitelistFail(recipe.EntityWhitelist, _playerManager.LocalEntity.Value))
- continue;
+ private void PopulateGrid(GridContainer recipesGrid,
+ IEnumerable<ConstructionMenu.ConstructionMenuListData> actualRecipes)
+ {
+ foreach (var recipe in actualRecipes)
+ {
+ var protoView = new EntityPrototypeView()
+ {
+ Scale = new Vector2(1.2f),
+ };
+ protoView.SetPrototype(recipe.TargetPrototype);
- if (!string.IsNullOrEmpty(search))
+ var itemButton = new ContainerButton()
{
- if (!recipe.Name.ToLowerInvariant().Contains(search.Trim().ToLowerInvariant()))
- continue;
- }
+ VerticalAlignment = Control.VAlignment.Center,
+ Name = recipe.TargetPrototype.Name,
+ ToolTip = recipe.TargetPrototype.Name,
+ ToggleMode = true,
+ Children = { protoView },
+ };
+
+ var itemButtonPanelContainer = new PanelContainer
+ {
+ PanelOverride = new StyleBoxFlat { BackgroundColor = StyleNano.ButtonColorDefault },
+ Children = { itemButton },
+ };
- if (!isEmptyCategory)
+ itemButton.OnToggled += buttonToggledEventArgs =>
{
- if (category == _favoriteCatName)
- {
- if (!_favoritedRecipes.Contains(recipe))
- {
- continue;
- }
- }
- else if (recipe.Category != category)
+ SelectGridButton(itemButton, buttonToggledEventArgs.Pressed);
+
+ if (buttonToggledEventArgs.Pressed &&
+ _selected != null &&
+ _recipeButtons.TryGetValue(_selected.Name!, out var oldButton))
{
- continue;
+ oldButton.Pressed = false;
+ SelectGridButton(oldButton, false);
}
- }
- recipes.Add(recipe);
+ OnGridViewRecipeSelected(this, buttonToggledEventArgs.Pressed ? recipe.Prototype : null);
+ };
+
+ recipesGrid.AddChild(itemButtonPanelContainer);
+ _recipeButtons[recipe.Prototype.Name!] = itemButton;
+ var isCurrentButtonSelected = _selected == recipe.Prototype;
+ itemButton.Pressed = isCurrentButtonSelected;
+ SelectGridButton(itemButton, isCurrentButtonSelected);
}
+ }
- recipes.Sort((a, b) => string.Compare(a.Name, b.Name, StringComparison.InvariantCulture));
+ private List<ConstructionMenu.ConstructionMenuListData> GetAndSortRecipes((string, string) args)
+ {
+ var recipes = new List<ConstructionMenu.ConstructionMenuListData>();
- var recipesList = _constructionView.Recipes;
- recipesList.Clear();
+ var (search, category) = args;
+ var isEmptyCategory = string.IsNullOrEmpty(category) || category == ForAllCategoryName;
+ _selectedCategory = isEmptyCategory ? string.Empty : category;
- var recipesGrid = _constructionView.RecipesGrid;
- recipesGrid.RemoveAllChildren();
+ foreach (var recipe in _prototypeManager.EnumeratePrototypes<ConstructionPrototype>())
+ {
+ if (recipe.Hide)
+ continue;
- _constructionView.RecipesGridScrollContainer.Visible = _constructionView.GridViewButtonPressed;
- _constructionView.Recipes.Visible = !_constructionView.GridViewButtonPressed;
+ if (_playerManager.LocalSession == null
+ || _playerManager.LocalEntity == null
+ || _whitelistSystem.IsWhitelistFail(recipe.EntityWhitelist, _playerManager.LocalEntity.Value))
+ continue;
- if (_constructionView.GridViewButtonPressed)
- {
- foreach (var recipe in recipes)
- {
- var itemButton = new TextureButton
- {
- TextureNormal = _spriteSystem.Frame0(recipe.Icon),
- VerticalAlignment = Control.VAlignment.Center,
- Name = recipe.Name,
- ToolTip = recipe.Name,
- Scale = new Vector2(1.35f),
- ToggleMode = true,
- };
- var itemButtonPanelContainer = new PanelContainer
- {
- PanelOverride = new StyleBoxFlat { BackgroundColor = StyleNano.ButtonColorDefault },
- Children = { itemButton },
- };
+ if (!string.IsNullOrEmpty(search) && (recipe.Name is { } name &&
+ !name.Contains(search.Trim(),
+ StringComparison.InvariantCultureIgnoreCase)))
+ continue;
- itemButton.OnToggled += buttonToggledEventArgs =>
- {
- SelectGridButton(itemButton, buttonToggledEventArgs.Pressed);
-
- if (buttonToggledEventArgs.Pressed &&
- _selected != null &&
- _recipeButtons.TryGetValue(_selected.Name, out var oldButton))
- {
- oldButton.Pressed = false;
- SelectGridButton(oldButton, false);
- }
-
- OnGridViewRecipeSelected(this, buttonToggledEventArgs.Pressed ? recipe : null);
- };
-
- recipesGrid.AddChild(itemButtonPanelContainer);
- _recipeButtons[recipe.Name] = itemButton;
- var isCurrentButtonSelected = _selected == recipe;
- itemButton.Pressed = isCurrentButtonSelected;
- SelectGridButton(itemButton, isCurrentButtonSelected);
+ if (!isEmptyCategory)
+ {
+ if ((category != FavoriteCatName || !_favoritedRecipes.Contains(recipe)) &&
+ recipe.Category != category)
+ continue;
}
- }
- else
- {
- foreach (var recipe in recipes)
+
+ if (!_constructionSystem!.TryGetRecipePrototype(recipe.ID, out var targetProtoId))
{
- recipesList.Add(GetItem(recipe, recipesList));
+ 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(TextureButton button, bool select)
+ private void SelectGridButton(BaseButton button, bool select)
{
if (button.Parent is not PanelContainer buttonPanel)
return;
- button.Modulate = select ? Color.Green : Color.White;
+ button.Modulate = select ? Color.Green : Color.Transparent;
var buttonColor = select ? StyleNano.ButtonColorDefault : Color.Transparent;
buttonPanel.PanelOverride = new StyleBoxFlat { BackgroundColor = buttonColor };
}
// hard-coded to show all recipes
var idx = 0;
- categoriesArray[idx++] = _forAllCategoryName;
+ categoriesArray[idx++] = ForAllCategoryName;
// hard-coded to show favorites if it need
if (isFavorites)
{
- categoriesArray[idx++] = _favoriteCatName;
+ categoriesArray[idx++] = FavoriteCatName;
}
var sortedProtoCategories = uniqueCategories.OrderBy(Loc.GetString);
if (!string.IsNullOrEmpty(selectCategory) && selectCategory == categoriesArray[i])
_constructionView.OptionCategories.SelectId(i);
-
}
_constructionView.Categories = categoriesArray;
}
- private void PopulateInfo(ConstructionPrototype prototype)
+ private void PopulateInfo(ConstructionPrototype? prototype)
{
+ if (_constructionSystem is null)
+ return;
+
_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(
- prototype.Name, prototype.Description, _spriteSystem.Frame0(prototype.Icon),
+ prototype.Name!,
+ prototype.Description!,
+ proto,
prototype.Type != ConstructionType.Item,
!_favoritedRecipes.Contains(prototype));
if (_constructionSystem?.GetGuide(prototype) is not { } guide)
return;
-
foreach (var entry in guide.Entries)
{
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)
{
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)
}
}
- 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)
{
if (pressed)
{
- if (_selected == null) return;
+ if (_selected == null)
+ return;
// not bound to a construction system
if (_constructionSystem is null)
}
_placementManager.BeginPlacing(new PlacementInformation
- {
- IsTile = false,
- PlacementOption = _selected.PlacementMode
- }, new ConstructionPlacementHijack(_constructionSystem, _selected));
+ {
+ IsTile = false,
+ PlacementOption = _selected.PlacementMode
+ },
+ new ConstructionPlacementHijack(_constructionSystem, _selected));
UpdateGhostPlacement();
}
var constructSystem = _systemManager.GetEntitySystem<ConstructionSystem>();
_placementManager.BeginPlacing(new PlacementInformation()
- {
- IsTile = false,
- PlacementOption = _selected.PlacementMode,
- }, new ConstructionPlacementHijack(constructSystem, _selected));
+ {
+ IsTile = false,
+ PlacementOption = _selected.PlacementMode,
+ },
+ new ConstructionPlacementHijack(constructSystem, _selected));
_constructionView.BuildButtonPressed = true;
}
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)
{
- if (args.System is ConstructionSystem) SystemBindingChanged(null);
+ if (args.System is ConstructionSystem)
+ SystemBindingChanged(null);
}
private void OnViewFavoriteRecipe()
{
- if (_selected is not ConstructionPrototype recipe)
+ if (_selected is null)
return;
if (!_favoritedRecipes.Remove(_selected))
_favoritedRecipes.Add(_selected);
- if (_selectedCategory == _favoriteCatName)
+ if (_selectedCategory == FavoriteCatName)
{
- if (_favoritedRecipes.Count > 0)
- OnViewPopulateRecipes(_constructionView, (string.Empty, _favoriteCatName));
- else
- OnViewPopulateRecipes(_constructionView, (string.Empty, string.Empty));
+ OnViewPopulateRecipes(_constructionView,
+ _favoritedRecipes.Count > 0 ? (string.Empty, FavoriteCatName) : (string.Empty, string.Empty));
}
PopulateInfo(_selected);
private void BindToSystem(ConstructionSystem system)
{
_constructionSystem = system;
+
+ OnViewPopulateRecipes(_constructionView, (string.Empty, string.Empty));
+
system.ToggleCraftingWindow += SystemOnToggleMenu;
system.FlipConstructionPrototype += SystemFlipConstructionPrototype;
system.CraftingAvailabilityChanged += SystemCraftingAvailabilityChanged;
if (IsAtFront)
{
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
_constructionView.MoveToFront();
else
{
WindowOpen = true;
- _uiManager.GetActiveUIWidget<GameTopMenuBar>().CraftingButton.SetClickPressed(true); // This does not call CraftingButtonToggled
+ _uiManager.GetActiveUIWidget<GameTopMenuBar>()
+ .CraftingButton.SetClickPressed(true); // This does not call CraftingButtonToggled
}
}
- type: stack
id: StackProto
+ name: stack-steel
spawn: A
- type: entity
using Content.Shared.DoAfter;
using JetBrains.Annotations;
using Robust.Server.Containers;
-using Robust.Shared.Prototypes;
using Robust.Shared.Random;
using SharedToolSystem = Content.Shared.Tools.Systems.SharedToolSystem;
[DataField("transform")]
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();
/// <summary>
- /// Ignore requests to change the entity if the entity's current prototype inherits from specified replacement
+ /// Ignore requests to change the entity if the entity's current prototype inherits from specified replacement
/// </summary>
/// <remarks>
- /// When this bool is true and a construction node specifies that the current entity should be replaced with a new entity, if the
+ /// When this bool is true and a construction node specifies that the current entity should be replaced with a new entity, if the
/// current entity has an entity prototype which inherits from the replacement entity prototype, entity replacement will not occur.
- /// E.g., if an entity with the 'AirlockCommand' prototype was to be replaced with a new entity that had the 'Airlock' prototype,
- /// and 'DoNotReplaceInheritingEntities' was true, the entity would not be replaced because 'AirlockCommand' is derived from 'Airlock'
+ /// E.g., if an entity with the 'AirlockCommand' prototype was to be replaced with a new entity that had the 'Airlock' prototype,
+ /// and 'DoNotReplaceInheritingEntities' was true, the entity would not be replaced because 'AirlockCommand' is derived from 'Airlock'
/// This will largely be used for construction graphs which have removeable upgrades, such as hacking protections for airlocks,
/// so that the upgrades can be removed and you can return to the last primary construction step without replacing the entity
/// </remarks>
-using Content.Server.Construction.Components;
-using Content.Shared.Construction;
using Content.Shared.Construction.Components;
using JetBrains.Annotations;
-using Robust.Server.Containers;
+using Robust.Shared.Containers;
-namespace Content.Server.Construction.NodeEntities;
+namespace Content.Shared.Construction.NodeEntities;
/// <summary>
/// Works for both <see cref="ComputerBoardComponent"/> and <see cref="MachineBoardComponent"/>
if (uid == 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)
|| container.ContainedEntities.Count == 0)
if (args.EntityManager.TryGetComponent(board, out MachineBoardComponent? machine))
return machine.Prototype;
- if(args.EntityManager.TryGetComponent(board, out ComputerBoardComponent? computer))
+ if (args.EntityManager.TryGetComponent(board, out ComputerBoardComponent? computer))
return computer.Prototype;
return null;
using Content.Shared.Construction.Conditions;
using Content.Shared.Whitelist;
using Robust.Shared.Prototypes;
-using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
-using Robust.Shared.Utility;
namespace Content.Shared.Construction.Prototypes;
/// <summary>
/// Hide from the construction list
/// </summary>
- [DataField("hide")]
+ [DataField]
public bool Hide = false;
/// <summary>
/// Friendly name displayed in the construction GUI.
/// </summary>
[DataField("name")]
- public string Name = string.Empty;
+ public LocId? SetName;
+
+ public string? Name;
/// <summary>
/// "Useful" description displayed in the construction GUI.
/// </summary>
[DataField("description")]
- public string Description = string.Empty;
+ public LocId? SetDescription;
+
+ public string? Description;
/// <summary>
/// The <see cref="ConstructionGraphPrototype"/> this construction will be using.
/// </summary>
- [DataField("graph", customTypeSerializer: typeof(PrototypeIdSerializer<ConstructionGraphPrototype>), required: true)]
- public string Graph = string.Empty;
+ [DataField(required: true)]
+ public ProtoId<ConstructionGraphPrototype> Graph { get; private set; } = string.Empty;
/// <summary>
/// The target <see cref="ConstructionGraphNode"/> this construction will guide the user to.
/// </summary>
- [DataField("targetNode")]
- public string TargetNode = string.Empty;
+ [DataField(required: true)]
+ public string TargetNode { get; private set; } = default!;
/// <summary>
/// The starting <see cref="ConstructionGraphNode"/> this construction will start at.
/// </summary>
- [DataField("startNode")]
- public string StartNode = string.Empty;
-
- /// <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;
+ [DataField(required: true)]
+ public string StartNode { get; private set; } = default!;
/// <summary>
/// If you can start building or complete steps on impassable terrain.
/// </summary>
- [DataField("canBuildInImpassable")]
+ [DataField]
public bool CanBuildInImpassable { get; private set; }
/// <summary>
/// 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.
/// </summary>
- [DataField("entityWhitelist")]
- public EntityWhitelist? EntityWhitelist = null;
+ [DataField]
+ 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;
[IdDataField]
public string ID { get; private set; } = default!;
- [DataField("placementMode")]
+ [DataField]
public string PlacementMode = "PlaceFree";
/// <summary>
/// Whether this construction can be constructed rotated or not.
/// </summary>
- [DataField("canRotate")]
+ [DataField]
public bool CanRotate = true;
/// <summary>
/// Construction to replace this construction with when the current one is 'flipped'
/// </summary>
- [DataField("mirror", customTypeSerializer: typeof(PrototypeIdSerializer<ConstructionPrototype>))]
- public string? Mirror;
+ [DataField]
+ public ProtoId<ConstructionPrototype>? Mirror { get; private set; }
public IReadOnlyList<IConstructionCondition> Conditions => _conditions;
- public IReadOnlyList<SpriteSpecifier> Layers => _layers ?? new List<SpriteSpecifier> { Icon };
}
public enum ConstructionType
{
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)
{
if (string.IsNullOrEmpty(Name))
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()
{
+ var stepName = Loc.GetString(Name);
return new ConstructionGuideEntry
{
Localization = "construction-presenter-arbitrary-step",
- Arguments = new (string, object)[]{("name", Name)},
+ Arguments = new (string, object)[]{("name", stepName)},
Icon = Icon,
};
}
("componentName", Component))// Terrible.
: Loc.GetString(
"construction-insert-exact-entity",
- ("entityName", Name)));
+ ("entityName", Loc.GetString(Name))));
}
}
}
using Content.Shared.Examine;
using Content.Shared.Stacks;
using Robust.Shared.Prototypes;
-using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Shared.Construction.Steps
{
{
// TODO: Make this use the material system.
// TODO TODO: Make the material system not shit.
- [DataField("material", required:true, customTypeSerializer:typeof(PrototypeIdSerializer<StackPrototype>))]
- public string MaterialPrototypeId { get; private set; } = "Steel";
+ [DataField("material", required:true)]
+ 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)
{
- 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 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()
{
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,
};
}
-using System.Diagnostics;
-using System.Globalization;
using System.Linq;
-using System.Text;
using Content.Shared.Eye.Blinding.Components;
using Content.Shared.Ghost;
using Content.Shared.Interaction;
using Robust.Shared.Prototypes;
-using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
using Robust.Shared.Utility;
namespace Content.Shared.Stacks;
/// </summary>
/// <remarks>This is a localization string ID.</remarks>
[DataField]
- public string Name { get; private set; } = string.Empty;
+ public LocId Name { get; private set; } = string.Empty;
/// <summary>
/// An icon that will be used to represent this stack type.
construction-menu-clear-all = Clear All
construction-menu-eraser-mode = Eraser Mode
construction-menu-craft = Craft
+construction-menu-search = Search
construction-menu-grid-view = Grid View
--- /dev/null
+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
--- /dev/null
+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.
--- /dev/null
+# 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
--- /dev/null
+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
- type: stack
id: Credit
- name: speso
+ name: stack-credit
icon: { sprite: /Textures/Objects/Economy/cash.rsi, state: cash }
spawn: SpaceCash
# Stack
- type: stack
id: Fulton
- name: fulton
+ name: stack-fulton
icon:
sprite: /Textures/Objects/Tools/fulton.rsi
state: extraction_pack
- to: jumpsuit
steps:
- tag: BananaPeel
- name: a banana peel
+ name: construction-graph-tag-banana-peel
icon:
sprite: Objects/Specific/Hydroponics/banana.rsi
state: peel
doAfter: 1
- tag: BananaPeel
- name: a banana peel
+ name: construction-graph-tag-banana-peel
icon:
sprite: Objects/Specific/Hydroponics/banana.rsi
state: peel
doAfter: 1
- tag: BananaPeel
- name: a banana peel
+ name: construction-graph-tag-banana-peel
icon:
sprite: Objects/Specific/Hydroponics/banana.rsi
state: peel
amount: 1
doAfter: 1
- tag: ClownSuit
- name: a clown suit
+ name: construction-graph-tag-clown-suit
icon:
sprite: Clothing/Uniforms/Jumpsuit/clown.rsi
state: icon
- to: shoes
steps:
- tag: BananaPeel
- name: a banana peel
+ name: construction-graph-tag-banana-peel
icon:
sprite: Objects/Specific/Hydroponics/banana.rsi
state: peel
doAfter: 1
- tag: BananaPeel
- name: a banana peel
+ name: construction-graph-tag-banana-peel
icon:
sprite: Objects/Specific/Hydroponics/banana.rsi
state: peel
doAfter: 1
- tag: BananaPeel
- name: a banana peel
+ name: construction-graph-tag-banana-peel
icon:
sprite: Objects/Specific/Hydroponics/banana.rsi
state: peel
amount: 1
doAfter: 1
- tag: ClownShoes
- name: clown shoes
+ name: construction-graph-tag-clown-shoes
icon:
sprite: Clothing/Shoes/Specific/clown.rsi
state: icon
- to: mask
steps:
- tag: BananaPeel
- name: a banana peel
+ name: construction-graph-tag-banana-peel
icon:
sprite: Objects/Specific/Hydroponics/banana.rsi
state: peel
doAfter: 1
- tag: BananaPeel
- name: a banana peel
+ name: construction-graph-tag-banana-peel
icon:
sprite: Objects/Specific/Hydroponics/banana.rsi
state: peel
doAfter: 1
- tag: BananaPeel
- name: a banana peel
+ name: construction-graph-tag-banana-peel
icon:
sprite: Objects/Specific/Hydroponics/banana.rsi
state: peel
amount: 1
doAfter: 1
- tag: ClownMask
- name: a clown mask
+ name: construction-graph-tag-clown-mask
icon:
sprite: Clothing/Mask/clown.rsi
state: icon
amount: 5
doAfter: 1
- tag: SuitEVA
- name: an EVA suit
+ name: construction-graph-tag-eva-suit
icon:
sprite: Clothing/OuterClothing/Suits/eva.rsi
state: icon
doAfter: 1
- tag: HelmetEVA
- name: an EVA helmet
+ name: construction-graph-tag-eva-helmet
icon:
sprite: Clothing/Head/Helmets/eva.rsi
state: icon
doAfter: 1
- tag: CrayonPurple
- name: purple crayon
+ name: construction-graph-tag-purple-crayon
icon:
sprite: Objects/Fun/crayons.rsi
state: purple
doAfter: 1
- tag: CrayonRed
- name: red crayon
+ name: construction-graph-tag-red-crayon
icon:
sprite: Objects/Fun/crayons.rsi
state: red
doAfter: 1
- tag: CrayonYellow
- name: yellow crayon
+ name: construction-graph-tag-yellow-crayon
icon:
sprite: Objects/Fun/crayons.rsi
state: yellow
doAfter: 1
- tag: ClownRecorder
- name: clown recorder
+ name: construction-graph-tag-clown-recorder
icon:
sprite: Objects/Fun/clownrecorder.rsi
state: icon
- to: shoes
steps:
- tag: ToyRubberDuck
- name: a rubber ducky
+ name: construction-graph-tag-rubber-ducky
icon:
sprite: Objects/Fun/ducky.rsi
state: icon
doAfter: 1
- tag: ToyRubberDuck
- name: a rubber ducky
+ name: construction-graph-tag-rubber-ducky
icon:
sprite: Objects/Fun/ducky.rsi
state: icon
- to: glassesSec
steps:
- tag: Sunglasses
- name: sun glasses
+ name: construction-graph-tag-sun-glasses
icon:
sprite: Clothing/Eyes/Glasses/sunglasses.rsi
state: icon
doAfter: 5
- tag: HudSecurity
- name: security hud
+ name: construction-graph-tag-security-hud
icon:
sprite: Clothing/Eyes/Hud/sec.rsi
state: icon
- to: helmet
steps:
- tag: SecurityHelmet
- name: security helmet
+ name: construction-graph-tag-security-helmet
icon:
sprite: Clothing/Head/Helmets/security.rsi
state: icon
- material: Glass
amount: 1
- tag: LightBulb
- name: light bulb
+ name: construction-graph-tag-light-bulb
icon:
sprite: Objects/Power/light_bulb.rsi
state: normal
doAfter: 5
- node: helmet
- entity: ClothingHeadHelmetJusticeEmpty
\ No newline at end of file
+ entity: ClothingHeadHelmetJusticeEmpty
- to: shoes
steps:
- tag: PlushieLizard #Weh!
- name: lizard plushie
+ name: construction-graph-tag-lizard-plushie
icon:
sprite: Objects/Fun/toys.rsi
state: plushie_lizard
doAfter: 1
- tag: PlushieLizard
- name: lizard plushie
+ name: construction-graph-tag-lizard-plushie
icon:
sprite: Objects/Fun/toys.rsi
state: plushie_lizard
- to: medsecHud
steps:
- tag: HudMedical
- name: medical hud
+ name: construction-graph-tag-medical-hud
icon:
sprite: Clothing/Eyes/Hud/med.rsi
state: icon
doAfter: 5
- tag: HudSecurity
- name: security hud
+ name: construction-graph-tag-security-hud
icon:
sprite: Clothing/Eyes/Hud/sec.rsi
state: icon
amount: 5
doAfter: 5
- tag: Radio
- name: radio
+ name: construction-graph-tag-radio
icon:
sprite: Objects/Devices/communication.rsi
state: walkietalkie
amount: 5
doAfter: 1
- tag: SuitEVA
- name: an EVA suit
+ name: construction-graph-tag-eva-suit
icon:
sprite: Clothing/OuterClothing/Suits/eva.rsi
state: icon
doAfter: 1
- tag: HelmetEVA
- name: an EVA helmet
+ name: construction-graph-tag-eva-helmet
icon:
sprite: Clothing/Head/Helmets/eva.rsi
state: icon
doAfter: 1
- tag: CrayonRed
- name: red crayon
+ name: construction-graph-tag-red-crayon
icon:
sprite: Objects/Fun/crayons.rsi
state: red
doAfter: 1
- tag: CrayonBlack
- name: black crayon
+ name: construction-graph-tag-black-crayon
icon:
sprite: Objects/Fun/crayons.rsi
state: black
doAfter: 1
- tag: MimeBelt
- name: suspenders
+ name: construction-graph-tag-suspenders
icon:
sprite: Clothing/Belt/suspenders_red.rsi
state: icon
- to: bananiumHorn
steps:
- tag: Pipe
- name: pipe
+ name: construction-graph-tag-pipe
icon:
sprite: Structures/Piping/Atmospherics/pipe.rsi
state: pipeStraight
amount: 4
doAfter: 1
- tag: BikeHorn
- name: bike horn
+ name: construction-graph-tag-clown-bike-horn
icon:
sprite: Objects/Fun/bikehorn.rsi
state: icon
- to: lit
steps:
- tag: Torch
+ name: construction-graph-tag-torch
doAfter: 2
- node: lit
- entity: PumpkinLantern
\ No newline at end of file
+ entity: PumpkinLantern
icon:
sprite: Mobs/Species/Human/parts.rsi
state: "head_m"
- name: human head
+ name: construction-graph-tag-human-head
doAfter: 1
- node: chairCursed
steps:
- component: ComputerBoard
store: board
- name: any computer circuit board
+ name: construction-graph-component-any-computer-circuit-board
icon:
sprite: "Objects/Misc/module.rsi"
state: "id_mod"
store: part-container
- component: Flash
- name: flash
+ name: construction-graph-component-flash
store: part-container
icon:
sprite: Objects/Weapons/Melee/flash.rsi
state: flash
- component: Flash
- name: second flash
+ name: construction-graph-component-second-flash
store: part-container
icon:
sprite: Objects/Weapons/Melee/flash.rsi
entity: BorgChassisSelectable
- node: derelictcyborg
- entity: BorgChassisDerelict
\ No newline at end of file
+ entity: BorgChassisDerelict
data: 4
- tag: HamtrCentralControlModule
- name: HAMTR central control module
+ name: construction-graph-tag-hamtr-central-control-module
icon:
sprite: "Objects/Misc/module.rsi"
state: "mainboard"
data: 6
- tag: HamtrPeripheralsControlModule
- name: HAMTR peripherals control module
+ name: construction-graph-tag-hamtr-peripherals-control-module
icon:
sprite: "Objects/Misc/module.rsi"
state: id_mod
#currently mechs don't support upgrading. add them back in once that's squared away.
- component: PowerCell
- name: power cell
+ name: construction-graph-component-power-cell
store: battery-container
icon:
sprite: Objects/Power/power_cells.rsi
data: 1
- tag: HonkerCentralControlModule
- name: H.O.N.K. central control module
+ name: construction-graph-tag-honk-central-control-module
icon:
sprite: "Objects/Misc/module.rsi"
state: "mainboard"
data: 3
- tag: HonkerPeripheralsControlModule
- name: H.O.N.K. peripherals control module
+ name: construction-graph-tag-honk-peripherals-control-module
icon:
sprite: "Objects/Misc/module.rsi"
state: id_mod
data: 5
- tag: HonkerTargetingControlModule
- name: H.O.N.K. weapon control and targeting module
+ name: construction-graph-tag-honk-weapon-control-and-targeting-module
icon:
sprite: "Objects/Misc/module.rsi"
state: id_mod
#currently mechs don't support upgrading. add them back in once that's squared away.
- component: PowerCell
- name: power cell
+ name: construction-graph-component-power-cell
store: battery-container
icon:
sprite: Objects/Power/power_cells.rsi
icon:
sprite: "Clothing/Mask/clown.rsi"
state: "icon"
- name: "a clown's mask"
+ name: construction-graph-tag-clown-mask
doAfter: 1
completed:
- !type:VisualizerDataInt
icon:
sprite: "Clothing/Shoes/Specific/clown.rsi"
state: "icon"
- name: "a clown's shoes"
+ name: construction-graph-tag-clown-shoes
doAfter: 1
completed:
- !type:VisualizerDataInt
data: 4
- tag: RipleyCentralControlModule
- name: ripley central control module
+ name: construction-graph-tag-ripley-central-control-module
icon:
sprite: "Objects/Misc/module.rsi"
state: "mainboard"
data: 6
- tag: RipleyPeripheralsControlModule
- name: ripley peripherals control module
+ name: construction-graph-tag-ripley-peripherals-control-module
icon:
sprite: "Objects/Misc/module.rsi"
state: id_mod
#currently mechs don't support upgrading. add them back in once that's squared away.
- component: PowerCell
- name: power cell
+ name: construction-graph-component-power-cell
store: battery-container
icon:
sprite: Objects/Power/power_cells.rsi
- node: ripley
actions:
- !type:BuildMech
- mechPrototype: MechRipley
\ No newline at end of file
+ mechPrototype: MechRipley
- to: vim
steps:
- tag: VoiceTrigger
- name: a voice trigger
+ name: construction-graph-tag-voice-trigger
icon:
sprite: "Objects/Devices/voice.rsi"
state: "voice"
key: "enum.MechAssemblyVisuals.State"
data: 1
- component: PowerCell
- name: a power cell
+ name: construction-graph-component-power-cell
store: battery-container
icon:
sprite: Objects/Power/power_cells.rsi
steps:
- component: DoorElectronics
store: board
- name: "door electronics circuit board"
+ name: construction-graph-component-door-electronics-circuit-board
icon:
sprite: "Objects/Misc/module.rsi"
state: "door_electronics"
steps:
- tag: DoorElectronics
store: board
- name: "door electronics circuit board"
+ name: construction-graph-tag-door-electronics-circuit-board
icon:
sprite: "Objects/Misc/module.rsi"
state: "door_electronics"
steps:
- tag: DoorElectronics
store: board
- name: door electronics
+ name: construction-graph-tag-door-electronics-circuit-board
icon:
sprite: "Objects/Misc/module.rsi"
state: "door_electronics"
icon:
sprite: Structures/conveyor.rsi
state: conveyor_loose
- name: conveyor belt assembly
+ name: construction-graph-tag-conveyor-belt-assembly
doAfter: 2
- node: item
entity: ConveyorBeltAssembly
steps:
- tag: FirelockElectronics
store: board
- name: firelock electronics
+ name: construction-graph-tag-firelock-electronics-circuit-board
icon:
sprite: "Objects/Misc/module.rsi"
state: "mainboard"
- !type:EntityAnchored
steps:
- tag: SignalTrigger
- name: a signal trigger
+ name: construction-graph-tag-signal-trigger
icon:
sprite: Objects/Devices/signaltrigger.rsi
state: signaltrigger
- to: electronics
steps:
- component: PowerCell
- name: power cell
+ name: construction-graph-component-power-cell
store: battery-container
icon:
sprite: Objects/Power/power_cells.rsi
anchored: true
steps:
- component: DoorElectronics
- name: door electronics
+ name: construction-graph-component-door-electronics-circuit-board
icon:
sprite: "Objects/Misc/module.rsi"
state: "door_electronics"
steps:
- component: DoorElectronics
store: board
- name: "door electronics circuit board"
+ name: construction-graph-component-door-electronics-circuit-board
icon:
sprite: "Objects/Misc/module.rsi"
state: "door_electronics"
steps:
- component: DoorElectronics
store: board
- name: "door electronics circuit board"
+ name: construction-graph-component-door-electronics-circuit-board
icon:
sprite: "Objects/Misc/module.rsi"
state: "door_electronics"
steps:
- tag: DoorElectronics
store: board
- name: "door electronics circuit board"
+ name: construction-graph-tag-door-electronics-circuit-board
icon:
sprite: "Objects/Misc/module.rsi"
state: "door_electronics"
steps:
- tag: DoorElectronics
store: board
- name: "door electronics circuit board"
+ name: construction-graph-tag-door-electronics-circuit-board
icon:
sprite: "Objects/Misc/module.rsi"
state: "door_electronics"
steps:
- component: DoorElectronics
store: board
- name: "door electronics circuit board"
+ name: construction-graph-component-door-electronics-circuit-board
icon:
sprite: "Objects/Misc/module.rsi"
state: "door_electronics"
steps:
- tag: DoorElectronics
store: board
- name: "door electronics circuit board"
+ name: construction-graph-tag-door-electronics-circuit-board
icon:
sprite: "Objects/Misc/module.rsi"
state: "door_electronics"
steps:
- tag: DoorElectronics
store: board
- name: "door electronics circuit board"
+ name: construction-graph-tag-door-electronics-circuit-board
icon:
sprite: "Objects/Misc/module.rsi"
state: "door_electronics"
steps:
- tag: DoorElectronics
store: board
- name: "door electronics circuit board"
+ name: construction-graph-tag-door-electronics-circuit-board
icon:
sprite: "Objects/Misc/module.rsi"
state: "door_electronics"
icon:
sprite: Objects/Tools/multitool.rsi
state: icon
- name: a multitool
+ name: construction-graph-tag-multitool
- material: Cable
amount: 2
doAfter: 1
- to: memory_cell
steps:
+ - tag: CapacitorStockPart
+ icon:
+ sprite: Objects/Misc/stock_parts.rsi
+ state: capacitor
+ name: construction-graph-tag-capacitor
- material: Capacitor
amount: 1
- material: Cable
- to: apc
steps:
- component: ApcElectronics
- name: "APC electronics"
+ name: construction-graph-component-apc-electronics
doAfter: 2
- to: start
completed:
steps:
- tag: AirAlarmElectronics
store: board
- name: "air alarm electronics"
+ name: construction-graph-tag-air-alarm-electronics
icon:
sprite: "Objects/Misc/module.rsi"
state: "door_electronics" # /tg/ uses the same sprite, right?
steps:
- tag: FireAlarmElectronics
store: board
- name: "fire alarm electronics"
+ name: construction-graph-tag-fire-alarm-electronics
icon:
sprite: "Objects/Misc/module.rsi"
state: "door_electronics" # /tg/ uses the same sprite, right?
- to: frame_mailing
steps:
- tag: MailingUnitElectronics
- name: mailing unit electronics
+ name: construction-graph-tag-mailing-unit-electronics
icon:
sprite: "Objects/Misc/module.rsi"
state: "net_wired"
steps:
- tag: IntercomElectronics
store: board
- name: "intercom electronics"
+ name: construction-graph-tag-intercom-electronics
icon:
sprite: "Objects/Misc/module.rsi"
state: "id_mod"
amount: 1
doAfter: 1
- tag: CrystalCyan
- name: cyan crystal shard
+ name: construction-graph-tag-cyan-crystal-shard
icon:
sprite: Objects/Materials/Shards/crystal.rsi
state: shard1
amount: 1
doAfter: 1
- tag: CrystalBlue
- name: blue crystal shard
+ name: construction-graph-tag-blue-crystal-shard
icon:
sprite: Objects/Materials/Shards/crystal.rsi
state: shard1
amount: 1
doAfter: 1
- tag: CrystalYellow
- name: yellow crystal shard
+ name: construction-graph-tag-yellow-crystal-shard
icon:
sprite: Objects/Materials/Shards/crystal.rsi
state: shard1
amount: 1
doAfter: 1
- tag: CrystalPink
- name: pink crystal shard
+ name: construction-graph-tag-pink-crystal-shard
icon:
sprite: Objects/Materials/Shards/crystal.rsi
state: shard1
amount: 1
doAfter: 1
- tag: CrystalOrange
- name: orange crystal shard
+ name: construction-graph-tag-orange-crystal-shard
icon:
sprite: Objects/Materials/Shards/crystal.rsi
state: shard1
amount: 1
doAfter: 1
- tag: CrystalBlack
- name: black crystal shard
+ name: construction-graph-tag-black-crystal-shard
icon:
sprite: Objects/Materials/Shards/crystal.rsi
state: shard1
amount: 1
doAfter: 1
- tag: CrystalRed
- name: red crystal shard
+ name: construction-graph-tag-red-crystal-shard
icon:
sprite: Objects/Materials/Shards/crystal.rsi
state: shard1
amount: 1
doAfter: 1
- tag: CrystalGreen
- name: green crystal shard
+ name: construction-graph-tag-green-crystal-shard
icon:
sprite: Objects/Materials/Shards/crystal.rsi
state: shard1
amount: 1
doAfter: 1
- tag: CrystalCyan
- name: cyan crystal shard
+ name: construction-graph-tag-cyan-crystal-shard
icon:
sprite: Objects/Materials/Shards/crystal.rsi
state: shard1
amount: 1
doAfter: 1
- tag: CrystalBlue
- name: blue crystal shard
+ name: construction-graph-tag-blue-crystal-shard
icon:
sprite: Objects/Materials/Shards/crystal.rsi
state: shard1
amount: 1
doAfter: 1
- tag: CrystalYellow
- name: yellow crystal shard
+ name: construction-graph-tag-yellow-crystal-shard
icon:
sprite: Objects/Materials/Shards/crystal.rsi
state: shard1
amount: 1
doAfter: 1
- tag: CrystalPink
- name: pink crystal shard
+ name: construction-graph-tag-pink-crystal-shard
icon:
sprite: Objects/Materials/Shards/crystal.rsi
state: shard1
amount: 1
doAfter: 1
- tag: CrystalOrange
- name: orange crystal shard
+ name: construction-graph-tag-orange-crystal-shard
icon:
sprite: Objects/Materials/Shards/crystal.rsi
state: shard1
amount: 1
doAfter: 1
- tag: CrystalBlack
- name: black crystal shard
+ name: construction-graph-tag-black-crystal-shard
icon:
sprite: Objects/Materials/Shards/crystal.rsi
state: shard1
amount: 1
doAfter: 1
- tag: CrystalRed
- name: red crystal shard
+ name: construction-graph-tag-red-crystal-shard
icon:
sprite: Objects/Materials/Shards/crystal.rsi
state: shard1
amount: 1
doAfter: 1
- tag: CrystalGreen
- name: green crystal shard
+ name: construction-graph-tag-green-crystal-shard
icon:
sprite: Objects/Materials/Shards/crystal.rsi
state: shard1
- to: solarassembly
steps:
- tag: SolarAssemblyFlatpack
- name: solar assembly parts
+ name: construction-graph-tag-solar-assembly-parts
icon:
sprite: Objects/Devices/flatpack.rsi
state: solar-assembly-part
- !type:EntityAnchored
steps:
- tag: SolarTrackerElectronics
- name: solar tracker electronics
+ name: construction-graph-tag-solar-tracker-electronics
icon:
sprite: Objects/Misc/module.rsi
state: engineering
steps:
- tag: StationMapElectronics
store: board
- name: "station map electronics"
+ name: construction-graph-tag-station-map-electronics
icon:
sprite: "Objects/Misc/module.rsi"
state: "door_electronics" # /tg/ uses the same sprite, right?
steps:
- tag: TimerSignalElectronics
store: board
- name: "signal timer electronics"
+ name: construction-graph-tag-signal-timer-electronics
icon:
sprite: "Objects/Misc/module.rsi"
state: "charger_APC"
steps:
- tag: TimerScreenElectronics
store: board
- name: "screen timer electronics"
+ name: construction-graph-tag-screen-timer-electronics
icon:
sprite: "Objects/Misc/module.rsi"
state: "charger_APC"
steps:
- tag: TimerBrigElectronics
store: board
- name: "brig timer electronics"
+ name: construction-graph-tag-brig-timer-electronics
icon:
sprite: "Objects/Misc/module.rsi"
state: "charger_APC"
steps:
- tag: WallmountGeneratorElectronics
store: board
- name: "wallmount generator circuit board"
+ name: construction-graph-tag-wallmount-generator-circuit-board
icon:
sprite: "Objects/Misc/module.rsi"
state: "charger_APC"
steps:
- tag: WallmountGeneratorAPUElectronics
store: board
- name: "wallmount APU circuit board"
+ name: construction-graph-tag-wallmount-apu-circuit-board
icon:
sprite: "Objects/Misc/module.rsi"
state: "charger_APC"
steps:
- tag: WallmountSubstationElectronics
store: board
- name: "wallmount substation circuit board"
+ name: construction-graph-tag-wallmount-substation-circuit-board
icon:
sprite: "Objects/Misc/module.rsi"
state: "charger_APC"
- PowerCell
- PowerCellSmall
store: powercell
- name: a powercell
+ name: construction-graph-tag-power-cell
icon:
sprite: "Objects/Power/power_cells.rsi"
state: "medium"
- tool: Screwing
doAfter: 2
- tag: SurveillanceCameraMonitorCircuitboard
- name: surveillance camera monitor board
+ name: construction-graph-tag-surveillance-camera-monitor-board
icon:
sprite: Objects/Misc/module.rsi
state: cpuboard
- tool: Screwing
doAfter: 2
- tag: ComputerTelevisionCircuitboard
- name: television board
+ name: construction-graph-tag-television-board
icon:
sprite: Objects/Misc/module.rsi
state: cpuboard
- to: icon
steps:
- tag: GlassShard
- name: a glass shard
+ name: construction-graph-tag-glass-shard
icon:
sprite: Objects/Materials/Shards/shard.rsi
state: shard1
doAfter: 1
- tag: BrimFlatcapGrey
- name: a grey flatcap
+ name: construction-graph-tag-grey-flatcap
icon:
sprite: Clothing/Head/Hats/greyflatcap.rsi
state: icon
- to: icon
steps:
- tag: GlassShard
- name: a glass shard
+ name: construction-graph-tag-glass-shard
icon:
sprite: Objects/Materials/Shards/shard.rsi
state: shard1
doAfter: 1
- tag: BrimFlatcapBrown
- name: a brown flatcap
+ name: construction-graph-tag-brown-flatcap
icon:
sprite: Clothing/Head/Hats/brownflatcap.rsi
state: icon
sprite: Objects/Misc/cablecuffs.rsi
state: cuff
color: red
- name: cuffs
+ name: construction-graph-tag-cuffs
- material: Steel
amount: 6
doAfter: 2
amount: 1
doAfter: 0.5
- tag: GlassShard
- name: glass shard
+ name: construction-graph-tag-glass-shard
icon:
sprite: Objects/Materials/Shards/shard.rsi
state: shard1
amount: 1
doAfter: 0.5
- tag: PlasmaGlassShard
- name: plasma glass shard
+ name: construction-graph-tag-plasma-glass-shard
icon:
sprite: Objects/Materials/Shards/shard.rsi
state: shard1
amount: 1
doAfter: 0.5
- tag: UraniumGlassShard
- name: uranium glass shard
+ name: construction-graph-tag-uranium-glass-shard
icon:
sprite: Objects/Materials/Shards/shard.rsi
state: shard1
steps:
- component: PayloadTrigger
store: payloadTrigger
- name: trigger
+ name: construction-graph-component-payload-trigger
doAfter: 0.5
- to: caseWithPayload
steps:
- tag: Payload
store: payload
- name: payload
+ name: construction-graph-tag-payload
doAfter: 0.5
- node: caseWithTrigger
steps:
- tag: Payload
store: payload
- name: payload
+ name: construction-graph-tag-payload
doAfter: 0.5
- node: caseWithPayload
steps:
- component: PayloadTrigger
store: payloadTrigger
- name: trigger
+ name: construction-graph-component-payload-trigger
doAfter: 0.5
- node: grenade
icon:
sprite: Objects/Misc/proximity_sensor.rsi
state: icon
- name: proximity sensor
+ name: construction-graph-tag-proximity-sensor
- to: start
completed:
- !type:SpawnPrototype
steps:
- tag: Payload
store: payload
- name: payload
+ name: construction-graph-tag-payload
doAfter: 0.5
- node: mine
impact: High
steps:
- tag: GlassShard
- name: glass shard
+ name: construction-graph-tag-glass-shard
icon:
sprite: Objects/Materials/Shards/shard.rsi
state: shard1
impact: High
steps:
- tag: ReinforcedGlassShard
- name: reinforced glass shard
+ name: construction-graph-tag-reinforced-glass-shard
icon:
sprite: Objects/Materials/Shards/shard.rsi
state: shard1
impact: High
steps:
- tag: PlasmaGlassShard
- name: plasma glass shard
+ name: construction-graph-tag-plasma-glass-shard
icon:
sprite: Objects/Materials/Shards/shard.rsi
state: shard1
impact: High
steps:
- tag: UraniumGlassShard
- name: uranium glass shard
+ name: construction-graph-tag-uranium-glass-shard
icon:
sprite: Objects/Materials/Shards/shard.rsi
state: shard1
amount: 3
doAfter: 1
- tag: GlassShard
- name: glass shard
+ name: construction-graph-tag-glass-shard
icon:
sprite: Objects/Materials/Shards/shard.rsi
state: shard1
amount: 3
doAfter: 1
- tag: ReinforcedGlassShard
- name: reinforced glass shard
+ name: construction-graph-tag-reinforced-glass-shard
icon:
sprite: Objects/Materials/Shards/shard.rsi
state: shard1
amount: 3
doAfter: 1
- tag: PlasmaGlassShard
- name: plasma glass shard
+ name: construction-graph-tag-plasma-glass-shard
icon:
sprite: Objects/Materials/Shards/shard.rsi
state: shard1
amount: 3
doAfter: 1
- tag: UraniumGlassShard
- name: uranium glass shard
+ name: construction-graph-tag-uranium-glass-shard
icon:
sprite: Objects/Materials/Shards/shard.rsi
state: shard1
- to: upgraded
steps:
- tag: WeaponPistolCHIMPUpgradeKit
+ name: construction-graph-tag-weapon-pistol-chimp-upgrade-kit
doAfter: 2
- node: upgraded
- entity: WeaponPistolCHIMPUpgraded
\ No newline at end of file
+ entity: WeaponPistolCHIMPUpgraded
- type: construction
- name: clown hardsuit
id: ClownHardsuit
graph: ClownHardsuit
startNode: start
targetNode: clownHardsuit
category: construction-category-clothing
- description: A modified hardsuit fit for a clown.
- icon: { sprite: Clothing/OuterClothing/Hardsuits/clown.rsi, state: icon }
objectType: Item
- type: construction
- name: mime hardsuit
id: MimeHardsuit
graph: MimeHardsuit
startNode: start
targetNode: mimeHardsuit
category: construction-category-clothing
- description: A modified hardsuit fit for a mime.
- icon: { sprite: Clothing/OuterClothing/Hardsuits/mime.rsi, state: icon }
objectType: Item
- type: construction
- name: bone armor
id: BoneArmor
graph: BoneArmor
startNode: start
targetNode: armor
category: construction-category-clothing
- description: Armor made of bones.
- icon: { sprite: Clothing/OuterClothing/Armor/bone_armor.rsi, state: icon }
objectType: Item
- type: construction
- name: bone helmet
id: BoneHelmet
graph: BoneHelmet
startNode: start
targetNode: helmet
category: construction-category-clothing
- description: Helmet made of bones.
- icon: { sprite: Clothing/Head/Helmets/bone_helmet.rsi, state: icon }
objectType: Item
- type: construction
- name: banana clown mask
id: BananaClownMask
graph: BananaClownMask
startNode: start
targetNode: mask
category: construction-category-clothing
- description: A clown mask upgraded with banana peels.
- icon: { sprite: Clothing/Mask/clown_banana.rsi, state: icon }
objectType: Item
- type: construction
- name: banana clown suit
id: BananaClownJumpsuit
graph: BananaClownJumpsuit
startNode: start
targetNode: jumpsuit
category: construction-category-clothing
- description: A clown suit upgraded with banana peels.
- icon: { sprite: Clothing/Uniforms/Jumpsuit/clown_banana.rsi, state: icon }
objectType: Item
- type: construction
- name: banana clown shoes
id: BananaClownShoes
graph: BananaClownShoes
startNode: start
targetNode: shoes
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
- type: construction
- name: medsec hud
id: ClothingEyesHudMedSec
graph: HudMedSec
startNode: start
targetNode: medsecHud
category: construction-category-clothing
- description: Two huds joined by arms
- icon: { sprite: Clothing/Eyes/Hud/medsec.rsi, state: icon }
objectType: Item
- type: construction
- name: ducky slippers
id: ClothingShoeSlippersDuck
graph: ClothingShoeSlippersDuck
startNode: start
targetNode: shoes
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
- type: construction
- name: lizard plushie slippers
id: ClothingShoeSlippersLizard
graph: ClothingShoeSlippersLizard
startNode: start
targetNode: shoes
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
- type: construction
- name: security glasses
id: ClothingEyesGlassesSecurity
graph: GlassesSecHUD
startNode: start
targetNode: glassesSec
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
- type: construction
- name: quiver
id: ClothingBeltQuiver
graph: Quiver
startNode: start
targetNode: Quiver
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
- type: construction
- name: justice helm
id: ClothingHeadHelmetJustice
graph: HelmetJustice
startNode: start
targetNode: helmet
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
\ No newline at end of file
+ objectType: Item
- type: construction
- name: bananium horn
id: HornBananium
graph: BananiumHorn
startNode: start
targetNode: bananiumHorn
category: construction-category-weapons
- description: An air horn made from bananium.
- icon: { sprite: Objects/Fun/bananiumhorn.rsi, state: icon }
objectType: Item
#chairs
- type: construction
- name: chair
id: Chair
graph: Seat
startNode: start
targetNode: chair
category: construction-category-furniture
- description: You sit in this. Either by will or force.
- icon:
- sprite: Structures/Furniture/chairs.rsi
- state: chair
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: stool
id: Stool
graph: Seat
startNode: start
targetNode: stool
category: construction-category-furniture
- description: You sit in this. Either by will or force.
- icon:
- sprite: Structures/Furniture/chairs.rsi
- state: stool
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: bar stool
id: StoolBar
graph: Seat
startNode: start
targetNode: stoolBar
category: construction-category-furniture
- description: You sit in this. Either by will or force.
- icon:
- sprite: Structures/Furniture/chairs.rsi
- state: bar
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: brass chair
id: ChairBrass
graph: Seat
startNode: start
targetNode: chairBrass
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
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: office chair
id: ChairOfficeLight
graph: Seat
startNode: start
targetNode: chairOffice
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
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: dark office chair
id: ChairOfficeDark
graph: Seat
startNode: start
targetNode: chairOfficeDark
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
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: comfy chair
id: ChairComfy
graph: Seat
startNode: start
targetNode: chairComfy
category: construction-category-furniture
- description: It looks comfy.
- icon:
- sprite: Structures/Furniture/chairs.rsi
- state: comfy
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: pilots chair
id: chairPilotSeat
graph: Seat
startNode: start
targetNode: chairPilotSeat
category: construction-category-furniture
- description: Fit for a captain.
- icon:
- sprite: Structures/Furniture/chairs.rsi
- state: shuttle
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: wooden chair
id: ChairWood
graph: Seat
startNode: start
targetNode: chairWood
category: construction-category-furniture
- description: You sit in this. Either by will or force.
- icon:
- sprite: Structures/Furniture/chairs.rsi
- state: wooden
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: meat chair
id: ChairMeat
graph: Seat
startNode: start
targetNode: chairMeat
category: construction-category-furniture
- description: Uncomfortably sweaty.
- icon:
- sprite: Structures/Furniture/chairs.rsi
- state: meat
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: ritual chair
id: ChairRitual
graph: RitualSeat
startNode: start
targetNode: chairRitual
category: construction-category-furniture
- description: A strangely carved chair.
- icon:
- sprite: Structures/Furniture/chairs.rsi
- state: ritual
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: folding chair
id: ChairFolding
graph: Seat
startNode: start
targetNode: chairFolding
category: construction-category-furniture
- description: An easy to carry chair.
- icon:
- sprite: Structures/Furniture/folding_chair.rsi
- state: folding
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: steel bench
id: ChairSteelBench
graph: Seat
startNode: start
targetNode: chairSteelBench
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
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: wooden bench
id: ChairWoodBench
graph: Seat
startNode: start
targetNode: chairWoodBench
category: construction-category-furniture
- description: Did you get a splinter? Well, at least it’s eco friendly.
- icon:
- sprite: Structures/Furniture/chairs.rsi
- state: wooden-bench
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: comfortable red bench
id: RedComfBench
graph: Seat
startNode: start
targetNode: redComfBench
category: construction-category-furniture
- description: A bench with an extremely comfortable backrest.
- icon:
- sprite: Structures/Furniture/Bench/comf_bench.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: comfortable blue bench
id: BlueComfBench
graph: Seat
startNode: start
targetNode: blueComfBench
category: construction-category-furniture
- description: A bench with an extremely comfortable backrest.
- icon:
- sprite: Structures/Furniture/Bench/comf_bench.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
#tables
- type: construction
- name: steel table
id: Table
graph: Table
startNode: start
targetNode: Table
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
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: reinforced steel table
id: TableReinforced
graph: Table
startNode: start
targetNode: TableReinforced
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
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: glass table
id: TableGlass
graph: Table
startNode: start
targetNode: TableGlass
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
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: reinforced glass table
id: TableReinforcedGlass
graph: Table
startNode: start
targetNode: TableReinforcedGlass
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
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: plasma glass table
id: TablePlasmaGlass
graph: Table
startNode: start
targetNode: TablePlasmaGlass
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
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: brass table
id: TableBrass
graph: Table
startNode: start
targetNode: TableBrass
category: construction-category-furniture
- description: A shiny, corrosion resistant brass table. Steampunk!
- icon:
- sprite: Structures/Furniture/Tables/brass.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: wood table
id: TableWood
graph: Table
startNode: start
targetNode: TableWood
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
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: poker table
id: TableCarpet
graph: Table
startNode: start
targetNode: TableCarpet
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
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: fancy black table
id: TableFancyBlack
graph: Table
startNode: start
targetNode: TableFancyBlack
category: construction-category-furniture
- description: A table covered with a beautiful cloth.
- icon:
- sprite: Structures/Furniture/Tables/Fancy/black.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: fancy blue table
id: TableFancyBlue
graph: Table
startNode: start
targetNode: TableFancyBlue
category: construction-category-furniture
- description: A table covered with a beautiful cloth.
- icon:
- sprite: Structures/Furniture/Tables/Fancy/blue.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: fancy cyan table
id: TableFancyCyan
graph: Table
startNode: start
targetNode: TableFancyCyan
category: construction-category-furniture
- description: A table covered with a beautiful cloth.
- icon:
- sprite: Structures/Furniture/Tables/Fancy/cyan.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: fancy green table
id: TableFancyGreen
graph: Table
startNode: start
targetNode: TableFancyGreen
category: construction-category-furniture
- description: A table covered with a beautiful cloth.
- icon:
- sprite: Structures/Furniture/Tables/Fancy/green.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: fancy orange table
id: TableFancyOrange
graph: Table
startNode: start
targetNode: TableFancyOrange
category: construction-category-furniture
- description: A table covered with a beautiful cloth.
- icon:
- sprite: Structures/Furniture/Tables/Fancy/orange.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: fancy purple table
id: TableFancyPurple
graph: Table
startNode: start
targetNode: TableFancyPurple
category: construction-category-furniture
- description: A table covered with a beautiful cloth.
- icon:
- sprite: Structures/Furniture/Tables/Fancy/purple.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: fancy pink table
id: TableFancyPink
graph: Table
startNode: start
targetNode: TableFancyPink
category: construction-category-furniture
- description: A table covered with a beautiful cloth.
- icon:
- sprite: Structures/Furniture/Tables/Fancy/pink.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: fancy red table
id: TableFancyRed
graph: Table
startNode: start
targetNode: TableFancyRed
category: construction-category-furniture
- description: A table covered with a beautiful cloth.
- icon:
- sprite: Structures/Furniture/Tables/Fancy/red.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: fancy white table
id: TableFancyWhite
graph: Table
startNode: start
targetNode: TableFancyWhite
category: construction-category-furniture
- description: A table covered with a beautiful cloth.
- icon:
- sprite: Structures/Furniture/Tables/Fancy/white.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: metal counter
id: TableCounterMetal
graph: Table
startNode: start
targetNode: CounterMetal
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
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: wood counter
id: TableCounterWood
graph: Table
startNode: start
targetNode: CounterWood
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
placementMode: SnapgridCenter
canBuildInImpassable: false
#bathroom
- type: construction
- name: toilet
id: ToiletEmpty
graph: Toilet
startNode: start
targetNode: toilet
category: construction-category-furniture
- description: A human excrement flushing apparatus.
- icon:
- sprite: Structures/Furniture/toilet.rsi
- state: disposal
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
#bedroom
- type: construction
id: Bed
- name: bed
- description: This is used to lie in, sleep in or strap on. Resting here provides extremely slow healing.
graph: bed
startNode: start
targetNode: bed
category: construction-category-furniture
- icon:
- sprite: Structures/Furniture/furniture.rsi
- state: bed
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- type: construction
id: MedicalBed
- name: medical bed
- description: A hospital bed for patients to recover in. Resting here provides fairly slow healing.
graph: bed
startNode: start
targetNode: medicalbed
category: construction-category-furniture
- icon:
- sprite: Structures/Furniture/furniture.rsi
- state: bed-MED
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- type: construction
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
startNode: start
targetNode: dogbed
category: construction-category-furniture
- icon:
- sprite: Structures/Furniture/furniture.rsi
- state: dogbed
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- type: construction
id: Dresser
- name: dresser
- description: Wooden dresser, can store things inside itself.
graph: Dresser
startNode: start
targetNode: dresser
category: construction-category-furniture
- icon:
- sprite: Structures/Furniture/furniture.rsi
- state: dresser
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
#racks
- type: construction
id: Rack
- name: rack
- description: A rack for storing things on.
graph: Rack
startNode: start
targetNode: Rack
category: construction-category-furniture
- icon:
- sprite: Structures/Furniture/furniture.rsi
- state: rack
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
#misc
- type: construction
id: MeatSpike
- name: meat spike
- description: A spike found in kitchens butchering animals.
graph: MeatSpike
startNode: start
targetNode: MeatSpike
category: construction-category-furniture
- icon:
- sprite: Structures/meat_spike.rsi
- state: spike
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- type: construction
id: Curtains
- name: curtains
- description: Contains less than 1% mercury.
graph: Curtains
startNode: start
targetNode: Curtains
category: construction-category-furniture
- icon:
- sprite: Structures/Decoration/Curtains/hospital.rsi
- state: closed
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: true
-
+
- type: construction
id: CurtainsBlack
- name: black curtains
- description: Hides what others shouldn't see.
graph: Curtains
startNode: start
targetNode: CurtainsBlack
category: construction-category-furniture
- icon:
- sprite: Structures/Decoration/Curtains/black.rsi
- state: closed
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: true
- type: construction
id: CurtainsBlue
- name: blue curtains
- description: Hides what others shouldn't see.
graph: Curtains
startNode: start
targetNode: CurtainsBlue
category: construction-category-furniture
- icon:
- sprite: Structures/Decoration/Curtains/blue.rsi
- state: closed
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: true
-
+
- type: construction
id: CurtainsCyan
- name: cyan curtains
- description: Hides what others shouldn't see.
graph: Curtains
startNode: start
targetNode: CurtainsCyan
category: construction-category-furniture
- icon:
- sprite: Structures/Decoration/Curtains/cyan.rsi
- state: closed
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: true
-
+
- type: construction
id: CurtainsGreen
- name: green curtains
- description: Hides what others shouldn't see.
graph: Curtains
startNode: start
targetNode: CurtainsGreen
category: construction-category-furniture
- icon:
- sprite: Structures/Decoration/Curtains/green.rsi
- state: closed
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: true
-
+
- type: construction
id: CurtainsOrange
- name: orange curtains
- description: Hides what others shouldn't see.
graph: Curtains
startNode: start
targetNode: CurtainsOrange
category: construction-category-furniture
- icon:
- sprite: Structures/Decoration/Curtains/orange.rsi
- state: closed
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: true
-
+
- type: construction
id: CurtainsPink
- name: pink curtains
- description: Hides what others shouldn't see.
graph: Curtains
startNode: start
targetNode: CurtainsPink
category: construction-category-furniture
- icon:
- sprite: Structures/Decoration/Curtains/pink.rsi
- state: closed
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: true
-
+
- type: construction
id: CurtainsPurple
- name: purple curtains
- description: Hides what others shouldn't see.
graph: Curtains
startNode: start
targetNode: CurtainsPurple
category: construction-category-furniture
- icon:
- sprite: Structures/Decoration/Curtains/purple.rsi
- state: closed
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: true
-
+
- type: construction
id: CurtainsRed
- name: red curtains
- description: Hides what others shouldn't see.
graph: Curtains
startNode: start
targetNode: CurtainsRed
category: construction-category-furniture
- icon:
- sprite: Structures/Decoration/Curtains/red.rsi
- state: closed
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: true
- type: construction
id: CurtainsWhite
- name: white curtains
- description: Hides what others shouldn't see.
graph: Curtains
startNode: start
targetNode: CurtainsWhite
category: construction-category-furniture
- icon:
- sprite: Structures/Decoration/Curtains/white.rsi
- state: closed
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: true
- type: construction
id: Bookshelf
- name: bookshelf
- description: Mostly filled with books.
graph: Bookshelf
startNode: start
targetNode: bookshelf
category: construction-category-furniture
- icon:
- sprite: Structures/Furniture/bookshelf.rsi
- state: base
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- type: construction
id: NoticeBoard
- name: notice board
- description: Wooden notice board, can store paper inside itself.
graph: NoticeBoard
startNode: start
targetNode: noticeBoard
category: construction-category-furniture
- icon:
- sprite: Structures/Wallmounts/noticeboard.rsi
- state: noticeboard
objectType: Structure
placementMode: SnapgridCenter
canRotate: true
- type: construction
id: Mannequin
- name: mannequin
- description: Wooden mannequin designed for clothing displaying
graph: Mannequin
startNode: start
targetNode: mannequin
category: construction-category-furniture
- icon:
- sprite: Structures/Decoration/mannequin.rsi
- state: mannequin
objectType: Structure
placementMode: SnapgridCenter
canRotate: true
canBuildInImpassable: false
conditions:
- - !type:TileNotBlocked
\ No newline at end of file
+ - !type:TileNotBlocked
- type: construction
- name: cyan light tube
id: CyanLight
graph: CyanLight
startNode: start
targetNode: icon
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
- type: construction
- name: blue light tube
id: BlueLight
graph: BlueLight
startNode: start
targetNode: icon
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
- type: construction
- name: yellow light tube
id: YellowLight
graph: YellowLight
startNode: start
targetNode: icon
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
- type: construction
- name: pink light tube
id: PinkLight
graph: PinkLight
startNode: start
targetNode: icon
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
- type: construction
- name: orange light tube
id: OrangeLight
graph: OrangeLight
startNode: start
targetNode: icon
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
- type: construction
- name: black light tube
id: BlackLight
graph: BlackLight
startNode: start
targetNode: icon
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
- type: construction
- name: red light tube
id: RedLight
graph: RedLight
startNode: start
targetNode: icon
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
- type: construction
- name: green light tube
id: GreenLight
graph: GreenLight
startNode: start
targetNode: icon
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
- type: construction
- name: cyan light bulb
id: CyanLightBulb
graph: CyanLightBulb
startNode: start
targetNode: icon
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
- type: construction
- name: blue light bulb
id: BlueLightBulb
graph: BlueLightBulb
startNode: start
targetNode: icon
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
- type: construction
- name: yellow light bulb
id: YellowLightBulb
graph: YellowLightBulb
startNode: start
targetNode: icon
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
- type: construction
- name: pink light bulb
id: PinkLightBulb
graph: PinkLightBulb
startNode: start
targetNode: icon
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
- type: construction
- name: orange light bulb
id: OrangeLightBulb
graph: OrangeLightBulb
startNode: start
targetNode: icon
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
- type: construction
- name: black light bulb
id: BlackLightBulb
graph: BlackLightBulb
startNode: start
targetNode: icon
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
- type: construction
- name: red light bulb
id: RedLightBulb
graph: RedLightBulb
startNode: start
targetNode: icon
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
- type: construction
- name: green light bulb
id: GreenLightBulb
graph: GreenLightBulb
startNode: start
targetNode: icon
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
- type: construction
- name: computer
id: Computer
graph: Computer
startNode: start
targetNode: computer
category: construction-category-machines
- description: A frame used to construct anything with a computer circuitboard.
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Machines/parts.rsi
- state: 4
- type: construction
- name: machine frame
- description: A machine under construction. Needs more parts.
id: MachineFrame
graph: Machine
startNode: start
category: construction-category-machines
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Machines/parts.rsi
- state: "box_0"
# Switching
- type: construction
- name: two-way lever
id: TwoWayLeverRecipe
graph: LeverGraph
startNode: start
targetNode: LeverNode
category: construction-category-machines
- description: A lever to control machines. It has 3 modes.
objectType: Structure
canBuildInImpassable: false
- icon:
- sprite: Structures/conveyor.rsi
- state: switch-off
conditions:
- !type:TileNotBlocked
- type: construction
- name: light switch
id: LightSwitchRecipe
graph: LightSwitchGraph
startNode: start
targetNode: LightSwitchNode
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
placementMode: SnapgridCenter
canRotate: true
hide: true #TODO: Fix the lightswitch, issue #34659. Until then, keep hidden so people don't build it and get confused.
- type: construction
- name: signal switch
id: SignalSwitchRecipe
graph: SignalSwitchGraph
startNode: start
targetNode: SignalSwitchNode
category: construction-category-machines
- description: It's a switch for toggling power to things.
- icon:
- sprite: Structures/Wallmounts/switch.rsi
- state: on
objectType: Structure
placementMode: SnapgridCenter
canRotate: true
- !type:WallmountCondition
- type: construction
- name: signal button
id: SignalButtonRecipe
graph: SignalButtonGraph
startNode: start
targetNode: SignalButtonNode
category: construction-category-machines
- description: It's a button for activating something.
- icon:
- sprite: Structures/Wallmounts/switch.rsi
- state: on
objectType: Structure
placementMode: SnapgridCenter
canRotate: true
- !type:WallmountCondition
- type: construction
- name: directional light switch
id: LightSwitchDirectionalRecipe
graph: LightSwitchDirectionalGraph
startNode: start
targetNode: LightSwitchDirectionalNode
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
placementMode: SnapgridCenter
canRotate: true
hide: true #TODO: Fix the lightswitch, issue #34659. Until then, keep hidden so people don't build it and get confused.
- type: construction
- name: directional signal switch
id: SignalSwitchDirectionalRecipe
graph: SignalSwitchDirectionalGraph
startNode: start
targetNode: SignalSwitchDirectionalNode
category: construction-category-machines
- description: It's a switch for toggling power to things.
- icon:
- sprite: Structures/Wallmounts/switch.rsi
- state: on
objectType: Structure
placementMode: SnapgridCenter
canRotate: true
- !type:WallmountCondition
- type: construction
- name: directional signal button
id: SignalButtonDirectionalRecipe
graph: SignalButtonDirectionalGraph
startNode: start
targetNode: SignalButtonDirectionalNode
category: construction-category-machines
- description: It's a button for activating something.
- icon:
- sprite: Structures/Wallmounts/switch.rsi
- state: on
objectType: Structure
placementMode: SnapgridCenter
canRotate: true
- type: construction
- name: metal rod
id: MetalRod
graph: MetalRod
startNode: start
targetNode: MetalRod
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
- type: construction
- name: reinforced glass
- description: A reinforced sheet of glass.
id: SheetRGlass
graph: Glass
startNode: start
targetNode: SheetRGlass
category: construction-category-materials
- icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: rglass }
objectType: Item
- type: construction
- name: clockwork glass
- description: A brass-reinforced sheet of glass.
id: SheetClockworkGlass
graph: Glass
startNode: start
targetNode: SheetClockworkGlass
category: construction-category-materials
- icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: cglass }
objectType: Item
- type: construction
- name: plasma glass
- description: A sheet of translucent plasma.
id: SheetPGlass
graph: Glass
startNode: start
targetNode: SheetPGlass
category: construction-category-materials
- icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: pglass }
objectType: Item
- type: construction
- name: reinforced plasma glass
- description: A reinforced sheet of translucent plasma.
id: SheetRPGlass
graph: Glass
startNode: start
targetNode: SheetRPGlass
category: construction-category-materials
- icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: rpglass }
objectType: Item
- type: construction
- name: reinforced plasma glass
- description: A reinforced sheet of translucent plasma.
id: SheetRPGlass0
graph: Glass
startNode: start
targetNode: SheetRPGlass0
category: construction-category-materials
- icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: rpglass }
objectType: Item
- type: construction
- name: reinforced plasma glass
- description: A reinforced sheet of translucent plasma.
id: SheetRPGlass1
graph: Glass
startNode: start
targetNode: SheetRPGlass1
category: construction-category-materials
- icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: rpglass }
objectType: Item
- type: construction
- name: durathread
id: MaterialDurathread
graph: Durathread
startNode: start
targetNode: MaterialDurathread
category: construction-category-materials
- description: A high-quality thread used to make durable clothes.
- icon: { sprite: Objects/Materials/materials.rsi, state: durathread }
objectType: Item
- type: construction
- name: uranium glass
- description: A sheet of uranium glass.
id: SheetUGlass
graph: Glass
startNode: start
targetNode: SheetUGlass
category: construction-category-materials
- icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: uglass }
objectType: Item
- type: construction
- name: reinforced uranium glass
- description: A reinforced sheet of uranium glass.
id: SheetRUGlass
graph: Glass
startNode: start
targetNode: SheetRUGlass
category: construction-category-materials
- icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: ruglass }
objectType: Item
- type: construction
- name: reinforced uranium glass
- description: A reinforced sheet of uranium glass.
id: SheetRUGlass0
graph: Glass
startNode: start
targetNode: SheetRUGlass0
category: construction-category-materials
- icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: ruglass }
objectType: Item
- type: construction
- name: reinforced uranium glass
- description: A reinforced sheet of uranium glass.
id: SheetRUGlass1
graph: Glass
startNode: start
targetNode: SheetRUGlass1
category: construction-category-materials
- icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: ruglass }
- objectType: Item
\ No newline at end of file
+ objectType: Item
- type: construction
- name: modular grenade
id: ModularGrenadeRecipe
graph: ModularGrenadeGraph
startNode: start
targetNode: grenade
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
- type: construction
- name: modular mine
id: ModularMineRecipe
graph: ModularMineGraph
startNode: start
targetNode: mine
category: construction-category-weapons
- description: Construct a landmine using a payload.
- icon:
- sprite: Objects/Misc/landmine.rsi
- state: landmine
objectType: Item
#bureaucracy
- type: construction
id: FilingCabinet
- name: filing cabinet
- description: A cabinet for all your filing needs.
graph: FilingCabinet
startNode: start
targetNode: filingCabinet
category: construction-category-storage
- icon:
- sprite: Structures/Storage/cabinets.rsi
- state: filingcabinet
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- type: construction
id: TallCabinet
- name: tall cabinet
- description: A cabinet for all your filing needs.
graph: FilingCabinet
startNode: start
targetNode: tallCabinet
category: construction-category-storage
- icon:
- sprite: Structures/Storage/cabinets.rsi
- state: tallcabinet
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- type: construction
id: ChestDrawer
- name: chest drawer
- description: A small drawer for all your filing needs, Now with wheels!
graph: FilingCabinet
startNode: start
targetNode: chestDrawer
category: construction-category-storage
- icon:
- sprite: Structures/Storage/cabinets.rsi
- state: chestdrawer
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
# ItemCabinets
- type: construction
id: ShowCase
- name: showcase
- description: A sturdy showcase for an expensive exhibit.
graph: GlassBox
startNode: start
targetNode: glassBox
category: construction-category-storage
- icon:
- sprite: Structures/Storage/glassbox.rsi
- state: icon
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
# Normals
- type: construction
id: ShelfWood
- name: wooden shelf
- description: A convenient place to place, well, anything really.
graph: Shelf
startNode: start
targetNode: ShelfWood
- icon:
- sprite: Structures/Storage/Shelfs/wood.rsi
- state: base
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: true
- type: construction
id: ShelfMetal
- name: metal shelf
- description: A sturdy place to place, well, anything really.
graph: Shelf
startNode: start
targetNode: ShelfMetal
- icon:
- sprite: Structures/Storage/Shelfs/metal.rsi
- state: base
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: true
- type: construction
id: ShelfGlass
- name: glass shelf
- description: Just like a normal shelf! But fragile and without the walls!
graph: Shelf
startNode: start
targetNode: ShelfGlass
- icon:
- sprite: Structures/Storage/Shelfs/glass.rsi
- state: base
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: true
# Reinforced
- type: construction
id: ShelfRWood
- name: sturdy wooden shelf
- description: The perfect place to store all your vintage records.
graph: Shelf
startNode: start
targetNode: ShelfRWood
- icon:
- sprite: Structures/Storage/Shelfs/wood.rsi
- state: rbase
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: true
- type: construction
id: ShelfRMetal
- name: sturdy metal shelf
- description: Nice and strong, and keeps your maints loot secure.
graph: Shelf
startNode: start
targetNode: ShelfRMetal
- icon:
- sprite: Structures/Storage/Shelfs/metal.rsi
- state: rbase
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: true
- type: construction
id: ShelfRGlass
- name: sturdy glass shelf
- description: See through, decent strength, shiny plastic case. Whats not to love?
graph: Shelf
startNode: start
targetNode: ShelfRGlass
- icon:
- sprite: Structures/Storage/Shelfs/glass.rsi
- state: rbase
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: true
# Departmental
- type: construction
id: ShelfBar
- name: bar shelf
- description: A convenient place for all your extra booze, specifically designed to hold more bottles!
graph: Shelf
startNode: start
targetNode: ShelfBar
- icon:
- sprite: Structures/Storage/Shelfs/Departments/Service/bar.rsi
- state: base
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: true
- type: construction
id: ShelfKitchen
- name: kitchen shelf
- description: Holds your knifes, spice, and everything nice!
graph: Shelf
startNode: start
targetNode: ShelfKitchen
- icon:
- sprite: Structures/Storage/Shelfs/Departments/Service/kitchen.rsi
- state: base
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: true
- type: construction
id: ShelfChemistry
- name: chemical shelf
- description: Perfect for keeping the most important chemicals safe, and out of the clumsy clowns hands!
graph: Shelf
startNode: start
targetNode: ShelfChemistry
- icon:
- sprite: Structures/Storage/Shelfs/Departments/Medical/chemistry.rsi
- state: base
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: true
- type: construction
- name: girder
id: Girder
graph: Girder
startNode: start
targetNode: girder
category: construction-category-structures
- description: A large structural assembly made out of metal.
- icon:
- sprite: /Textures/Structures/Walls/solid.rsi
- state: wall_girder
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- !type:TileNotBlocked
- type: construction
- name: reinforced girder
id: ReinforcedGirder
graph: Girder
startNode: start
targetNode: reinforcedGirder
category: construction-category-structures
- description: A large structural assembly made out of metal and plasteel.
- icon:
- sprite: /Textures/Structures/Walls/solid.rsi
- state: reinforced_wall_girder
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- !type:TileNotBlocked
- type: construction
- name: wall gear
id: ClockworkGirder
graph: ClockworkGirder
startNode: start
targetNode: clockGirder
category: construction-category-structures
- description: A large gear with mounting brackets for additional plating.
- icon:
- sprite: /Textures/Structures/Walls/clock.rsi
- state: wall_gear
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- !type:TileNotBlocked
- type: construction
- name: wall
id: Wall
graph: Girder
startNode: start
targetNode: wall
category: construction-category-structures
- description: Keeps the air in and the greytide out.
- icon:
- sprite: Structures/Walls/solid.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- !type:TileNotBlocked
- type: construction
- name: reinforced wall
id: ReinforcedWall
graph: Girder
startNode: start
targetNode: reinforcedWall
category: construction-category-structures
- description: Keeps the air in and the greytide out.
- icon:
- sprite: Structures/Walls/solid.rsi
- state: rgeneric
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- !type:TileNotBlocked
- type: construction
- name: clock wall
id: WallClock
graph: ClockworkGirder
startNode: start
targetNode: clockworkWall
category: construction-category-structures
- description: Keeps the air in and the greytide out.
- icon:
- sprite: Structures/Walls/clock.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- !type:TileNotBlocked
- type: construction
- name: wood wall
id: WoodWall
graph: Barricade
startNode: start
targetNode: woodWall
category: construction-category-structures
- description: Keeps the air in and the greytide out.
- icon:
- sprite: Structures/Walls/wood.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- !type:TileNotBlocked
- type: construction
- name: uranium wall
id: UraniumWall
graph: Girder
startNode: start
targetNode: uraniumWall
category: construction-category-structures
- description: Keeps the air in and the greytide out.
- icon:
- sprite: Structures/Walls/uranium.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- !type:TileNotBlocked
- type: construction
- name: silver wall
id: SilverWall
graph: Girder
startNode: start
targetNode: silverWall
category: construction-category-structures
- description: Keeps the air in and the greytide out.
- icon:
- sprite: Structures/Walls/silver.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- !type:TileNotBlocked
- type: construction
- name: plastic wall
id: PlasticWall
graph: Girder
startNode: start
targetNode: plasticWall
category: construction-category-structures
- description: Keeps the air in and the greytide out.
- icon:
- sprite: Structures/Walls/plastic.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- !type:TileNotBlocked
- type: construction
- name: plasma wall
id: PlasmaWall
graph: Girder
startNode: start
targetNode: plasmaWall
category: construction-category-structures
- description: Keeps the air in and the greytide out.
- icon:
- sprite: Structures/Walls/plasma.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- !type:TileNotBlocked
- type: construction
- name: gold wall
id: GoldWall
graph: Girder
startNode: start
targetNode: goldWall
category: construction-category-structures
- description: Keeps the air in and the greytide out.
- icon:
- sprite: Structures/Walls/gold.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- !type:TileNotBlocked
- type: construction
- name: shuttle wall
id: ShuttleWall
graph: Girder
startNode: start
targetNode: shuttleWall
category: construction-category-structures
- description: Keeps the air in and the greytide out.
- icon:
- sprite: Structures/Walls/shuttle.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- !type:TileNotBlocked
- type: construction
- name: diagonal shuttle wall
id: DiagonalShuttleWall
graph: Girder
startNode: start
targetNode: diagonalshuttleWall
category: construction-category-structures
- description: Keeps the air in and the greytide out.
- icon:
- sprite: Structures/Walls/shuttle_diagonal.rsi
- state: state0
objectType: Structure
placementMode: SnapgridCenter
canRotate: true
- !type:TileNotBlocked
- type: construction
- name: bananium wall
id: ClownWall
graph: Girder
startNode: start
targetNode: bananiumWall
category: construction-category-structures
- description: Keeps the air in and the greytide out.
- icon:
- sprite: Structures/Walls/clown.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- !type:TileNotBlocked
- type: construction
- name: meat wall
id: MeatWall
graph: Girder
startNode: start
targetNode: meatWall
category: construction-category-structures
- description: Sticky.
- icon:
- sprite: Structures/Walls/meat.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- !type:TileNotBlocked
- type: construction
- name: grille
id: Grille
graph: Grille
startNode: start
targetNode: grille
category: construction-category-structures
- description: A flimsy framework of iron rods.
conditions:
- !type:TileNotBlocked
failIfSpace: false
- icon:
- sprite: Structures/Walls/grille.rsi
- state: grille
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- type: construction
- name: clockwork grille
id: ClockGrille
graph: ClockGrille
startNode: start
targetNode: clockGrille
category: construction-category-structures
- description: A flimsy framework of iron rods assembled in traditional ratvarian fashion.
conditions:
- !type:TileNotBlocked
failIfSpace: false
- icon:
- sprite: Structures/Walls/clockwork_grille.rsi
- state: ratvargrille
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- type: construction
- name: diagonal grille
id: GrilleDiagonal
graph: GrilleDiagonal
startNode: start
targetNode: grilleDiagonal
category: construction-category-structures
- description: A flimsy framework of iron rods.
conditions:
- !type:TileNotBlocked
failIfSpace: false
- icon:
- sprite: Structures/Walls/grille.rsi
- state: grille_diagonal
objectType: Structure
placementMode: SnapgridCenter
- type: construction
- name: diagonal clockwork grille
id: ClockworkGrilleDiagonal
graph: GrilleDiagonal
startNode: start
targetNode: clockworkGrilleDiagonal
category: construction-category-structures
- description: A flimsy framework of iron rods assembled in traditional ratvarian fashion.
conditions:
- !type:TileNotBlocked
failIfSpace: false
- icon:
- sprite: Structures/Walls/clockwork_grille.rsi
- state: ratvargrille_diagonal
objectType: Structure
placementMode: SnapgridCenter
- type: construction
- name: window
id: Window
graph: Window
startNode: start
targetNode: window
category: construction-category-structures
- description: Clear.
canBuildInImpassable: true
conditions:
- !type:EmptyOrWindowValidInTile
- !type:NoWindowsInTile
- icon:
- sprite: Structures/Windows/window.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- type: construction
- name: diagonal window
id: WindowDiagonal
graph: WindowDiagonal
startNode: start
targetNode: windowDiagonal
category: construction-category-structures
- description: Clear.
canBuildInImpassable: true
conditions:
- !type:EmptyOrWindowValidInTile
- !type:NoWindowsInTile
- icon:
- sprite: Structures/Windows/window_diagonal.rsi
- state: state1
objectType: Structure
placementMode: SnapgridCenter
- type: construction
- name: reinforced window
id: ReinforcedWindow
graph: Window
startNode: start
targetNode: reinforcedWindow
category: construction-category-structures
- description: Clear but tough.
canBuildInImpassable: true
conditions:
- !type:EmptyOrWindowValidInTile
- !type:NoWindowsInTile
- icon:
- sprite: Structures/Windows/reinforced_window.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- type: construction
- name: diagonal reinforced window
id: ReinforcedWindowDiagonal
graph: WindowDiagonal
startNode: start
targetNode: reinforcedWindowDiagonal
category: construction-category-structures
- description: Clear but tough.
canBuildInImpassable: true
conditions:
- !type:EmptyOrWindowValidInTile
- !type:NoWindowsInTile
- icon:
- sprite: Structures/Windows/reinforced_window_diagonal.rsi
- state: state1
objectType: Structure
placementMode: SnapgridCenter
- type: construction
- name: tinted window
id: TintedWindow
graph: Window
startNode: start
targetNode: tintedWindow
category: construction-category-structures
- description: Not clear, but lasers still pass through.
canBuildInImpassable: true
conditions:
- !type:EmptyOrWindowValidInTile
- !type:NoWindowsInTile
- icon:
- sprite: Structures/Windows/tinted_window.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- type: construction
- name: clockwork window
id: ClockworkWindow
graph: Window
startNode: start
targetNode: clockworkWindow
category: construction-category-structures
- description: Clear and tough, with a golden tint.
canBuildInImpassable: true
conditions:
- !type:EmptyOrWindowValidInTile
- !type:NoWindowsInTile
- icon:
- sprite: Structures/Windows/clockwork_window.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- type: construction
- name: diagonal clockwork window
id: ClockworkWindowDiagonal
graph: WindowDiagonal
startNode: start
targetNode: clockworkWindowDiagonal
category: construction-category-structures
- description: Clear and tough, with a golden tint.
canBuildInImpassable: true
conditions:
- !type:EmptyOrWindowValidInTile
- !type:NoWindowsInTile
- icon:
- sprite: Structures/Windows/clockwork_diagonal.rsi
- state: state0
objectType: Structure
placementMode: SnapgridCenter
- type: construction
- name: plasma window
id: PlasmaWindow
graph: Window
startNode: start
targetNode: plasmaWindow
category: construction-category-structures
canBuildInImpassable: true
- description: Clear, with a purple tint.
conditions:
- !type:EmptyOrWindowValidInTile
- !type:NoWindowsInTile
- icon:
- sprite: Structures/Windows/plasma_window.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- type: construction
- name: reinforced plasma window
id: ReinforcedPlasmaWindow
graph: Window
startNode: start
targetNode: reinforcedPlasmaWindow
category: construction-category-structures
canBuildInImpassable: true
- description: Clear and even tougher, with a purple tint.
conditions:
- !type:EmptyOrWindowValidInTile
- !type:NoWindowsInTile
- icon:
- sprite: Structures/Windows/reinforced_plasma_window.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- type: construction
- name: shuttle window
id: ShuttleWindow
graph: Window
startNode: start
targetNode: shuttleWindow
category: construction-category-structures
canBuildInImpassable: true
- description: Extra sturdy to resist the pressure of FTL or sustain damage from munitions.
conditions:
- !type:EmptyOrWindowValidInTile
- !type:NoWindowsInTile
- icon:
- sprite: Structures/Windows/shuttle_window.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- type: construction
- name: diagonal plasma window
id: PlasmaWindowDiagonal
graph: WindowDiagonal
startNode: start
targetNode: plasmaWindowDiagonal
category: construction-category-structures
canBuildInImpassable: true
- description: Clear, with a purple tint.
conditions:
- !type:EmptyOrWindowValidInTile
- !type:NoWindowsInTile
- icon:
- sprite: Structures/Windows/plasma_diagonal.rsi
- state: state1
objectType: Structure
placementMode: SnapgridCenter
- type: construction
- name: diagonal reinforced plasma window
id: ReinforcedPlasmaWindowDiagonal
graph: WindowDiagonal
startNode: start
targetNode: reinforcedPlasmaWindowDiagonal
category: construction-category-structures
canBuildInImpassable: true
- description: Clear and even tougher, with a purple tint.
conditions:
- !type:EmptyOrWindowValidInTile
- !type:NoWindowsInTile
- icon:
- sprite: Structures/Windows/reinforced_plasma_diagonal.rsi
- state: state1
objectType: Structure
placementMode: SnapgridCenter
- type: construction
- name: directional window
id: WindowDirectional
graph: WindowDirectional
startNode: start
targetNode: windowDirectional
category: construction-category-structures
- description: Clear.
canBuildInImpassable: true
conditions:
- !type:EmptyOrWindowValidInTile
- !type:NoWindowsInTile
- icon:
- sprite: Structures/Windows/directional.rsi
- state: window
objectType: Structure
placementMode: SnapgridCenter
- type: construction
- name: directional reinforced window
id: WindowReinforcedDirectional
graph: WindowDirectional
startNode: start
targetNode: windowReinforcedDirectional
category: construction-category-structures
- description: Clear but tough.
canBuildInImpassable: true
conditions:
- !type:EmptyOrWindowValidInTile
- !type:NoWindowsInTile
- icon:
- sprite: Structures/Windows/directional.rsi
- state: reinforced_window
objectType: Structure
placementMode: SnapgridCenter
- type: construction
- name: directional clockwork window
id: WindowClockworkDirectional
graph: WindowDirectional
startNode: start
targetNode: windowClockworkDirectional
category: construction-category-structures
- description: Clear and tough, with a golden tint.
canBuildInImpassable: true
conditions:
- !type:EmptyOrWindowValidInTile
- !type:NoWindowsInTile
- icon:
- sprite: Structures/Windows/directional.rsi
- state: clock_window
objectType: Structure
placementMode: SnapgridCenter
- type: construction
- name: directional plasma window
id: PlasmaWindowDirectional
graph: WindowDirectional
startNode: start
targetNode: plasmaWindowDirectional
category: construction-category-structures
canBuildInImpassable: true
- description: Clear, with a purple tint.
conditions:
- !type:EmptyOrWindowValidInTile
- !type:NoWindowsInTile
- icon:
- sprite: Structures/Windows/directional.rsi
- state: plasma_window
objectType: Structure
placementMode: SnapgridCenter
- type: construction
- name: directional reinforced plasma window
id: PlasmaReinforcedWindowDirectional
graph: WindowDirectional
startNode: start
targetNode: plasmaReinforcedWindowDirectional
category: construction-category-structures
canBuildInImpassable: true
- description: Clear and even tougher, with a purple tint.
conditions:
- !type:EmptyOrWindowValidInTile
- !type:NoWindowsInTile
- icon:
- sprite: Structures/Windows/directional.rsi
- state: plasma_reinforced_window
objectType: Structure
placementMode: SnapgridCenter
- type: construction
- name: uranium window
id: UraniumWindow
graph: Window
startNode: start
targetNode: uraniumWindow
category: construction-category-structures
canBuildInImpassable: true
- description: Clear, with added RadAbsorb to protect you from deadly radiation.
conditions:
- !type:EmptyOrWindowValidInTile
- !type:NoWindowsInTile
- icon:
- sprite: Structures/Windows/uranium_window.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- type: construction
- name: reinforced uranium window
id: ReinforcedUraniumWindow
graph: Window
startNode: start
targetNode: reinforcedUraniumWindow
category: construction-category-structures
canBuildInImpassable: true
- description: Clear and even tougher, with added RadAbsorb to protect you from deadly radiation.
conditions:
- !type:EmptyOrWindowValidInTile
- !type:NoWindowsInTile
- icon:
- sprite: Structures/Windows/reinforced_uranium_window.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- type: construction
- name: diagonal uranium window
id: UraniumWindowDiagonal
graph: WindowDiagonal
startNode: start
targetNode: uraniumWindowDiagonal
category: construction-category-structures
canBuildInImpassable: true
- description: Clear, with added RadAbsorb to protect you from deadly radiation.
conditions:
- !type:EmptyOrWindowValidInTile
- !type:NoWindowsInTile
- icon:
- sprite: Structures/Windows/uranium_window_diagonal.rsi
- state: state1
objectType: Structure
placementMode: SnapgridCenter
- type: construction
- name: diagonal reinforced uranium window
id: ReinforcedUraniumWindowDiagonal
graph: WindowDiagonal
startNode: start
targetNode: reinforcedUraniumWindowDiagonal
category: construction-category-structures
canBuildInImpassable: true
- description: Clear and even tougher, with added RadAbsorb to protect you from deadly radiation.
conditions:
- !type:EmptyOrWindowValidInTile
- !type:NoWindowsInTile
- icon:
- sprite: Structures/Windows/reinforced_uranium_diagonal.rsi
- state: state1
objectType: Structure
placementMode: SnapgridCenter
- type: construction
- name: firelock
id: Firelock
graph: Firelock
startNode: start
targetNode: Firelock
category: construction-category-structures
- description: This is a firelock - it locks an area when a fire alarm in the area is triggered. Don't get squished!
- icon:
- sprite: Structures/Doors/Airlocks/Standard/firelock.rsi
- state: closed
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- !type:TileNotBlocked
- type: construction
- name: glass firelock
id: FirelockGlass
graph: Firelock
startNode: start
targetNode: FirelockGlass
category: construction-category-structures
- description: This is a firelock - it locks an area when a fire alarm in the area is triggered. Don't get squished!
- icon:
- sprite: Structures/Doors/Airlocks/Glass/firelock.rsi
- state: closed
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- !type:TileNotBlocked
- type: construction
- name: thin firelock
id: FirelockEdge
graph: Firelock
startNode: start
targetNode: FirelockEdge
category: construction-category-structures
- description: This is a firelock - it locks an area when a fire alarm in the area is triggered. Don't get squished!
- icon:
- sprite: Structures/Doors/edge_door_hazard.rsi
- state: closed
placementMode: SnapgridCenter
objectType: Structure
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: turnstile
id: Turnstile
graph: Turnstile
startNode: start
targetNode: turnstile
category: construction-category-structures
- description: A mechanical door that permits one-way access and prevents tailgating.
- icon:
- sprite: Structures/Doors/turnstile.rsi
- state: turnstile
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: shutter
id: Shutters
graph: Shutters
startNode: start
targetNode: Shutters
category: construction-category-structures
- description: This is a shutter - connect it to a button to open and close it.
- icon:
- sprite: Structures/Doors/Shutters/shutters.rsi
- state: closed
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: true
- type: construction
- name: glass shutter
id: ShuttersWindow
graph: Shutters
startNode: start
targetNode: ShuttersWindow
category: construction-category-structures
- description: This is a shutter - connect it to a button to open and close it.
- icon:
- sprite: Structures/Doors/Shutters/shutters_window.rsi
- state: closed
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: true
- type: construction
- name: radiation shutter
id: ShuttersRadiation
graph: Shutters
startNode: start
targetNode: ShuttersRadiation
category: construction-category-structures
- description: This is a shutter - connect it to a button to open and close it.
- icon:
- sprite: Structures/Doors/Shutters/shutters_radiation.rsi
- state: closed
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: true
- type: construction
- name: blast door
id: BlastDoor
graph: BlastDoor
startNode: start
targetNode: blastdoor
category: construction-category-structures
- description: This one says 'BLAST DONGER'.
- icon:
- sprite: Structures/Doors/Shutters/blastdoor.rsi
- state: closed
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: true
- type: construction
- name: catwalk
id: Catwalk
graph: Catwalk
startNode: start
targetNode: Catwalk
category: construction-category-structures
- description: Just like a lattice. Except it looks better.
conditions:
- !type:TileNotBlocked
failIfSpace: false
targets:
- Lattice
- Plating
- icon:
- sprite: Structures/catwalk.rsi
- state: catwalk_preview
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- type: construction
- name: bananium floor
id: FloorBananium
graph: FloorBananium
startNode: start
targetNode: BananiumFloor
category: construction-category-structures
- description: A slippery floor of bright yellow bananium.
conditions:
- !type:TileNotBlocked
failIfSpace: false
- !type:TileType
targets:
- Plating
- icon:
- sprite: Tiles/Misc/bananium.rsi
- state: bananium
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- type: construction
- name: wooden barricade
id: Barricade
graph: Barricade
startNode: start
targetNode: barricadefull
category: construction-category-structures
- description: An improvised barricade made out of wooden planks.
- icon:
- sprite: Structures/barricades.rsi
- state: barricade_full
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: wooden barricade
id: BarricadeDirectional
graph: BarricadeDirectional
startNode: start
targetNode: barricadefull
category: construction-category-structures
- description: An improvised barricade made out of wooden planks.
- icon:
- sprite: Structures/barricades.rsi
- state: barricade_directional
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: railing
id: Railing
graph: Railing
startNode: start
targetNode: railing
category: construction-category-structures
- description: Basic railing meant to protect idiots like you from falling.
- icon:
- sprite: Structures/Walls/railing.rsi
- state: side
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: railing corner
id: RailingCorner
graph: Railing
startNode: start
targetNode: railingCorner
category: construction-category-structures
- description: Basic railing meant to protect idiots like you from falling.
- icon:
- sprite: Structures/Walls/railing.rsi
- state: corner
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: railing corner small
id: RailingCornerSmall
graph: Railing
startNode: start
targetNode: railingCornerSmall
category: construction-category-structures
- description: Basic railing meant to protect idiots like you from falling.
- icon:
- sprite: Structures/Walls/railing.rsi
- state: corner_small
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: railing round
id: RailingRound
graph: Railing
startNode: start
targetNode: railingRound
category: construction-category-structures
- description: Basic railing meant to protect idiots like you from falling.
- icon:
- sprite: Structures/Walls/railing.rsi
- state: round
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
# Chain link fencing
- type: construction
- name: chain link fence
id: FenceMetal
graph: FenceMetal
startNode: start
targetNode: straight
category: construction-category-structures
- description: Part of a chain link fence meant to cordon off areas.
- icon:
- sprite: Structures/Walls/fence.rsi
- state: straight
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: chain link fence corner
id: FenceMetalCorner
graph: FenceMetal
startNode: start
targetNode: corner
category: construction-category-structures
- description: Part of a chain link fence meant to cordon off areas.
- icon:
- sprite: Structures/Walls/fence.rsi
- state: corner
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: chain link fence end-piece
id: FenceMetalEnd
graph: FenceMetal
startNode: start
targetNode: end
category: construction-category-structures
- description: Part of a chain link fence meant to cordon off areas.
- icon:
- sprite: Structures/Walls/fence.rsi
- state: end
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: chain link fence gate
id: FenceMetalGate
graph: FenceMetal
startNode: start
targetNode: gate
category: construction-category-structures
- description: An easy way to get through a chain link fence.
- icon:
- sprite: Structures/Walls/fence.rsi
- state: door_closed
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
#Wooden fence high
- type: construction
- name: wooden high fence
id: FenceWood
graph: FenceWood
startNode: start
targetNode: straight
category: construction-category-structures
- description: Part of a wooden fence meant to cordon off areas.
- icon:
- sprite: Structures/Walls/wooden_fence.rsi
- state: straight
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: wooden high fence end
id: FenceWoodEnd
graph: FenceWood
startNode: start
targetNode: end
category: construction-category-structures
- description: Part of a wooden fence meant to cordon off areas.
- icon:
- sprite: Structures/Walls/wooden_fence.rsi
- state: end
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: wooden high fence corner
id: FenceWoodCorner
graph: FenceWood
startNode: start
targetNode: corner
category: construction-category-structures
- description: Part of a wooden fence meant to cordon off areas.
- icon:
- sprite: Structures/Walls/wooden_fence.rsi
- state: corner
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: wooden high fence t-junction
id: FenceWoodTJunction
graph: FenceWood
startNode: start
targetNode: tjunction
category: construction-category-structures
- description: Part of a wooden fence meant to cordon off areas.
- icon:
- sprite: Structures/Walls/wooden_fence.rsi
- state: tjunction
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: wooden high fence gate
id: FenceWoodGate
graph: FenceWood
startNode: start
targetNode: gate
category: construction-category-structures
- description: Part of a wooden fence meant to cordon off areas.
- icon:
- sprite: Structures/Walls/wooden_fence.rsi
- state: door_closed
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
#Wooden fence small
- type: construction
- name: wooden small fence
id: FenceWoodSmall
graph: FenceWood
startNode: start
targetNode: straight_small
category: construction-category-structures
- description: Part of a wooden fence meant to cordon off areas.
- icon:
- sprite: Structures/Walls/wooden_fence.rsi
- state: straight_small
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: wooden small fence end
id: FenceWoodEndSmall
graph: FenceWood
startNode: start
targetNode: end_small
category: construction-category-structures
- description: Part of a wooden fence meant to cordon off areas.
- icon:
- sprite: Structures/Walls/wooden_fence.rsi
- state: end_small
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: wooden small fence corner
id: FenceWoodCornerSmall
graph: FenceWood
startNode: start
targetNode: corner_small
category: construction-category-structures
- description: Part of a wooden fence meant to cordon off areas.
- icon:
- sprite: Structures/Walls/wooden_fence.rsi
- state: corner_small
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: wooden small fence t-junction
id: FenceWoodTJunctionSmall
graph: FenceWood
startNode: start
targetNode: tjunction_small
category: construction-category-structures
- description: Part of a wooden fence meant to cordon off areas.
- icon:
- sprite: Structures/Walls/wooden_fence.rsi
- state: tjunction_small
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: wooden small fence gate
id: FenceWoodGateSmall
graph: FenceWood
startNode: start
targetNode: gate_small
category: construction-category-structures
- description: Part of a wooden fence meant to cordon off areas.
- icon:
- sprite: Structures/Walls/wooden_fence.rsi
- state: door_closed_small
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
#Airlocks
- type: construction
- name: airlock
id: Airlock
graph: Airlock
startNode: start
targetNode: airlock
category: construction-category-structures
- description: It opens, it closes, and maybe crushes you.
- icon:
- sprite: Structures/Doors/Airlocks/Standard/basic.rsi
- state: assembly
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: glass airlock
id: AirlockGlass
graph: Airlock
startNode: start
targetNode: glassAirlock
category: construction-category-structures
- description: It opens, it closes, and maybe crushes you.
- icon:
- sprite: Structures/Doors/Airlocks/Glass/glass.rsi
- state: assembly
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: pinion airlock
id: PinionAirlock
graph: PinionAirlock
startNode: start
targetNode: airlock
category: construction-category-structures
- description: It opens, it closes, and maybe crushes you.
- icon:
- sprite: Structures/Doors/Airlocks/Standard/clockwork_pinion.rsi
- state: assembly
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: glass pinion airlock
id: PinionAirlockGlass
graph: PinionAirlock
startNode: start
targetNode: glassAirlock
category: construction-category-structures
- description: It opens, it closes, and maybe crushes you.
- icon:
- sprite: Structures/Doors/Airlocks/Glass/clockwork_pinion.rsi
- state: assembly
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: shuttle airlock
id: AirlockShuttle
graph: AirlockShuttle
startNode: start
targetNode: airlock
category: construction-category-structures
- description: It opens, it closes, and maybe crushes you. Necessary for connecting two space craft together.
- icon:
- sprite: Structures/Doors/Airlocks/Glass/shuttle.rsi
- state: closed
# state: assembly
objectType: Structure
placementMode: SnapgridCenter
- !type:TileNotBlocked
- type: construction
- name: glass shuttle airlock
id: AirlockGlassShuttle
graph: AirlockShuttle
startNode: start
targetNode: airlockGlass
category: construction-category-structures
- description: It opens, it closes, and maybe crushes you. Necessary for connecting two space craft together. This one has a window.
- icon:
- sprite: Structures/Doors/Airlocks/Glass/shuttle.rsi
- state: closed
# state: assembly
objectType: Structure
placementMode: SnapgridCenter
- !type:TileNotBlocked
- type: construction
- name: windoor
id: Windoor
graph: Windoor
startNode: start
targetNode: windoor
category: construction-category-structures
- description: It opens, it closes, and you can see through it! And it can be made of Plasma, Uranium, or normal Glass!
- icon:
- sprite: Structures/Doors/Windoors/windoor.rsi
- state: closed
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: secure windoor
id: SecureWindoor
graph: Windoor
startNode: start
targetNode: windoorSecure
category: construction-category-structures
- description: It's tough, it's a door, and you can see through it! And it can be made of Plasma, Uranium, or normal Glass!
- icon:
- sprite: Structures/Doors/Windoors/windoor.rsi
- state: closed
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- !type:TileNotBlocked
- type: construction
- name: clockwork windoor
id: ClockworkWindoor
graph: Windoor
startNode: start
targetNode: windoorClockwork
category: construction-category-structures
- description: It opens, it closes, and you can see through it! This one looks tough.
- icon:
- sprite: Structures/Doors/Windoors/clockwork_windoor.rsi
- state: closed
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
#lighting
- type: construction
- name: wall light
id: LightTubeFixture
graph: LightFixture
startNode: start
targetNode: tubeLight
category: construction-category-structures
- description: A wall light fixture. Use light tubes.
- icon:
- sprite: Structures/Wallmounts/Lighting/light_tube.rsi
- state: base
objectType: Structure
placementMode: SnapgridCenter
canRotate: true
- !type:TileNotBlocked
- type: construction
- name: small wall light
id: LightSmallFixture
graph: LightFixture
startNode: start
targetNode: bulbLight
category: construction-category-structures
- description: A wall light fixture. Use light bulbs.
- icon:
- sprite: Structures/Wallmounts/Lighting/light_small.rsi
- state: base
objectType: Structure
placementMode: SnapgridCenter
canRotate: true
- !type:TileNotBlocked
- type: construction
- name: emergency light
id: EmergencyLightFixture
graph: LightFixture
startNode: start
targetNode: emergencyLight
category: construction-category-structures
- description: An emergency light.
- icon:
- sprite: Structures/Wallmounts/Lighting/emergency_light.rsi
- state: base
objectType: Structure
placementMode: SnapgridCenter
canRotate: true
- !type:TileNotBlocked
- type: construction
- name: ground light post
id: LightGroundFixture
graph: LightFixture
startNode: start
targetNode: groundLight
category: construction-category-structures
- description: A ground light fixture. Use light tubes.
- icon:
- sprite: Structures/Lighting/LightPosts/small_light_post.rsi
- state: base
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- !type:TileNotBlocked
- type: construction
- name: strobe light
id: LightStrobeFixture
graph: LightFixture
startNode: start
targetNode: strobeLight
category: construction-category-structures
- description: A wall light fixture. Use light bulbs.
- icon:
- sprite: Structures/Wallmounts/Lighting/strobe_light.rsi
- state: base
objectType: Structure
placementMode: SnapgridCenter
canRotate: true
#conveyor
- type: construction
- name: conveyor belt
id: ConveyorBelt
graph: ConveyorGraph
startNode: start
targetNode: entity
category: construction-category-structures
- description: A conveyor belt, commonly used to transport large numbers of items elsewhere quite quickly.
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/conveyor.rsi
- state: conveyor_stopped_cw
conditions:
- !type:TileNotBlocked
- type: construction
- name: metal door
id: MetalDoor
graph: DoorGraph
startNode: start
targetNode: metalDoor
category: construction-category-structures
- description: A primitive door with manual operation like the cavemen used.
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Doors/MineralDoors/metal_door.rsi
- state: closed
conditions:
- !type:TileNotBlocked
- type: construction
- name: wooden door
id: WoodDoor
graph: DoorGraph
startNode: start
targetNode: woodDoor
category: construction-category-structures
- description: A primitive door with manual operation like the cavemen used.
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Doors/MineralDoors/wood_door.rsi
- state: closed
conditions:
- !type:TileNotBlocked
- type: construction
- name: plasma door
id: PlasmaDoor
graph: DoorGraph
startNode: start
targetNode: plasmaDoor
category: construction-category-structures
- description: A primitive door with manual operation like the cavemen used.
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Doors/MineralDoors/plasma_door.rsi
- state: closed
conditions:
- !type:TileNotBlocked
- type: construction
- name: gold door
id: GoldDoor
graph: DoorGraph
startNode: start
targetNode: goldDoor
category: construction-category-structures
- description: A primitive door with manual operation like the cavemen used.
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Doors/MineralDoors/gold_door.rsi
- state: closed
conditions:
- !type:TileNotBlocked
- type: construction
- name: silver door
id: SilverDoor
graph: DoorGraph
startNode: start
targetNode: silverDoor
category: construction-category-structures
- description: A primitive door with manual operation like the cavemen used.
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Doors/MineralDoors/silver_door.rsi
- state: closed
conditions:
- !type:TileNotBlocked
- type: construction
- name: paper door
id: PaperDoor
graph: DoorGraph
startNode: start
targetNode: paperDoor
category: construction-category-structures
- description: A primitive door with manual operation like the cavemen used.
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Doors/MineralDoors/paper_door.rsi
- state: closed
- type: construction
- name: plastic flaps
id: PlasticFlapsClear
graph: PlasticFlapsGraph
startNode: start
targetNode: plasticFlaps
category: construction-category-structures
placementMode: SnapgridCenter
- description: A plastic flap to let items through and keep people out.
objectType: Structure
canBuildInImpassable: false
- icon:
- sprite: Structures/plastic_flaps.rsi
- state: plasticflaps
conditions:
- !type:TileNotBlocked
- type: construction
- name: opaque plastic flaps
id: PlasticFlapsOpaque
graph: PlasticFlapsGraph
startNode: start
targetNode: opaqueFlaps
category: construction-category-structures
placementMode: SnapgridCenter
- description: An opaque plastic flap to let items through and keep people out.
objectType: Structure
canBuildInImpassable: false
- icon:
- sprite: Structures/plastic_flaps.rsi
- state: plasticflaps
conditions:
- !type:TileNotBlocked
- type: construction
- name: carp statue
id: CarpStatue
graph: CarpStatue
startNode: start
targetNode: statue
category: construction-category-structures
placementMode: SnapgridCenter
- description: A statue of one of the brave carp that got us where we are today. Made with real teeth!
objectType: Structure
canBuildInImpassable: false
- icon:
- sprite: Structures/Specific/carp_statue.rsi
- state: icon
conditions:
- !type:TileNotBlocked
- type: construction
- name: bananium clown statue
id: BananiumClownStatue
graph: BananiumStatueClown
startNode: start
targetNode: bananiumStatue
category: construction-category-structures
placementMode: SnapgridCenter
- description: A clown statue made from bananium.
objectType: Structure
canBuildInImpassable: false
- icon:
- sprite: Structures/Decoration/statues.rsi
- state: bananium_clown
conditions:
- !type:TileNotBlocked
- type: construction
- name: bananium door
id: BananiumDoor
graph: DoorGraph
startNode: start
targetNode: bananiumDoor
category: construction-category-structures
- description: A primitive door made from bananium, it honks.
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Doors/MineralDoors/bananium_door.rsi
- state: closed
conditions:
- !type:TileNotBlocked
- type: construction
- name: bananium altar
id: BananiumAltar
graph: BananiumAltarGraph
startNode: start
targetNode: bananiumAltar
category: construction-category-structures
- description: An altar to worship the honkmother with.
- icon:
- sprite: Structures/Furniture/Altars/Cults/bananium.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- !type:TileNotBlocked
- type: construction
- name: solid secret door
id: SolidSecretDoor
+ name: recipes-secret-door-name
+ description: recipes-secret-door-desc
graph: SecretDoor
startNode: start
targetNode: solidSecretDoor
category: construction-category-structures
- description: A secret door for the wall.
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Doors/secret_door.rsi
- state: closed
conditions:
- !type:TileNotBlocked
- type: construction
- name: torch
id: LightTorch
graph: LightTorch
startNode: start
targetNode: torch
category: construction-category-tools
- description: A torch fashioned from some wood.
- icon: { sprite: Objects/Misc/torch.rsi, state: icon }
objectType: Item
- type: construction
- name: logic gate
id: LogicGate
graph: LogicGate
startNode: start
targetNode: logic_gate
category: construction-category-tools
- description: A binary logic gate for signals.
- icon: { sprite: Objects/Devices/gates.rsi, state: or_icon }
objectType: Item
- type: construction
- name: edge detector
id: EdgeDetector
graph: LogicGate
startNode: start
targetNode: edge_detector
category: construction-category-tools
- description: An edge detector for signals.
- icon: { sprite: Objects/Devices/gates.rsi, state: edge_detector }
objectType: Item
- type: construction
- name: power sensor
id: PowerSensor
graph: LogicGate
startNode: start
targetNode: power_sensor
category: construction-category-tools
- description: A power network checking device for signals.
- icon: { sprite: Objects/Devices/gates.rsi, state: power_sensor }
objectType: Item
- type: construction
- name: memory cell
id: MemoryCell
graph: LogicGate
startNode: start
targetNode: memory_cell
category: construction-category-tools
- description: A memory cell for signals.
- icon: { sprite: Objects/Devices/gates.rsi, state: memory_cell }
objectType: Item
# SURVEILLANCE
- type: construction
- name: camera
id: camera
graph: SurveillanceCamera
startNode: start
targetNode: camera
category: construction-category-utilities
- description: "Surveillance camera. It's watching. Soon."
- icon:
- sprite: Structures/Wallmounts/camera.rsi
- state: camera
objectType: Structure
placementMode: SnapgridCenter
- type: construction
- name: telescreen
id: WallmountTelescreen
graph: WallmountTelescreen
startNode: start
targetNode: Telescreen
category: construction-category-utilities
- description: "A surveillance camera monitor for the wall."
- icon:
- sprite: Structures/Machines/computers.rsi
- state: telescreen_frame
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: true
- type: construction
- name: station map
id: StationMap
graph: StationMap
startNode: start
targetNode: station_map
category: construction-category-structures
- description: A station map.
- icon:
- sprite: Structures/Machines/station_map.rsi
- state: station_map0
placementMode: SnapgridCenter
objectType: Structure
canRotate: true
# POWER
- type: construction
- name: APC
id: APC
graph: APC
startNode: start
targetNode: apc
category: construction-category-utilities
- description: "Area Power Controller (APC). Controls power. In an area."
- icon:
- sprite: Structures/Power/apc.rsi
- state: base
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: true
- type: construction
- name: cable terminal
id: CableTerminal
graph: CableTerminal
startNode: start
targetNode: cable_terminal
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
placementMode: SnapgridCenter
canBuildInImpassable: false
- type: construction
- name: wallmount substation
id: WallmountSubstation
graph: WallmountSubstation
startNode: start
targetNode: substation
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
placementMode: SnapgridCenter
canBuildInImpassable: true
- type: construction
- name: wallmount generator
id: WallmountGenerator
graph: WallmountGenerator
startNode: start
targetNode: generator
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
placementMode: SnapgridCenter
canBuildInImpassable: true
- type: construction
- name: wallmount APU
id: WallmountGeneratorAPU
graph: WallmountGenerator
startNode: start
targetNode: APU
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
placementMode: SnapgridCenter
canBuildInImpassable: true
# DISPOSALS
- type: construction
- name: disposal unit
- description: A pneumatic waste disposal unit.
id: DisposalUnit
graph: DisposalMachine
startNode: start
category: construction-category-utilities
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Piping/disposal.rsi
- state: "disposal"
- type: construction
- name: mailing unit
- description: A pneumatic mail delivery unit.
id: MailingUnit
graph: DisposalMachine
startNode: start
category: construction-category-utilities
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Piping/disposal.rsi
- state: "mailing"
- type: construction
- name: disposal pipe
id: DisposalPipe
- description: A huge pipe segment used for constructing disposal systems.
graph: DisposalPipe
startNode: start
targetNode: pipe
category: construction-category-utilities
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Piping/disposal.rsi
- state: conpipe-s
- type: construction
- name: disposal tagger
- description: A pipe that tags entities for routing.
id: DisposalTagger
graph: DisposalPipe
startNode: start
category: construction-category-utilities
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Piping/disposal.rsi
- state: conpipe-tagger
- type: construction
- name: disposal trunk
- description: A pipe trunk used as an entry point for disposal systems.
id: DisposalTrunk
graph: DisposalPipe
startNode: start
category: construction-category-utilities
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Piping/disposal.rsi
- state: conpipe-t
- type: construction
- name: disposal router
- description: A three-way router. Entities with matching tags get routed to the side.
id: DisposalRouter
graph: DisposalPipe
startNode: start
category: construction-category-utilities
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Piping/disposal.rsi
- state: conpipe-j1s
mirror: DisposalRouterFlipped
- type: construction
hide: true
- name: disposal router
- description: A three-way router. Entities with matching tags get routed to the side.
id: DisposalRouterFlipped
graph: DisposalPipe
startNode: start
category: construction-category-utilities
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Piping/disposal.rsi
- state: conpipe-j2s
mirror: DisposalRouter
- type: construction
- name: disposal signal router
- description: A signal-controlled three-way router.
id: DisposalSignalRouter
graph: DisposalPipe
startNode: start
category: construction-category-utilities
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Piping/disposal.rsi
- state: signal-router-free
mirror: DisposalSignalRouterFlipped
- type: construction
hide: true
- name: disposal signal router
- description: A signal-controlled three-way router.
id: DisposalSignalRouterFlipped
graph: DisposalPipe
startNode: start
category: construction-category-utilities
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Piping/disposal.rsi
- state: signal-router-flipped-free
mirror: DisposalSignalRouter
- type: construction
- name: disposal junction
- description: A three-way junction. The arrow indicates where items exit.
id: DisposalJunction
graph: DisposalPipe
startNode: start
category: construction-category-utilities
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Piping/disposal.rsi
- state: conpipe-j1
mirror: DisposalJunctionFlipped
- type: construction
hide: true
- name: disposal junction
- description: A three-way junction. The arrow indicates where items exit.
id: DisposalJunctionFlipped
graph: DisposalPipe
startNode: start
category: construction-category-utilities
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Piping/disposal.rsi
- state: conpipe-j2
mirror: DisposalJunction
- type: construction
- name: disposal Y junction
- description: A three-way junction with another exit point.
id: DisposalYJunction
graph: DisposalPipe
startNode: start
category: construction-category-utilities
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Piping/disposal.rsi
- state: conpipe-y
- type: construction
- name: disposal bend
- description: A tube bent at a 90 degree angle.
id: DisposalBend
graph: DisposalPipe
startNode: start
category: construction-category-utilities
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Piping/disposal.rsi
- state: conpipe-c
# ATMOS
- type: construction
- name: air alarm
id: AirAlarmFixture
graph: AirAlarm
startNode: start
targetNode: air_alarm
category: construction-category-structures
- description: An air alarm. Alarms... air?
- icon:
- sprite: Structures/Wallmounts/air_monitors.rsi
- state: alarm0
placementMode: SnapgridCenter
objectType: Structure
canRotate: true
- !type:WallmountCondition {}
- type: construction
- name: fire alarm
id: FireAlarm
graph: FireAlarm
startNode: start
targetNode: fire_alarm
category: construction-category-structures
- description: A fire alarm. Spicy!
- icon:
- sprite: Structures/Wallmounts/air_monitors.rsi
- state: fire0
placementMode: SnapgridCenter
objectType: Structure
canRotate: true
- !type:WallmountCondition {}
- type: construction
- name: air sensor
id: AirSensor
graph: AirSensor
startNode: start
targetNode: sensor
category: construction-category-structures
- description: An air sensor. Senses air.
- icon:
- sprite: Structures/Specific/Atmospherics/sensor.rsi
- state: gsensor1
placementMode: SnapgridCenter
objectType: Structure
canRotate: true
- type: construction
- name: gas pipe sensor
id: GasPipeSensor
graph: GasPipeSensor
startNode: start
targetNode: sensor
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
objectType: Structure
canRotate: true
# ATMOS PIPES
- type: construction
- name: gas pipe half
id: GasPipeHalf
- description: Half of a gas pipe. No skateboards.
graph: GasPipe
startNode: start
targetNode: half
category: construction-category-utilities
placementMode: SnapgridCenter
canBuildInImpassable: true
- icon:
- sprite: Structures/Piping/Atmospherics/pipe.rsi
- state: pipeHalf
- type: construction
- name: gas pipe straight
id: GasPipeStraight
- description: A straight pipe segment.
graph: GasPipe
startNode: start
targetNode: straight
category: construction-category-utilities
placementMode: SnapgridCenter
canBuildInImpassable: true
- icon:
- sprite: Structures/Piping/Atmospherics/pipe.rsi
- state: pipeStraight
- type: construction
- name: gas pipe bend
id: GasPipeBend
- description: A pipe segment bent at a 90 degree angle.
graph: GasPipe
startNode: start
targetNode: bend
category: construction-category-utilities
placementMode: SnapgridCenter
canBuildInImpassable: true
- icon:
- sprite: Structures/Piping/Atmospherics/pipe.rsi
- state: pipeBend
- type: construction
- name: gas pipe T junction
id: GasPipeTJunction
- description: A pipe segment with a T junction.
graph: GasPipe
startNode: start
targetNode: tjunction
category: construction-category-utilities
placementMode: SnapgridCenter
canBuildInImpassable: true
- icon:
- sprite: Structures/Piping/Atmospherics/pipe.rsi
- state: pipeTJunction
- type: construction
- name: gas pipe fourway
id: GasPipeFourway
- description: A pipe segment with a fourway junction.
graph: GasPipe
startNode: start
targetNode: fourway
category: construction-category-utilities
placementMode: SnapgridCenter
canBuildInImpassable: true
- icon:
- sprite: Structures/Piping/Atmospherics/pipe.rsi
- state: pipeFourway
# ATMOS UNARY
- type: construction
- name: air vent
- description: Pumps gas into the room.
id: GasVentPump
graph: GasUnary
startNode: start
category: construction-category-utilities
placementMode: SnapgridCenter
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:
- !type:NoUnstackableInTile
- type: construction
- name: passive vent
- description: Unpowered vent that equalises gases on both sides.
id: GasPassiveVent
graph: GasUnary
startNode: start
category: construction-category-utilities
placementMode: SnapgridCenter
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:
- !type:NoUnstackableInTile
- type: construction
- name: air scrubber
- description: Sucks gas into connected pipes.
id: GasVentScrubber
graph: GasUnary
startNode: start
category: construction-category-utilities
placementMode: SnapgridCenter
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:
- !type:NoUnstackableInTile
- type: construction
- name: air injector
- description: Injects air into the atmosphere.
id: GasOutletInjector
graph: GasUnary
startNode: start
category: construction-category-utilities
placementMode: SnapgridCenter
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:
- !type:NoUnstackableInTile
# ATMOS BINARY
- type: construction
- name: gas pump
id: GasPressurePump
- description: A pump that moves gas by pressure.
graph: GasBinary
startNode: start
targetNode: pressurepump
category: construction-category-utilities
placementMode: SnapgridCenter
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:
- !type:NoUnstackableInTile
- type: construction
- name: volumetric gas pump
- description: A pump that moves gas by volume.
id: GasVolumePump
graph: GasBinary
startNode: start
category: construction-category-utilities
placementMode: SnapgridCenter
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:
- !type:NoUnstackableInTile
- type: construction
id: GasPassiveGate
- name: passive gate
- description: A one-way air valve that does not require power.
graph: GasBinary
startNode: start
targetNode: passivegate
category: construction-category-utilities
placementMode: SnapgridCenter
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:
- !type:NoUnstackableInTile
- type: construction
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
startNode: start
targetNode: valve
category: construction-category-utilities
placementMode: SnapgridCenter
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:
- !type:NoUnstackableInTile
- type: construction
id: SignalControlledValve
- name: signal valve
- description: Valve controlled by signal inputs.
graph: GasBinary
startNode: start
targetNode: signalvalve
category: construction-category-utilities
placementMode: SnapgridCenter
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:
- !type:NoUnstackableInTile
- type: construction
id: GasPort
- name: connector port
- description: For connecting portable devices related to atmospherics control.
graph: GasBinary
startNode: start
targetNode: port
category: construction-category-utilities
placementMode: SnapgridCenter
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:
- !type:NoUnstackableInTile
- type: construction
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
startNode: start
targetNode: dualportventpump
category: construction-category-utilities
placementMode: SnapgridCenter
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
id: HeatExchanger
- name: radiator
- description: Transfers heat between the pipe and its surroundings.
graph: GasBinary
startNode: start
targetNode: radiator
category: construction-category-utilities
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Piping/Atmospherics/heatexchanger.rsi
- state: heStraight
- type: construction
id: HeatExchangerBend
- name: radiator bend
- description: Transfers heat between the pipe and its surroundings.
graph: GasBinary
startNode: start
targetNode: bendradiator
category: construction-category-utilities
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Piping/Atmospherics/heatexchanger.rsi
- state: heBend
# ATMOS TRINARY
- type: construction
id: GasFilter
- name: gas filter
- description: Very useful for filtering gases.
graph: GasTrinary
startNode: start
targetNode: filter
category: construction-category-utilities
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Piping/Atmospherics/gasfilter.rsi
- state: gasFilter
mirror: GasFilterFlipped
conditions:
- !type:NoUnstackableInTile
- type: construction
id: GasFilterFlipped
hide: true
- name: gas filter
- description: Very useful for filtering gases.
graph: GasTrinary
startNode: start
targetNode: filterflipped
category: construction-category-utilities
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Piping/Atmospherics/gasfilter.rsi
- state: gasFilterF
mirror: GasFilter
conditions:
- !type:NoUnstackableInTile
- type: construction
id: GasMixer
- name: gas mixer
- description: Very useful for mixing gases.
graph: GasTrinary
startNode: start
targetNode: mixer
category: construction-category-utilities
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Piping/Atmospherics/gasmixer.rsi
- state: gasMixer
mirror: GasMixerFlipped
conditions:
- !type:NoUnstackableInTile
- type: construction
id: GasMixerFlipped
hide: true
- name: gas mixer
- description: Very useful for mixing gases.
graph: GasTrinary
startNode: start
targetNode: mixerflipped
category: construction-category-utilities
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Piping/Atmospherics/gasmixer.rsi
- state: gasMixerF
mirror: GasMixer
conditions:
- !type:NoUnstackableInTile
- type: construction
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
startNode: start
targetNode: pneumaticvalve
category: construction-category-utilities
placementMode: SnapgridCenter
canBuildInImpassable: false
- icon:
- sprite: Structures/Piping/Atmospherics/pneumaticvalve.rsi
- state: off
conditions:
- !type:NoUnstackableInTile
# INTERCOM
- type: construction
- name: intercom
id: IntercomAssembly
graph: Intercom
startNode: start
targetNode: intercom
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
objectType: Structure
canRotate: true
# TIMERS
- type: construction
- name: signal timer
id: SignalTimer
graph: Timer
startNode: start
targetNode: signal
category: construction-category-utilities
- description: "A wallmounted timer for sending timed signals to things."
- icon:
- sprite: Structures/Wallmounts/switch.rsi
- state: on
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: true
- !type:WallmountCondition
- type: construction
- name: screen timer
id: ScreenTimer
graph: Timer
startNode: start
targetNode: screen
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
canRotate: false
placementMode: SnapgridCenter
- !type:WallmountCondition
- type: construction
- name: brig timer
id: BrigTimer
graph: Timer
startNode: start
targetNode: brig
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
canRotate: false
placementMode: SnapgridCenter
- type: construction
- name: grey bladed flatcap
id: BladedFlatcapGrey
graph: BladedFlatcapGrey
startNode: start
targetNode: icon
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
- type: construction
- name: brown bladed flatcap
id: BladedFlatcapBrown
graph: BladedFlatcapBrown
startNode: start
targetNode: icon
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
- type: construction
- name: glass shiv
id: Shiv
graph: Shiv
startNode: start
targetNode: icon
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
- type: construction
- name: reinforced shiv
id: ReinforcedShiv
graph: ReinforcedShiv
startNode: start
targetNode: icon
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
- type: construction
- name: plasma shiv
id: PlasmaShiv
graph: PlasmaShiv
startNode: start
targetNode: icon
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
- type: construction
- name: uranium shiv
id: UraniumShiv
graph: UraniumShiv
startNode: start
targetNode: icon
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
- type: construction
- name: crude spear
id: Spear
graph: Spear
startNode: start
targetNode: spear
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
- type: construction
- name: crude reinforced spear
id: SpearReinforced
graph: SpearReinforced
startNode: start
targetNode: spear
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
- type: construction
- name: crude plasma spear
id: SpearPlasma
graph: SpearPlasma
startNode: start
targetNode: spear
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
- type: construction
- name: crude uranium spear
id: SpearUranium
graph: SpearUranium
startNode: start
targetNode: spear
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
- type: construction
- name: sharkminnow tooth spear
id: SpearSharkMinnow
graph: SpearSharkMinnow
startNode: start
targetNode: spear
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
- type: construction
- name: makeshift bola
id: Bola
graph: Bola
startNode: start
targetNode: bola
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
- type: construction
- name: wooden buckler
id: WoodenBuckler
graph: WoodenBuckler
startNode: start
targetNode: woodenBuckler
category: construction-category-weapons
- description: A nicely carved wooden shield!
- icon: { sprite: Objects/Weapons/Melee/shields.rsi, state: buckler-icon }
objectType: Item
- type: construction
- name: makeshift shield
id: MakeshiftShield
graph: MakeshiftShield
startNode: start
targetNode: makeshiftShield
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
- type: construction
- name: glass shard arrow
id: ImprovisedArrow
graph: ImprovisedArrow
startNode: start
targetNode: ImprovisedArrow
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
- type: construction
- name: carp tooth arrow
id: ImprovisedArrowCarp
graph: ImprovisedArrowCarp
startNode: start
targetNode: ImprovisedArrowCarp
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
- type: construction
- name: plasma glass shard arrow
id: ImprovisedArrowPlasma
graph: ImprovisedArrowPlasma
startNode: start
targetNode: ImprovisedArrowPlasma
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
- type: construction
- name: uranium glass shard arrow
id: ImprovisedArrowUranium
graph: ImprovisedArrowUranium
startNode: start
targetNode: ImprovisedArrowUranium
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
- type: construction
- name: improvised bow
id: ImprovisedBow
graph: ImprovisedBow
startNode: start
targetNode: ImprovisedBow
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
- type: construction
- name: bone spear
id: SpearBone
graph: SpearBone
startNode: start
targetNode: spear
category: construction-category-weapons
- description: Bones and silk combined together.
- icon: { sprite: Objects/Weapons/Melee/bone_spear.rsi, state: spear }
objectType: Item
- type: construction
- name: web wall
id: WallWeb
graph: WebStructures
startNode: start
targetNode: wall
category: construction-category-structures
- description: A fairly weak yet silky smooth wall.
- icon:
- sprite: Structures/Walls/web.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- !type:TileNotBlocked
- type: construction
- name: web table
id: TableWeb
graph: WebStructures
startNode: start
targetNode: table
category: construction-category-furniture
- description: Essential for any serious web development.
- icon:
- sprite: Structures/Furniture/Tables/web.rsi
- state: full
objectType: Structure
placementMode: SnapgridCenter
canRotate: false
- !type:TileNotBlocked
- type: construction
- name: web bed
id: WebBed
graph: WebStructures
startNode: start
targetNode: bed
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
placementMode: SnapgridCenter
canRotate: false
- !type:TileNotBlocked
- type: construction
- name: web chair
id: ChairWeb
graph: WebStructures
startNode: start
targetNode: chair
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
placementMode: SnapgridCenter
canBuildInImpassable: false
- SpiderCraft
- type: construction
- name: web crate
id: CrateWeb
graph: WebStructures
startNode: start
targetNode: crate
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
placementMode: SnapgridCenter
canRotate: false
- SpiderCraft
- type: construction
- name: web door
id: WebDoor
graph: WebStructures
startNode: start
targetNode: door
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
placementMode: SnapgridCenter
canBuildInImpassable: false
icon:
sprite: Objects/Tools/bucket.rsi
state: icon
- name: bucket
+ name: construction-graph-tag-bucket
- tag: ProximitySensor
icon:
sprite: Objects/Misc/proximity_sensor.rsi
state: icon
- name: proximity sensor
+ name: construction-graph-tag-proximity-sensor
doAfter: 2
- tag: BorgArm
icon:
sprite: Mobs/Silicon/drone.rsi
state: l_hand
- name: borg arm
+ name: construction-graph-tag-borg-arm
doAfter: 2
- node: bot
entity: MobCleanBot
icon:
sprite: Objects/Misc/fire_extinguisher.rsi
state: fire_extinguisher_open
- name: fire extinguisher
+ name: construction-graph-tag-fire-extinguisher
- tag: FireHelmet
- icon:
+ icon:
sprite: Clothing/Head/Helmets/firehelmet.rsi
state: icon
- name: fire helmet
+ name: construction-graph-tag-fire-helmet
doAfter: 2
- tag: ProximitySensor
icon:
sprite: Objects/Misc/proximity_sensor.rsi
state: icon
- name: proximity sensor
+ name: construction-graph-tag-proximity-sensor
doAfter: 2
- tag: BorgArm
icon:
sprite: Mobs/Silicon/drone.rsi
state: l_hand
- name: borg arm
+ name: construction-graph-tag-borg-arm
doAfter: 2
- node: bot
entity: MobFireBot
icon:
sprite: Objects/Storage/Happyhonk/clown.rsi
state: box
- name: happy honk meal
+ name: construction-graph-tag-happy-honk-meal
- tag: BikeHorn
icon:
sprite: Objects/Fun/bikehorn.rsi
state: icon
- name: bike horn
+ name: construction-graph-tag-clown-bike-horn
doAfter: 2
- tag: ProximitySensor
icon:
sprite: Objects/Misc/proximity_sensor.rsi
state: icon
- name: proximity sensor
+ name: construction-graph-tag-proximity-sensor
- tag: BorgArm
icon:
sprite: Mobs/Silicon/drone.rsi
state: l_hand
- name: borg arm
+ name: construction-graph-tag-borg-arm
doAfter: 2
- node: bot
entity: MobHonkBot
icon:
sprite: Objects/Storage/Happyhonk/cluwne.rsi
state: box
- name: woeful cluwne meal
+ name: construction-graph-tag-woeful-cluwne-meal
- tag: CluwneHorn
icon:
sprite: Objects/Fun/cluwnehorn.rsi
state: icon
- name: broken bike horn
+ name: construction-graph-tag-clowne-horn
doAfter: 2
- tag: ProximitySensor
icon:
sprite: Objects/Misc/proximity_sensor.rsi
state: icon
- name: proximity sensor
+ name: construction-graph-tag-proximity-sensor
- tag: BorgArm
icon:
sprite: Mobs/Silicon/drone.rsi
state: l_hand
- name: borg arm
+ name: construction-graph-tag-borg-arm
doAfter: 2
- node: bot
entity: MobJonkBot
icon:
sprite: Objects/Specific/Medical/firstaidkits.rsi
state: firstaid
- name: medkit
+ name: construction-graph-tag-medkit
- tag: DiscreteHealthAnalyzer
icon:
sprite: Objects/Specific/Medical/healthanalyzer.rsi
state: analyzer
- name: health analyzer
+ name: construction-graph-tag-health-analyzer
doAfter: 2
- tag: ProximitySensor
icon:
sprite: Objects/Misc/proximity_sensor.rsi
state: icon
- name: proximity sensor
+ name: construction-graph-tag-proximity-sensor
doAfter: 2
- tag: BorgArm
icon:
sprite: Mobs/Silicon/drone.rsi
state: l_hand
- name: borg arm
+ name: construction-graph-tag-borg-arm
doAfter: 2
- node: bot
entity: MobMedibot
icon:
sprite: Objects/Storage/Happyhonk/mime.rsi
state: box
- name: mime edition happy honk meal
+ name: construction-graph-tag-mime-meal
- tag: MimeBelt
icon:
sprite: Clothing/Belt/suspenders_red.rsi
state: icon
- name: suspenders
+ name: construction-graph-tag-suspenders
doAfter: 2
- tag: ProximitySensor
icon:
sprite: Objects/Misc/proximity_sensor.rsi
state: icon
- name: proximity sensor
+ name: construction-graph-tag-proximity-sensor
- tag: BorgHead
icon:
sprite: Objects/Specific/Robotics/cyborg_parts.rsi
state: borg_head
- name: borg head
+ name: construction-graph-tag-borg-head
doAfter: 2
- tag: BorgArm
icon:
sprite: Mobs/Silicon/drone.rsi
state: l_hand
- name: borg arm
+ name: construction-graph-tag-borg-arm
doAfter: 2
- tag: BorgArm
icon:
sprite: Mobs/Silicon/drone.rsi
state: l_hand
- name: borg arm
+ name: construction-graph-tag-borg-arm
doAfter: 2
- node: bot
entity: MobMimeBot
icon:
sprite: Objects/Misc/proximity_sensor.rsi
state: icon
- name: proximity sensor
+ name: construction-graph-tag-proximity-sensor
- tag: BorgHead
icon:
sprite: Objects/Specific/Robotics/cyborg_parts.rsi
state: borg_head
- name: borg head
+ name: construction-graph-tag-borg-head
doAfter: 1
- material: Steel
amount: 10
icon:
sprite: Clothing/OuterClothing/Hardsuits/spatio.rsi
state: icon
- name: spationaut hardsuit
+ name: construction-graph-tag-spationaut-hardsuit
doAfter: 10
- material: Durathread
amount: 5
- to: empty
steps:
- tag: DrinkCan
- name: an empty can
+ name: construction-graph-tag-empty-can
icon:
sprite: Objects/Consumable/Drinks/cola.rsi
state: icon_open
doAfter: 1
- tag: Igniter
- name: an igniter
+ name: construction-graph-tag-igniter
icon:
sprite: Objects/Devices/igniter.rsi
state: icon
- to: flowerwreath
steps:
- tag: Flower
- name: flower
+ name: construction-graph-tag-flower
icon:
sprite: Objects/Specific/Hydroponics/poppy.rsi
state: produce
- tag: Flower
- name: flower
+ name: construction-graph-tag-flower
icon:
sprite: Objects/Specific/Hydroponics/poppy.rsi
state: produce
- tag: Ambrosia
- name: ambrosia
+ name: construction-graph-tag-ambrosia
icon:
sprite: Objects/Specific/Hydroponics/ambrosia_vulgaris.rsi
state: produce
icon:
sprite: Structures/Piping/Atmospherics/pipe.rsi
state: pipeStraight
- name: pipe
+ name: construction-graph-tag-pipe
- tag: ModularReceiver
icon:
sprite: Objects/Misc/modular_receiver.rsi
state: icon
- name: modular receiver
+ name: construction-graph-tag-modular-receiver
- tag: RifleStock
icon:
sprite: Objects/Misc/rifle_stock.rsi
state: icon
- name: rifle stock
+ name: construction-graph-tag-rifle-stock
- material: Cloth
amount: 3
doAfter: 10
steps:
- material: Steel
amount: 1
- doAfter: 0.5
+ doAfter: 0.5
- material: Plastic
amount: 1
- doAfter: 0.5
+ doAfter: 0.5
- tag: GlassShard
- name: glass shard
+ name: construction-graph-tag-glass-shard
icon:
sprite: Objects/Materials/Shards/shard.rsi
state: shard1
- doAfter: 0.5
+ doAfter: 0.5
- tag: GlassShard
- name: glass shard
+ name: construction-graph-tag-glass-shard
icon:
sprite: Objects/Materials/Shards/shard.rsi
state: shard2
- doAfter: 0.5
+ doAfter: 0.5
- tag: GlassShard
- name: glass shard
+ name: construction-graph-tag-glass-shard
icon:
sprite: Objects/Materials/Shards/shard.rsi
state: shard1
- doAfter: 0.5
+ doAfter: 0.5
- tag: GlassShard
- name: glass shard
+ name: construction-graph-tag-glass-shard
icon:
sprite: Objects/Materials/Shards/shard.rsi
state: shard3
- doAfter: 0.5
+ doAfter: 0.5
- tag: Matchstick
- name: match stick
+ name: construction-graph-tag-match-stick
icon:
sprite: Objects/Tools/matches.rsi
state: match_unlit
- doAfter: 0.5
+ doAfter: 0.5
- tag: Matchstick
- name: match stick
+ name: construction-graph-tag-match-stick
icon:
sprite: Objects/Tools/matches.rsi
state: match_unlit
- doAfter: 0.5
+ doAfter: 0.5
- tag: Matchstick
- name: match stick
+ name: construction-graph-tag-match-stick
icon:
sprite: Objects/Tools/matches.rsi
state: match_unlit
- doAfter: 0.5
+ doAfter: 0.5
- tag: Matchstick
- name: match stick
+ name: construction-graph-tag-match-stick
icon:
sprite: Objects/Tools/matches.rsi
state: match_unlit
- doAfter: 0.5
+ doAfter: 0.5
- tag: Matchstick
- name: match stick
+ name: construction-graph-tag-match-stick
icon:
sprite: Objects/Tools/matches.rsi
state: match_unlit
- doAfter: 0.5
+ doAfter: 0.5
- tag: Matchstick
- name: match stick
+ name: construction-graph-tag-match-stick
icon:
sprite: Objects/Tools/matches.rsi
state: match_unlit
- material: MetalRod
amount: 1
- tag: PowerCellSmall
- name: power cell small
+ name: construction-graph-tag-power-cell-small
icon:
sprite: Objects/Power/power_cells.rsi
state: small
sprite: Objects/Misc/cablecuffs.rsi
state: cuff
color: red
- name: cuffs
+ name: construction-graph-tag-cuffs
- tag: Igniter
- name: igniter
+ name: construction-graph-tag-igniter
icon:
sprite: Objects/Devices/igniter.rsi
state: icon
doAfter: 15
- node: msstunprod
entity: Stunprod
-
+
icon:
sprite: Structures/Piping/Atmospherics/pipe.rsi
state: pipeStraight
- name: pipe
+ name: construction-graph-tag-pipe
- material: Steel
amount: 1
doAfter: 3
icon:
sprite: Structures/Piping/Atmospherics/pipe.rsi
state: pipeStraight
- name: pipe
+ name: construction-graph-tag-pipe
- tag: Handcuffs
icon:
sprite: Objects/Misc/cablecuffs.rsi
state: cuff
color: red
- name: cuffs
+ name: construction-graph-tag-cuffs
- material: Steel
amount: 6
doAfter: 10
- to: potatobattery
steps:
- tag: Potato
- name: a potato
+ name: construction-graph-tag-potato
icon:
sprite: Objects/Specific/Hydroponics/potato.rsi
state: produce
- to: potatoai
steps:
- tag: PotatoBattery
- name: a potato battery
+ name: construction-graph-tag-potato-battery
icon:
sprite: Objects/Power/power_cells.rsi
state: potato
doAfter: 1
- tag: SmallAIChip
- name: a super-compact AI chip
+ name: construction-graph-tag-super-compact-ai-chip
icon:
sprite: Objects/Misc/potatoai_chip.rsi
state: icon
- material: Capacitor
amount: 2
- node: potatoaichip
- entity: PotatoAIChip
\ No newline at end of file
+ entity: PotatoAIChip
amount: 2
doAfter: 5
- tag: FreezerElectronics
- name: freezer electronics
+ name: construction-graph-tag-freezer-electronics
icon:
sprite: Objects/Misc/module.rsi
state: door_electronics
amount: 2
doAfter: 5
- tag: FreezerElectronics
- name: freezer electronics
+ name: construction-graph-tag-freezer-electronics
icon:
sprite: Objects/Misc/module.rsi
state: door_electronics
- to: strawhat
steps:
- tag: Wheat
- name: wheat bushel
+ name: construction-graph-tag-wheat-bushel
icon:
sprite: Objects/Specific/Hydroponics/wheat.rsi
state: produce
- tag: Wheat
- name: wheat bushel
+ name: construction-graph-tag-wheat-bushel
icon:
sprite: Objects/Specific/Hydroponics/wheat.rsi
state: produce
- tag: Wheat
- name: wheat bushel
+ name: construction-graph-tag-wheat-bushel
icon:
sprite: Objects/Specific/Hydroponics/wheat.rsi
state: produce
- tag: Wheat
- name: wheat bushel
+ name: construction-graph-tag-wheat-bushel
icon:
sprite: Objects/Specific/Hydroponics/wheat.rsi
state: produce
- to: plushie
steps:
- tag: PlushieGhost
- name: ghost soft toy
+ name: construction-graph-tag-ghost
icon:
sprite: Mobs/Ghosts/ghost_human.rsi
state: icon
- tag: Ectoplasm
- name: ectoplasm
+ name: construction-graph-tag-ectoplasm
icon:
sprite: Mobs/Ghosts/revenant.rsi
state: ectoplasm
- to: suit
steps:
- tag: HideCorgi
- name: corgi hide
+ name: construction-graph-tag-corgi-hide
icon:
sprite: Objects/Materials/materials.rsi
state: corgihide
- type: construction
- name: alien artifact
id: Artifact
graph: Artifact
startNode: start
targetNode: done
category: construction-category-misc
objectType: Item
- description: A strange alien artifact
- icon:
- sprite: Objects/Specific/Xenoarchaeology/item_artifacts.rsi
- state: ano01
- type: construction
- name: cleanbot
id: cleanbot
graph: CleanBot
startNode: start
targetNode: bot
category: construction-category-utilities
objectType: Item
- description: This bot wanders around the station, mopping up any puddles it sees.
- icon:
- sprite: Mobs/Silicon/Bots/cleanbot.rsi
- state: cleanbot
- type: construction
- name: firebot
id: firebot
graph: FireBot
startNode: start
targetNode: bot
category: construction-category-utilities
objectType: Item
- description: This bot puts out fires wherever it goes.
- icon:
- sprite: Mobs/Silicon/Bots/firebot.rsi
- state: firebot
- type: construction
- name: honkbot
id: honkbot
graph: HonkBot
startNode: start
targetNode: bot
category: construction-category-utilities
objectType: Item
- description: This bot honks and slips people.
- icon:
- sprite: Mobs/Silicon/Bots/honkbot.rsi
- state: honkbot
- type: construction
- name: jonkbot
id: jonkbot
graph: JonkBot
startNode: start
targetNode: bot
category: construction-category-utilities
objectType: Item
- description: This cursed bot honks, laughs and slips people.
- icon:
- sprite: Mobs/Silicon/Bots/honkbot.rsi
- state: jonkbot
- type: construction
- name: medibot
id: medibot
graph: MediBot
startNode: start
targetNode: bot
category: construction-category-utilities
objectType: Item
- description: This bot can help supply basic healing.
- icon:
- sprite: Mobs/Silicon/Bots/medibot.rsi
- state: medibot
- type: construction
- name: mimebot
id: mimebot
graph: MimeBot
startNode: start
targetNode: bot
category: construction-category-utilities
objectType: Item
- description: This bot knows how to wave.
- icon:
- sprite: Mobs/Silicon/Bots/mimebot.rsi
- state: mimebot
- type: construction
- name: supplybot
id: supplybot
graph: SupplyBot
startNode: start
targetNode: bot
category: construction-category-utilities
objectType: Item
- description: This bot can be loaded with cargo to make deliveries.
- icon:
- sprite: Mobs/Silicon/Bots/supplybot.rsi
- state: supplybot
- type: construction
- name: livestock crate
id: CrateLivestock
graph: CrateLivestock
startNode: start
targetNode: cratelivestock
category: construction-category-storage
- description: A wooden crate for holding livestock.
- icon: { sprite: Structures/Storage/Crates/livestock.rsi, state: base }
objectType: Structure
- type: construction
- name: steel crate
id: CrateGenericSteel
graph: CrateGenericSteel
startNode: start
targetNode: crategenericsteel
category: construction-category-storage
- description: A metal crate for storing things.
- icon: { sprite: Structures/Storage/Crates/generic.rsi, state: icon }
objectType: Structure
- type: construction
- name: secure crate
id: CrateSecure
graph: CrateSecure
startNode: start
targetNode: cratesecure
category: construction-category-storage
- description: A secure metal crate for storing things. Requires no special access, can be configured with an Access Configurator.
- icon: { sprite: Structures/Storage/Crates/secure.rsi, state: icon }
objectType: Structure
- type: construction
- name: freezer
id: CrateFreezer
graph: CrateFreezer
startNode: start
targetNode: done
category: construction-category-storage
- description: A metal freezing crate for storing things.
- icon: { sprite: Structures/Storage/Crates/freezer.rsi, state: icon }
objectType: Structure
- type: construction
- name: plastic crate
id: CratePlastic
graph: CratePlastic
startNode: start
targetNode: crateplastic
category: construction-category-storage
- description: A plastic crate for storing things.
- icon: { sprite: Structures/Storage/Crates/plastic.rsi, state: icon }
objectType: Structure
- type: construction
- name: cardboard box
id: BigBox
graph: BaseBigBox
startNode: start
targetNode: basebigbox
category: construction-category-storage
- description: A big box for storing things or hiding in.
- icon: { sprite: Structures/Storage/closet.rsi, state: cardboard }
objectType: Structure
- type: construction
- name: cardboard box
id: BoxCardboard
graph: BoxCardboard
startNode: start
targetNode: boxcardboard
category: construction-category-storage
- description: A small box for storing things.
- icon: { sprite: Objects/Storage/boxes.rsi, state: box }
objectType: Item
- type: construction
- name: pizza box
id: FoodBoxPizza
graph: FoodBoxPizza
startNode: start
targetNode: foodboxpizza
category: construction-category-storage
- description: A box for pizza.
- icon:
- sprite: Objects/Consumable/Food/Baked/pizza.rsi
- state: box
objectType: Item
- type: construction
- name: coffin
id: CrateCoffin
graph: CrateCoffin
startNode: start
targetNode: cratecoffin
category: construction-category-storage
- description: A coffin for storing corpses.
- icon: { sprite: Structures/Storage/Crates/coffin.rsi, state: base }
objectType: Structure
- type: construction
- name: baseball bat
id: bat
graph: WoodenBat
startNode: start
targetNode: bat
category: construction-category-weapons
- description: A robust baseball bat.
- icon:
- sprite: Objects/Weapons/Melee/baseball_bat.rsi
- state: icon
objectType: Item
- type: construction
- name: ghost sheet
id: ghost_sheet
graph: GhostSheet
startNode: start
targetNode: ghost_sheet
category: construction-category-clothing
- description: Become a spooky ghost. Boo!
- icon:
- sprite: Clothing/OuterClothing/Misc/ghostsheet.rsi
- state: icon
objectType: Item
- type: construction
- name: makeshift handcuffs
id: makeshifthandcuffs
graph: makeshifthandcuffs
startNode: start
targetNode: cuffscable
category: construction-category-tools
- description: "Homemade handcuffs crafted from spare cables."
- icon: { sprite: Objects/Misc/cablecuffs.rsi, state: cuff }
objectType: Item
- type: construction
- name: makeshift stunprod
id: makeshiftstunprod
graph: makeshiftstunprod
startNode: start
targetNode: msstunprod
category: construction-category-weapons
- description: "Homemade stunprod."
- icon: { sprite: Objects/Weapons/Melee/stunprod.rsi, state: stunprod_off }
objectType: Item
- type: construction
- name: muzzle
id: muzzle
graph: Muzzle
startNode: start
targetNode: muzzle
category: construction-category-tools
objectType: Item
- description: "A muzzle to shut your victim up."
- icon:
- sprite: Clothing/Mask/muzzle.rsi
- state: icon
- type: construction
- name: improvised pneumatic cannon
id: pneumaticcannon
graph: PneumaticCannon
startNode: start
targetNode: cannon
category: construction-category-weapons
objectType: Item
- description: This son of a gun can fire anything that fits in it using just a little gas.
- icon:
- sprite: Objects/Weapons/Guns/Cannons/pneumatic_cannon.rsi
- state: icon
- type: construction
- name: gauze
id: gauze
graph: Gauze
startNode: start
targetNode: gauze
category: construction-category-tools
objectType: Item
- description: When you've really got nothing left.
- icon:
- sprite: Objects/Specific/Medical/medical.rsi
- state: gauze
- type: construction
- name: blindfold
id: blindfold
graph: Blindfold
startNode: start
targetNode: blindfold
category: construction-category-tools
objectType: Item
- description: Better hope everyone turns a blind eye to you crafting this sussy item...
- icon:
- sprite: Clothing/Eyes/Misc/blindfold.rsi
- state: icon
- type: construction
- name: flower wreath
id: flowerwreath
graph: flowerwreath
startNode: start
targetNode: flowerwreath
category: construction-category-clothing
- description: A wreath of colourful flowers. Can be worn both on head and neck.
- icon:
- sprite: Clothing/Head/Misc/flower-wreath.rsi
- state: icon
objectType: Item
- type: construction
- name: damp rag
id: rag
graph: Rag
startNode: start
targetNode: rag
category: construction-category-tools
objectType: Item
- description: A damp rag to clean up the ground. Better than slipping around all day.
- icon:
- sprite: Objects/Specific/Janitorial/rag.rsi
- state: rag
- type: construction
- name: improvised shotgun
id: improvisedshotgun
graph: ImprovisedShotgunGraph
startNode: start
targetNode: shotgun
category: construction-category-weapons
objectType: Item
- description: A shitty, single-shot shotgun made from salvaged and hand-crafted gun parts. Ammo not included.
- icon:
- sprite: Objects/Weapons/Guns/Shotguns/improvised_shotgun.rsi
- state: icon
- type: construction
- name: improvised shotgun shell
id: ShellShotgunImprovised
graph: ImprovisedShotgunShellGraph
startNode: start
targetNode: shell
category: construction-category-weapons
objectType: Item
- description: A homemade shotgun shell that shoots painful glass shrapnel. The spread is so wide that it couldn't hit the broad side of a barn.
- icon:
- sprite: Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell.rsi
- state: improvised
- type: construction
- name: rifle stock
id: riflestock
graph: RifleStockGraph
startNode: start
targetNode: riflestock
category: construction-category-weapons
objectType: Item
- description: A stock carved out of wood, vital for improvised firearms.
- icon:
- sprite: Objects/Misc/rifle_stock.rsi
- state: icon
- type: construction
- name: fire bomb
id: firebomb
graph: FireBomb
startNode: start
targetNode: firebomb
category: construction-category-weapons
objectType: Item
- description: A weak, improvised incendiary device.
- icon:
- sprite: Objects/Weapons/Bombs/ied.rsi
- state: icon
- type: construction
- name: cotton woven cloth
id: CottonWovenCloth
graph: CottonObjects
startNode: start
targetNode: cottoncloth
category: construction-category-misc
- description: "A homemade piece of cotton cloth, it feels coarse."
- icon:
- sprite: Objects/Materials/materials.rsi
- state: cloth_3
objectType: Item
- type: construction
- name: straw hat
id: strawHat
graph: StrawHat
startNode: start
targetNode: strawhat
category: construction-category-clothing
- description: A fancy hat for hot days! Not recommended to wear near fires.
- icon:
- sprite: Clothing/Head/Hats/straw_hat.rsi
- state: icon
objectType: Item
- type: construction
- name: pipe bomb
id: pipebomb
graph: PipeBomb
startNode: start
targetNode: pipebomb
category: construction-category-weapons
objectType: Item
- description: An improvised explosive made from pipes and wire.
- icon:
- sprite: Objects/Weapons/Bombs/pipebomb.rsi
- state: icon
- type: construction
- name: rolling pin
id: rollingpin
graph: WoodenRollingPin
startNode: start
targetNode: rollingpin
category: construction-category-tools
objectType: Item
- description: A rolling pin, used for cooking and defending the kitchen.
- icon:
- sprite: Objects/Tools/rolling_pin.rsi
- state: icon
- type: construction
- name: pet carrier
id: PetCarrier
graph: PetCarrier
startNode: start
targetNode: petCarrier
category: construction-category-misc
objectType: Item
- description: Allows large animals to be carried comfortably.
- icon:
- sprite: Objects/Storage/petcarrier.rsi
- state: icon
- type: construction
- name: goliath hardsuit
id: HardsuitGoliath
graph: HardsuitGoliath
startNode: start
targetNode: hardsuitGoliath
category: construction-category-clothing
objectType: Item
- description: A lightweight hardsuit, adorned with a patchwork of thick, chitinous goliath hide.
- icon:
- sprite: Clothing/OuterClothing/Hardsuits/goliath.rsi
- state: icon
- type: construction
- name: potato battery
id: PowerCellPotato
graph: PowerCellPotato
startNode: start
targetNode: potatobattery
category: construction-category-misc
- description: A truly ingenious source of power.
- icon: { sprite: Objects/Power/power_cells.rsi, state: potato }
objectType: Item
- type: construction
- name: potato artificial intelligence
id: PotatoAI
graph: PotatoAI
startNode: start
targetNode: potatoai
category: construction-category-misc
- description: The potato happens to be the perfect power source for this chip.
- icon: { sprite: Objects/Fun/pai.rsi, state: icon-potato-off }
objectType: Item
-
+
- type: construction
- name: supercompact AI chip
id: PotatoAIChip
graph: PotatoAIChip
startNode: start
targetNode: potatoaichip
category: construction-category-misc
- description: A masterfully(?) crafted AI chip, requiring a similarly improvised power source.
- icon: { sprite: Objects/Misc/potatoai_chip.rsi, state: icon }
- objectType: Item
\ No newline at end of file
+ objectType: Item
- type: construction
- name: joint
id: smokeableJoint
graph: smokeableJoint
startNode: start
targetNode: joint
category: construction-category-misc
- description: "A roll of dried plant matter wrapped in thin paper."
- icon: { sprite: Objects/Consumable/Smokeables/Cannabis/joint.rsi, state: unlit-icon }
objectType: Item
-
+
- type: construction
- name: rainbow joint
id: smokeableJointRainbow
graph: smokeableJointRainbow
startNode: start
targetNode: jointRainbow
category: construction-category-misc
- description: "A roll of dried plant matter wrapped in thin paper."
- icon: { sprite: Objects/Consumable/Smokeables/Cannabis/joint.rsi, state: unlit-icon }
objectType: Item
- type: construction
- name: blunt
id: smokeableBlunt
graph: smokeableBlunt
startNode: start
targetNode: blunt
category: construction-category-misc
- description: "A roll of dried plant matter wrapped in a dried tobacco leaf."
- icon: { sprite: Objects/Consumable/Smokeables/Cannabis/blunt.rsi, state: unlit-icon }
objectType: Item
- type: construction
- name: rainbow blunt
id: smokeableBluntRainbow
graph: smokeableBluntRainbow
startNode: start
targetNode: bluntRainbow
category: construction-category-misc
- description: "A roll of dried plant matter wrapped in a dried tobacco leaf."
- icon: { sprite: Objects/Consumable/Smokeables/Cannabis/blunt.rsi, state: unlit-icon }
objectType: Item
- type: construction
- name: cigarette
id: smokeableCigarette
graph: smokeableCigarette
startNode: start
targetNode: cigarette
category: construction-category-misc
- description: "A roll of tobacco and nicotine."
- icon: { sprite: Objects/Consumable/Smokeables/Cigarettes/cigarette.rsi, state: unlit-icon }
objectType: Item
# I wanted to put a hand-grinder here but we need construction graphs that use non-consumed catalysts first.
- type: construction
- name: ground cannabis
id: smokeableGroundCannabis
graph: smokeableGroundCannabis
startNode: start
targetNode: ground
category: construction-category-misc
- description: "Ground cannabis, ready to take you on a trip."
- icon: { sprite: Objects/Misc/reagent_fillings.rsi, state: powderpile }
# color: darkgreen
objectType: Item
- type: construction
- name: ground rainbow cannabis
id: smokeableGroundCannabisRainbow
graph: smokeableGroundCannabisRainbow
startNode: start
targetNode: groundRainbow
category: construction-category-misc
- description: "Ground rainbow cannabis, ready to take you on a trip."
- icon: { sprite: Objects/Specific/Hydroponics/rainbow_cannabis.rsi, state: powderpile_rainbow }
objectType: Item
- type: construction
- name: ground tobacco
id: smokeableGroundTobacco
graph: smokeableGroundTobacco
startNode: start
targetNode: ground
category: construction-category-misc
- description: "Ground tobacco, perfect for hand-rolled cigarettes."
- icon: { sprite: Objects/Misc/reagent_fillings.rsi, state: powderpile }
# color: brown
objectType: Item
- type: construction
id: ClosetSteel
- name: closet
graph: ClosetSteel
startNode: start
targetNode: done
category: construction-category-storage
- description: A tall steel box that cannot be locked.
- icon: { sprite: Structures/Storage/closet.rsi, state: generic_icon }
objectType: Structure
- type: construction
id: ClosetSteelSecure
- name: secure closet
graph: ClosetSteelSecure
startNode: start
targetNode: done
category: construction-category-storage
- description: A tall steel box that can be locked.
- icon: { sprite: Structures/Storage/closet.rsi, state: secure_icon }
objectType: Structure
- type: construction
id: ClosetFreezer
- name: freezer
graph: ClosetFreezer
startNode: start
targetNode: done
category: construction-category-storage
- description: A tall steel box with freezing abilities.
- icon: { sprite: Structures/Storage/closet.rsi, state: freezer_icon }
objectType: Structure
- type: construction
id: GunSafe
- name: gun safe
graph: GunSafe
startNode: start
targetNode: done
category: construction-category-storage
- description: A durable gun safe that can be locked.
- icon: { sprite: Structures/Storage/closet.rsi, state: shotguncase }
objectType: Structure
- type: construction
id: ClosetWall
- name: wall closet
graph: ClosetWall
startNode: start
targetNode: done
category: construction-category-storage
- description: A standard-issue Nanotrasen storage unit, now on walls.
- icon: { sprite: Structures/Storage/wall_locker.rsi, state: generic_icon }
objectType: Structure
placementMode: SnapgridCenter
canRotate: true
# These should be lathe recipes but lathe code sucks so hard rn so they'll be crafted by hand.
- type: construction
- name: steel tile
id: TileSteel
graph: TileSteel
startNode: start
targetNode: steeltile
category: construction-category-tiles
- description: "Four steel station tiles."
- icon: { sprite: Objects/Tiles/tile.rsi, state: steel }
objectType: Item
- type: construction
- name: wood floor
id: TileWood
graph: TileWood
startNode: start
targetNode: woodtile
category: construction-category-tiles
- description: "Four pieces of wooden station flooring."
- icon: { sprite: Objects/Tiles/tile.rsi, state: wood }
objectType: Item
-
+
- type: construction
- name: filled brass plate
id: TileBrassFilled
graph: TilesBrass
startNode: start
targetNode: filledPlate
category: construction-category-tiles
- description: "Four pieces of brass station flooring, only compatible with brass plating."
- icon: { sprite: Objects/Tiles/tile.rsi, state: brass-filled }
objectType: Item
-
+
- type: construction
- name: smooth brass plate
id: TileBrassReebe
graph: TilesBrass
startNode: start
targetNode: reebe
category: construction-category-tiles
- description: "Four pieces of smooth brass station flooring, only compatible with brass plating."
- icon: { sprite: Objects/Tiles/tile.rsi, state: reebe }
objectType: Item
- type: construction
- name: white tile
id: TileWhite
graph: TileWhite
startNode: start
targetNode: whitetile
category: construction-category-tiles
- description: "Four white station tiles."
- icon: { sprite: Objects/Tiles/tile.rsi, state: white }
objectType: Item
- type: construction
- name: dark tile
id: TileDark
graph: TileDark
startNode: start
targetNode: darktile
category: construction-category-tiles
- description: "Four dark station tiles."
- icon: { sprite: Objects/Tiles/tile.rsi, state: dark }
objectType: Item
- type: construction
- name: flesh tile
id: TileFlesh
graph: TileFlesh
startNode: start
targetNode: fleshTile
category: construction-category-tiles
- description: "Four fleshy tiles."
- icon: { sprite: Objects/Tiles/tile.rsi, state: meat }
objectType: Item
-# - type: construction
-# name: techmaint floor
-# id: tileTechmaint
-# graph: tileTechmaint
-# startNode: start
-# targetNode: techmainttile
-# category: construction-category-tiles
-# description: "A piece of techmaint flooring."
-# icon: { sprite: Objects/Tiles/tile.rsi, state: steel_techfloor_grid }
-# objectType: Item
-#
-# - type: construction
-# name: freezer tile
-# id: tileFreezer
-# graph: tileFreezer
-# startNode: start
-# targetNode: freezertile
-# category: construction-category-tiles
-# description: "A freezer station tile."
-# icon: { sprite: Objects/Tiles/tile.rsi, state: showroom }
-# objectType: Item
-#
-# - type: construction
-# name: showroom tile
-# id: tileShowroom
-# graph: tileShowroom
-# startNode: start
-# targetNode: showroomtile
-# category: construction-category-tiles
-# description: "A showroom station tile."
-# icon: { sprite: Objects/Tiles/tile.rsi, state: showroom }
-# objectType: Item
-#
-# - type: construction
-# name: green-circuit floor
-# id: tileGCircuit
-# graph: tileGCircuit
-# startNode: start
-# targetNode: gcircuittile
-# category: construction-category-tiles
-# description: "A piece of green-circuit flooring."
-# icon: { sprite: Objects/Tiles/tile.rsi, state: gcircuit }
-# objectType: Item
-#
-# - type: construction
-# name: gold floor
-# id: tileGold
-# graph: tileGold
-# startNode: start
-# targetNode: goldtile
-# category: construction-category-tiles
-# description: "A piece of gold flooring."
-# icon: { sprite: Objects/Tiles/tile.rsi, state: gold }
-# objectType: Item
-#
-# - type: construction
-# name: reinforced tile
-# id: tileReinforced
-# graph: tileReinforced
-# startNode: start
-# targetNode: reinforcedtile
-# category: construction-category-tiles
-# description: "A reinforced station tile."
-# icon: { sprite: Objects/Tiles/tile.rsi, state: reinforced }
-# objectType: Item
-#
-# - type: construction
-# name: mono tile
-# id: tileMono
-# graph: tileMono
-# startNode: start
-# targetNode: monotile
-# category: construction-category-tiles
-# description: "A mono station tile."
-# icon: { sprite: Objects/Tiles/tile.rsi, state: white_monofloor }
-# objectType: Item
-#
-# - type: construction
-# name: linoleum floor
-# id: tileLino
-# graph: tileLino
-# startNode: start
-# targetNode: linotile
-# category: construction-category-tiles
-# description: "A piece of linoleum flooring."
-# icon: { sprite: Objects/Tiles/tile.rsi, state: white_monofloor }
-# objectType: Item
-#
-# - type: construction
-# name: hydro tile
-# id: tileHydro
-# graph: tileHydro
-# startNode: start
-# targetNode: hydrotile
-# category: construction-category-tiles
-# description: "A hydro station tile."
-# icon: { sprite: Objects/Tiles/tile.rsi, state: hydro }
-# objectType: Item
-#
-# - type: construction
-# name: dirty tile
-# id: tileDirty
-# graph: tileDirty
-# startNode: start
-# targetNode: dirtytile
-# category: construction-category-tiles
-# description: "A dirty station tile."
-# icon: { sprite: Objects/Tiles/tile.rsi, state: dirty }
-# objectType: Item
-
- type: construction
- name: large wood floor
id: TileWoodLarge
graph: TileWoodLarge
startNode: start
targetNode: woodtilelarge
category: construction-category-tiles
- description: "Four pieces of wooden station flooring."
- icon: { sprite: Objects/Tiles/tile.rsi, state: wood-large }
- objectType: Item
\ No newline at end of file
+ objectType: Item
- type: construction
- name: revenant plushie
id: PlushieGhostRevenant
graph: PlushieGhostRevenant
startNode: start
targetNode: plushie
category: construction-category-misc
objectType: Item
- description: A toy to scare the medbay with.
- icon:
- sprite: Mobs/Ghosts/revenant.rsi
- state: icon
- type: construction
- name: ian suit
id: ClothingOuterSuitIan
graph: ClothingOuterSuitIan
startNode: start
targetNode: suit
category: construction-category-misc
objectType: Item
- description: Make yourself look just like Ian!
- icon:
- sprite: Clothing/OuterClothing/Suits/iansuit.rsi
- state: icon
- type: construction
- name: web tile
id: TileWeb
graph: WebObjects
startNode: start
targetNode: tile
category: construction-category-tiles
- description: "Nice and smooth."
entityWhitelist:
tags:
- SpiderCraft
- icon:
- sprite: Objects/Tiles/web.rsi
- state: icon
objectType: Item
- type: construction
- name: web winter coat
id: ClothingOuterWinterWeb
graph: WebObjects
startNode: start
targetNode: coat
category: construction-category-clothing
- description: "Surprisingly warm and durable."
entityWhitelist:
tags:
- SpiderCraft
- icon:
- sprite: Clothing/OuterClothing/WinterCoats/coat.rsi
- state: WEB-icon
objectType: Item
- type: construction
- name: web jumpsuit
id: ClothingUniformJumpsuitWeb
graph: WebObjects
startNode: start
targetNode: jumpsuit
category: construction-category-clothing
- description: "At least it's something."
entityWhitelist:
tags:
- SpiderCraft
- icon:
- sprite: Clothing/Uniforms/Jumpsuit/web.rsi
- state: icon
objectType: Item
- type: construction
- name: web jumpskirt
id: ClothingUniformJumpskirtWeb
graph: WebObjects
startNode: start
targetNode: jumpskirt
category: construction-category-clothing
- description: "At least it's something."
entityWhitelist:
tags:
- SpiderCraft
- icon:
- sprite: Clothing/Uniforms/Jumpskirt/web.rsi
- state: icon
objectType: Item
- type: construction
- name: silk woven cloth
id: SilkWovenCloth
graph: WebObjects
startNode: start
targetNode: cloth
category: construction-category-materials
- description: "Feels just like cloth, strangely enough."
entityWhitelist:
tags:
- SpiderCraft
- icon:
- sprite: Objects/Materials/materials.rsi
- state: cloth_3
objectType: Item
- type: construction
- name: web shield
id: WebShield
graph: WebObjects
startNode: start
targetNode: shield
category: construction-category-clothing
- description: "It's thick enough to handle a few blows, but probably not heat."
entityWhitelist:
tags:
- SpiderCraft
- icon:
- sprite: Objects/Weapons/Melee/web-shield.rsi
- state: icon
objectType: Item
- type: construction
- name: web winter boots
id: ClothingShoesBootsWinterWeb
graph: WebObjects
startNode: start
targetNode: boots
category: construction-category-clothing
- description: "Tightly woven web should protect against the cold"
entityWhitelist:
tags:
- SpiderCraft
- icon:
- sprite: Clothing/Shoes/Boots/winterbootsweb.rsi
- state: icon
objectType: Item
- type: stack
id: Glass
- name: glass
+ name: stack-glass
icon: { sprite: /Textures/Objects/Materials/Sheets/glass.rsi, state: glass }
spawn: SheetGlass1
maxCount: 30
- type: stack
id: ReinforcedGlass
- name: reinforced glass
+ name: stack-reinforced-glass
icon: { sprite: /Textures/Objects/Materials/Sheets/glass.rsi, state: rglass }
spawn: SheetRGlass1
maxCount: 30
- type: stack
id: PlasmaGlass
- name: plasma glass
+ name: stack-plasma-glass
icon: { sprite: /Textures/Objects/Materials/Sheets/glass.rsi, state: pglass }
spawn: SheetPGlass1
maxCount: 30
- type: stack
id: ReinforcedPlasmaGlass
- name: reinforced plasma glass
+ name: stack-reinforced-plasma-glass
icon: { sprite: /Textures/Objects/Materials/Sheets/glass.rsi, state: rpglass }
spawn: SheetRPGlass1
maxCount: 30
- type: stack
id: UraniumGlass
- name: uranium glass
+ name: stack-uranium-glass
icon: { sprite: /Textures/Objects/Materials/Sheets/glass.rsi, state: uglass }
spawn: SheetUGlass1
maxCount: 30
- type: stack
id: ReinforcedUraniumGlass
- name: reinforced uranium glass
+ name: stack-reinforced-uranium-glass
icon: { sprite: /Textures/Objects/Materials/Sheets/glass.rsi, state: ruglass }
spawn: SheetRUGlass1
maxCount: 30
- type: stack
id: ClockworkGlass
- name: clockwork glass
+ name: stack-clockwork-glass
icon: { sprite: /Textures/Objects/Materials/Sheets/glass.rsi, state: cglass }
spawn: SheetClockworkGlass1
maxCount: 30
- type: stack
id: Steel
- name: steel
+ name: stack-steel
icon: { sprite: /Textures/Objects/Materials/Sheets/metal.rsi, state: steel }
spawn: SheetSteel1
maxCount: 30
- type: stack
id: Plasteel
- name: plasteel
+ name: stack-plasteel
icon: { sprite: /Textures/Objects/Materials/Sheets/metal.rsi, state: plasteel }
spawn: SheetPlasteel1
maxCount: 30
- type: stack
id: Brass
- name: brass
+ name: stack-brass
icon: { sprite: /Textures/Objects/Materials/Sheets/metal.rsi, state: brass }
spawn: SheetBrass1
maxCount: 30
- type: stack
id: Paper
- name: paper
+ name: stack-paper
icon: { sprite: /Textures/Objects/Materials/Sheets/other.rsi, state: paper }
spawn: SheetPaper1
maxCount: 30
- type: stack
id: Plasma
- name: plasma
+ name: stack-plasma
icon: { sprite: /Textures/Objects/Materials/Sheets/other.rsi, state: plasma }
spawn: SheetPlasma1
maxCount: 30
- type: stack
id: Plastic
- name: plastic
+ name: stack-plastic
icon: { sprite: /Textures/Objects/Materials/Sheets/other.rsi, state: plastic }
spawn: SheetPlastic1
maxCount: 30
- type: stack
id: Uranium
- name: uranium
+ name: stack-uranium
icon: { sprite: /Textures/Objects/Materials/Sheets/other.rsi, state: uranium }
spawn: SheetUranium1
maxCount: 30
- type: stack
id: Telecrystal
- name: telecrystal
+ name: stack-telecrystal
icon: Objects/Specific/Syndicate/telecrystal.rsi
spawn: Telecrystal1
- type: stack
id: Gold
- name: gold
+ name: stack-gold
icon: { sprite: "/Textures/Objects/Materials/ingots.rsi", state: gold }
spawn: IngotGold1
maxCount: 30
- type: stack
id: Silver
- name: silver
+ name: stack-silver
icon: { sprite: "/Textures/Objects/Materials/ingots.rsi", state: silver }
spawn: IngotSilver1
maxCount: 30
- type: stack
id: Biomass
- name: biomass
+ name: stack-biomass
icon: { sprite: /Textures/Objects/Misc/monkeycube.rsi, state: cube }
spawn: MaterialBiomass1
maxCount: 100
- type: stack
id: WoodPlank
- name: wood plank
+ name: stack-wood-plank
icon: { sprite: /Textures/Objects/Materials/materials.rsi, state: wood }
spawn: MaterialWoodPlank1
maxCount: 30
- type: stack
id: Cardboard
- name: cardboard
+ name: stack-cardboard
icon: { sprite: /Textures/Objects/Materials/materials.rsi, state: cardboard }
spawn: MaterialCardboard1
maxCount: 30
- type: stack
id: Cloth
- name: cloth
+ name: stack-cloth
icon: { sprite: /Textures/Objects/Materials/materials.rsi, state: cloth }
spawn: MaterialCloth1
maxCount: 30
- type: stack
id: Durathread
- name: durathread
+ name: stack-durathread
icon: { sprite: /Textures/Objects/Materials/materials.rsi, state: durathread }
spawn: MaterialDurathread1
maxCount: 30
- type: stack
id: Diamond
- name: diamond
+ name: stack-diamond
icon: { sprite: /Textures/Objects/Materials/materials.rsi, state: diamond }
spawn: MaterialDiamond1
maxCount: 30
- type: stack
id: Cotton
- name: cotton
+ name: stack-cotton
icon: { sprite: /Textures/Objects/Materials/materials.rsi, state: cotton }
spawn: MaterialCotton1
maxCount: 30
- type: stack
id: Pyrotton
- name: pyrotton
+ name: stack-pyrotton
icon: { sprite: /Textures/Objects/Materials/materials.rsi, state: pyrotton }
spawn: MaterialPyrotton1
maxCount: 30
- type: stack
id: Bananium
- name: bananium
+ name: stack-bananium
icon: { sprite: /Textures/Objects/Materials/materials.rsi, state: bananium }
spawn: MaterialBananium1
maxCount: 10
- type: stack
id: MeatSheets
- name: meat sheet
+ name: stack-meat-sheet
icon: { sprite: /Textures/Objects/Materials/Sheets/meaterial.rsi, state: meat }
spawn: MaterialSheetMeat1
maxCount: 30
- type: stack
id: WebSilk
- name: silk
+ name: stack-silk
icon: { sprite: /Textures/Objects/Materials/silk.rsi, state: icon }
spawn: MaterialWebSilk1
maxCount: 50
- type: stack
id: SpaceCarpTooth
- name: space carp tooth
- icon: { sprite: /Textures/Objects/Materials/Mob/carptooth.rsi, state: tooth}
+ name: stack-space-carp-tooth
+ icon: { sprite: /Textures/Objects/Materials/Mob/carptooth.rsi, state: tooth }
spawn: MaterialToothSpaceCarp1
maxCount: 30
- type: stack
id: SharkMinnowTooth
- name: sharkminnow tooth
- icon: { sprite: /Textures/Objects/Materials/Mob/sharktooth.rsi, state: tooth}
+ name: stack-sharkminnow-tooth
+ icon: { sprite: /Textures/Objects/Materials/Mob/sharktooth.rsi, state: tooth }
spawn: MaterialToothSharkminnow1
maxCount: 30
- type: stack
id: Bones
- name: bones
- icon: { sprite: /Textures/Objects/Materials/materials.rsi, state: bones}
+ name: stack-bones
+ icon: { sprite: /Textures/Objects/Materials/materials.rsi, state: bones }
spawn: MaterialBones1
maxCount: 30
- type: stack
id: Gunpowder
- name: gunpowder
+ name: stack-gunpowder
icon: { sprite: /Textures/Objects/Misc/reagent_fillings.rsi, state: powderpile }
spawn: MaterialGunpowder
maxCount: 60
- type: stack
id: GoliathHide
- name: goliath hide
+ name: stack-goliath-hide
icon: { sprite: /Textures/Objects/Materials/hide.rsi, state: goliath_hide }
spawn: MaterialGoliathHide1
maxCount: 30
- type: stack
id: GoldOre
- name: gold ore
+ name: stack-gold-ore
icon: { sprite: /Textures/Objects/Materials/ore.rsi, state: gold }
spawn: GoldOre1
maxCount: 30
-
+
- type: stack
id: DiamondOre
- name: rough diamond
+ name: stack-rough-diamond
icon: { sprite: /Textures/Objects/Materials/ore.rsi, state: diamond }
spawn: DiamondOre1
maxCount: 30
- type: stack
id: SteelOre
- name: iron ore
+ name: stack-iron-ore
icon: { sprite: /Textures/Objects/Materials/ore.rsi, state: iron }
spawn: SteelOre1
maxCount: 30
- type: stack
id: PlasmaOre
- name: plasma ore
+ name: stack-plasma-ore
icon: { sprite: /Textures/Objects/Materials/ore.rsi, state: plasma }
spawn: PlasmaOre1
maxCount: 30
- type: stack
id: SilverOre
- name: silver ore
+ name: stack-silver-ore
icon: { sprite: /Textures/Objects/Materials/ore.rsi, state: silver }
spawn: SilverOre1
maxCount: 30
- type: stack
id: SpaceQuartz
- name: space quartz
+ name: stack-space-quartz
icon: { sprite: /Textures/Objects/Materials/ore.rsi, state: spacequartz }
spawn: SpaceQuartz1
maxCount: 30
- type: stack
id: UraniumOre
- name: uranium ore
+ name: stack-uranium-ore
icon: { sprite: /Textures/Objects/Materials/ore.rsi, state: uranium }
spawn: UraniumOre1
maxCount: 30
-
- type: stack
id: BananiumOre
- name: bananium ore
+ name: stack-bananium-ore
icon: { sprite: /Textures/Objects/Materials/ore.rsi, state: bananium }
spawn: BananiumOre1
maxCount: 30
- type: stack
id: Coal
- name: coal
+ name: stack-coal
icon: { sprite: /Textures/Objects/Materials/ore.rsi, state: coal }
spawn: Coal1
maxCount: 30
- type: stack
id: SaltOre
- name: salt
+ name: stack-salt
icon: { sprite: /Textures/Objects/Materials/ore.rsi, state: salt }
spawn: Salt1
maxCount: 30
- type: stack
id: MetalRod
- name: rods
+ name: stack-rods
icon: { sprite: /Textures/Objects/Materials/parts.rsi, state: rods }
spawn: PartRodMetal1
maxCount: 30
- type: stack
id: Pancake
- name: pancake
+ name: stack-pancake
spawn: FoodBakedPancake
maxCount: 9
- type: stack
id: PancakeBb
- name: blueberry pancake
+ name: stack-blueberry-pancake
spawn: FoodBakedPancakeBb
maxCount: 9
- type: stack
id: PancakeCc
- name: chocolate chip pancake
+ name: stack-chocolate-chip-pancake
spawn: FoodBakedPancakeCc
maxCount: 9
- type: stack
id: PizzaBox
- name: pizza box
+ name: stack-pizza-box
icon: { sprite: Objects/Consumable/Food/Baked/pizza.rsi, state: box }
spawn: FoodBoxPizza
maxCount: 30
- type: stack
id: PaperRolling
- name: rolling paper
+ name: stack-rolling-paper
icon: { sprite: /Textures/Objects/Consumable/Smokeables/Cigarettes/paper.rsi, state: cigpaper }
spawn: PaperRolling
maxCount: 5
- type: stack
id: CigaretteFilter
- name: cigarette filter
+ name: stack-cigarette-filter
icon: { sprite: /Textures/Objects/Consumable/Smokeables/Cigarettes/paper.rsi, state: cigfilter }
spawn: CigaretteFilter
maxCount: 5
- type: stack
id: GroundTobacco
- name: ground tobacco
+ name: stack-ground-tobacco
icon: { sprite: /Textures/Objects/Misc/reagent_fillings.rsi, state: powderpile }
spawn: GroundTobacco
maxCount: 5
- type: stack
id: GroundCannabis
- name: ground cannabis
+ name: stack-ground-cannabis
icon: { sprite: /Textures/Objects/Misc/reagent_fillings.rsi, state: powderpile }
spawn: GroundCannabis
maxCount:
- type: stack
id: GroundCannabisRainbow
- name: ground rainbow cannabis
+ name: stack-ground-rainbow-cannabis
icon: { sprite: /Textures/Objects/Specific/Hydroponics/rainbow_cannabis.rsi, state: powderpile_rainbow }
spawn: GroundCannabisRainbow
maxCount:
- type: stack
id: LeavesTobaccoDried
- name: dried tobacco leaves
+ name: stack-dried-tobacco-leaves
icon: { sprite: /Textures/Objects/Specific/Hydroponics/tobacco.rsi, state: dried }
spawn: LeavesTobaccoDried
maxCount: 5
- type: stack
id: LeavesCannabisDried
- name: dried cannabis leaves
+ name: stack-dried-cannabis-leaves
icon: { sprite: /Textures/Objects/Specific/Hydroponics/tobacco.rsi, state: dried }
spawn: LeavesCannabisDried
maxCount: 5
- type: stack
id: LeavesCannabisRainbowDried
- name: dried rainbow cannabis leaves
+ name: stack-dried-rainbow-cannabis-leaves
icon: { sprite: /Textures/Objects/Specific/Hydroponics/rainbow_cannabis.rsi, state: dried }
spawn: LeavesCannabisRainbowDried
# they're uninflated by default so they're tiny
- type: stack
id: InflatableWall
- name: inflatable wall
+ name: stack-inflatable-wall
spawn: InflatableWallStack1
maxCount: 10
- type: stack
id: InflatableDoor
- name: inflatable door
+ name: stack-inflatable-door
spawn: InflatableDoorStack1
maxCount: 4
- type: stack
id: FloorTileDark
- name: dark tile
+ name: stack-dark-tile
spawn: FloorTileItemDark
maxCount: 30
- type: stack
id: FloorTileDarkDiagonalMini
- name: dark steel diagonal mini tile
+ name: stack-dark-steel-diagonal-mini-tile
spawn: FloorTileItemDarkDiagonalMini
maxCount: 30
- type: stack
id: FloorTileDarkDiagonal
- name: dark steel diagonal tile
+ name: stack-dark-steel-diagonal-tile
spawn: FloorTileItemDarkDiagonal
maxCount: 30
- type: stack
id: FloorTileDarkHerringbone
- name: dark steel herringbone
+ name: stack-dark-steel-herringbone
spawn: FloorTileItemDarkHerringbone
maxCount: 30
- type: stack
id: FloorTileDarkMini
- name: dark steel mini tile
+ name: stack-dark-steel-mini-tile
spawn: FloorTileItemDarkMini
maxCount: 30
- type: stack
id: FloorTileDarkMono
- name: dark steel mono tile
+ name: stack-dark-steel-mono-tile
spawn: FloorTileItemDarkMono
maxCount: 30
- type: stack
id: FloorTileDarkPavement
- name: dark steel pavement
+ name: stack-dark-steel-pavement
spawn: FloorTileItemDarkPavement
maxCount: 30
- type: stack
id: FloorTileDarkPavementVertical
- name: dark steel vertical pavement
+ name: stack-dark-steel-vertical-pavement
spawn: FloorTileItemDarkPavementVertical
maxCount: 30
- type: stack
id: FloorTileDarkOffset
- name: offset dark steel tile
+ name: stack-offset-dark-steel-tile
spawn: FloorTileItemDarkOffset
maxCount: 30
- type: stack
id: FloorTileSteel
- name: steel tile
+ name: stack-steel-tile
spawn: FloorTileItemSteel
maxCount: 30
- type: stack
id: FloorTileSteelOffset
- name: offset steel tile
+ name: stack-offset-steel-tile
spawn: FloorTileItemSteelOffset
maxCount: 30
- type: stack
id: FloorTileSteelDiagonalMini
- name: steel diagonal mini tile
+ name: stack-steel-diagonal-mini-tile
spawn: FloorTileItemSteelDiagonalMini
maxCount: 30
- type: stack
id: FloorTileSteelDiagonal
- name: steel diagonal tile
+ name: stack-steel-diagonal-tile
spawn: FloorTileItemSteelDiagonal
maxCount: 30
- type: stack
id: FloorTileSteelHerringbone
- name: steel herringbone
+ name: stack-steel-herringbone
spawn: FloorTileItemSteelHerringbone
maxCount: 30
- type: stack
id: FloorTileSteelMini
- name: steel mini tile
+ name: stack-steel-mini-tile
spawn: FloorTileItemSteelMini
maxCount: 30
- type: stack
id: FloorTileSteelMono
- name: steel mono tile
+ name: stack-steel-mono-tile
spawn: FloorTileItemSteelMono
maxCount: 30
- type: stack
id: FloorTileSteelPavement
- name: steel pavement
+ name: stack-steel-pavement
spawn: FloorTileItemSteelPavement
maxCount: 30
- type: stack
id: FloorTileSteelPavementVertical
- name: steel vertical pavement
+ name: stack-steel-vertical-pavement
spawn: FloorTileItemSteelPavementVertical
maxCount: 30
- type: stack
id: FloorTileWhite
- name: white tile
+ name: stack-white-tile
spawn: FloorTileItemWhite
maxCount: 30
- type: stack
id: FloorTileWhiteOffset
- name: offset white steel tile
+ name: stack-offset-white-steel-tile
spawn: FloorTileItemWhiteOffset
maxCount: 30
- type: stack
id: FloorTileWhiteDiagonalMini
- name: white steel diagonal mini tile
+ name: stack-white-steel-diagonal-mini-tile
spawn: FloorTileItemWhiteDiagonalMini
maxCount: 30
- type: stack
id: FloorTileWhiteDiagonal
- name: white steel diagonal tile
+ name: stack-white-steel-diagonal-tile
spawn: FloorTileItemWhiteDiagonal
maxCount: 30
- type: stack
id: FloorTileWhiteHerringbone
- name: white steel herringbone
+ name: stack-white-steel-herringbone
spawn: FloorTileItemWhiteHerringbone
maxCount: 30
- type: stack
id: FloorTileWhiteMini
- name: white steel mini tile
+ name: stack-white-steel-mini-tile
spawn: FloorTileItemWhiteMini
maxCount: 30
- type: stack
id: FloorTileWhiteMono
- name: white steel mono tile
+ name: stack-white-steel-mono-tile
spawn: FloorTileItemWhiteMono
maxCount: 30
- type: stack
id: FloorTileWhitePavement
- name: white steel pavement
+ name: stack-white-steel-pavement
spawn: FloorTileItemWhitePavement
maxCount: 30
- type: stack
id: FloorTileWhitePavementVertical
- name: white steel vertical pavement
+ name: stack-white-steel-vertical-pavement
spawn: FloorTileItemWhitePavementVertical
maxCount: 30
- type: stack
id: FloorTileSteelCheckerDark
- name: steel dark checker tile
+ name: stack-steel-dark-checker-tile
spawn: FloorTileItemSteelCheckerDark
maxCount: 30
- type: stack
id: FloorTileSteelCheckerLight
- name: steel light checker tile
+ name: stack-steel-light-checker-tile
spawn: FloorTileItemSteelCheckerLight
maxCount: 30
- type: stack
id: FloorTileMetalDiamond
- name: steel tile
+ name: stack-steel-tile
spawn: FloorTileItemMetalDiamond
maxCount: 30
- type: stack
id: FloorTileWood
- name: wood floor
+ name: stack-wood-floor
spawn: FloorTileItemWood
maxCount: 30
- type: stack
id: FloorTileTechmaint
- name: techmaint floor
+ name: stack-techmaint-floor
spawn: FloorTileItemTechmaint
maxCount: 30
- type: stack
id: FloorTileFreezer
- name: freezer tile
+ name: stack-freezer-tile
spawn: FloorTileItemFreezer
maxCount: 30
- type: stack
id: FloorTileShowroom
- name: showroom tile
+ name: stack-showroom-tile
spawn: FloorTileItemShowroom
maxCount: 30
- type: stack
id: FloorTileGCircuit
- name: green-circuit floor
+ name: stack-green-circuit-floor
spawn: FloorTileItemGCircuit
maxCount: 30
- type: stack
id: FloorTileGold
- name: gold floor
+ name: stack-gold-floor
spawn: FloorTileItemGold
maxCount: 30
- type: stack
id: FloorTileMono
- name: mono tile
+ name: stack-mono-tile
spawn: FloorTileItemMono
maxCount: 30
- type: stack
id: FloorTileBrassFilled
- name: filled brass plate
+ name: stack-filled-brass-plate
spawn: FloorTileItemBrassFilled
maxCount: 30
- type: stack
id: FloorTileBrassReebe
- name: smooth brass plate
+ name: stack-smooth-brass-plate
spawn: FloorTileItemBrassReebe
maxCount: 30
- type: stack
id: FloorTileLino
- name: linoleum floor
+ name: stack-linoleum-floor
spawn: FloorTileItemLino
maxCount: 30
- type: stack
id: FloorTileHydro
- name: hydro tile
+ name: stack-hydro-tile
spawn: FloorTileItemHydro
maxCount: 30
- type: stack
id: FloorTileLime
- name: lime tile
+ name: stack-lime-tile
spawn: FloorTileItemLime
maxCount: 30
- type: stack
id: FloorTileDirty
- name: dirty tile
+ name: stack-dirty-tile
spawn: FloorTileItemDirty
maxCount: 30
- type: stack
id: FloorTileStackShuttleWhite
- name: white shuttle tile
+ name: stack-white-shuttle-tile
spawn: FloorTileItemShuttleWhite
maxCount: 30
- type: stack
id: FloorTileStackShuttleBlue
- name: blue shuttle tile
+ name: stack-blue-shuttle-tile
spawn: FloorTileItemShuttleBlue
maxCount: 30
- type: stack
id: FloorTileStackShuttleOrange
- name: orange shuttle tile
+ name: stack-orange-shuttle-tile
spawn: FloorTileItemShuttleOrange
maxCount: 30
- type: stack
id: FloorTileStackShuttlePurple
- name: purple shuttle tile
+ name: stack-purple-shuttle-tile
spawn: FloorTileItemShuttlePurple
maxCount: 30
- type: stack
id: FloorTileStackShuttleRed
- name: red shuttle tile
+ name: stack-red-shuttle-tile
spawn: FloorTileItemShuttleRed
maxCount: 30
- type: stack
id: FloorTileStackShuttleGrey
- name: grey shuttle tile
+ name: stack-grey-shuttle-tile
spawn: FloorTileItemShuttleGrey
maxCount: 30
- type: stack
id: FloorTileStackShuttleBlack
- name: black shuttle tile
+ name: stack-black-shuttle-tile
spawn: FloorTileItemShuttleBlack
maxCount: 30
- type: stack
id: FloorTileStackEighties
- name: eighties floor tile
+ name: stack-eighties-floor-tile
spawn: FloorTileItemEighties
maxCount: 30
- type: stack
id: FloorTileStackArcadeBlue
- name: blue arcade tile
+ name: stack-blue-arcade-tile
spawn: FloorTileItemArcadeBlue
maxCount: 30
- type: stack
id: FloorTileStackArcadeBlue2
- name: blue arcade tile
+ name: stack-blue-arcade-tile
spawn: FloorTileItemArcadeBlue2
maxCount: 30
- type: stack
id: FloorTileStackArcadeRed
- name: red arcade tile
+ name: stack-red-arcade-tile
spawn: FloorTileItemArcadeRed
maxCount: 30
- type: stack
id: FloorCarpetRed
- name: red carpet tile
+ name: stack-red-carpet-tile
spawn: FloorCarpetItemRed
maxCount: 30
- type: stack
id: FloorCarpetBlack
- name: block carpet tile
+ name: stack-block-carpet-tile
spawn: FloorCarpetItemBlack
maxCount: 30
- type: stack
id: FloorCarpetBlue
- name: blue carpet tile
+ name: stack-blue-carpet-tile
spawn: FloorCarpetItemBlue
maxCount: 30
- type: stack
id: FloorCarpetGreen
- name: green carpet tile
+ name: stack-green-carpet-tile
spawn: FloorCarpetItemGreen
maxCount: 30
- type: stack
id: FloorCarpetOrange
- name: orange carpet tile
+ name: stack-orange-carpet-tile
spawn: FloorCarpetItemOrange
maxCount: 30
- type: stack
id: FloorCarpetSkyBlue
- name: skyblue carpet tile
+ name: stack-skyblue-carpet-tile
spawn: FloorCarpetItemSkyBlue
maxCount: 30
- type: stack
id: FloorCarpetPurple
- name: purple carpet tile
+ name: stack-purple-carpet-tile
spawn: FloorCarpetItemPurple
maxCount: 30
- type: stack
id: FloorCarpetPink
- name: pink carpet tile
+ name: stack-pink-carpet-tile
spawn: FloorCarpetItemPink
maxCount: 30
- type: stack
id: FloorCarpetCyan
- name: cyan carpet tile
+ name: stack-cyan-carpet-tile
spawn: FloorCarpetItemCyan
maxCount: 30
- type: stack
id: FloorCarpetWhite
- name: white carpet tile
+ name: stack-white-carpet-tile
spawn: FloorCarpetItemWhite
maxCount: 30
- type: stack
id: FloorTileStackCarpetClown
- name: clown carpet tile
+ name: stack-clown-carpet-tile
spawn: FloorTileItemCarpetClown
maxCount: 30
- type: stack
id: FloorTileStackCarpetOffice
- name: office carpet tile
+ name: stack-office-carpet-tile
spawn: FloorTileItemCarpetOffice
maxCount: 30
- type: stack
id: FloorTileStackBoxing
- name: boxing ring tile
+ name: stack-boxing-ring-tile
spawn: FloorTileItemBoxing
maxCount: 30
- type: stack
id: FloorTileStackGym
- name: gym floor tile
+ name: stack-gym-floor-tile
spawn: FloorTileItemGym
maxCount: 30
- type: stack
id: FloorTileElevatorShaft
- name: elevator shaft tile
+ name: stack-elevator-shaft-tile
spawn: FloorTileItemElevatorShaft
maxCount: 30
- type: stack
id: FloorTileRockVault
- name: rock vault tile
+ name: stack-rock-vault-tile
spawn: FloorTileItemRockVault
maxCount: 30
- type: stack
id: FloorTileBlue
- name: blue floor tile
+ name: stack-blue-floor-tile
spawn: FloorTileItemBlue
maxCount: 30
- type: stack
id: FloorTileMining
- name: mining floor tile
+ name: stack-mining-floor-tile
spawn: FloorTileItemMining
maxCount: 30
- type: stack
id: FloorTileMiningDark
- name: dark mining floor tile
+ name: stack-dark-mining-floor-tile
spawn: FloorTileItemMiningDark
maxCount: 30
- type: stack
id: FloorTileMiningLight
- name: light mining floor tile
+ name: stack-light-mining-floor-tile
spawn: FloorTileItemMiningLight
maxCount: 30
- type: stack
id: FloorTileBar
- name: item bar floor tile
+ name: stack-item-bar-floor-tile
spawn: FloorTileItemBar
maxCount: 30
- type: stack
id: FloorTileClown
- name: clown floor tile
+ name: stack-clown-floor-tile
spawn: FloorTileItemClown
maxCount: 30
- type: stack
id: FloorTileMime
- name: mime floor tile
+ name: stack-mime-floor-tile
spawn: FloorTileItemMime
maxCount: 30
- type: stack
id: FloorTileKitchen
- name: kitchen floor tile
+ name: stack-kitchen-floor-tile
spawn: FloorTileItemKitchen
maxCount: 30
- type: stack
id: FloorTileLaundry
- name: laundry floor tile
+ name: stack-laundry-floor-tile
spawn: FloorTileItemLaundry
maxCount: 30
- type: stack
id: FloorTileConcrete
- name: concrete tile
+ name: stack-concrete-tile
spawn: FloorTileItemGrayConcrete
maxCount: 30
- type: stack
id: FloorTileConcreteMono
- name: concrete mono tile
+ name: stack-concrete-mono-tile
spawn: FloorTileItemConcreteMono
maxCount: 30
- type: stack
id: FloorTileConcreteSmooth
- name: concrete smooth
+ name: stack-concrete-smooth
spawn: FloorTileItemConcreteSmooth
maxCount: 30
- type: stack
id: FloorTileGrayConcrete
- name: gray concrete tile
+ name: stack-gray-concrete-tile
spawn: FloorTileItemGrayConcrete
maxCount: 30
- type: stack
id: FloorTileGrayConcreteMono
- name: gray concrete mono tile
+ name: stack-gray-concrete-mono-tile
spawn: FloorTileItemGrayConcreteMono
maxCount: 30
- type: stack
id: FloorTileGrayConcreteSmooth
- name: gray concrete smooth
+ name: stack-gray-concrete-smooth
spawn: FloorTileItemGrayConcreteSmooth
maxCount: 30
- type: stack
id: FloorTileOldConcrete
- name: old concrete tile
+ name: stack-old-concrete-tile
spawn: FloorTileItemOldConcrete
maxCount: 30
- type: stack
id: FloorTileOldConcreteMono
- name: old concrete mono tile
+ name: stack-old-concrete-mono-tile
spawn: FloorTileItemOldConcreteMono
maxCount: 30
- type: stack
id: FloorTileOldConcreteSmooth
- name: old concrete smooth
+ name: stack-old-concrete-smooth
spawn: FloorTileItemOldConcreteSmooth
maxCount: 30
- type: stack
id: FloorTileSilver
- name: silver floor tile
+ name: stack-silver-floor-tile
spawn: FloorTileItemSilver
maxCount: 30
- type: stack
id: FloorTileBCircuit
- name: bcircuit floor tile
+ name: stack-bcircuit-floor-tile
spawn: FloorTileItemBCircuit
maxCount: 30
- type: stack
id: FloorTileRCircuit
- name: red-circuit floor
+ name: stack-red-circuit-floor
spawn: FloorTileItemRCircuit
maxCount: 30
- type: stack
id: FloorTileGrass
- name: grass floor tile
+ name: stack-grass-floor-tile
spawn: FloorTileItemGrass
maxCount: 30
- type: stack
id: FloorTileGrassJungle
- name: grass jungle floor tile
+ name: stack-grass-jungle-floor-tile
spawn: FloorTileItemGrassJungle
maxCount: 30
- type: stack
id: FloorTileSnow
- name: snow floor tile
+ name: stack-snow-floor-tile
spawn: FloorTileItemSnow
maxCount: 30
- type: stack
id: FloorTileWoodPattern
- name: wood pattern floor
+ name: stack-wood-patter-floor
spawn: FloorTileItemWoodPattern
maxCount: 30
- type: stack
id: FloorTileFlesh
- name: flesh floor
+ name: stack-flesh-floor
spawn: FloorTileItemFlesh
maxCount: 30
- type: stack
id: FloorTileSteelMaint
- name: steel maint floor
+ name: stack-steel-maint-floor
spawn: FloorTileItemSteelMaint
maxCount: 30
- type: stack
id: FloorTileGratingMaint
- name: grating maint floor
+ name: stack-grating-maint-floor
spawn: FloorTileItemGratingMaint
maxCount: 30
- type: stack
id: FloorTileWeb
- name: web tile
+ name: stack-web-tile
spawn: FloorTileItemWeb
maxCount: 30
# Faux science tiles
- type: stack
id: FloorTileAstroGrass
- name: astro-grass floor
+ name: stack-astro-grass-floor
spawn: FloorTileItemAstroGrass
maxCount: 30
- type: stack
id: FloorTileMowedAstroGrass
- name: mowed astro-grass floor
+ name: stack-mowed-astro-grass-floor
spawn: FloorTileItemMowedAstroGrass
maxCount: 30
- type: stack
id: FloorTileJungleAstroGrass
- name: jungle astro-grass floor
+ name: stack-jungle-astro-grass-floor
spawn: FloorTileItemJungleAstroGrass
maxCount: 30
- type: stack
id: FloorTileAstroIce
- name: astro-ice floor
+ name: stack-astro-ice-floor
spawn: FloorTileItemAstroIce
maxCount: 30
- type: stack
id: FloorTileAstroSnow
- name: astro-snow floor
+ name: stack-astro-snow-floor
spawn: FloorTileItemAstroSnow
maxCount: 30
- type: stack
id: FloorTileAstroAsteroidSand
- name: asteroid astro-sand floor
+ name: stack-asteroid-astro-sand-floor
spawn: FloorTileItemAstroAsteroidSand
maxCount: 30
- type: stack
id: FloorTileWoodLarge
- name: large wood floor
+ name: stack-large-wood-floor
spawn: FloorTileItemWoodLarge
maxCount: 30
- type: stack
id: Ointment
- name: ointment
+ name: stack-ointment
icon: { sprite: "/Textures/Objects/Specific/Medical/medical.rsi", state: ointment }
spawn: Ointment
maxCount: 10
- type: stack
id: AloeCream
- name: aloe cream
+ name: stack-aloe-cream
icon: { sprite: "/Textures/Objects/Specific/Hydroponics/aloe.rsi", state: cream }
spawn: AloeCream
maxCount: 10
- type: stack
id: Gauze
- name: gauze
+ name: stack-gauze
icon: { sprite: "/Textures/Objects/Specific/Medical/medical.rsi", state: gauze }
spawn: Gauze
maxCount: 10
- type: stack
id: Brutepack
- name: brutepack
+ name: stack-brutepack
icon: { sprite: "/Textures/Objects/Specific/Medical/medical.rsi", state: gauze }
spawn: Brutepack
maxCount: 10
- type: stack
id: Bloodpack
- name: bloodpack
+ name: stack-bloodpack
icon: { sprite: "/Textures/Objects/Specific/Medical/medical.rsi", state: bloodpack }
spawn: Bloodpack
maxCount: 10
- type: stack
id: MedicatedSuture
- name: medicated-suture
+ name: stack-medicated-suture
icon: {sprite: "/Textures/Objects/Specific/Medical/medical.rsi", state: medicated-suture }
spawn: MedicatedSuture
maxCount: 10
- type: stack
id: RegenerativeMesh
- name: regenerative-mesh
+ name: stack-regenerative-mesh
icon: {sprite: "/Textures/Objects/Specific/Medical/medical.rsi", state: regenerative-mesh}
spawn: RegenerativeMesh
maxCount: 10
- type: stack
id: Cable
- name: lv cable
+ name: stack-lv-cable
icon: { sprite: "/Textures/Objects/Tools/cable-coils.rsi", state: coil-30 }
spawn: CableApcStack1
maxCount: 30
- type: stack
id: CableMV
- name: mv cable
+ name: stack-mv-cable
icon: { sprite: "/Textures/Objects/Tools/cable-coils.rsi", state: coilmv-30 }
spawn: CableMVStack1
maxCount: 30
- type: stack
id: CableHV
- name: hv cable
+ name: stack-hv-cable
icon: { sprite: "/Textures/Objects/Tools/cable-coils.rsi", state: coilhv-30 }
spawn: CableHVStack1
maxCount: 30
- type: stack
id: ArtifactFragment
- name: artifact fragment
+ name: stack-artifact-fragment
spawn: ArtifactFragment1
maxCount: 30
- type: stack
id: Capacitor
- name: capacitor
+ name: stack-capacitor
icon: { sprite: /Textures/Objects/Misc/stock_parts.rsi, state: capacitor }
spawn: CapacitorStockPart
maxCount: 10
- type: stack
id: Manipulator
- name: micro manipulator
+ name: stack-micro-manipulator
spawn: MicroManipulatorStockPart
maxCount: 10
- type: stack
id: MatterBin
- name: matter bin
+ name: stack-matter-bin
spawn: MatterBinStockPart
maxCount: 10