Localizable craftmenu (#32339)

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

* Deleting unnecessary fields

* Deleting unnecessary fields

* Added suffix field

* Added override via localization keys

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

* Fix suffix

* Fix construction ghosts... maybe

* Remove suffix from UI

* Suffixes have been removed from prototypes

* Added a description for the secret door

* Fix search..?

* The Icon field of ConstructionPrototype has been removed

* StackPrototypes used in the construction menu have been localized

* TagConstructionGraphStep used in the construction menu have been localized

* The search bar has been localized

* Fix localization and prototypes

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

* Fix crooked merge grid of the crafting menu.

* Localization update

* Fix cyborg graph

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

This reverts commit 97749483542c2d6272bda16edf49612c69a0761a.

* Fix loc

* fix merge

* Fix upstream

* Some of the logic has been moved to Shared

* fix

* Small adjustments

* Very small change

---------

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

View File

@@ -1,8 +1,10 @@
using System.Linq;
using 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
{
@@ -45,7 +47,14 @@ 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();
}
}
}

View File

@@ -1,11 +1,10 @@
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;
@@ -15,6 +14,7 @@ using Robust.Shared.Input.Binding;
using Robust.Shared.Map;
using Robust.Shared.Player;
using Robust.Shared.Prototypes;
using Robust.Shared.Utility;
namespace Content.Client.Construction
{
@@ -25,7 +25,6 @@ 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!;
@@ -33,6 +32,8 @@ namespace Content.Client.Construction
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 />
@@ -40,6 +41,8 @@ namespace Content.Client.Construction
{
base.Initialize();
WarmupRecipesCache();
UpdatesOutsidePrediction = true;
SubscribeLocalEvent<LocalPlayerAttachedEvent>(HandlePlayerAttached);
SubscribeNetworkEvent<AckStructureConstructionMessage>(HandleAckStructure);
@@ -63,6 +66,77 @@ namespace Content.Client.Construction
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;
@@ -88,7 +162,7 @@ namespace Content.Client.Construction
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)))
@@ -97,7 +171,7 @@ namespace Content.Client.Construction
"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];
@@ -198,6 +272,9 @@ namespace Content.Client.Construction
return false;
}
if (!TryGetRecipePrototype(prototype.ID, out var targetProtoId) || !PrototypeManager.TryIndex(targetProtoId, out EntityPrototype? targetProto))
return false;
if (GhostPresent(loc))
return false;
@@ -214,16 +291,43 @@ namespace Content.Client.Construction
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(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);
sprite.AddBlankLayer(0);
sprite.LayerSetSprite(0, icon.Icon);
sprite.LayerSetShader(0, "unshaded");
sprite.LayerSetVisible(0, true);
}
else if (targetProto.Components.TryGetValue("Sprite", out _))
{
var dummy = EntityManager.SpawnEntity(targetProtoId, MapCoordinates.Nullspace);
var targetSprite = EntityManager.EnsureComponent<SpriteComponent>(dummy);
EntityManager.System<AppearanceSystem>().OnChangeData(dummy, targetSprite);
for (var i = 0; i < targetSprite.AllLayers.Count(); i++)
{
if (!targetSprite[i].Visible || !targetSprite[i].RsiState.IsValid)
continue;
var rsi = targetSprite[i].Rsi ?? targetSprite.BaseRSI;
if (rsi is null || !rsi.TryGetState(targetSprite[i].RsiState, out var state) ||
state.StateId.Name is null)
continue;
sprite.AddBlankLayer(i);
sprite.LayerSetSprite(i, new SpriteSpecifier.Rsi(rsi.Path, state.StateId.Name));
sprite.LayerSetShader(i, "unshaded");
sprite.LayerSetVisible(i, true);
}
EntityManager.DeleteEntity(dummy);
}
else
return false;
if (prototype.CanBuildInImpassable)
EnsureComp<WallMountComponent>(ghost.Value).Arc = new(Math.Tau);

View File

@@ -1,11 +1,12 @@
<DefaultWindow xmlns="https://spacestation14.io">
<DefaultWindow xmlns="https://spacestation14.io"
xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls">
<BoxContainer Orientation="Horizontal" HorizontalExpand="True">
<BoxContainer Orientation="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>
@@ -18,7 +19,7 @@
<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"/>

View File

@@ -1,14 +1,11 @@
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
{
@@ -28,7 +25,7 @@ namespace Content.Client.Construction.UI
bool GridViewButtonPressed { get; set; }
bool BuildButtonPressed { get; set; }
ItemList Recipes { get; }
ListContainer Recipes { get; }
ItemList RecipeStepList { get; }
@@ -36,14 +33,14 @@ namespace Content.Client.Construction.UI
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
@@ -94,8 +91,36 @@ namespace Content.Client.Construction.UI
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]));
@@ -121,7 +146,7 @@ namespace Content.Client.Construction.UI
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;
@@ -133,13 +158,17 @@ namespace Content.Client.Construction.UI
}
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");
@@ -150,9 +179,11 @@ namespace Content.Client.Construction.UI
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;
}
}

View File

@@ -10,10 +10,8 @@ using Robust.Client.Placement;
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
{
@@ -30,18 +28,20 @@ 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;
@@ -98,15 +98,18 @@ namespace Content.Client.Construction.UI
_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;
};
@@ -117,7 +120,7 @@ namespace Content.Client.Construction.UI
OnViewPopulateRecipes(_constructionView, (string.Empty, string.Empty));
}
public void OnHudCraftingButtonToggled(ButtonToggledEventArgs args)
public void OnHudCraftingButtonToggled(BaseButton.ButtonToggledEventArgs args)
{
WindowOpen = args.Pressed;
}
@@ -139,7 +142,7 @@ namespace Content.Client.Construction.UI
_constructionView.ResetPlacement();
}
private void OnViewRecipeSelected(object? sender, ItemList.Item? item)
private void OnViewRecipeSelected(object? sender, ConstructionMenu.ConstructionMenuListData? item)
{
if (item is null)
{
@@ -148,12 +151,15 @@ namespace Content.Client.Construction.UI
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)
{
@@ -163,62 +169,21 @@ namespace Content.Client.Construction.UI
}
_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 isEmptyCategory = string.IsNullOrEmpty(category) || category == _forAllCategoryName;
if (isEmptyCategory)
_selectedCategory = string.Empty;
else
_selectedCategory = category;
foreach (var recipe in _prototypeManager.EnumeratePrototypes<ConstructionPrototype>())
{
if (recipe.Hide)
continue;
if (_playerManager.LocalSession == null
|| _playerManager.LocalEntity == null
|| _whitelistSystem.IsWhitelistFail(recipe.EntityWhitelist, _playerManager.LocalEntity.Value))
continue;
if (!string.IsNullOrEmpty(search))
{
if (!recipe.Name.ToLowerInvariant().Contains(search.Trim().ToLowerInvariant()))
continue;
}
if (!isEmptyCategory)
{
if (category == _favoriteCatName)
{
if (!_favoritedRecipes.Contains(recipe))
{
continue;
}
}
else if (recipe.Category != category)
{
continue;
}
}
recipes.Add(recipe);
}
recipes.Sort((a, b) => string.Compare(a.Name, b.Name, StringComparison.InvariantCulture));
var actualRecipes = GetAndSortRecipes(args);
var recipesList = _constructionView.Recipes;
recipesList.Clear();
var recipesGrid = _constructionView.RecipesGrid;
recipesGrid.RemoveAllChildren();
@@ -227,60 +192,120 @@ namespace Content.Client.Construction.UI
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 },
};
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);
}
recipesList.PopulateList([]);
PopulateGrid(recipesGrid, actualRecipes);
}
else
{
foreach (var recipe in recipes)
{
recipesList.Add(GetItem(recipe, recipesList));
}
recipesList.PopulateList(actualRecipes);
}
}
private void SelectGridButton(TextureButton button, bool select)
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);
var itemButton = new ContainerButton()
{
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 },
};
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.Prototype : null);
};
recipesGrid.AddChild(itemButtonPanelContainer);
_recipeButtons[recipe.Prototype.Name!] = itemButton;
var isCurrentButtonSelected = _selected == recipe.Prototype;
itemButton.Pressed = isCurrentButtonSelected;
SelectGridButton(itemButton, isCurrentButtonSelected);
}
}
private List<ConstructionMenu.ConstructionMenuListData> GetAndSortRecipes((string, string) args)
{
var recipes = new List<ConstructionMenu.ConstructionMenuListData>();
var (search, category) = args;
var isEmptyCategory = string.IsNullOrEmpty(category) || category == ForAllCategoryName;
_selectedCategory = isEmptyCategory ? string.Empty : category;
foreach (var recipe in _prototypeManager.EnumeratePrototypes<ConstructionPrototype>())
{
if (recipe.Hide)
continue;
if (_playerManager.LocalSession == null
|| _playerManager.LocalEntity == null
|| _whitelistSystem.IsWhitelistFail(recipe.EntityWhitelist, _playerManager.LocalEntity.Value))
continue;
if (!string.IsNullOrEmpty(search) && (recipe.Name is { } name &&
!name.Contains(search.Trim(),
StringComparison.InvariantCultureIgnoreCase)))
continue;
if (!isEmptyCategory)
{
if ((category != FavoriteCatName || !_favoritedRecipes.Contains(recipe)) &&
recipe.Category != category)
continue;
}
if (!_constructionSystem!.TryGetRecipePrototype(recipe.ID, out var targetProtoId))
{
Logger.Error("Cannot find the target prototype in the recipe cache with the id \"{0}\" of {1}.",
recipe.ID,
nameof(ConstructionPrototype));
continue;
}
if (!_prototypeManager.TryIndex(targetProtoId, out EntityPrototype? proto))
continue;
recipes.Add(new(recipe, proto));
}
recipes.Sort(
(a, b) => string.Compare(a.Prototype.Name, b.Prototype.Name, StringComparison.InvariantCulture));
return recipes;
}
private void SelectGridButton(BaseButton button, bool select)
{
if (button.Parent is not PanelContainer buttonPanel)
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 };
}
@@ -302,12 +327,12 @@ namespace Content.Client.Construction.UI
// 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);
@@ -325,18 +350,31 @@ namespace Content.Client.Construction.UI
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));
@@ -349,16 +387,17 @@ namespace Content.Client.Construction.UI
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)
@@ -369,23 +408,12 @@ namespace Content.Client.Construction.UI
}
}
private ItemList.Item GetItem(ConstructionPrototype recipe, ItemList itemList)
{
return new(itemList)
{
Metadata = recipe,
Text = recipe.Name,
Icon = _spriteSystem.Frame0(recipe.Icon),
TooltipEnabled = true,
TooltipText = recipe.Description,
};
}
private void BuildButtonToggled(bool pressed)
{
if (pressed)
{
if (_selected == null) return;
if (_selected == null)
return;
// not bound to a construction system
if (_constructionSystem is null)
@@ -402,10 +430,11 @@ namespace Content.Client.Construction.UI
}
_placementManager.BeginPlacing(new PlacementInformation
{
IsTile = false,
PlacementOption = _selected.PlacementMode
}, new ConstructionPlacementHijack(_constructionSystem, _selected));
{
IsTile = false,
PlacementOption = _selected.PlacementMode
},
new ConstructionPlacementHijack(_constructionSystem, _selected));
UpdateGhostPlacement();
}
@@ -429,38 +458,39 @@ namespace Content.Client.Construction.UI
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);
@@ -492,6 +522,9 @@ namespace Content.Client.Construction.UI
private void BindToSystem(ConstructionSystem system)
{
_constructionSystem = system;
OnViewPopulateRecipes(_constructionView, (string.Empty, string.Empty));
system.ToggleCraftingWindow += SystemOnToggleMenu;
system.FlipConstructionPrototype += SystemFlipConstructionPrototype;
system.CraftingAvailabilityChanged += SystemCraftingAvailabilityChanged;
@@ -533,7 +566,8 @@ namespace Content.Client.Construction.UI
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();
@@ -541,7 +575,8 @@ namespace Content.Client.Construction.UI
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
}
}

View File

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

View File

@@ -4,7 +4,6 @@ using Content.Shared.Construction;
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;

View File

@@ -28,7 +28,7 @@ namespace Content.Shared.Construction
[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>

View File

@@ -1,10 +1,8 @@
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"/>
@@ -21,7 +19,7 @@ public sealed partial class BoardNodeEntity : IGraphNodeEntity
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)
@@ -33,7 +31,7 @@ public sealed partial class BoardNodeEntity : IGraphNodeEntity
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;

View File

@@ -1,8 +1,6 @@
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;
@@ -14,65 +12,57 @@ public sealed partial class ConstructionPrototype : IPrototype
/// <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;
@@ -80,23 +70,22 @@ public sealed partial class ConstructionPrototype : IPrototype
[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

View File

@@ -5,24 +5,26 @@ namespace Content.Shared.Construction.Steps
{
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,
};
}

View File

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

View File

@@ -2,7 +2,6 @@ using System.Diagnostics.CodeAnalysis;
using Content.Shared.Examine;
using Content.Shared.Stacks;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Shared.Construction.Steps
{
@@ -11,16 +10,17 @@ 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)
@@ -40,12 +40,13 @@ namespace Content.Shared.Construction.Steps
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,
};
}

View File

@@ -1,7 +1,4 @@
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;

View File

@@ -1,5 +1,4 @@
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
using Robust.Shared.Utility;
namespace Content.Shared.Stacks;
@@ -16,7 +15,7 @@ public sealed partial class StackPrototype : IPrototype
/// </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.

View File

@@ -5,4 +5,5 @@ construction-menu-place-ghost = Place construction ghost
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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -7,19 +7,19 @@
- 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
@@ -28,7 +28,7 @@
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
@@ -45,19 +45,19 @@
- 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
@@ -66,7 +66,7 @@
amount: 1
doAfter: 1
- tag: ClownShoes
name: clown shoes
name: construction-graph-tag-clown-shoes
icon:
sprite: Clothing/Shoes/Specific/clown.rsi
state: icon
@@ -83,19 +83,19 @@
- 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
@@ -104,7 +104,7 @@
amount: 1
doAfter: 1
- tag: ClownMask
name: a clown mask
name: construction-graph-tag-clown-mask
icon:
sprite: Clothing/Mask/clown.rsi
state: icon

View File

@@ -10,37 +10,37 @@
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

View File

@@ -7,13 +7,13 @@
- 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

View File

@@ -7,13 +7,13 @@
- 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

View File

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

View File

@@ -7,13 +7,13 @@
- 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

View File

@@ -7,13 +7,13 @@
- 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
@@ -22,7 +22,7 @@
amount: 5
doAfter: 5
- tag: Radio
name: radio
name: construction-graph-tag-radio
icon:
sprite: Objects/Devices/communication.rsi
state: walkietalkie

View File

@@ -10,31 +10,31 @@
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

View File

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

View File

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

View File

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

View File

@@ -24,7 +24,7 @@
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"

View File

@@ -16,14 +16,14 @@
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

View File

@@ -34,7 +34,7 @@
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"
@@ -51,7 +51,7 @@
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
@@ -71,7 +71,7 @@
#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

View File

@@ -14,7 +14,7 @@
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"
@@ -31,7 +31,7 @@
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
@@ -48,7 +48,7 @@
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
@@ -68,7 +68,7 @@
#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
@@ -89,7 +89,7 @@
icon:
sprite: "Clothing/Mask/clown.rsi"
state: "icon"
name: "a clown's mask"
name: construction-graph-tag-clown-mask
doAfter: 1
completed:
- !type:VisualizerDataInt
@@ -100,7 +100,7 @@
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

View File

@@ -34,7 +34,7 @@
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"
@@ -51,7 +51,7 @@
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
@@ -71,7 +71,7 @@
#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

View File

@@ -7,7 +7,7 @@
- to: vim
steps:
- tag: VoiceTrigger
name: a voice trigger
name: construction-graph-tag-voice-trigger
icon:
sprite: "Objects/Devices/voice.rsi"
state: "voice"
@@ -16,7 +16,7 @@
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

View File

@@ -48,7 +48,7 @@
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"

View File

@@ -48,7 +48,7 @@
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"

View File

@@ -47,7 +47,7 @@
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"

View File

@@ -10,7 +10,7 @@
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

View File

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

View File

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

View File

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

View File

@@ -45,7 +45,7 @@
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"

View File

@@ -25,7 +25,7 @@
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"

View File

@@ -109,7 +109,7 @@
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"
@@ -183,7 +183,7 @@
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"
@@ -257,7 +257,7 @@
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"
@@ -379,7 +379,7 @@
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"
@@ -491,7 +491,7 @@
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"
@@ -566,7 +566,7 @@
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"
@@ -644,7 +644,7 @@
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"

View File

@@ -40,12 +40,17 @@
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

View File

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

View File

@@ -37,7 +37,7 @@
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?
@@ -116,7 +116,7 @@
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?

View File

@@ -64,7 +64,7 @@
- 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"

View File

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

View File

@@ -10,7 +10,7 @@
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
@@ -31,7 +31,7 @@
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
@@ -51,7 +51,7 @@
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
@@ -71,7 +71,7 @@
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
@@ -91,7 +91,7 @@
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
@@ -111,7 +111,7 @@
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
@@ -131,7 +131,7 @@
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
@@ -151,7 +151,7 @@
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
@@ -171,7 +171,7 @@
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
@@ -192,7 +192,7 @@
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
@@ -212,7 +212,7 @@
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
@@ -232,7 +232,7 @@
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
@@ -252,7 +252,7 @@
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
@@ -272,7 +272,7 @@
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
@@ -292,7 +292,7 @@
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
@@ -312,7 +312,7 @@
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

View File

@@ -7,7 +7,7 @@
- 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
@@ -57,7 +57,7 @@
- !type:EntityAnchored
steps:
- tag: SolarTrackerElectronics
name: solar tracker electronics
name: construction-graph-tag-solar-tracker-electronics
icon:
sprite: Objects/Misc/module.rsi
state: engineering

View File

@@ -39,7 +39,7 @@
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?

View File

@@ -37,7 +37,7 @@
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"
@@ -46,7 +46,7 @@
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"
@@ -55,7 +55,7 @@
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"

View File

@@ -37,7 +37,7 @@
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"
@@ -46,7 +46,7 @@
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"

View File

@@ -43,7 +43,7 @@
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"
@@ -52,7 +52,7 @@
- PowerCell
- PowerCellSmall
store: powercell
name: a powercell
name: construction-graph-tag-power-cell
icon:
sprite: "Objects/Power/power_cells.rsi"
state: "medium"

View File

@@ -38,7 +38,7 @@
- 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
@@ -127,7 +127,7 @@
- tool: Screwing
doAfter: 2
- tag: ComputerTelevisionCircuitboard
name: television board
name: construction-graph-tag-television-board
icon:
sprite: Objects/Misc/module.rsi
state: cpuboard

View File

@@ -7,13 +7,13 @@
- 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
@@ -29,13 +29,13 @@
- 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

View File

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

View File

@@ -13,7 +13,7 @@
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
@@ -37,7 +37,7 @@
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
@@ -61,7 +61,7 @@
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

View File

@@ -48,13 +48,13 @@
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
@@ -74,7 +74,7 @@
steps:
- tag: Payload
store: payload
name: payload
name: construction-graph-tag-payload
doAfter: 0.5
- node: caseWithPayload
@@ -94,7 +94,7 @@
steps:
- component: PayloadTrigger
store: payloadTrigger
name: trigger
name: construction-graph-component-payload-trigger
doAfter: 0.5
- node: grenade

View File

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

View File

@@ -30,7 +30,7 @@
impact: High
steps:
- tag: GlassShard
name: glass shard
name: construction-graph-tag-glass-shard
icon:
sprite: Objects/Materials/Shards/shard.rsi
state: shard1
@@ -73,7 +73,7 @@
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
@@ -116,7 +116,7 @@
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
@@ -159,7 +159,7 @@
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

View File

@@ -17,7 +17,7 @@
amount: 3
doAfter: 1
- tag: GlassShard
name: glass shard
name: construction-graph-tag-glass-shard
icon:
sprite: Objects/Materials/Shards/shard.rsi
state: shard1
@@ -44,7 +44,7 @@
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
@@ -71,7 +71,7 @@
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
@@ -98,7 +98,7 @@
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

View File

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

View File

@@ -1,142 +1,103 @@
- 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

View File

@@ -1,10 +1,7 @@
- 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

View File

@@ -1,15 +1,10 @@
#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
@@ -17,16 +12,11 @@
- !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
@@ -34,16 +24,11 @@
- !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
@@ -51,16 +36,11 @@
- !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
@@ -68,16 +48,11 @@
- !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
@@ -85,16 +60,11 @@
- !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
@@ -102,16 +72,11 @@
- !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
@@ -119,16 +84,11 @@
- !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
@@ -136,16 +96,11 @@
- !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
@@ -153,16 +108,11 @@
- !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
@@ -170,16 +120,11 @@
- !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
@@ -187,16 +132,11 @@
- !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
@@ -204,16 +144,11 @@
- !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
@@ -221,16 +156,11 @@
- !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 its eco friendly.
icon:
sprite: Structures/Furniture/chairs.rsi
state: wooden-bench
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
@@ -238,16 +168,11 @@
- !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
@@ -255,16 +180,11 @@
- !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
@@ -273,16 +193,11 @@
#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
@@ -290,16 +205,11 @@
- !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
@@ -307,16 +217,11 @@
- !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
@@ -324,16 +229,11 @@
- !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
@@ -341,16 +241,11 @@
- !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
@@ -358,16 +253,11 @@
- !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
@@ -375,16 +265,11 @@
- !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
@@ -392,16 +277,11 @@
- !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
@@ -409,16 +289,11 @@
- !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
@@ -426,16 +301,11 @@
- !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
@@ -443,16 +313,11 @@
- !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
@@ -460,16 +325,11 @@
- !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
@@ -477,16 +337,11 @@
- !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
@@ -494,16 +349,11 @@
- !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
@@ -511,16 +361,11 @@
- !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
@@ -528,16 +373,11 @@
- !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
@@ -545,16 +385,11 @@
- !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
@@ -562,16 +397,11 @@
- !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
@@ -579,16 +409,11 @@
- !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
@@ -597,16 +422,11 @@
#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
@@ -616,15 +436,10 @@
#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
@@ -633,15 +448,10 @@
- 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
@@ -650,15 +460,10 @@
- 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
@@ -667,15 +472,10 @@
- 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
@@ -685,15 +485,10 @@
#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
@@ -703,15 +498,10 @@
#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
@@ -720,165 +510,110 @@
- 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
@@ -887,15 +622,10 @@
- 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
@@ -905,15 +635,10 @@
- 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

View File

@@ -1,175 +1,127 @@
- 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

View File

@@ -1,20 +1,13 @@
- 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
@@ -22,38 +15,25 @@
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
@@ -63,16 +43,11 @@
hide: true #TODO: Fix the lightswitch, issue #34659. Until then, keep hidden so people don't build it and get confused.
- 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
@@ -81,16 +56,11 @@
- !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
@@ -99,16 +69,11 @@
- !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
@@ -118,16 +83,11 @@
hide: true #TODO: Fix the lightswitch, issue #34659. Until then, keep hidden so people don't build it and get confused.
- 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
@@ -136,16 +96,11 @@
- !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

View File

@@ -1,131 +1,95 @@
- 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

View File

@@ -1,25 +1,15 @@
- 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

View File

@@ -1,15 +1,10 @@
#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
@@ -18,15 +13,10 @@
- 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
@@ -35,15 +25,10 @@
- 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
@@ -53,15 +38,10 @@
# 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
@@ -72,14 +52,9 @@
# 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
@@ -88,14 +63,9 @@
- 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
@@ -104,14 +74,9 @@
- 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
@@ -121,14 +86,9 @@
# 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
@@ -137,14 +97,9 @@
- 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
@@ -153,14 +108,9 @@
- 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
@@ -170,14 +120,9 @@
# 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
@@ -186,14 +131,9 @@
- 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
@@ -202,14 +142,9 @@
- 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

File diff suppressed because it is too large Load Diff

View File

@@ -1,54 +1,39 @@
- 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

View File

@@ -1,44 +1,29 @@
# 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
@@ -48,84 +33,57 @@
# 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
@@ -133,13 +91,8 @@
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
@@ -147,27 +100,17 @@
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
@@ -175,13 +118,8 @@
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
@@ -189,13 +127,8 @@
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
@@ -203,15 +136,10 @@
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
@@ -219,14 +147,9 @@
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
@@ -234,15 +157,10 @@
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
@@ -250,14 +168,9 @@
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
@@ -265,15 +178,10 @@
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
@@ -281,14 +189,9 @@
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
@@ -296,13 +199,8 @@
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
@@ -310,22 +208,14 @@
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
@@ -334,16 +224,11 @@
- !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
@@ -352,110 +237,73 @@
- !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
@@ -463,20 +311,10 @@
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
@@ -484,20 +322,10 @@
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
@@ -505,20 +333,10 @@
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
@@ -526,42 +344,22 @@
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
@@ -569,162 +367,89 @@
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
@@ -732,34 +457,24 @@
- 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
@@ -767,49 +482,34 @@
- 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
@@ -819,16 +519,11 @@
# 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
@@ -836,16 +531,11 @@
- !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
@@ -854,16 +544,11 @@
- !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

View File

@@ -1,219 +1,159 @@
- 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

View File

@@ -1,14 +1,9 @@
- 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
@@ -20,16 +15,11 @@
- !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
@@ -41,16 +31,11 @@
- !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
@@ -62,16 +47,11 @@
- !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
@@ -80,16 +60,11 @@
- 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
@@ -99,16 +74,11 @@
- 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

View File

@@ -10,18 +10,18 @@
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

View File

@@ -10,24 +10,24 @@
icon:
sprite: Objects/Misc/fire_extinguisher.rsi
state: fire_extinguisher_open
name: fire extinguisher
name: construction-graph-tag-fire-extinguisher
- tag: FireHelmet
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

View File

@@ -10,23 +10,23 @@
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
@@ -43,23 +43,23 @@
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

View File

@@ -10,24 +10,24 @@
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

View File

@@ -10,35 +10,35 @@
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

View File

@@ -10,12 +10,12 @@
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

View File

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

View File

@@ -7,13 +7,13 @@
- 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

View File

@@ -7,17 +7,17 @@
- 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

View File

@@ -10,17 +10,17 @@
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

View File

@@ -13,61 +13,61 @@
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
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
- tag: GlassShard
name: glass shard
name: construction-graph-tag-glass-shard
icon:
sprite: Objects/Materials/Shards/shard.rsi
state: shard1
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
- tag: Matchstick
name: match stick
name: construction-graph-tag-match-stick
icon:
sprite: Objects/Tools/matches.rsi
state: match_unlit
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
- tag: Matchstick
name: match stick
name: construction-graph-tag-match-stick
icon:
sprite: Objects/Tools/matches.rsi
state: match_unlit
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
- tag: Matchstick
name: match stick
name: construction-graph-tag-match-stick
icon:
sprite: Objects/Tools/matches.rsi
state: match_unlit
doAfter: 0.5
- tag: Matchstick
name: match stick
name: construction-graph-tag-match-stick
icon:
sprite: Objects/Tools/matches.rsi
state: match_unlit

View File

@@ -9,7 +9,7 @@
- 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
@@ -18,9 +18,9 @@
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

View File

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

View File

@@ -10,13 +10,13 @@
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

View File

@@ -7,7 +7,7 @@
- to: potatobattery
steps:
- tag: Potato
name: a potato
name: construction-graph-tag-potato
icon:
sprite: Objects/Specific/Hydroponics/potato.rsi
state: produce
@@ -30,13 +30,13 @@
- 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

View File

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

View File

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

View File

@@ -7,22 +7,22 @@
- 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

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