]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Localizable craftmenu (#32339)
authorErtanic <36124833+Ertanic@users.noreply.github.com>
Thu, 1 May 2025 14:21:16 +0000 (17:21 +0300)
committerGitHub <noreply@github.com>
Thu, 1 May 2025 14:21:16 +0000 (10:21 -0400)
* 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>
125 files changed:
Content.Client/Construction/ConstructionPlacementHijack.cs
Content.Client/Construction/ConstructionSystem.cs
Content.Client/Construction/UI/ConstructionMenu.xaml
Content.Client/Construction/UI/ConstructionMenu.xaml.cs
Content.Client/Construction/UI/ConstructionMenuPresenter.cs
Content.IntegrationTests/Tests/CargoTest.cs
Content.Server/Construction/ConstructionSystem.cs
Content.Shared/Construction/ConstructionGraphNode.cs
Content.Shared/Construction/NodeEntities/BoardNodeEntity.cs [moved from Content.Server/Construction/NodeEntities/BoardNodeEntity.cs with 80% similarity]
Content.Shared/Construction/Prototypes/ConstructionPrototype.cs
Content.Shared/Construction/Steps/ArbitraryInsertConstructionGraphStep.cs
Content.Shared/Construction/Steps/ComponentConstructionGraphStep.cs
Content.Shared/Construction/Steps/MaterialConstructionGraphStep.cs
Content.Shared/Examine/ExamineSystemShared.cs
Content.Shared/Stacks/StackPrototype.cs
Resources/Locale/en-US/construction/ui/construction-menu.ftl
Resources/Locale/en-US/recipes/components.ftl [new file with mode: 0644]
Resources/Locale/en-US/recipes/recipes.ftl [new file with mode: 0644]
Resources/Locale/en-US/recipes/tags.ftl [new file with mode: 0644]
Resources/Locale/en-US/stack/stacks.ftl [new file with mode: 0644]
Resources/Prototypes/Entities/Objects/Misc/space_cash.yml
Resources/Prototypes/Entities/Objects/Tools/fulton.yml
Resources/Prototypes/Recipes/Construction/Graphs/clothing/clown_banana.yml
Resources/Prototypes/Recipes/Construction/Graphs/clothing/clown_hardsuit.yml
Resources/Prototypes/Recipes/Construction/Graphs/clothing/ducky_slippers.yml
Resources/Prototypes/Recipes/Construction/Graphs/clothing/glasses_sechud.yml
Resources/Prototypes/Recipes/Construction/Graphs/clothing/helmet_justice.yml
Resources/Prototypes/Recipes/Construction/Graphs/clothing/lizard_slippers.yml
Resources/Prototypes/Recipes/Construction/Graphs/clothing/medsec_hud.yml
Resources/Prototypes/Recipes/Construction/Graphs/clothing/mime_hardsuit.yml
Resources/Prototypes/Recipes/Construction/Graphs/fun/bananium_horn.yml
Resources/Prototypes/Recipes/Construction/Graphs/fun/jack_o_lantern.yml
Resources/Prototypes/Recipes/Construction/Graphs/furniture/ritualseat.yml
Resources/Prototypes/Recipes/Construction/Graphs/machines/computer.yml
Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml
Resources/Prototypes/Recipes/Construction/Graphs/mechs/hamtr_construction.yml
Resources/Prototypes/Recipes/Construction/Graphs/mechs/honker_construction.yml
Resources/Prototypes/Recipes/Construction/Graphs/mechs/ripley_construction.yml
Resources/Prototypes/Recipes/Construction/Graphs/mechs/vim_construction.yml
Resources/Prototypes/Recipes/Construction/Graphs/structures/airlock.yml
Resources/Prototypes/Recipes/Construction/Graphs/structures/airlock_clockwork.yml
Resources/Prototypes/Recipes/Construction/Graphs/structures/blast_door.yml
Resources/Prototypes/Recipes/Construction/Graphs/structures/conveyor.yml
Resources/Prototypes/Recipes/Construction/Graphs/structures/firelock.yml
Resources/Prototypes/Recipes/Construction/Graphs/structures/glassbox.yml
Resources/Prototypes/Recipes/Construction/Graphs/structures/secretdoor.yml
Resources/Prototypes/Recipes/Construction/Graphs/structures/shutter.yml
Resources/Prototypes/Recipes/Construction/Graphs/structures/shuttle.yml
Resources/Prototypes/Recipes/Construction/Graphs/structures/windoor.yml
Resources/Prototypes/Recipes/Construction/Graphs/tools/logic_gate.yml
Resources/Prototypes/Recipes/Construction/Graphs/utilities/APC.yml
Resources/Prototypes/Recipes/Construction/Graphs/utilities/air_alarms.yml
Resources/Prototypes/Recipes/Construction/Graphs/utilities/disposal_machines.yml
Resources/Prototypes/Recipes/Construction/Graphs/utilities/intercom.yml
Resources/Prototypes/Recipes/Construction/Graphs/utilities/lighting.yml
Resources/Prototypes/Recipes/Construction/Graphs/utilities/solarpanel.yml
Resources/Prototypes/Recipes/Construction/Graphs/utilities/station_maps.yml
Resources/Prototypes/Recipes/Construction/Graphs/utilities/timer.yml
Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_generator.yml
Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_substation.yml
Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_telemonitors.yml
Resources/Prototypes/Recipes/Construction/Graphs/weapons/bladed_hats.yml
Resources/Prototypes/Recipes/Construction/Graphs/weapons/bola.yml
Resources/Prototypes/Recipes/Construction/Graphs/weapons/improvised_arrow.yml
Resources/Prototypes/Recipes/Construction/Graphs/weapons/modular_grenade.yml
Resources/Prototypes/Recipes/Construction/Graphs/weapons/modular_mine.yml
Resources/Prototypes/Recipes/Construction/Graphs/weapons/shiv.yml
Resources/Prototypes/Recipes/Construction/Graphs/weapons/spear.yml
Resources/Prototypes/Recipes/Construction/Graphs/weapons/upgraded_chimp.yml
Resources/Prototypes/Recipes/Construction/clothing.yml
Resources/Prototypes/Recipes/Construction/fun.yml
Resources/Prototypes/Recipes/Construction/furniture.yml
Resources/Prototypes/Recipes/Construction/lighting.yml
Resources/Prototypes/Recipes/Construction/machines.yml
Resources/Prototypes/Recipes/Construction/materials.yml
Resources/Prototypes/Recipes/Construction/modular.yml
Resources/Prototypes/Recipes/Construction/storage.yml
Resources/Prototypes/Recipes/Construction/structures.yml
Resources/Prototypes/Recipes/Construction/tools.yml
Resources/Prototypes/Recipes/Construction/utilities.yml
Resources/Prototypes/Recipes/Construction/weapons.yml
Resources/Prototypes/Recipes/Construction/web.yml
Resources/Prototypes/Recipes/Crafting/Graphs/bots/cleanbot.yml
Resources/Prototypes/Recipes/Crafting/Graphs/bots/firebot.yml
Resources/Prototypes/Recipes/Crafting/Graphs/bots/honkbot.yml
Resources/Prototypes/Recipes/Crafting/Graphs/bots/medibot.yml
Resources/Prototypes/Recipes/Crafting/Graphs/bots/mimebot.yml
Resources/Prototypes/Recipes/Crafting/Graphs/bots/supplybot.yml
Resources/Prototypes/Recipes/Crafting/Graphs/goliath_hardsuit.yml
Resources/Prototypes/Recipes/Crafting/Graphs/improvised/firebomb.yml
Resources/Prototypes/Recipes/Crafting/Graphs/improvised/flowerwreath.yml
Resources/Prototypes/Recipes/Crafting/Graphs/improvised/improvised_shotgun.yml
Resources/Prototypes/Recipes/Crafting/Graphs/improvised/improvised_shotgun_shell.yml
Resources/Prototypes/Recipes/Crafting/Graphs/improvised/makeshiftstunprod.yml
Resources/Prototypes/Recipes/Crafting/Graphs/improvised/pipebomb.yml
Resources/Prototypes/Recipes/Crafting/Graphs/improvised/pneumatic_cannon.yml
Resources/Prototypes/Recipes/Crafting/Graphs/improvised/potato.yml
Resources/Prototypes/Recipes/Crafting/Graphs/storage/cratefreezer.yml
Resources/Prototypes/Recipes/Crafting/Graphs/storage/tallbox.yml
Resources/Prototypes/Recipes/Crafting/Graphs/strawhat.yml
Resources/Prototypes/Recipes/Crafting/Graphs/toys.yml
Resources/Prototypes/Recipes/Crafting/artifact.yml
Resources/Prototypes/Recipes/Crafting/bots.yml
Resources/Prototypes/Recipes/Crafting/crates.yml
Resources/Prototypes/Recipes/Crafting/improvised.yml
Resources/Prototypes/Recipes/Crafting/potato.yml
Resources/Prototypes/Recipes/Crafting/smokeables.yml
Resources/Prototypes/Recipes/Crafting/tallbox.yml
Resources/Prototypes/Recipes/Crafting/tiles.yml
Resources/Prototypes/Recipes/Crafting/toys.yml
Resources/Prototypes/Recipes/Crafting/web.yml
Resources/Prototypes/Stacks/Materials/Sheets/glass.yml
Resources/Prototypes/Stacks/Materials/Sheets/metal.yml
Resources/Prototypes/Stacks/Materials/Sheets/other.yml
Resources/Prototypes/Stacks/Materials/crystals.yml
Resources/Prototypes/Stacks/Materials/ingots.yml
Resources/Prototypes/Stacks/Materials/materials.yml
Resources/Prototypes/Stacks/Materials/ore.yml
Resources/Prototypes/Stacks/Materials/parts.yml
Resources/Prototypes/Stacks/consumable_stacks.yml
Resources/Prototypes/Stacks/engineering_stacks.yml
Resources/Prototypes/Stacks/floor_tile_stacks.yml
Resources/Prototypes/Stacks/medical_stacks.yml
Resources/Prototypes/Stacks/power_stacks.yml
Resources/Prototypes/Stacks/science_stacks.yml

index dc5d7bf342ffcfb0723eeb7233104bc003629e1d..e6a8e0f1f005a6302dc47f449c9cffd1b9447f60 100644 (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();
         }
     }
 }
index 17d6b0538838da4fc4f2703e8f1f74527f7d8a6c..77dfc9d80567a2d39d37747cea73946dffdb3c94 100644 (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(0);
+                sprite.LayerSetSprite(0, icon.Icon);
+                sprite.LayerSetShader(0, "unshaded");
+                sprite.LayerSetVisible(0, true);
+            }
+            else if (targetProto.Components.TryGetValue("Sprite", out _))
             {
-                sprite.AddBlankLayer(i); // There is no way to actually check if this already exists, so we blindly insert a new one
-                sprite.LayerSetSprite(i, prototype.Layers[i]);
-                sprite.LayerSetShader(i, "unshaded");
-                sprite.LayerSetVisible(i, true);
+                var dummy = EntityManager.SpawnEntity(targetProtoId, MapCoordinates.Nullspace);
+                var targetSprite = EntityManager.EnsureComponent<SpriteComponent>(dummy);
+                EntityManager.System<AppearanceSystem>().OnChangeData(dummy, targetSprite);
+
+                for (var i = 0; i < targetSprite.AllLayers.Count(); i++)
+                {
+                    if (!targetSprite[i].Visible || !targetSprite[i].RsiState.IsValid)
+                        continue;
+
+                    var rsi = targetSprite[i].Rsi ?? targetSprite.BaseRSI;
+                    if (rsi is null || !rsi.TryGetState(targetSprite[i].RsiState, out var state) ||
+                        state.StateId.Name is null)
+                        continue;
+
+                    sprite.AddBlankLayer(i);
+                    sprite.LayerSetSprite(i, new SpriteSpecifier.Rsi(rsi.Path, state.StateId.Name));
+                    sprite.LayerSetShader(i, "unshaded");
+                    sprite.LayerSetVisible(i, true);
+                }
+
+                EntityManager.DeleteEntity(dummy);
             }
+            else
+                return false;
 
             if (prototype.CanBuildInImpassable)
                 EnsureComp<WallMountComponent>(ghost.Value).Arc = new(Math.Tau);
index a934967a5334394e911ef114856d7f96681498ae..4020ca433266f3f964e72a8044f7a7d655ca6617 100644 (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"/>
index 9ab8a156005a38537e76c1c27263d12a462d5fa0..d94150d5cd966dd3b4afca8ba36f9297718ab62b 100644 (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;
     }
 }
index d35e8fbe76990f2fc129e1fc99d31a2456af4e76..77f04ee781bf3f04d2759588b8155c7e47953fcf 100644 (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,124 +169,143 @@ 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 actualRecipes = GetAndSortRecipes(args);
 
-            var isEmptyCategory = string.IsNullOrEmpty(category) || category == _forAllCategoryName;
+            var recipesList = _constructionView.Recipes;
+            var recipesGrid = _constructionView.RecipesGrid;
+            recipesGrid.RemoveAllChildren();
 
-            if (isEmptyCategory)
-                _selectedCategory = string.Empty;
-            else
-                _selectedCategory = category;
+            _constructionView.RecipesGridScrollContainer.Visible = _constructionView.GridViewButtonPressed;
+            _constructionView.Recipes.Visible = !_constructionView.GridViewButtonPressed;
 
-            foreach (var recipe in _prototypeManager.EnumeratePrototypes<ConstructionPrototype>())
+            if (_constructionView.GridViewButtonPressed)
             {
-                if (recipe.Hide)
-                    continue;
+                recipesList.PopulateList([]);
+                PopulateGrid(recipesGrid, actualRecipes);
+            }
+            else
+            {
+                recipesList.PopulateList(actualRecipes);
+            }
+        }
 
-                if (_playerManager.LocalSession == null
-                || _playerManager.LocalEntity == null
-                || _whitelistSystem.IsWhitelistFail(recipe.EntityWhitelist, _playerManager.LocalEntity.Value))
-                    continue;
+        private void PopulateGrid(GridContainer recipesGrid,
+            IEnumerable<ConstructionMenu.ConstructionMenuListData> actualRecipes)
+        {
+            foreach (var recipe in actualRecipes)
+            {
+                var protoView = new EntityPrototypeView()
+                {
+                    Scale = new Vector2(1.2f),
+                };
+                protoView.SetPrototype(recipe.TargetPrototype);
 
-                if (!string.IsNullOrEmpty(search))
+                var itemButton = new ContainerButton()
                 {
-                    if (!recipe.Name.ToLowerInvariant().Contains(search.Trim().ToLowerInvariant()))
-                        continue;
-                }
+                    VerticalAlignment = Control.VAlignment.Center,
+                    Name = recipe.TargetPrototype.Name,
+                    ToolTip = recipe.TargetPrototype.Name,
+                    ToggleMode = true,
+                    Children = { protoView },
+                };
+
+                var itemButtonPanelContainer = new PanelContainer
+                {
+                    PanelOverride = new StyleBoxFlat { BackgroundColor = StyleNano.ButtonColorDefault },
+                    Children = { itemButton },
+                };
 
-                if (!isEmptyCategory)
+                itemButton.OnToggled += buttonToggledEventArgs =>
                 {
-                    if (category == _favoriteCatName)
-                    {
-                        if (!_favoritedRecipes.Contains(recipe))
-                        {
-                            continue;
-                        }
-                    }
-                    else if (recipe.Category != category)
+                    SelectGridButton(itemButton, buttonToggledEventArgs.Pressed);
+
+                    if (buttonToggledEventArgs.Pressed &&
+                        _selected != null &&
+                        _recipeButtons.TryGetValue(_selected.Name!, out var oldButton))
                     {
-                        continue;
+                        oldButton.Pressed = false;
+                        SelectGridButton(oldButton, false);
                     }
-                }
 
-                recipes.Add(recipe);
+                    OnGridViewRecipeSelected(this, buttonToggledEventArgs.Pressed ? recipe.Prototype : null);
+                };
+
+                recipesGrid.AddChild(itemButtonPanelContainer);
+                _recipeButtons[recipe.Prototype.Name!] = itemButton;
+                var isCurrentButtonSelected = _selected == recipe.Prototype;
+                itemButton.Pressed = isCurrentButtonSelected;
+                SelectGridButton(itemButton, isCurrentButtonSelected);
             }
+        }
 
-            recipes.Sort((a, b) => string.Compare(a.Name, b.Name, StringComparison.InvariantCulture));
+        private List<ConstructionMenu.ConstructionMenuListData> GetAndSortRecipes((string, string) args)
+        {
+            var recipes = new List<ConstructionMenu.ConstructionMenuListData>();
 
-            var recipesList = _constructionView.Recipes;
-            recipesList.Clear();
+            var (search, category) = args;
+            var isEmptyCategory = string.IsNullOrEmpty(category) || category == ForAllCategoryName;
+            _selectedCategory = isEmptyCategory ? string.Empty : category;
 
-            var recipesGrid = _constructionView.RecipesGrid;
-            recipesGrid.RemoveAllChildren();
+            foreach (var recipe in _prototypeManager.EnumeratePrototypes<ConstructionPrototype>())
+            {
+                if (recipe.Hide)
+                    continue;
 
-            _constructionView.RecipesGridScrollContainer.Visible = _constructionView.GridViewButtonPressed;
-            _constructionView.Recipes.Visible = !_constructionView.GridViewButtonPressed;
+                if (_playerManager.LocalSession == null
+                    || _playerManager.LocalEntity == null
+                    || _whitelistSystem.IsWhitelistFail(recipe.EntityWhitelist, _playerManager.LocalEntity.Value))
+                    continue;
 
-            if (_constructionView.GridViewButtonPressed)
-            {
-                foreach (var recipe in recipes)
-                {
-                    var itemButton = new TextureButton
-                    {
-                        TextureNormal = _spriteSystem.Frame0(recipe.Icon),
-                        VerticalAlignment = Control.VAlignment.Center,
-                        Name = recipe.Name,
-                        ToolTip = recipe.Name,
-                        Scale = new Vector2(1.35f),
-                        ToggleMode = true,
-                    };
-                    var itemButtonPanelContainer = new PanelContainer
-                    {
-                        PanelOverride = new StyleBoxFlat { BackgroundColor = StyleNano.ButtonColorDefault },
-                        Children = { itemButton },
-                    };
+                if (!string.IsNullOrEmpty(search) && (recipe.Name is { } name &&
+                                                      !name.Contains(search.Trim(),
+                                                          StringComparison.InvariantCultureIgnoreCase)))
+                    continue;
 
-                    itemButton.OnToggled += buttonToggledEventArgs =>
-                    {
-                        SelectGridButton(itemButton, buttonToggledEventArgs.Pressed);
-
-                        if (buttonToggledEventArgs.Pressed &&
-                            _selected != null &&
-                            _recipeButtons.TryGetValue(_selected.Name, out var oldButton))
-                        {
-                            oldButton.Pressed = false;
-                            SelectGridButton(oldButton, false);
-                        }
-
-                        OnGridViewRecipeSelected(this, buttonToggledEventArgs.Pressed ? recipe : null);
-                    };
-
-                    recipesGrid.AddChild(itemButtonPanelContainer);
-                    _recipeButtons[recipe.Name] = itemButton;
-                    var isCurrentButtonSelected = _selected == recipe;
-                    itemButton.Pressed = isCurrentButtonSelected;
-                    SelectGridButton(itemButton, isCurrentButtonSelected);
+                if (!isEmptyCategory)
+                {
+                    if ((category != FavoriteCatName || !_favoritedRecipes.Contains(recipe)) &&
+                        recipe.Category != category)
+                        continue;
                 }
-            }
-            else
-            {
-                foreach (var recipe in recipes)
+
+                if (!_constructionSystem!.TryGetRecipePrototype(recipe.ID, out var targetProtoId))
                 {
-                    recipesList.Add(GetItem(recipe, recipesList));
+                    Logger.Error("Cannot find the target prototype in the recipe cache with the id \"{0}\" of {1}.",
+                        recipe.ID,
+                        nameof(ConstructionPrototype));
+                    continue;
                 }
+
+                if (!_prototypeManager.TryIndex(targetProtoId, out EntityPrototype? proto))
+                    continue;
+
+                recipes.Add(new(recipe, proto));
             }
+
+            recipes.Sort(
+                (a, b) => string.Compare(a.Prototype.Name, b.Prototype.Name, StringComparison.InvariantCulture));
+
+            return recipes;
         }
 
-        private void SelectGridButton(TextureButton button, bool select)
+        private void SelectGridButton(BaseButton button, bool select)
         {
             if (button.Parent is not PanelContainer buttonPanel)
                 return;
 
-            button.Modulate = select ? Color.Green : Color.White;
+            button.Modulate = select ? Color.Green : Color.Transparent;
             var buttonColor = select ? StyleNano.ButtonColorDefault : Color.Transparent;
             buttonPanel.PanelOverride = new StyleBoxFlat { BackgroundColor = buttonColor };
         }
@@ -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
             }
         }
 
index c98b7f8c109f31dad3734d150492cd63c533414e..e5f9fa1e815b191948aefca187f7e672ef9c75ea 100644 (file)
@@ -219,6 +219,7 @@ public sealed class CargoTest
 
 - type: stack
   id: StackProto
+  name: stack-steel
   spawn: A
 
 - type: entity
index 9d881dcef04a948c1ea43d4041ba2f0bf853a994..343143b9bd4c11d957431b023712e725576b6bad 100644 (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;
 
index fd70569e9daae4658dbc4a1c4d49813554e5e03e..9f910772059254c87bdd7532a81a631134715032 100644 (file)
@@ -28,17 +28,17 @@ 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>
-        ///     Ignore requests to change the entity if the entity's current prototype inherits from specified replacement 
+        ///     Ignore requests to change the entity if the entity's current prototype inherits from specified replacement
         /// </summary>
         /// <remarks>
-        ///     When this bool is true and a construction node specifies that the current entity should be replaced with a new entity, if the 
+        ///     When this bool is true and a construction node specifies that the current entity should be replaced with a new entity, if the
         ///     current entity has an entity prototype which inherits from the replacement entity prototype, entity replacement will not occur.
-        ///     E.g., if an entity with the 'AirlockCommand' prototype was to be replaced with a new entity that had the 'Airlock' prototype, 
-        ///     and 'DoNotReplaceInheritingEntities' was true, the entity would not be replaced because 'AirlockCommand' is derived from 'Airlock' 
+        ///     E.g., if an entity with the 'AirlockCommand' prototype was to be replaced with a new entity that had the 'Airlock' prototype,
+        ///     and 'DoNotReplaceInheritingEntities' was true, the entity would not be replaced because 'AirlockCommand' is derived from 'Airlock'
         ///     This will largely be used for construction graphs which have removeable upgrades, such as hacking protections for airlocks,
         ///     so that the upgrades can be removed and you can return to the last primary construction step without replacing the entity
         /// </remarks>
similarity index 80%
rename from Content.Server/Construction/NodeEntities/BoardNodeEntity.cs
rename to Content.Shared/Construction/NodeEntities/BoardNodeEntity.cs
index 4f95945262d0e64dacda82067b543996799344e0..c1540c4a64651a5091343426551f7988963f2cf1 100644 (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;
index ec5d2cc9da5dd98ffd7ddf38554405b0964fc029..0e1a50d9a2a6d940e8882e855f139533b98d20ed 100644 (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
index 49d429aa2673bffe064b9f4d25d4930d474bef7d..7615460001e2bab46e7296bfa7523dec2d25a0e4 100644 (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,
             };
         }
index 5c28d3b05f33354806b8dad2d415fed59d47e162..95f0eefb8a75a7da828bf4e3d5860417821fa2fb 100644 (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))));
         }
     }
 }
index eec8d89b808b3b673fc047a7b9b0826a36cce35b..b1ae9cbdf7a3cafdc268c35f2a9a0267e0d1302f 100644 (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,
             };
         }
index 72ea9dba655e4bdb7848862207a957e058b744c9..228926fac45e1e1d8dd697984440ea3cb98dd254 100644 (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;
index f108419a9efd5a64ca22f2c18c03080efaede1ca..d72380da62e00db25065633b141414db3a8793cc 100644 (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.
index 4d100247856f62304bcc3132cd861d602dd28428..4812604d608f72966c87d8c6480cb9bc735aba96 100644 (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
diff --git a/Resources/Locale/en-US/recipes/components.ftl b/Resources/Locale/en-US/recipes/components.ftl
new file mode 100644 (file)
index 0000000..2360975
--- /dev/null
@@ -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
diff --git a/Resources/Locale/en-US/recipes/recipes.ftl b/Resources/Locale/en-US/recipes/recipes.ftl
new file mode 100644 (file)
index 0000000..d099396
--- /dev/null
@@ -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.
diff --git a/Resources/Locale/en-US/recipes/tags.ftl b/Resources/Locale/en-US/recipes/tags.ftl
new file mode 100644 (file)
index 0000000..baae9a1
--- /dev/null
@@ -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
diff --git a/Resources/Locale/en-US/stack/stacks.ftl b/Resources/Locale/en-US/stack/stacks.ftl
new file mode 100644 (file)
index 0000000..f285303
--- /dev/null
@@ -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
index db08a70202a58bde83ee84993990b46565a94f21..63b960b0e695272ad04705a1175537acf859fc72 100644 (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
 
index 3a6d8ffc22568d34e6ef7eb57a6b5bf59ab34a5a..8c44ad606b97633f08a7fead86397e29c5777cc4 100644 (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
index 1cada5018cb6354b448f4654ff8ae45c4e83a4e3..53a4b8f718fd2ee21915c2b4a12fe6bb0a3737cb 100644 (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
         - 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
         - to: mask
           steps:
             - tag: BananaPeel
-              name: a banana peel
+              name: construction-graph-tag-banana-peel
               icon:
                 sprite: Objects/Specific/Hydroponics/banana.rsi
                 state: peel
               doAfter: 1
             - tag: BananaPeel
-              name: a banana peel
+              name: construction-graph-tag-banana-peel
               icon:
                 sprite: Objects/Specific/Hydroponics/banana.rsi
                 state: peel
               doAfter: 1
             - tag: BananaPeel
-              name: a banana peel
+              name: construction-graph-tag-banana-peel
               icon:
                 sprite: Objects/Specific/Hydroponics/banana.rsi
                 state: peel
               amount: 1
               doAfter: 1
             - tag: ClownMask
-              name: a clown mask
+              name: construction-graph-tag-clown-mask
               icon:
                 sprite: Clothing/Mask/clown.rsi
                 state: icon
index 1600cd4641fb6e353bf29537af3aa130bb442f7d..dc95a5575f275374610f03adfb6c98d4c4736c62 100644 (file)
               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
index e017096fa90124c547fbe55d6fdc634a2e2b7c4c..21ed5f22245a30cfd90cdcdd61607c723f8099b1 100644 (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
index de264dbd588fb7a3a8be4b54d1fe30f9d09daa4c..34aa60ab3f09d2cb8a672e0ca20c655f04b3da4b 100644 (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
index 0ea6cf404f546163b68e12ba9fc944fa1ecfdef8..5c6e262a146a2146dbb2dfc7853ffe713eb89bce 100644 (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
       - material: Glass
         amount: 1
       - tag: LightBulb
-        name: light bulb
+        name: construction-graph-tag-light-bulb
         icon:
           sprite: Objects/Power/light_bulb.rsi
           state: normal
         doAfter: 5
   - node: helmet
-    entity: ClothingHeadHelmetJusticeEmpty
\ No newline at end of file
+    entity: ClothingHeadHelmetJusticeEmpty
index b3a189c571942a7725bec4267f842ce7a4221086..0cca4e0dcba4a9ff6ef230fdcc726e596fe9a305 100644 (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
index 78a27a9d0f373ecef83722602e7693e5a0be7188..9b4435c6f0d1bd53c012f519e7531b6ddc0fe371 100644 (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
index 73d65b0394ae66439cc5765864b10083f4009dff..55e262f47b01fcb04dcdd1deab6d0f5744a91a08 100644 (file)
               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
index e8380d0d2db30b5225ba6519836532b3749bb1e7..74c280e184964aca52f4096f0c1910127a4be9aa 100644 (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
index efd2007df64b7df3c115169bc53463ed5586cecf..8b086b28b16f20530e8c2d14abb3fa3419f774d0 100644 (file)
@@ -7,7 +7,8 @@
         - to: lit
           steps:
             - tag: Torch
+              name: construction-graph-tag-torch
               doAfter: 2
 
     - node: lit
-      entity: PumpkinLantern
\ No newline at end of file
+      entity: PumpkinLantern
index 47e11d0f20030923c72851f475dc806848856858..a0f1e99f31e612ee322437ddca2e25e56b74e991 100644 (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
index 4530cef1b2c43300d866f4b342b6e262861c02dd..46493299a5d1c4258e201e2d3ab2b12c07acbf7f 100644 (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"
index 9f68a3b773e91109a34cdd0af7cfba2b4077173f..df0f15c87d7aeef3e2feb676623f3e6fd6919f28 100644 (file)
         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
@@ -36,4 +36,4 @@
     entity: BorgChassisSelectable
 
   - node: derelictcyborg
-    entity: BorgChassisDerelict
\ No newline at end of file
+    entity: BorgChassisDerelict
index fb05cc313bd74164b2fe7502a3b1d4443d6aad5f..687d72f390c0589f66ad7dc12a08b613465a58c6 100644 (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
index 830b6bcb6fc743c65249c7a7b627b5e9214d0574..8274c4c0d1371b78c345890f1e02bdd92cc2a0ac 100644 (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
         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
index 659a0360caf10f9fc7b9ea8535eebdd4aa6c7ece..db45cbc4f1aedba99e448f4bb12ba5251246443c 100644 (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
   - node: ripley
     actions:
     - !type:BuildMech
-      mechPrototype: MechRipley
\ No newline at end of file
+      mechPrototype: MechRipley
index a502bdfd53cba96968685f535388d47619df30d5..7feed88cc5e1d8d0a53f66e650d6e7b38ebacf75 100644 (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
index 0bb6b4b1ce4052ba47b9c27c174eb0ef8199c5fa..7bc9d6669115dafc071ddfd954764513c1ce9a22 100644 (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"
index 76b641a06d96a2701b221ac6741e94356c97da50..915c88b3b341bcfa0da523346c07c8c6b935ca7e 100644 (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"
index 782e894fe7382ab3d8817f5f8041649a409c5b15..0902829e9b44ffabb85e61fd43769ead6b515194 100644 (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"
index 43d2484bbd2963a6aa82204a572cb93f9afe9ee1..4554fd26a14f2ec722c745cb608fff549373ba65 100644 (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
index 6b6d5c4895a23330d7ace50ef0f8f13cf8ee8b30..cbce045456ee8367c266f5bb1fa2138bba11f130 100644 (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"
index 2a051b46d4eeab5cafdf1fb3ddbf0f5028dea832..772c941833edad64bef4ea742f7602cf66a2305f 100644 (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
index 2c5a0db2b8206088b8108110565b88292d78ac8f..553053caab1bac5ed29d32a6e0cfa23b85c7c004 100644 (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
index 7086216cba3a18d861dccc292cafff9599fe907c..10b4ae6ae3c8d02fd6cf567efcbc35a134a0095a 100644 (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"
index f29629043df5136baae940915ea4e609bd6be788..20eda8b6e4297eba8d26035369e7dcd6d4ba1245 100644 (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"
index b56c48d0dfdf5f1de73ed298775d56f495c2e111..2dd297f657c98296bb48fa8521f8f1b1a1cf0fec 100644 (file)
       steps:
       - component: DoorElectronics
         store: board
-        name: "door electronics circuit board"
+        name: construction-graph-component-door-electronics-circuit-board
         icon:
           sprite: "Objects/Misc/module.rsi"
           state: "door_electronics"
       steps:
       - tag: DoorElectronics
         store: board
-        name: "door electronics circuit board"
+        name: construction-graph-tag-door-electronics-circuit-board
         icon:
           sprite: "Objects/Misc/module.rsi"
           state: "door_electronics"
       steps:
       - tag: DoorElectronics
         store: board
-        name: "door electronics circuit board"
+        name: construction-graph-tag-door-electronics-circuit-board
         icon:
           sprite: "Objects/Misc/module.rsi"
           state: "door_electronics"
       steps:
       - component: DoorElectronics
         store: board
-        name: "door electronics circuit board"
+        name: construction-graph-component-door-electronics-circuit-board
         icon:
           sprite: "Objects/Misc/module.rsi"
           state: "door_electronics"
       steps:
       - tag: DoorElectronics
         store: board
-        name: "door electronics circuit board"
+        name: construction-graph-tag-door-electronics-circuit-board
         icon:
           sprite: "Objects/Misc/module.rsi"
           state: "door_electronics"
       steps:
       - tag: DoorElectronics
         store: board
-        name: "door electronics circuit board"
+        name: construction-graph-tag-door-electronics-circuit-board
         icon:
           sprite: "Objects/Misc/module.rsi"
           state: "door_electronics"
       steps:
       - tag: DoorElectronics
         store: board
-        name: "door electronics circuit board"
+        name: construction-graph-tag-door-electronics-circuit-board
         icon:
           sprite: "Objects/Misc/module.rsi"
           state: "door_electronics"
index 5a7dfbb3bf68ef4c97b658ff6e9f790410f114c7..01225fa63ec9834b5516947f420adae8e842fe1d 100644 (file)
         icon:
           sprite: Objects/Tools/multitool.rsi
           state: icon
-        name: 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
index 2941ba8235a653483561f09b51121a45937e626b..1a23029ecc02d19c488326f56e1a31b8eb3ba196 100644 (file)
@@ -15,7 +15,7 @@
         - to: apc
           steps:
             - component: ApcElectronics
-              name: "APC electronics"
+              name: construction-graph-component-apc-electronics
               doAfter: 2
         - to: start
           completed:
index 5aee750b9a4df1967dc29bda027857df63df9ca6..299731ac24b2b2410ffa7a6dd481a642b6201d56 100644 (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?
       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?
index 8c880d3964109df24000b7e1925f92b413a429f5..46533d8d0d642f9b90419f93513cc15f9f56050f 100644 (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"
index ba29d72539a0c2291d1b908d53c012a9213682e3..864e1a1802fdbbc0e0a638639b7a9d19b8b47ec9 100644 (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"
index ef461eda9b64f3ac9d7c405203a6281dcfbedf4a..9bd988d11e74a73d9bde2373c4ddfc5ff3400376 100644 (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
               amount: 1
               doAfter: 1
             - tag: CrystalBlack
-              name: black crystal shard
+              name: construction-graph-tag-black-crystal-shard
               icon:
                 sprite: Objects/Materials/Shards/crystal.rsi
                 state: shard1
               amount: 1
               doAfter: 1
             - tag: CrystalRed
-              name: red crystal shard
+              name: construction-graph-tag-red-crystal-shard
               icon:
                 sprite: Objects/Materials/Shards/crystal.rsi
                 state: shard1
               amount: 1
               doAfter: 1
             - tag: CrystalGreen
-              name: green crystal shard
+              name: construction-graph-tag-green-crystal-shard
               icon:
                 sprite: Objects/Materials/Shards/crystal.rsi
                 state: shard1
         amount: 1
         doAfter: 1
       - tag: CrystalCyan
-        name: cyan crystal shard
+        name: construction-graph-tag-cyan-crystal-shard
         icon:
           sprite: Objects/Materials/Shards/crystal.rsi
           state: shard1
         amount: 1
         doAfter: 1
       - tag: CrystalBlue
-        name: blue crystal shard
+        name: construction-graph-tag-blue-crystal-shard
         icon:
           sprite: Objects/Materials/Shards/crystal.rsi
           state: shard1
         amount: 1
         doAfter: 1
       - tag: CrystalYellow
-        name: yellow crystal shard
+        name: construction-graph-tag-yellow-crystal-shard
         icon:
           sprite: Objects/Materials/Shards/crystal.rsi
           state: shard1
         amount: 1
         doAfter: 1
       - tag: CrystalPink
-        name: pink crystal shard
+        name: construction-graph-tag-pink-crystal-shard
         icon:
           sprite: Objects/Materials/Shards/crystal.rsi
           state: shard1
         amount: 1
         doAfter: 1
       - tag: CrystalOrange
-        name: orange crystal shard
+        name: construction-graph-tag-orange-crystal-shard
         icon:
           sprite: Objects/Materials/Shards/crystal.rsi
           state: shard1
         amount: 1
         doAfter: 1
       - tag: CrystalBlack
-        name: black crystal shard
+        name: construction-graph-tag-black-crystal-shard
         icon:
           sprite: Objects/Materials/Shards/crystal.rsi
           state: shard1
         amount: 1
         doAfter: 1
       - tag: CrystalRed
-        name: red crystal shard
+        name: construction-graph-tag-red-crystal-shard
         icon:
           sprite: Objects/Materials/Shards/crystal.rsi
           state: shard1
         amount: 1
         doAfter: 1
       - tag: CrystalGreen
-        name: green crystal shard
+        name: construction-graph-tag-green-crystal-shard
         icon:
           sprite: Objects/Materials/Shards/crystal.rsi
           state: shard1
index 8dee23d0217d5d2c29a2c1a3e63672f28f1277f4..8398eb1b60244259e548a5af83b328a0f95e8f0f 100644 (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
index eb826a0f98be7180450241552b00b3f7f1044a20..5329eaf68fb89171c9d22a9152c5bee786de6d25 100644 (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?
index 0d400a848d98a5627b07006df3606b63cfc0c401..6ffd912907f81509851bf3f7f1cd0e5657ef1246 100644 (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"
index 24d928cc4023408748e00a3e606fff8260aa6011..797922d40f68f289484fc654593400d0ed3bc744 100644 (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"
index bd9b2415e26c4c923916aaecb57e42b27fb2d6a0..6fdb516fe90556ba7e279aad4a22261ff34db33f 100644 (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"
index 51ebed2ee126e8cb307a755025e4a3d6f23f136b..4fcdb422f65a844948909fdeb72549d7006d4936 100644 (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
             - tool: Screwing
               doAfter: 2
             - tag: ComputerTelevisionCircuitboard
-              name: television board
+              name: construction-graph-tag-television-board
               icon:
                 sprite: Objects/Misc/module.rsi
                 state: cpuboard
index e582c3e4ae381f329aa23e3e826e696967da555a..b0817be44a1bf7cb70addbcecd965c622b88334a 100644 (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
     - 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
index 10532996bd6cf4feeb8242a615724394d8393478..e1a93774a684b2577d13bc85a25aaeb19d3c7067 100644 (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
index 8f368f9e59539e3e87f37791b3a03fecb9289474..e04e359b508c6eee5b73fe5ffe20420f8246a8e5 100644 (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
index 838a6cdb6c27afbdf3e101bfe76e383790cb2db4..9986c93f4c2ac025b95d3ad6a5bc60197878640e 100644 (file)
       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
index b598c01cde769c76fc684f97706cc2218c2222e9..95b4b4bcc7104dee1fbd0f54d89fcaa7ce0fd8e3 100644 (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
index a434e707293b0776771e47086a1cd7451213ba9f..05dbba12a812eb51a7393a23edfdd7fe9f788c77 100644 (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
         impact: High
       steps:
       - tag: PlasmaGlassShard
-        name: plasma glass shard
+        name: construction-graph-tag-plasma-glass-shard
         icon:
           sprite: Objects/Materials/Shards/shard.rsi
           state: shard1
         impact: High
       steps:
       - tag: UraniumGlassShard
-        name: uranium glass shard
+        name: construction-graph-tag-uranium-glass-shard
         icon:
           sprite: Objects/Materials/Shards/shard.rsi
           state: shard1
index 8b6f0708c7facd8356b026ff481bc27bbbb82a6f..661737f5b6901042ca9e0ff77f12d73e636bdf02 100644 (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
index eecd78cc13d01a4948ae22d657fb01195d39360a..8cbcb8c9642f7ed04e5dd6aade45a7c1abb88c20 100644 (file)
@@ -7,7 +7,8 @@
         - to: upgraded
           steps:
             - tag: WeaponPistolCHIMPUpgradeKit
+              name: construction-graph-tag-weapon-pistol-chimp-upgrade-kit
               doAfter: 2
 
     - node: upgraded
-      entity: WeaponPistolCHIMPUpgraded
\ No newline at end of file
+      entity: WeaponPistolCHIMPUpgraded
index 8f49d26e6b07824ce5a1659b8f7275cf1f3245ae..0a23bc86484f8c74167f5fc3ae10e2cca0e4b29f 100644 (file)
 - type: construction
-  name: clown hardsuit
   id: ClownHardsuit
   graph: ClownHardsuit
   startNode: start
   targetNode: clownHardsuit
   category: construction-category-clothing
-  description: A modified hardsuit fit for a clown.
-  icon: { sprite: Clothing/OuterClothing/Hardsuits/clown.rsi, state: icon }
   objectType: Item
 
 - type: construction
-  name: mime hardsuit
   id: MimeHardsuit
   graph: MimeHardsuit
   startNode: start
   targetNode: mimeHardsuit
   category: construction-category-clothing
-  description: A modified hardsuit fit for a mime.
-  icon: { sprite: Clothing/OuterClothing/Hardsuits/mime.rsi, state: icon }
   objectType: Item
 
 - type: construction
-  name: bone armor
   id: BoneArmor
   graph: BoneArmor
   startNode: start
   targetNode: armor
   category: construction-category-clothing
-  description: Armor made of bones.
-  icon: { sprite: Clothing/OuterClothing/Armor/bone_armor.rsi, state: icon }
   objectType: Item
 
 - type: construction
-  name: bone helmet
   id: BoneHelmet
   graph: BoneHelmet
   startNode: start
   targetNode: helmet
   category: construction-category-clothing
-  description: Helmet made of bones.
-  icon: { sprite: Clothing/Head/Helmets/bone_helmet.rsi, state: icon }
   objectType: Item
 
 - type: construction
-  name: banana clown mask
   id: BananaClownMask
   graph: BananaClownMask
   startNode: start
   targetNode: mask
   category: construction-category-clothing
-  description: A clown mask upgraded with banana peels.
-  icon: { sprite: Clothing/Mask/clown_banana.rsi, state: icon }
   objectType: Item
 
 - type: construction
-  name: banana clown suit
   id: BananaClownJumpsuit
   graph: BananaClownJumpsuit
   startNode: start
   targetNode: jumpsuit
   category: construction-category-clothing
-  description: A clown suit upgraded with banana peels.
-  icon: { sprite: Clothing/Uniforms/Jumpsuit/clown_banana.rsi, state: icon }
   objectType: Item
 
 - type: construction
-  name: banana clown shoes
   id: BananaClownShoes
   graph: BananaClownShoes
   startNode: start
   targetNode: shoes
   category: construction-category-clothing
-  description: A pair of clown shoes upgraded with banana peels.
-  icon: { sprite: Clothing/Shoes/Specific/clown_banana.rsi, state: icon }
   objectType: Item
 
 - type: construction
-  name: medsec hud
   id: ClothingEyesHudMedSec
   graph: HudMedSec
   startNode: start
   targetNode: medsecHud
   category: construction-category-clothing
-  description: Two huds joined by arms
-  icon: { sprite: Clothing/Eyes/Hud/medsec.rsi, state: icon }
   objectType: Item
 
 - type: construction
-  name: ducky slippers
   id: ClothingShoeSlippersDuck
   graph: ClothingShoeSlippersDuck
   startNode: start
   targetNode: shoes
   category: construction-category-clothing
-  description: Comfy, yet haunted by the ghosts of ducks you fed bread to as a child.
-  icon: { sprite: Clothing/Shoes/Misc/duck-slippers.rsi, state: icon }
   objectType: Item
 
 - type: construction
-  name: lizard plushie slippers
   id: ClothingShoeSlippersLizard
   graph: ClothingShoeSlippersLizard
   startNode: start
   targetNode: shoes
   category: construction-category-clothing
-  description: An adorable pair of slippers that resemble a lizardperson. Combine this with some other green clothing and you'll be the coolest crewmember on the station!
-  icon: { sprite: Clothing/Shoes/Misc/lizard-slippers.rsi, state: icon }
   objectType: Item
 
 - type: construction
-  name: security glasses
   id: ClothingEyesGlassesSecurity
   graph: GlassesSecHUD
   startNode: start
   targetNode: glassesSec
   category: construction-category-clothing
-  description: A pair of sunglasses, modified to have a built-in security HUD.
-  icon: { sprite: Clothing/Eyes/Glasses/secglasses.rsi, state: icon }
   objectType: Item
 
 - type: construction
-  name: quiver
   id: ClothingBeltQuiver
   graph: Quiver
   startNode: start
   targetNode: Quiver
   category: construction-category-clothing
-  description: Can hold up to 15 arrows, and fits snug around your waist.
-  icon: { sprite: Clothing/Belt/quiver.rsi, state: icon }
   objectType: Item
 
 - type: construction
-  name: justice helm
   id: ClothingHeadHelmetJustice
   graph: HelmetJustice
   startNode: start
   targetNode: helmet
   category: construction-category-clothing
-  description: Advanced security gear. Protects the station from ne'er-do-wells.
-  icon: { sprite: Clothing/Head/Helmets/justice.rsi, state: icon }
-  objectType: Item
\ No newline at end of file
+  objectType: Item
index 46d43e73729c30c0024d4e9d9dee960ba810f3ea..1f810fd1d960aff89d07b06ad1fb26e6b483810c 100644 (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
index 80e65fdac391b55de12ab2aff41be1451c51333e..9b2670dda9698bbed1a5f6483b6a8cfea15fd61f 100644 (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
     - !type:TileNotBlocked
 
 - type: construction
-  name: stool
   id: Stool
   graph: Seat
   startNode: start
   targetNode: stool
   category: construction-category-furniture
-  description: You sit in this. Either by will or force.
-  icon:
-    sprite: Structures/Furniture/chairs.rsi
-    state: stool
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: bar stool
   id: StoolBar
   graph: Seat
   startNode: start
   targetNode: stoolBar
   category: construction-category-furniture
-  description: You sit in this. Either by will or force.
-  icon:
-    sprite: Structures/Furniture/chairs.rsi
-    state: bar
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: brass chair
   id: ChairBrass
   graph: Seat
   startNode: start
   targetNode: chairBrass
   category: construction-category-furniture
-  description: You sit in this. Either by will or force.
-  icon:
-    sprite: Structures/Furniture/chairs.rsi
-    state: brass_chair
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: office chair
   id: ChairOfficeLight
   graph: Seat
   startNode: start
   targetNode: chairOffice
   category: construction-category-furniture
-  description: You sit in this. Either by will or force.
-  icon:
-    sprite: Structures/Furniture/chairs.rsi
-    state: office-white
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: dark office chair
   id: ChairOfficeDark
   graph: Seat
   startNode: start
   targetNode: chairOfficeDark
   category: construction-category-furniture
-  description: You sit in this. Either by will or force.
-  icon:
-    sprite: Structures/Furniture/chairs.rsi
-    state: office-dark
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: comfy chair
   id: ChairComfy
   graph: Seat
   startNode: start
   targetNode: chairComfy
   category: construction-category-furniture
-  description: It looks comfy.
-  icon:
-    sprite: Structures/Furniture/chairs.rsi
-    state: comfy
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: pilots chair
   id: chairPilotSeat
   graph: Seat
   startNode: start
   targetNode: chairPilotSeat
   category: construction-category-furniture
-  description: Fit for a captain.
-  icon:
-    sprite: Structures/Furniture/chairs.rsi
-    state: shuttle
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: wooden chair
   id: ChairWood
   graph: Seat
   startNode: start
   targetNode: chairWood
   category: construction-category-furniture
-  description: You sit in this. Either by will or force.
-  icon:
-    sprite: Structures/Furniture/chairs.rsi
-    state: wooden
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: meat chair
   id: ChairMeat
   graph: Seat
   startNode: start
   targetNode: chairMeat
   category: construction-category-furniture
-  description: Uncomfortably sweaty.
-  icon:
-    sprite: Structures/Furniture/chairs.rsi
-    state: meat
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
   - !type:TileNotBlocked
 
 - type: construction
-  name: ritual chair
   id: ChairRitual
   graph: RitualSeat
   startNode: start
   targetNode: chairRitual
   category: construction-category-furniture
-  description: A strangely carved chair.
-  icon:
-    sprite: Structures/Furniture/chairs.rsi
-    state: ritual
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: folding chair
   id: ChairFolding
   graph: Seat
   startNode: start
   targetNode: chairFolding
   category: construction-category-furniture
-  description: An easy to carry chair.
-  icon:
-    sprite: Structures/Furniture/folding_chair.rsi
-    state: folding
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: steel bench
   id: ChairSteelBench
   graph: Seat
   startNode: start
   targetNode: chairSteelBench
   category: construction-category-furniture
-  description: A long chair made for a metro. Really standard design.
-  icon:
-    sprite: Structures/Furniture/chairs.rsi
-    state: steel-bench
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: wooden bench
   id: ChairWoodBench
   graph: Seat
   startNode: start
   targetNode: chairWoodBench
   category: construction-category-furniture
-  description: Did you get a splinter? Well, at least it’s eco friendly.
-  icon:
-    sprite: Structures/Furniture/chairs.rsi
-    state: wooden-bench
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: comfortable red bench
   id: RedComfBench
   graph: Seat
   startNode: start
   targetNode: redComfBench
   category: construction-category-furniture
-  description: A bench with an extremely comfortable backrest.
-  icon:
-    sprite: Structures/Furniture/Bench/comf_bench.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: comfortable blue bench
   id: BlueComfBench
   graph: Seat
   startNode: start
   targetNode: blueComfBench
   category: construction-category-furniture
-  description: A bench with an extremely comfortable backrest.
-  icon:
-    sprite: Structures/Furniture/Bench/comf_bench.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
 
 #tables
 - type: construction
-  name: steel table
   id: Table
   graph: Table
   startNode: start
   targetNode: Table
   category: construction-category-furniture
-  description: A square piece of metal standing on four metal legs.
-  icon:
-    sprite: Structures/Furniture/Tables/generic.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: reinforced steel table
   id: TableReinforced
   graph: Table
   startNode: start
   targetNode: TableReinforced
   category: construction-category-furniture
-  description: A square piece of metal standing on four metal legs. Extra robust.
-  icon:
-    sprite: Structures/Furniture/Tables/reinforced.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: glass table
   id: TableGlass
   graph: Table
   startNode: start
   targetNode: TableGlass
   category: construction-category-furniture
-  description: A square piece of glass, standing on four metal legs.
-  icon:
-    sprite: Structures/Furniture/Tables/glass.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: reinforced glass table
   id: TableReinforcedGlass
   graph: Table
   startNode: start
   targetNode: TableReinforcedGlass
   category: construction-category-furniture
-  description: A square piece of glass, standing on four metal legs. Extra robust.
-  icon:
-    sprite: Structures/Furniture/Tables/r_glass.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: plasma glass table
   id: TablePlasmaGlass
   graph: Table
   startNode: start
   targetNode: TablePlasmaGlass
   category: construction-category-furniture
-  description: A square piece of plasma glass, standing on four metal legs. Pretty!
-  icon:
-    sprite: Structures/Furniture/Tables/plasma.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: brass table
   id: TableBrass
   graph: Table
   startNode: start
   targetNode: TableBrass
   category: construction-category-furniture
-  description: A shiny, corrosion resistant brass table. Steampunk!
-  icon:
-    sprite: Structures/Furniture/Tables/brass.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: wood table
   id: TableWood
   graph: Table
   startNode: start
   targetNode: TableWood
   category: construction-category-furniture
-  description: Do not apply fire to this. Rumour says it burns easily.
-  icon:
-    sprite: Structures/Furniture/Tables/wood.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: poker table
   id: TableCarpet
   graph: Table
   startNode: start
   targetNode: TableCarpet
   category: construction-category-furniture
-  description: A square piece of wood standing on four legs covered by a cloth. (What did you expect?)
-  icon:
-    sprite: Structures/Furniture/Tables/carpet.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: fancy black table
   id: TableFancyBlack
   graph: Table
   startNode: start
   targetNode: TableFancyBlack
   category: construction-category-furniture
-  description: A table covered with a beautiful cloth.
-  icon:
-    sprite: Structures/Furniture/Tables/Fancy/black.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: fancy blue table
   id: TableFancyBlue
   graph: Table
   startNode: start
   targetNode: TableFancyBlue
   category: construction-category-furniture
-  description: A table covered with a beautiful cloth.
-  icon:
-    sprite: Structures/Furniture/Tables/Fancy/blue.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: fancy cyan table
   id: TableFancyCyan
   graph: Table
   startNode: start
   targetNode: TableFancyCyan
   category: construction-category-furniture
-  description: A table covered with a beautiful cloth.
-  icon:
-    sprite: Structures/Furniture/Tables/Fancy/cyan.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: fancy green table
   id: TableFancyGreen
   graph: Table
   startNode: start
   targetNode: TableFancyGreen
   category: construction-category-furniture
-  description: A table covered with a beautiful cloth.
-  icon:
-    sprite: Structures/Furniture/Tables/Fancy/green.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: fancy orange table
   id: TableFancyOrange
   graph: Table
   startNode: start
   targetNode: TableFancyOrange
   category: construction-category-furniture
-  description: A table covered with a beautiful cloth.
-  icon:
-    sprite: Structures/Furniture/Tables/Fancy/orange.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: fancy purple table
   id: TableFancyPurple
   graph: Table
   startNode: start
   targetNode: TableFancyPurple
   category: construction-category-furniture
-  description: A table covered with a beautiful cloth.
-  icon:
-    sprite: Structures/Furniture/Tables/Fancy/purple.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: fancy pink table
   id: TableFancyPink
   graph: Table
   startNode: start
   targetNode: TableFancyPink
   category: construction-category-furniture
-  description: A table covered with a beautiful cloth.
-  icon:
-    sprite: Structures/Furniture/Tables/Fancy/pink.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: fancy red table
   id: TableFancyRed
   graph: Table
   startNode: start
   targetNode: TableFancyRed
   category: construction-category-furniture
-  description: A table covered with a beautiful cloth.
-  icon:
-    sprite: Structures/Furniture/Tables/Fancy/red.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: fancy white table
   id: TableFancyWhite
   graph: Table
   startNode: start
   targetNode: TableFancyWhite
   category: construction-category-furniture
-  description: A table covered with a beautiful cloth.
-  icon:
-    sprite: Structures/Furniture/Tables/Fancy/white.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: metal counter
   id: TableCounterMetal
   graph: Table
   startNode: start
   targetNode: CounterMetal
   category: construction-category-furniture
-  description: Looks like a good place to put a drink down.
-  icon:
-    sprite: Structures/Furniture/Tables/countermetal.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: wood counter
   id: TableCounterWood
   graph: Table
   startNode: start
   targetNode: CounterWood
   category: construction-category-furniture
-  description: Do not apply fire to this. Rumour says it burns easily.
-  icon:
-    sprite: Structures/Furniture/Tables/counterwood.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
 
 #bathroom
 - type: construction
-  name: toilet
   id: ToiletEmpty
   graph: Toilet
   startNode: start
   targetNode: toilet
   category: construction-category-furniture
-  description: A human excrement flushing apparatus.
-  icon:
-    sprite: Structures/Furniture/toilet.rsi
-    state: disposal
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
 #bedroom
 - type: construction
   id: Bed
-  name: bed
-  description: This is used to lie in, sleep in or strap on. Resting here provides extremely slow healing.
   graph: bed
   startNode: start
   targetNode: bed
   category: construction-category-furniture
-  icon:
-    sprite: Structures/Furniture/furniture.rsi
-    state: bed
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
 
 - type: construction
   id: MedicalBed
-  name: medical bed
-  description: A hospital bed for patients to recover in. Resting here provides fairly slow healing.
   graph: bed
   startNode: start
   targetNode: medicalbed
   category: construction-category-furniture
-  icon:
-    sprite: Structures/Furniture/furniture.rsi
-    state: bed-MED
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
 
 - type: construction
   id: DogBed
-  name: dog bed
-  description: A comfy-looking dog bed. You can even strap your pet in, in case the gravity turns off.
   graph: bed
   startNode: start
   targetNode: dogbed
   category: construction-category-furniture
-  icon:
-    sprite: Structures/Furniture/furniture.rsi
-    state: dogbed
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
 
 - type: construction
   id: Dresser
-  name: dresser
-  description: Wooden dresser, can store things inside itself.
   graph: Dresser
   startNode: start
   targetNode: dresser
   category: construction-category-furniture
-  icon:
-    sprite: Structures/Furniture/furniture.rsi
-    state: dresser
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
 #racks
 - type: construction
   id: Rack
-  name: rack
-  description: A rack for storing things on.
   graph: Rack
   startNode: start
   targetNode: Rack
   category: construction-category-furniture
-  icon:
-    sprite: Structures/Furniture/furniture.rsi
-    state: rack
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
 #misc
 - type: construction
   id: MeatSpike
-  name: meat spike
-  description: A spike found in kitchens butchering animals.
   graph: MeatSpike
   startNode: start
   targetNode: MeatSpike
   category: construction-category-furniture
-  icon:
-    sprite: Structures/meat_spike.rsi
-    state: spike
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
 
 - type: construction
   id: Curtains
-  name: curtains
-  description: Contains less than 1% mercury.
   graph: Curtains
   startNode: start
   targetNode: Curtains
   category: construction-category-furniture
-  icon:
-    sprite: Structures/Decoration/Curtains/hospital.rsi
-    state: closed
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
-    
+
 - type: construction
   id: CurtainsBlack
-  name: black curtains
-  description: Hides what others shouldn't see.
   graph: Curtains
   startNode: start
   targetNode: CurtainsBlack
   category: construction-category-furniture
-  icon:
-    sprite: Structures/Decoration/Curtains/black.rsi
-    state: closed
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
 
 - type: construction
   id: CurtainsBlue
-  name: blue curtains
-  description: Hides what others shouldn't see.
   graph: Curtains
   startNode: start
   targetNode: CurtainsBlue
   category: construction-category-furniture
-  icon:
-    sprite: Structures/Decoration/Curtains/blue.rsi
-    state: closed
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
-    
+
 - type: construction
   id: CurtainsCyan
-  name: cyan curtains
-  description: Hides what others shouldn't see.
   graph: Curtains
   startNode: start
   targetNode: CurtainsCyan
   category: construction-category-furniture
-  icon:
-    sprite: Structures/Decoration/Curtains/cyan.rsi
-    state: closed
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
-    
+
 - type: construction
   id: CurtainsGreen
-  name: green curtains
-  description: Hides what others shouldn't see.
   graph: Curtains
   startNode: start
   targetNode: CurtainsGreen
   category: construction-category-furniture
-  icon:
-    sprite: Structures/Decoration/Curtains/green.rsi
-    state: closed
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
-    
+
 - type: construction
   id: CurtainsOrange
-  name: orange curtains
-  description: Hides what others shouldn't see.
   graph: Curtains
   startNode: start
   targetNode: CurtainsOrange
   category: construction-category-furniture
-  icon:
-    sprite: Structures/Decoration/Curtains/orange.rsi
-    state: closed
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
-    
+
 - type: construction
   id: CurtainsPink
-  name: pink curtains
-  description: Hides what others shouldn't see.
   graph: Curtains
   startNode: start
   targetNode: CurtainsPink
   category: construction-category-furniture
-  icon:
-    sprite: Structures/Decoration/Curtains/pink.rsi
-    state: closed
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
-    
+
 - type: construction
   id: CurtainsPurple
-  name: purple curtains
-  description: Hides what others shouldn't see.
   graph: Curtains
   startNode: start
   targetNode: CurtainsPurple
   category: construction-category-furniture
-  icon:
-    sprite: Structures/Decoration/Curtains/purple.rsi
-    state: closed
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
-    
+
 - type: construction
   id: CurtainsRed
-  name: red curtains
-  description: Hides what others shouldn't see.
   graph: Curtains
   startNode: start
   targetNode: CurtainsRed
   category: construction-category-furniture
-  icon:
-    sprite: Structures/Decoration/Curtains/red.rsi
-    state: closed
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
 
 - type: construction
   id: CurtainsWhite
-  name: white curtains
-  description: Hides what others shouldn't see.
   graph: Curtains
   startNode: start
   targetNode: CurtainsWhite
   category: construction-category-furniture
-  icon:
-    sprite: Structures/Decoration/Curtains/white.rsi
-    state: closed
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
 
 - type: construction
   id: Bookshelf
-  name: bookshelf
-  description: Mostly filled with books.
   graph: Bookshelf
   startNode: start
   targetNode: bookshelf
   category: construction-category-furniture
-  icon:
-    sprite: Structures/Furniture/bookshelf.rsi
-    state: base
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
 
 - type: construction
   id: NoticeBoard
-  name: notice board
-  description: Wooden notice board, can store paper inside itself.
   graph: NoticeBoard
   startNode: start
   targetNode: noticeBoard
   category: construction-category-furniture
-  icon:
-    sprite: Structures/Wallmounts/noticeboard.rsi
-    state: noticeboard
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: true
 
 - type: construction
   id: Mannequin
-  name: mannequin
-  description: Wooden mannequin designed for clothing displaying
   graph: Mannequin
   startNode: start
   targetNode: mannequin
   category: construction-category-furniture
-  icon:
-    sprite: Structures/Decoration/mannequin.rsi
-    state: mannequin
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: true
   canBuildInImpassable: false
   conditions:
-    - !type:TileNotBlocked
\ No newline at end of file
+    - !type:TileNotBlocked
index 0651fc4572b1ba34704e124546294a1e61fc6976..3da8ba8d46716e62edbff96604efc1c8b0fe7c8f 100644 (file)
 - 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
index 40f08e5f39b6048e386f2cf189fb2a2981acb14c..7883f8fe1076f96d9665e37c4e9df719eac97717 100644 (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
   category: construction-category-machines
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Machines/parts.rsi
-    state: "box_0"
 
 # Switching
 - type: construction
-  name: two-way lever
   id: TwoWayLeverRecipe
   graph: LeverGraph
   startNode: start
   targetNode: LeverNode
   category: construction-category-machines
-  description: A lever to control machines. It has 3 modes.
   objectType: Structure
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/conveyor.rsi
-    state: switch-off
   conditions:
     - !type:TileNotBlocked
 
 - type: construction
-  name: light switch
   id: LightSwitchRecipe
   graph: LightSwitchGraph
   startNode: start
   targetNode: LightSwitchNode
   category: construction-category-machines
-  description: A switch for toggling lights that are connected to the same apc.
-  icon:
-    sprite: Structures/Wallmounts/switch.rsi
-    state: on
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: true
   hide: true #TODO: Fix the lightswitch, issue #34659. Until then, keep hidden so people don't build it and get confused.
 
 - type: construction
-  name: signal switch
   id: SignalSwitchRecipe
   graph: SignalSwitchGraph
   startNode: start
   targetNode: SignalSwitchNode
   category: construction-category-machines
-  description: It's a switch for toggling power to things.
-  icon:
-    sprite: Structures/Wallmounts/switch.rsi
-    state: on
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: true
     - !type:WallmountCondition
 
 - type: construction
-  name: signal button
   id: SignalButtonRecipe
   graph: SignalButtonGraph
   startNode: start
   targetNode: SignalButtonNode
   category: construction-category-machines
-  description: It's a button for activating something.
-  icon:
-    sprite: Structures/Wallmounts/switch.rsi
-    state: on
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: true
     - !type:WallmountCondition
 
 - type: construction
-  name: directional light switch
   id: LightSwitchDirectionalRecipe
   graph: LightSwitchDirectionalGraph
   startNode: start
   targetNode: LightSwitchDirectionalNode
   category: construction-category-machines
-  description: A switch for toggling lights that are connected to the same apc.
-  icon:
-    sprite: Structures/Wallmounts/switch.rsi
-    state: on
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: true
   hide: true #TODO: Fix the lightswitch, issue #34659. Until then, keep hidden so people don't build it and get confused.
 
 - type: construction
-  name: directional signal switch
   id: SignalSwitchDirectionalRecipe
   graph: SignalSwitchDirectionalGraph
   startNode: start
   targetNode: SignalSwitchDirectionalNode
   category: construction-category-machines
-  description: It's a switch for toggling power to things.
-  icon:
-    sprite: Structures/Wallmounts/switch.rsi
-    state: on
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: true
     - !type:WallmountCondition
 
 - type: construction
-  name: directional signal button
   id: SignalButtonDirectionalRecipe
   graph: SignalButtonDirectionalGraph
   startNode: start
   targetNode: SignalButtonDirectionalNode
   category: construction-category-machines
-  description: It's a button for activating something.
-  icon:
-    sprite: Structures/Wallmounts/switch.rsi
-    state: on
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: true
index d644538a452f962bbc9d1503c4955d67cdea6ef0..cb11070a7d744b31807360b23cc1814a71f0c7a4 100644 (file)
 - type: construction
-  name: metal rod
   id: MetalRod
   graph: MetalRod
   startNode: start
   targetNode: MetalRod
   category: construction-category-materials
-  description: A sturdy metal rod that can be used for various purposes.
-  icon: { sprite: Objects/Materials/parts.rsi, state: rods }
   objectType: Item
 
 - type: construction
-  name: reinforced glass
-  description: A reinforced sheet of glass.
   id: SheetRGlass
   graph: Glass
   startNode: start
   targetNode: SheetRGlass
   category: construction-category-materials
-  icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: rglass }
   objectType: Item
 
 - type: construction
-  name: clockwork glass
-  description: A brass-reinforced sheet of glass.
   id: SheetClockworkGlass
   graph: Glass
   startNode: start
   targetNode: SheetClockworkGlass
   category: construction-category-materials
-  icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: cglass }
   objectType: Item
 
 - type: construction
-  name: plasma glass
-  description: A sheet of translucent plasma.
   id: SheetPGlass
   graph: Glass
   startNode: start
   targetNode: SheetPGlass
   category: construction-category-materials
-  icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: pglass }
   objectType: Item
 
 - type: construction
-  name: reinforced plasma glass
-  description: A reinforced sheet of translucent plasma.
   id: SheetRPGlass
   graph: Glass
   startNode: start
   targetNode: SheetRPGlass
   category: construction-category-materials
-  icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: rpglass }
   objectType: Item
 
 - type: construction
-  name: reinforced plasma glass
-  description: A reinforced sheet of translucent plasma.
   id: SheetRPGlass0
   graph: Glass
   startNode: start
   targetNode: SheetRPGlass0
   category: construction-category-materials
-  icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: rpglass }
   objectType: Item
 
 - type: construction
-  name: reinforced plasma glass
-  description: A reinforced sheet of translucent plasma.
   id: SheetRPGlass1
   graph: Glass
   startNode: start
   targetNode: SheetRPGlass1
   category: construction-category-materials
-  icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: rpglass }
   objectType: Item
 
 - type: construction
-  name: durathread
   id: MaterialDurathread
   graph: Durathread
   startNode: start
   targetNode: MaterialDurathread
   category: construction-category-materials
-  description: A high-quality thread used to make durable clothes.
-  icon: { sprite: Objects/Materials/materials.rsi, state: durathread }
   objectType: Item
 
 - type: construction
-  name: uranium glass
-  description: A sheet of uranium glass.
   id: SheetUGlass
   graph: Glass
   startNode: start
   targetNode: SheetUGlass
   category: construction-category-materials
-  icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: uglass }
   objectType: Item
 
 - type: construction
-  name: reinforced uranium glass
-  description: A reinforced sheet of uranium glass.
   id: SheetRUGlass
   graph: Glass
   startNode: start
   targetNode: SheetRUGlass
   category: construction-category-materials
-  icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: ruglass }
   objectType: Item
 
 - type: construction
-  name: reinforced uranium glass
-  description: A reinforced sheet of uranium glass.
   id: SheetRUGlass0
   graph: Glass
   startNode: start
   targetNode: SheetRUGlass0
   category: construction-category-materials
-  icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: ruglass }
   objectType: Item
 
 - type: construction
-  name: reinforced uranium glass
-  description: A reinforced sheet of uranium glass.
   id: SheetRUGlass1
   graph: Glass
   startNode: start
   targetNode: SheetRUGlass1
   category: construction-category-materials
-  icon: { sprite: Objects/Materials/Sheets/glass.rsi, state: ruglass }
-  objectType: Item
\ No newline at end of file
+  objectType: Item
index affacb098b81b12ebcff3774d2f7d2f94fa8af36..d1ed498b57ba435a8c3af1609f35396462fd2c03 100644 (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
index 48f6dd4d034b064ac376580f996a3ac72d49d7fb..6947a6d3a5d189c201bc05f8d74f6fb3816f5a35 100644 (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
 
 - type: construction
   id: TallCabinet
-  name: tall cabinet
-  description: A cabinet for all your filing needs.
   graph: FilingCabinet
   startNode: start
   targetNode: tallCabinet
   category: construction-category-storage
-  icon:
-    sprite: Structures/Storage/cabinets.rsi
-    state: tallcabinet
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
 
 - type: construction
   id: ChestDrawer
-  name: chest drawer
-  description: A small drawer for all your filing needs, Now with wheels!
   graph: FilingCabinet
   startNode: start
   targetNode: chestDrawer
   category: construction-category-storage
-  icon:
-    sprite: Structures/Storage/cabinets.rsi
-    state: chestdrawer
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
 # ItemCabinets
 - type: construction
   id: ShowCase
-  name: showcase
-  description: A sturdy showcase for an expensive exhibit.
   graph: GlassBox
   startNode: start
   targetNode: glassBox
   category: construction-category-storage
-  icon:
-    sprite: Structures/Storage/glassbox.rsi
-    state: icon
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
 # Normals
 - type: construction
   id: ShelfWood
-  name: wooden shelf
-  description: A convenient place to place, well, anything really.
   graph: Shelf
   startNode: start
   targetNode: ShelfWood
-  icon:
-    sprite: Structures/Storage/Shelfs/wood.rsi
-    state: base
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
 
 - type: construction
   id: ShelfMetal
-  name: metal shelf
-  description: A sturdy place to place, well, anything really.
   graph: Shelf
   startNode: start
   targetNode: ShelfMetal
-  icon:
-    sprite: Structures/Storage/Shelfs/metal.rsi
-    state: base
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
 
 - type: construction
   id: ShelfGlass
-  name: glass shelf
-  description: Just like a normal shelf! But fragile and without the walls!
   graph: Shelf
   startNode: start
   targetNode: ShelfGlass
-  icon:
-    sprite: Structures/Storage/Shelfs/glass.rsi
-    state: base
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
 # Reinforced
 - type: construction
   id: ShelfRWood
-  name: sturdy wooden shelf
-  description: The perfect place to store all your vintage records.
   graph: Shelf
   startNode: start
   targetNode: ShelfRWood
-  icon:
-    sprite: Structures/Storage/Shelfs/wood.rsi
-    state: rbase
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
 
 - type: construction
   id: ShelfRMetal
-  name: sturdy metal shelf
-  description: Nice and strong, and keeps your maints loot secure.
   graph: Shelf
   startNode: start
   targetNode: ShelfRMetal
-  icon:
-    sprite: Structures/Storage/Shelfs/metal.rsi
-    state: rbase
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
 
 - type: construction
   id: ShelfRGlass
-  name: sturdy glass shelf
-  description: See through, decent strength, shiny plastic case. Whats not to love?
   graph: Shelf
   startNode: start
   targetNode: ShelfRGlass
-  icon:
-    sprite: Structures/Storage/Shelfs/glass.rsi
-    state: rbase
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
 # Departmental
 - type: construction
   id: ShelfBar
-  name: bar shelf
-  description: A convenient place for all your extra booze, specifically designed to hold more bottles!
   graph: Shelf
   startNode: start
   targetNode: ShelfBar
-  icon:
-    sprite: Structures/Storage/Shelfs/Departments/Service/bar.rsi
-    state: base
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
 
 - type: construction
   id: ShelfKitchen
-  name: kitchen shelf
-  description: Holds your knifes, spice, and everything nice!
   graph: Shelf
   startNode: start
   targetNode: ShelfKitchen
-  icon:
-    sprite: Structures/Storage/Shelfs/Departments/Service/kitchen.rsi
-    state: base
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
 
 - type: construction
   id: ShelfChemistry
-  name: chemical shelf
-  description: Perfect for keeping the most important chemicals safe, and out of the clumsy clowns hands!
   graph: Shelf
   startNode: start
   targetNode: ShelfChemistry
-  icon:
-    sprite: Structures/Storage/Shelfs/Departments/Medical/chemistry.rsi
-    state: base
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
index 11579ac9baa8a4878f0314989f276aae98b0dcd3..2ea7641bd84b3b9d13f719b9fa39c332a6bfe424 100644 (file)
@@ -1,14 +1,9 @@
 - type: construction
-  name: girder
   id: Girder
   graph: Girder
   startNode: start
   targetNode: girder
   category: construction-category-structures
-  description: A large structural assembly made out of metal.
-  icon:
-    sprite: /Textures/Structures/Walls/solid.rsi
-    state: wall_girder
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: reinforced girder
   id: ReinforcedGirder
   graph: Girder
   startNode: start
   targetNode: reinforcedGirder
   category: construction-category-structures
-  description: A large structural assembly made out of metal and plasteel.
-  icon:
-    sprite: /Textures/Structures/Walls/solid.rsi
-    state: reinforced_wall_girder
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: wall gear
   id: ClockworkGirder
   graph: ClockworkGirder
   startNode: start
   targetNode: clockGirder
   category: construction-category-structures
-  description: A large gear with mounting brackets for additional plating.
-  icon:
-    sprite: /Textures/Structures/Walls/clock.rsi
-    state: wall_gear
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: wall
   id: Wall
   graph: Girder
   startNode: start
   targetNode: wall
   category: construction-category-structures
-  description: Keeps the air in and the greytide out.
-  icon:
-    sprite: Structures/Walls/solid.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: reinforced wall
   id: ReinforcedWall
   graph: Girder
   startNode: start
   targetNode: reinforcedWall
   category: construction-category-structures
-  description: Keeps the air in and the greytide out.
-  icon:
-    sprite: Structures/Walls/solid.rsi
-    state: rgeneric
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: clock wall
   id: WallClock
   graph: ClockworkGirder
   startNode: start
   targetNode: clockworkWall
   category: construction-category-structures
-  description: Keeps the air in and the greytide out.
-  icon:
-    sprite: Structures/Walls/clock.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: wood wall
   id: WoodWall
   graph: Barricade
   startNode: start
   targetNode: woodWall
   category: construction-category-structures
-  description: Keeps the air in and the greytide out.
-  icon:
-    sprite: Structures/Walls/wood.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: uranium wall
   id: UraniumWall
   graph: Girder
   startNode: start
   targetNode: uraniumWall
   category: construction-category-structures
-  description: Keeps the air in and the greytide out.
-  icon:
-    sprite: Structures/Walls/uranium.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: silver wall
   id: SilverWall
   graph: Girder
   startNode: start
   targetNode: silverWall
   category: construction-category-structures
-  description: Keeps the air in and the greytide out.
-  icon:
-    sprite: Structures/Walls/silver.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: plastic wall
   id: PlasticWall
   graph: Girder
   startNode: start
   targetNode: plasticWall
   category: construction-category-structures
-  description: Keeps the air in and the greytide out.
-  icon:
-    sprite: Structures/Walls/plastic.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: plasma wall
   id: PlasmaWall
   graph: Girder
   startNode: start
   targetNode: plasmaWall
   category: construction-category-structures
-  description: Keeps the air in and the greytide out.
-  icon:
-    sprite: Structures/Walls/plasma.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: gold wall
   id: GoldWall
   graph: Girder
   startNode: start
   targetNode: goldWall
   category: construction-category-structures
-  description: Keeps the air in and the greytide out.
-  icon:
-    sprite: Structures/Walls/gold.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: shuttle wall
   id: ShuttleWall
   graph: Girder
   startNode: start
   targetNode: shuttleWall
   category: construction-category-structures
-  description: Keeps the air in and the greytide out.
-  icon:
-    sprite: Structures/Walls/shuttle.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: diagonal shuttle wall
   id: DiagonalShuttleWall
   graph: Girder
   startNode: start
   targetNode: diagonalshuttleWall
   category: construction-category-structures
-  description: Keeps the air in and the greytide out.
-  icon:
-    sprite: Structures/Walls/shuttle_diagonal.rsi
-    state: state0
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: true
     - !type:TileNotBlocked
 
 - type: construction
-  name: bananium wall
   id: ClownWall
   graph: Girder
   startNode: start
   targetNode: bananiumWall
   category: construction-category-structures
-  description: Keeps the air in and the greytide out.
-  icon:
-    sprite: Structures/Walls/clown.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: meat wall
   id: MeatWall
   graph: Girder
   startNode: start
   targetNode: meatWall
   category: construction-category-structures
-  description: Sticky.
-  icon:
-    sprite: Structures/Walls/meat.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
   - !type:TileNotBlocked
 
 - type: construction
-  name: grille
   id: Grille
   graph: Grille
   startNode: start
   targetNode: grille
   category: construction-category-structures
-  description: A flimsy framework of iron rods.
   conditions:
     - !type:TileNotBlocked
       failIfSpace: false
-  icon:
-    sprite: Structures/Walls/grille.rsi
-    state: grille
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
 
 - type: construction
-  name: clockwork grille
   id: ClockGrille
   graph: ClockGrille
   startNode: start
   targetNode: clockGrille
   category: construction-category-structures
-  description: A flimsy framework of iron rods assembled in traditional ratvarian fashion.
   conditions:
     - !type:TileNotBlocked
       failIfSpace: false
-  icon:
-    sprite: Structures/Walls/clockwork_grille.rsi
-    state: ratvargrille
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
 
 - type: construction
-  name: diagonal grille
   id: GrilleDiagonal
   graph: GrilleDiagonal
   startNode: start
   targetNode: grilleDiagonal
   category: construction-category-structures
-  description: A flimsy framework of iron rods.
   conditions:
     - !type:TileNotBlocked
       failIfSpace: false
-  icon:
-    sprite: Structures/Walls/grille.rsi
-    state: grille_diagonal
   objectType: Structure
   placementMode: SnapgridCenter
 
 - type: construction
-  name: diagonal clockwork grille
   id: ClockworkGrilleDiagonal
   graph: GrilleDiagonal
   startNode: start
   targetNode: clockworkGrilleDiagonal
   category: construction-category-structures
-  description: A flimsy framework of iron rods assembled in traditional ratvarian fashion.
   conditions:
     - !type:TileNotBlocked
       failIfSpace: false
-  icon:
-    sprite: Structures/Walls/clockwork_grille.rsi
-    state: ratvargrille_diagonal
   objectType: Structure
   placementMode: SnapgridCenter
 
 - type: construction
-  name: window
   id: Window
   graph: Window
   startNode: start
   targetNode: window
   category: construction-category-structures
-  description: Clear.
   canBuildInImpassable: true
   conditions:
     - !type:EmptyOrWindowValidInTile
     - !type:NoWindowsInTile
-  icon:
-    sprite: Structures/Windows/window.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
 
 - type: construction
-  name: diagonal window
   id: WindowDiagonal
   graph: WindowDiagonal
   startNode: start
   targetNode: windowDiagonal
   category: construction-category-structures
-  description: Clear.
   canBuildInImpassable: true
   conditions:
     - !type:EmptyOrWindowValidInTile
     - !type:NoWindowsInTile
-  icon:
-    sprite: Structures/Windows/window_diagonal.rsi
-    state: state1
   objectType: Structure
   placementMode: SnapgridCenter
 
 - type: construction
-  name: reinforced window
   id: ReinforcedWindow
   graph: Window
   startNode: start
   targetNode: reinforcedWindow
   category: construction-category-structures
-  description: Clear but tough.
   canBuildInImpassable: true
   conditions:
     - !type:EmptyOrWindowValidInTile
     - !type:NoWindowsInTile
-  icon:
-    sprite: Structures/Windows/reinforced_window.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
 
 - type: construction
-  name: diagonal reinforced window
   id: ReinforcedWindowDiagonal
   graph: WindowDiagonal
   startNode: start
   targetNode: reinforcedWindowDiagonal
   category: construction-category-structures
-  description: Clear but tough.
   canBuildInImpassable: true
   conditions:
     - !type:EmptyOrWindowValidInTile
     - !type:NoWindowsInTile
-  icon:
-    sprite: Structures/Windows/reinforced_window_diagonal.rsi
-    state: state1
   objectType: Structure
   placementMode: SnapgridCenter
 
 - type: construction
-  name: tinted window
   id: TintedWindow
   graph: Window
   startNode: start
   targetNode: tintedWindow
   category: construction-category-structures
-  description: Not clear, but lasers still pass through.
   canBuildInImpassable: true
   conditions:
     - !type:EmptyOrWindowValidInTile
     - !type:NoWindowsInTile
-  icon:
-    sprite: Structures/Windows/tinted_window.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
 
 - type: construction
-  name: clockwork window
   id: ClockworkWindow
   graph: Window
   startNode: start
   targetNode: clockworkWindow
   category: construction-category-structures
-  description: Clear and tough, with a golden tint.
   canBuildInImpassable: true
   conditions:
     - !type:EmptyOrWindowValidInTile
     - !type:NoWindowsInTile
-  icon:
-    sprite: Structures/Windows/clockwork_window.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
 
 - type: construction
-  name: diagonal clockwork window
   id: ClockworkWindowDiagonal
   graph: WindowDiagonal
   startNode: start
   targetNode: clockworkWindowDiagonal
   category: construction-category-structures
-  description: Clear and tough, with a golden tint.
   canBuildInImpassable: true
   conditions:
     - !type:EmptyOrWindowValidInTile
     - !type:NoWindowsInTile
-  icon:
-    sprite: Structures/Windows/clockwork_diagonal.rsi
-    state: state0
   objectType: Structure
   placementMode: SnapgridCenter
 
 - type: construction
-  name: plasma window
   id: PlasmaWindow
   graph: Window
   startNode: start
   targetNode: plasmaWindow
   category: construction-category-structures
   canBuildInImpassable: true
-  description: Clear, with a purple tint.
   conditions:
     - !type:EmptyOrWindowValidInTile
     - !type:NoWindowsInTile
-  icon:
-    sprite: Structures/Windows/plasma_window.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
 
 - type: construction
-  name: reinforced plasma window
   id: ReinforcedPlasmaWindow
   graph: Window
   startNode: start
   targetNode: reinforcedPlasmaWindow
   category: construction-category-structures
   canBuildInImpassable: true
-  description: Clear and even tougher, with a purple tint.
   conditions:
     - !type:EmptyOrWindowValidInTile
     - !type:NoWindowsInTile
-  icon:
-    sprite: Structures/Windows/reinforced_plasma_window.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
 
 - type: construction
-  name: shuttle window
   id: ShuttleWindow
   graph: Window
   startNode: start
   targetNode: shuttleWindow
   category: construction-category-structures
   canBuildInImpassable: true
-  description: Extra sturdy to resist the pressure of FTL or sustain damage from munitions.
   conditions:
     - !type:EmptyOrWindowValidInTile
     - !type:NoWindowsInTile
-  icon:
-    sprite: Structures/Windows/shuttle_window.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
 
 - type: construction
-  name: diagonal plasma window
   id: PlasmaWindowDiagonal
   graph: WindowDiagonal
   startNode: start
   targetNode: plasmaWindowDiagonal
   category: construction-category-structures
   canBuildInImpassable: true
-  description: Clear, with a purple tint.
   conditions:
     - !type:EmptyOrWindowValidInTile
     - !type:NoWindowsInTile
-  icon:
-    sprite: Structures/Windows/plasma_diagonal.rsi
-    state: state1
   objectType: Structure
   placementMode: SnapgridCenter
 
 - type: construction
-  name: diagonal reinforced plasma window
   id: ReinforcedPlasmaWindowDiagonal
   graph: WindowDiagonal
   startNode: start
   targetNode: reinforcedPlasmaWindowDiagonal
   category: construction-category-structures
   canBuildInImpassable: true
-  description: Clear and even tougher, with a purple tint.
   conditions:
     - !type:EmptyOrWindowValidInTile
     - !type:NoWindowsInTile
-  icon:
-    sprite: Structures/Windows/reinforced_plasma_diagonal.rsi
-    state: state1
   objectType: Structure
   placementMode: SnapgridCenter
 
 - type: construction
-  name: directional window
   id: WindowDirectional
   graph: WindowDirectional
   startNode: start
   targetNode: windowDirectional
   category: construction-category-structures
-  description: Clear.
   canBuildInImpassable: true
   conditions:
     - !type:EmptyOrWindowValidInTile
     - !type:NoWindowsInTile
-  icon:
-    sprite: Structures/Windows/directional.rsi
-    state: window
   objectType: Structure
   placementMode: SnapgridCenter
 
 - type: construction
-  name: directional reinforced window
   id: WindowReinforcedDirectional
   graph: WindowDirectional
   startNode: start
   targetNode: windowReinforcedDirectional
   category: construction-category-structures
-  description: Clear but tough.
   canBuildInImpassable: true
   conditions:
     - !type:EmptyOrWindowValidInTile
     - !type:NoWindowsInTile
-  icon:
-    sprite: Structures/Windows/directional.rsi
-    state: reinforced_window
   objectType: Structure
   placementMode: SnapgridCenter
 
 - type: construction
-  name: directional clockwork window
   id: WindowClockworkDirectional
   graph: WindowDirectional
   startNode: start
   targetNode: windowClockworkDirectional
   category: construction-category-structures
-  description: Clear and tough, with a golden tint.
   canBuildInImpassable: true
   conditions:
     - !type:EmptyOrWindowValidInTile
     - !type:NoWindowsInTile
-  icon:
-    sprite: Structures/Windows/directional.rsi
-    state: clock_window
   objectType: Structure
   placementMode: SnapgridCenter
 
 - type: construction
-  name: directional plasma window
   id: PlasmaWindowDirectional
   graph: WindowDirectional
   startNode: start
   targetNode: plasmaWindowDirectional
   category: construction-category-structures
   canBuildInImpassable: true
-  description: Clear, with a purple tint.
   conditions:
     - !type:EmptyOrWindowValidInTile
     - !type:NoWindowsInTile
-  icon:
-    sprite: Structures/Windows/directional.rsi
-    state: plasma_window
   objectType: Structure
   placementMode: SnapgridCenter
 
 - type: construction
-  name: directional reinforced plasma window
   id: PlasmaReinforcedWindowDirectional
   graph: WindowDirectional
   startNode: start
   targetNode: plasmaReinforcedWindowDirectional
   category: construction-category-structures
   canBuildInImpassable: true
-  description: Clear and even tougher, with a purple tint.
   conditions:
     - !type:EmptyOrWindowValidInTile
     - !type:NoWindowsInTile
-  icon:
-    sprite: Structures/Windows/directional.rsi
-    state: plasma_reinforced_window
   objectType: Structure
   placementMode: SnapgridCenter
 
 - type: construction
-  name: uranium window
   id: UraniumWindow
   graph: Window
   startNode: start
   targetNode: uraniumWindow
   category: construction-category-structures
   canBuildInImpassable: true
-  description: Clear, with added RadAbsorb to protect you from deadly radiation.
   conditions:
     - !type:EmptyOrWindowValidInTile
     - !type:NoWindowsInTile
-  icon:
-    sprite: Structures/Windows/uranium_window.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
 
 - type: construction
-  name: reinforced uranium window
   id: ReinforcedUraniumWindow
   graph: Window
   startNode: start
   targetNode: reinforcedUraniumWindow
   category: construction-category-structures
   canBuildInImpassable: true
-  description: Clear and even tougher, with added RadAbsorb to protect you from deadly radiation.
   conditions:
     - !type:EmptyOrWindowValidInTile
     - !type:NoWindowsInTile
-  icon:
-    sprite: Structures/Windows/reinforced_uranium_window.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
 
 - type: construction
-  name: diagonal uranium window
   id: UraniumWindowDiagonal
   graph: WindowDiagonal
   startNode: start
   targetNode: uraniumWindowDiagonal
   category: construction-category-structures
   canBuildInImpassable: true
-  description: Clear, with added RadAbsorb to protect you from deadly radiation.
   conditions:
     - !type:EmptyOrWindowValidInTile
     - !type:NoWindowsInTile
-  icon:
-    sprite: Structures/Windows/uranium_window_diagonal.rsi
-    state: state1
   objectType: Structure
   placementMode: SnapgridCenter
 
 - type: construction
-  name: diagonal reinforced uranium window
   id: ReinforcedUraniumWindowDiagonal
   graph: WindowDiagonal
   startNode: start
   targetNode: reinforcedUraniumWindowDiagonal
   category: construction-category-structures
   canBuildInImpassable: true
-  description: Clear and even tougher, with added RadAbsorb to protect you from deadly radiation.
   conditions:
     - !type:EmptyOrWindowValidInTile
     - !type:NoWindowsInTile
-  icon:
-    sprite: Structures/Windows/reinforced_uranium_diagonal.rsi
-    state: state1
   objectType: Structure
   placementMode: SnapgridCenter
 
 - type: construction
-  name: firelock
   id: Firelock
   graph: Firelock
   startNode: start
   targetNode: Firelock
   category: construction-category-structures
-  description: This is a firelock - it locks an area when a fire alarm in the area is triggered. Don't get squished!
-  icon:
-    sprite: Structures/Doors/Airlocks/Standard/firelock.rsi
-    state: closed
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: glass firelock
   id: FirelockGlass
   graph: Firelock
   startNode: start
   targetNode: FirelockGlass
   category: construction-category-structures
-  description: This is a firelock - it locks an area when a fire alarm in the area is triggered. Don't get squished!
-  icon:
-    sprite: Structures/Doors/Airlocks/Glass/firelock.rsi
-    state: closed
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: thin firelock
   id: FirelockEdge
   graph: Firelock
   startNode: start
   targetNode: FirelockEdge
   category: construction-category-structures
-  description: This is a firelock - it locks an area when a fire alarm in the area is triggered. Don't get squished!
-  icon:
-    sprite: Structures/Doors/edge_door_hazard.rsi
-    state: closed
   placementMode: SnapgridCenter
   objectType: Structure
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: turnstile
   id: Turnstile
   graph: Turnstile
   startNode: start
   targetNode: turnstile
   category: construction-category-structures
-  description: A mechanical door that permits one-way access and prevents tailgating.
-  icon:
-    sprite: Structures/Doors/turnstile.rsi
-    state: turnstile
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
   - !type:TileNotBlocked
 
 - type: construction
-  name: shutter
   id: Shutters
   graph: Shutters
   startNode: start
   targetNode: Shutters
   category: construction-category-structures
-  description: This is a shutter - connect it to a button to open and close it.
-  icon:
-    sprite: Structures/Doors/Shutters/shutters.rsi
-    state: closed
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
 
 - type: construction
-  name: glass shutter
   id: ShuttersWindow
   graph: Shutters
   startNode: start
   targetNode: ShuttersWindow
   category: construction-category-structures
-  description: This is a shutter - connect it to a button to open and close it.
-  icon:
-    sprite: Structures/Doors/Shutters/shutters_window.rsi
-    state: closed
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
 
 - type: construction
-  name: radiation shutter
   id: ShuttersRadiation
   graph: Shutters
   startNode: start
   targetNode: ShuttersRadiation
   category: construction-category-structures
-  description: This is a shutter - connect it to a button to open and close it.
-  icon:
-    sprite: Structures/Doors/Shutters/shutters_radiation.rsi
-    state: closed
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
 
 - type: construction
-  name: blast door
   id: BlastDoor
   graph: BlastDoor
   startNode: start
   targetNode: blastdoor
   category: construction-category-structures
-  description: This one says 'BLAST DONGER'.
-  icon:
-    sprite: Structures/Doors/Shutters/blastdoor.rsi
-    state: closed
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
 
 - type: construction
-  name: catwalk
   id: Catwalk
   graph: Catwalk
   startNode: start
   targetNode: Catwalk
   category: construction-category-structures
-  description: Just like a lattice. Except it looks better.
   conditions:
     - !type:TileNotBlocked
       failIfSpace: false
       targets:
         - Lattice
         - Plating
-  icon:
-    sprite: Structures/catwalk.rsi
-    state: catwalk_preview
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
 
 - type: construction
-  name: bananium floor
   id: FloorBananium
   graph: FloorBananium
   startNode: start
   targetNode: BananiumFloor
   category: construction-category-structures
-  description: A slippery floor of bright yellow bananium.
   conditions:
     - !type:TileNotBlocked
       failIfSpace: false
     - !type:TileType
       targets:
         - Plating
-  icon:
-    sprite: Tiles/Misc/bananium.rsi
-    state: bananium
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
 
 - type: construction
-  name: wooden barricade
   id: Barricade
   graph: Barricade
   startNode: start
   targetNode: barricadefull
   category: construction-category-structures
-  description: An improvised barricade made out of wooden planks.
-  icon:
-    sprite: Structures/barricades.rsi
-    state: barricade_full
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: wooden barricade
   id: BarricadeDirectional
   graph: BarricadeDirectional
   startNode: start
   targetNode: barricadefull
   category: construction-category-structures
-  description: An improvised barricade made out of wooden planks.
-  icon:
-    sprite: Structures/barricades.rsi
-    state: barricade_directional
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: railing
   id: Railing
   graph: Railing
   startNode: start
   targetNode: railing
   category: construction-category-structures
-  description: Basic railing meant to protect idiots like you from falling.
-  icon:
-    sprite: Structures/Walls/railing.rsi
-    state: side
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
   - !type:TileNotBlocked
 
 - type: construction
-  name: railing corner
   id: RailingCorner
   graph: Railing
   startNode: start
   targetNode: railingCorner
   category: construction-category-structures
-  description: Basic railing meant to protect idiots like you from falling.
-  icon:
-    sprite: Structures/Walls/railing.rsi
-    state: corner
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
   - !type:TileNotBlocked
 
 - type: construction
-  name: railing corner small
   id: RailingCornerSmall
   graph: Railing
   startNode: start
   targetNode: railingCornerSmall
   category: construction-category-structures
-  description: Basic railing meant to protect idiots like you from falling.
-  icon:
-    sprite: Structures/Walls/railing.rsi
-    state: corner_small
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
   - !type:TileNotBlocked
 
 - type: construction
-  name: railing round
   id: RailingRound
   graph: Railing
   startNode: start
   targetNode: railingRound
   category: construction-category-structures
-  description: Basic railing meant to protect idiots like you from falling.
-  icon:
-    sprite: Structures/Walls/railing.rsi
-    state: round
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
 
 # Chain link fencing
 - type: construction
-  name: chain link fence
   id: FenceMetal
   graph: FenceMetal
   startNode: start
   targetNode: straight
   category: construction-category-structures
-  description: Part of a chain link fence meant to cordon off areas.
-  icon:
-    sprite: Structures/Walls/fence.rsi
-    state: straight
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
   - !type:TileNotBlocked
 
 - type: construction
-  name: chain link fence corner
   id: FenceMetalCorner
   graph: FenceMetal
   startNode: start
   targetNode: corner
   category: construction-category-structures
-  description: Part of a chain link fence meant to cordon off areas.
-  icon:
-    sprite: Structures/Walls/fence.rsi
-    state: corner
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
   - !type:TileNotBlocked
 
 - type: construction
-  name: chain link fence end-piece
   id: FenceMetalEnd
   graph: FenceMetal
   startNode: start
   targetNode: end
   category: construction-category-structures
-  description: Part of a chain link fence meant to cordon off areas.
-  icon:
-    sprite: Structures/Walls/fence.rsi
-    state: end
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
   - !type:TileNotBlocked
 
 - type: construction
-  name: chain link fence gate
   id: FenceMetalGate
   graph: FenceMetal
   startNode: start
   targetNode: gate
   category: construction-category-structures
-  description: An easy way to get through a chain link fence.
-  icon:
-    sprite: Structures/Walls/fence.rsi
-    state: door_closed
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
 
 #Wooden fence high
 - type: construction
-  name: wooden high fence
   id: FenceWood
   graph: FenceWood
   startNode: start
   targetNode: straight
   category: construction-category-structures
-  description: Part of a wooden fence meant to cordon off areas.
-  icon:
-    sprite: Structures/Walls/wooden_fence.rsi
-    state: straight
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
   - !type:TileNotBlocked
 
 - type: construction
-  name: wooden high fence end
   id: FenceWoodEnd
   graph: FenceWood
   startNode: start
   targetNode: end
   category: construction-category-structures
-  description: Part of a wooden fence meant to cordon off areas.
-  icon:
-    sprite: Structures/Walls/wooden_fence.rsi
-    state: end
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
   - !type:TileNotBlocked
 
 - type: construction
-  name: wooden high fence corner
   id: FenceWoodCorner
   graph: FenceWood
   startNode: start
   targetNode: corner
   category: construction-category-structures
-  description: Part of a wooden fence meant to cordon off areas.
-  icon:
-    sprite: Structures/Walls/wooden_fence.rsi
-    state: corner
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
   - !type:TileNotBlocked
 
 - type: construction
-  name: wooden high fence t-junction
   id: FenceWoodTJunction
   graph: FenceWood
   startNode: start
   targetNode: tjunction
   category: construction-category-structures
-  description: Part of a wooden fence meant to cordon off areas.
-  icon:
-    sprite: Structures/Walls/wooden_fence.rsi
-    state: tjunction
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
   - !type:TileNotBlocked
 
 - type: construction
-  name: wooden high fence gate
   id: FenceWoodGate
   graph: FenceWood
   startNode: start
   targetNode: gate
   category: construction-category-structures
-  description: Part of a wooden fence meant to cordon off areas.
-  icon:
-    sprite: Structures/Walls/wooden_fence.rsi
-    state: door_closed
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
 
 #Wooden fence small
 - type: construction
-  name: wooden small fence
   id: FenceWoodSmall
   graph: FenceWood
   startNode: start
   targetNode: straight_small
   category: construction-category-structures
-  description: Part of a wooden fence meant to cordon off areas.
-  icon:
-    sprite: Structures/Walls/wooden_fence.rsi
-    state: straight_small
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
   - !type:TileNotBlocked
 
 - type: construction
-  name: wooden small fence end
   id: FenceWoodEndSmall
   graph: FenceWood
   startNode: start
   targetNode: end_small
   category: construction-category-structures
-  description: Part of a wooden fence meant to cordon off areas.
-  icon:
-    sprite: Structures/Walls/wooden_fence.rsi
-    state: end_small
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
   - !type:TileNotBlocked
 
 - type: construction
-  name: wooden small fence corner
   id: FenceWoodCornerSmall
   graph: FenceWood
   startNode: start
   targetNode: corner_small
   category: construction-category-structures
-  description: Part of a wooden fence meant to cordon off areas.
-  icon:
-    sprite: Structures/Walls/wooden_fence.rsi
-    state: corner_small
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
   - !type:TileNotBlocked
 
 - type: construction
-  name: wooden small fence t-junction
   id: FenceWoodTJunctionSmall
   graph: FenceWood
   startNode: start
   targetNode: tjunction_small
   category: construction-category-structures
-  description: Part of a wooden fence meant to cordon off areas.
-  icon:
-    sprite: Structures/Walls/wooden_fence.rsi
-    state: tjunction_small
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
   - !type:TileNotBlocked
 
 - type: construction
-  name: wooden small fence gate
   id: FenceWoodGateSmall
   graph: FenceWood
   startNode: start
   targetNode: gate_small
   category: construction-category-structures
-  description: Part of a wooden fence meant to cordon off areas.
-  icon:
-    sprite: Structures/Walls/wooden_fence.rsi
-    state: door_closed_small
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
 
 #Airlocks
 - type: construction
-  name: airlock
   id: Airlock
   graph: Airlock
   startNode: start
   targetNode: airlock
   category: construction-category-structures
-  description: It opens, it closes, and maybe crushes you.
-  icon:
-    sprite: Structures/Doors/Airlocks/Standard/basic.rsi
-    state: assembly
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: glass airlock
   id: AirlockGlass
   graph: Airlock
   startNode: start
   targetNode: glassAirlock
   category: construction-category-structures
-  description: It opens, it closes, and maybe crushes you.
-  icon:
-    sprite: Structures/Doors/Airlocks/Glass/glass.rsi
-    state: assembly
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: pinion airlock
   id: PinionAirlock
   graph: PinionAirlock
   startNode: start
   targetNode: airlock
   category: construction-category-structures
-  description: It opens, it closes, and maybe crushes you.
-  icon:
-    sprite: Structures/Doors/Airlocks/Standard/clockwork_pinion.rsi
-    state: assembly
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: glass pinion airlock
   id: PinionAirlockGlass
   graph: PinionAirlock
   startNode: start
   targetNode: glassAirlock
   category: construction-category-structures
-  description: It opens, it closes, and maybe crushes you.
-  icon:
-    sprite: Structures/Doors/Airlocks/Glass/clockwork_pinion.rsi
-    state: assembly
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: shuttle airlock
   id: AirlockShuttle
   graph: AirlockShuttle
   startNode: start
   targetNode: airlock
   category: construction-category-structures
-  description: It opens, it closes, and maybe crushes you. Necessary for connecting two space craft together.
-  icon:
-    sprite: Structures/Doors/Airlocks/Glass/shuttle.rsi
-    state: closed
   #  state: assembly
   objectType: Structure
   placementMode: SnapgridCenter
   - !type:TileNotBlocked
 
 - type: construction
-  name: glass shuttle airlock
   id: AirlockGlassShuttle
   graph: AirlockShuttle
   startNode: start
   targetNode: airlockGlass
   category: construction-category-structures
-  description: It opens, it closes, and maybe crushes you. Necessary for connecting two space craft together. This one has a window.
-  icon:
-    sprite: Structures/Doors/Airlocks/Glass/shuttle.rsi
-    state: closed
   #  state: assembly
   objectType: Structure
   placementMode: SnapgridCenter
     - !type:TileNotBlocked
 
 - type: construction
-  name: windoor
   id: Windoor
   graph: Windoor
   startNode: start
   targetNode: windoor
   category: construction-category-structures
-  description: It opens, it closes, and you can see through it! And it can be made of Plasma, Uranium, or normal Glass!
-  icon:
-    sprite: Structures/Doors/Windoors/windoor.rsi
-    state: closed
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: secure windoor
   id: SecureWindoor
   graph: Windoor
   startNode: start
   targetNode: windoorSecure
   category: construction-category-structures
-  description: It's tough, it's a door, and you can see through it! And it can be made of Plasma, Uranium, or normal Glass!
-  icon:
-    sprite: Structures/Doors/Windoors/windoor.rsi
-    state: closed
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: clockwork windoor
   id: ClockworkWindoor
   graph: Windoor
   startNode: start
   targetNode: windoorClockwork
   category: construction-category-structures
-  description: It opens, it closes, and you can see through it! This one looks tough.
-  icon:
-    sprite: Structures/Doors/Windoors/clockwork_windoor.rsi
-    state: closed
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
 
 #lighting
 - type: construction
-  name: wall light
   id: LightTubeFixture
   graph: LightFixture
   startNode: start
   targetNode: tubeLight
   category: construction-category-structures
-  description: A wall light fixture. Use light tubes.
-  icon:
-    sprite: Structures/Wallmounts/Lighting/light_tube.rsi
-    state: base
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: true
     - !type:TileNotBlocked
 
 - type: construction
-  name: small wall light
   id: LightSmallFixture
   graph: LightFixture
   startNode: start
   targetNode: bulbLight
   category: construction-category-structures
-  description: A wall light fixture. Use light bulbs.
-  icon:
-    sprite: Structures/Wallmounts/Lighting/light_small.rsi
-    state: base
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: true
     - !type:TileNotBlocked
 
 - type: construction
-  name: emergency light
   id: EmergencyLightFixture
   graph: LightFixture
   startNode: start
   targetNode: emergencyLight
   category: construction-category-structures
-  description: An emergency light.
-  icon:
-    sprite: Structures/Wallmounts/Lighting/emergency_light.rsi
-    state: base
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: true
     - !type:TileNotBlocked
 
 - type: construction
-  name: ground light post
   id: LightGroundFixture
   graph: LightFixture
   startNode: start
   targetNode: groundLight
   category: construction-category-structures
-  description: A ground light fixture. Use light tubes.
-  icon:
-    sprite: Structures/Lighting/LightPosts/small_light_post.rsi
-    state: base
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: strobe light
   id: LightStrobeFixture
   graph: LightFixture
   startNode: start
   targetNode: strobeLight
   category: construction-category-structures
-  description: A wall light fixture. Use light bulbs.
-  icon:
-    sprite: Structures/Wallmounts/Lighting/strobe_light.rsi
-    state: base
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: true
 
 #conveyor
 - type: construction
-  name: conveyor belt
   id: ConveyorBelt
   graph: ConveyorGraph
   startNode: start
   targetNode: entity
   category: construction-category-structures
-  description: A conveyor belt, commonly used to transport large numbers of items elsewhere quite quickly.
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/conveyor.rsi
-    state: conveyor_stopped_cw
   conditions:
     - !type:TileNotBlocked
 
 - type: construction
-  name: metal door
   id: MetalDoor
   graph: DoorGraph
   startNode: start
   targetNode: metalDoor
   category: construction-category-structures
-  description: A primitive door with manual operation like the cavemen used.
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Doors/MineralDoors/metal_door.rsi
-    state: closed
   conditions:
     - !type:TileNotBlocked
 
 - type: construction
-  name: wooden door
   id: WoodDoor
   graph: DoorGraph
   startNode: start
   targetNode: woodDoor
   category: construction-category-structures
-  description: A primitive door with manual operation like the cavemen used.
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Doors/MineralDoors/wood_door.rsi
-    state: closed
   conditions:
     - !type:TileNotBlocked
 
 - type: construction
-  name: plasma door
   id: PlasmaDoor
   graph: DoorGraph
   startNode: start
   targetNode: plasmaDoor
   category: construction-category-structures
-  description: A primitive door with manual operation like the cavemen used.
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Doors/MineralDoors/plasma_door.rsi
-    state: closed
   conditions:
     - !type:TileNotBlocked
 
 - type: construction
-  name: gold door
   id: GoldDoor
   graph: DoorGraph
   startNode: start
   targetNode: goldDoor
   category: construction-category-structures
-  description: A primitive door with manual operation like the cavemen used.
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Doors/MineralDoors/gold_door.rsi
-    state: closed
   conditions:
     - !type:TileNotBlocked
 
 - type: construction
-  name: silver door
   id: SilverDoor
   graph: DoorGraph
   startNode: start
   targetNode: silverDoor
   category: construction-category-structures
-  description: A primitive door with manual operation like the cavemen used.
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Doors/MineralDoors/silver_door.rsi
-    state: closed
   conditions:
     - !type:TileNotBlocked
 
 - type: construction
-  name: paper door
   id: PaperDoor
   graph: DoorGraph
   startNode: start
   targetNode: paperDoor
   category: construction-category-structures
-  description: A primitive door with manual operation like the cavemen used.
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Doors/MineralDoors/paper_door.rsi
-    state: closed
 
 - type: construction
-  name: plastic flaps
   id: PlasticFlapsClear
   graph: PlasticFlapsGraph
   startNode: start
   targetNode: plasticFlaps
   category: construction-category-structures
   placementMode: SnapgridCenter
-  description: A plastic flap to let items through and keep people out.
   objectType: Structure
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/plastic_flaps.rsi
-    state: plasticflaps
   conditions:
     - !type:TileNotBlocked
 
 - type: construction
-  name: opaque plastic flaps
   id: PlasticFlapsOpaque
   graph: PlasticFlapsGraph
   startNode: start
   targetNode: opaqueFlaps
   category: construction-category-structures
   placementMode: SnapgridCenter
-  description: An opaque plastic flap to let items through and keep people out.
   objectType: Structure
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/plastic_flaps.rsi
-    state: plasticflaps
   conditions:
     - !type:TileNotBlocked
 
 - type: construction
-  name: carp statue
   id: CarpStatue
   graph: CarpStatue
   startNode: start
   targetNode: statue
   category: construction-category-structures
   placementMode: SnapgridCenter
-  description: A statue of one of the brave carp that got us where we are today. Made with real teeth!
   objectType: Structure
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Specific/carp_statue.rsi
-    state: icon
   conditions:
   - !type:TileNotBlocked
 
 - type: construction
-  name: bananium clown statue
   id: BananiumClownStatue
   graph: BananiumStatueClown
   startNode: start
   targetNode: bananiumStatue
   category: construction-category-structures
   placementMode: SnapgridCenter
-  description: A clown statue made from bananium.
   objectType: Structure
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Decoration/statues.rsi
-    state: bananium_clown
   conditions:
     - !type:TileNotBlocked
 
 - type: construction
-  name: bananium door
   id: BananiumDoor
   graph: DoorGraph
   startNode: start
   targetNode: bananiumDoor
   category: construction-category-structures
-  description: A primitive door made from bananium, it honks.
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Doors/MineralDoors/bananium_door.rsi
-    state: closed
   conditions:
     - !type:TileNotBlocked
 
 - type: construction
-  name: bananium altar
   id: BananiumAltar
   graph: BananiumAltarGraph
   startNode: start
   targetNode: bananiumAltar
   category: construction-category-structures
-  description: An altar to worship the honkmother with.
-  icon:
-    sprite: Structures/Furniture/Altars/Cults/bananium.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: solid secret door
   id: SolidSecretDoor
+  name: recipes-secret-door-name
+  description: recipes-secret-door-desc
   graph: SecretDoor
   startNode: start
   targetNode: solidSecretDoor
   category: construction-category-structures
-  description: A secret door for the wall.
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Doors/secret_door.rsi
-    state: closed
   conditions:
     - !type:TileNotBlocked
index bb89c5f244264e25f2b604a0216109ff77fa1ef3..d5b363ebe5f84e78b7193c97603141a2b9b7f274 100644 (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
index cecb2495551ae8b3d4340c9032190517ceca1001..680bc4e36bdde21cf54dbffc7f8541314473f99e 100644 (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
 
 # POWER
 - type: construction
-  name: APC
   id: APC
   graph: APC
   startNode: start
   targetNode: apc
   category: construction-category-utilities
-  description: "Area Power Controller (APC). Controls power. In an area."
-  icon:
-    sprite: Structures/Power/apc.rsi
-    state: base
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
 
 - type: construction
-  name: cable terminal
   id: CableTerminal
   graph: CableTerminal
   startNode: start
   targetNode: cable_terminal
   category: construction-category-utilities
-  description: "Input of devices such as the SMES. The red cables needs to face the device."
-  icon:
-    sprite: Structures/Power/cable_terminal.rsi
-    state: term
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
 
 - type: construction
-  name: wallmount substation
   id: WallmountSubstation
   graph: WallmountSubstation
   startNode: start
   targetNode: substation
   category: construction-category-utilities
-  description: "A wallmount substation for compact spaces. Make sure to place cable underneath before building the wall."
-  icon:
-    sprite: Structures/Power/substation.rsi
-    state: substation_wall
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
 
 - type: construction
-  name: wallmount generator
   id: WallmountGenerator
   graph: WallmountGenerator
   startNode: start
   targetNode: generator
   category: construction-category-utilities
-  description: "A wallmount generator for compact spaces. Make sure to place cable underneath before building the wall."
-  icon:
-    sprite: Structures/Power/Generation/wallmount_generator.rsi
-    state: panel
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
 
 - type: construction
-  name: wallmount APU
   id: WallmountGeneratorAPU
   graph: WallmountGenerator
   startNode: start
   targetNode: APU
   category: construction-category-utilities
-  description: "A wallmount APU for compact shuttles. Make sure to place cable underneath before building the wall."
-  icon:
-    sprite: Structures/Power/Generation/wallmount_generator.rsi
-    state: panel
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
 
 # DISPOSALS
 - type: construction
-  name: disposal unit
-  description: A pneumatic waste disposal unit.
   id: DisposalUnit
   graph: DisposalMachine
   startNode: start
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/disposal.rsi
-    state: "disposal"
 
 - type: construction
-  name: mailing unit
-  description: A pneumatic mail delivery unit.
   id: MailingUnit
   graph: DisposalMachine
   startNode: start
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/disposal.rsi
-    state: "mailing"
 
 - type: construction
-  name: disposal pipe
   id: DisposalPipe
-  description: A huge pipe segment used for constructing disposal systems.
   graph: DisposalPipe
   startNode: start
   targetNode: pipe
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/disposal.rsi
-    state: conpipe-s
 
 - type: construction
-  name: disposal tagger
-  description: A pipe that tags entities for routing.
   id: DisposalTagger
   graph: DisposalPipe
   startNode: start
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/disposal.rsi
-    state: conpipe-tagger
 
 - type: construction
-  name: disposal trunk
-  description: A pipe trunk used as an entry point for disposal systems.
   id: DisposalTrunk
   graph: DisposalPipe
   startNode: start
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/disposal.rsi
-    state: conpipe-t
 
 - type: construction
-  name: disposal router
-  description: A three-way router. Entities with matching tags get routed to the side.
   id: DisposalRouter
   graph: DisposalPipe
   startNode: start
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/disposal.rsi
-    state: conpipe-j1s
   mirror: DisposalRouterFlipped
 
 - type: construction
   hide: true
-  name: disposal router
-  description: A three-way router. Entities with matching tags get routed to the side.
   id: DisposalRouterFlipped
   graph: DisposalPipe
   startNode: start
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/disposal.rsi
-    state: conpipe-j2s
   mirror: DisposalRouter
 
 - type: construction
-  name: disposal signal router
-  description: A signal-controlled three-way router.
   id: DisposalSignalRouter
   graph: DisposalPipe
   startNode: start
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/disposal.rsi
-    state: signal-router-free
   mirror: DisposalSignalRouterFlipped
 
 - type: construction
   hide: true
-  name: disposal signal router
-  description: A signal-controlled three-way router.
   id: DisposalSignalRouterFlipped
   graph: DisposalPipe
   startNode: start
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/disposal.rsi
-    state: signal-router-flipped-free
   mirror: DisposalSignalRouter
 
 - type: construction
-  name: disposal junction
-  description: A three-way junction. The arrow indicates where items exit.
   id: DisposalJunction
   graph: DisposalPipe
   startNode: start
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/disposal.rsi
-    state: conpipe-j1
   mirror: DisposalJunctionFlipped
 
 - type: construction
   hide: true
-  name: disposal junction
-  description: A three-way junction. The arrow indicates where items exit.
   id: DisposalJunctionFlipped
   graph: DisposalPipe
   startNode: start
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/disposal.rsi
-    state: conpipe-j2
   mirror: DisposalJunction
 
 - type: construction
-  name: disposal Y junction
-  description: A three-way junction with another exit point.
   id: DisposalYJunction
   graph: DisposalPipe
   startNode: start
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/disposal.rsi
-    state: conpipe-y
 
 - type: construction
-  name: disposal bend
-  description: A tube bent at a 90 degree angle.
   id: DisposalBend
   graph: DisposalPipe
   startNode: start
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/disposal.rsi
-    state: conpipe-c
 
 # ATMOS
 - type: construction
-  name: air alarm
   id: AirAlarmFixture
   graph: AirAlarm
   startNode: start
   targetNode: air_alarm
   category: construction-category-structures
-  description: An air alarm. Alarms... air?
-  icon:
-    sprite: Structures/Wallmounts/air_monitors.rsi
-    state: alarm0
   placementMode: SnapgridCenter
   objectType: Structure
   canRotate: true
   - !type:WallmountCondition {}
 
 - type: construction
-  name: fire alarm
   id: FireAlarm
   graph: FireAlarm
   startNode: start
   targetNode: fire_alarm
   category: construction-category-structures
-  description: A fire alarm. Spicy!
-  icon:
-    sprite: Structures/Wallmounts/air_monitors.rsi
-    state: fire0
   placementMode: SnapgridCenter
   objectType: Structure
   canRotate: true
   - !type:WallmountCondition {}
 
 - type: construction
-  name: air sensor
   id: AirSensor
   graph: AirSensor
   startNode: start
   targetNode: sensor
   category: construction-category-structures
-  description: An air sensor. Senses air.
-  icon:
-    sprite: Structures/Specific/Atmospherics/sensor.rsi
-    state: gsensor1
   placementMode: SnapgridCenter
   objectType: Structure
   canRotate: true
 
 - type: construction
-  name: gas pipe sensor
   id: GasPipeSensor
   graph: GasPipeSensor
   startNode: start
   targetNode: sensor
   category: construction-category-structures
-  description: Reports on the status of the gas within the attached pipe network. 
-  icon:
-    sprite: Structures/Piping/Atmospherics/gas_pipe_sensor.rsi
-    state: icon
   placementMode: SnapgridCenter
   objectType: Structure
   canRotate: true
 
 # ATMOS PIPES
 - type: construction
-  name: gas pipe half
   id: GasPipeHalf
-  description: Half of a gas pipe. No skateboards.
   graph: GasPipe
   startNode: start
   targetNode: half
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: true
-  icon:
-    sprite: Structures/Piping/Atmospherics/pipe.rsi
-    state: pipeHalf
 
 - type: construction
-  name: gas pipe straight
   id: GasPipeStraight
-  description: A straight pipe segment.
   graph: GasPipe
   startNode: start
   targetNode: straight
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: true
-  icon:
-    sprite: Structures/Piping/Atmospherics/pipe.rsi
-    state: pipeStraight
 
 - type: construction
-  name: gas pipe bend
   id: GasPipeBend
-  description: A pipe segment bent at a 90 degree angle.
   graph: GasPipe
   startNode: start
   targetNode: bend
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: true
-  icon:
-    sprite: Structures/Piping/Atmospherics/pipe.rsi
-    state: pipeBend
 
 - type: construction
-  name: gas pipe T junction
   id: GasPipeTJunction
-  description: A pipe segment with a T junction.
   graph: GasPipe
   startNode: start
   targetNode: tjunction
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: true
-  icon:
-    sprite: Structures/Piping/Atmospherics/pipe.rsi
-    state: pipeTJunction
 
 - type: construction
-  name: gas pipe fourway
   id: GasPipeFourway
-  description: A pipe segment with a fourway junction.
   graph: GasPipe
   startNode: start
   targetNode: fourway
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: true
-  icon:
-    sprite: Structures/Piping/Atmospherics/pipe.rsi
-    state: pipeFourway
 
 # ATMOS UNARY
 - type: construction
-  name: air vent
-  description: Pumps gas into the room.
   id: GasVentPump
   graph: GasUnary
   startNode: start
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/Atmospherics/vent.rsi
-    state: vent_off
-  layers:
-  - sprite: Structures/Piping/Atmospherics/pipe.rsi
-    state: pipeHalf
-  - sprite: Structures/Piping/Atmospherics/vent.rsi
-    state: vent_off
   conditions:
     - !type:NoUnstackableInTile
 
 - type: construction
-  name: passive vent
-  description: Unpowered vent that equalises gases on both sides.
   id: GasPassiveVent
   graph: GasUnary
   startNode: start
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/Atmospherics/vent.rsi
-    state: vent_passive
-  layers:
-  - sprite: Structures/Piping/Atmospherics/pipe.rsi
-    state: pipeHalf
-  - sprite: Structures/Piping/Atmospherics/vent.rsi
-    state: vent_passive
   conditions:
     - !type:NoUnstackableInTile
 
 - type: construction
-  name: air scrubber
-  description: Sucks gas into connected pipes.
   id: GasVentScrubber
   graph: GasUnary
   startNode: start
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/Atmospherics/scrubber.rsi
-    state: scrub_off
-  layers:
-  - sprite: Structures/Piping/Atmospherics/pipe.rsi
-    state: pipeHalf
-  - sprite: Structures/Piping/Atmospherics/scrubber.rsi
-    state: scrub_off
   conditions:
     - !type:NoUnstackableInTile
 
 - type: construction
-  name: air injector
-  description: Injects air into the atmosphere.
   id: GasOutletInjector
   graph: GasUnary
   startNode: start
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/Atmospherics/outletinjector.rsi
-    state: injector
-  layers:
-  - sprite: Structures/Piping/Atmospherics/pipe.rsi
-    state: pipeHalf
-  - sprite: Structures/Piping/Atmospherics/outletinjector.rsi
-    state: injector
   conditions:
     - !type:NoUnstackableInTile
 
 # ATMOS BINARY
 - type: construction
-  name: gas pump
   id: GasPressurePump
-  description: A pump that moves gas by pressure.
   graph: GasBinary
   startNode: start
   targetNode: pressurepump
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/Atmospherics/pump.rsi
-    state: pumpPressure
-  layers:
-  - sprite: Structures/Piping/Atmospherics/pipe.rsi
-    state: pipeStraight
-  - sprite: Structures/Piping/Atmospherics/pump.rsi
-    state: pumpPressure
   conditions:
     - !type:NoUnstackableInTile
 
 - type: construction
-  name: volumetric gas pump
-  description: A pump that moves gas by volume.
   id: GasVolumePump
   graph: GasBinary
   startNode: start
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/Atmospherics/pump.rsi
-    state: pumpVolume
-  layers:
-  - sprite: Structures/Piping/Atmospherics/pipe.rsi
-    state: pipeStraight
-  - sprite: Structures/Piping/Atmospherics/pump.rsi
-    state: pumpVolume
   conditions:
     - !type:NoUnstackableInTile
 
 - type: construction
   id: GasPassiveGate
-  name: passive gate
-  description: A one-way air valve that does not require power.
   graph: GasBinary
   startNode: start
   targetNode: passivegate
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/Atmospherics/pump.rsi
-    state: pumpPassiveGate
-  layers:
-  - sprite: Structures/Piping/Atmospherics/pipe.rsi
-    state: pipeStraight
-  - sprite: Structures/Piping/Atmospherics/pump.rsi
-    state: pumpPassiveGate
   conditions:
     - !type:NoUnstackableInTile
 
 - type: construction
   id: GasValve
-  name: manual valve
-  description: A pipe with a valve that can be used to disable the flow of gas through it.
   graph: GasBinary
   startNode: start
   targetNode: valve
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/Atmospherics/pump.rsi
-    state: pumpManualValve
-  layers:
-  - sprite: Structures/Piping/Atmospherics/pipe.rsi
-    state: pipeStraight
-  - sprite: Structures/Piping/Atmospherics/pump.rsi
-    state: pumpManualValve
   conditions:
     - !type:NoUnstackableInTile
 
 - type: construction
   id: SignalControlledValve
-  name: signal valve
-  description: Valve controlled by signal inputs.
   graph: GasBinary
   startNode: start
   targetNode: signalvalve
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/Atmospherics/pump.rsi
-    state: pumpSignalValve
-  layers:
-  - sprite: Structures/Piping/Atmospherics/pipe.rsi
-    state: pipeStraight
-  - sprite: Structures/Piping/Atmospherics/pump.rsi
-    state: pumpSignalValve
   conditions:
   - !type:NoUnstackableInTile
 
 - type: construction
   id: GasPort
-  name: connector port
-  description: For connecting portable devices related to atmospherics control.
   graph: GasBinary
   startNode: start
   targetNode: port
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/Atmospherics/gascanisterport.rsi
-    state: gasCanisterPort
-  layers:
-  - sprite: Structures/Piping/Atmospherics/pipe.rsi
-    state: pipeHalf
-  - sprite: Structures/Piping/Atmospherics/gascanisterport.rsi
-    state: gasCanisterPort
   conditions:
     - !type:NoUnstackableInTile
 
 - type: construction
   id: GasDualPortVentPump
-  name: dual-port air vent
-  description: Has a valve and a pump attached to it. There are two ports, one is an input for releasing air, the other is an output when siphoning.
   graph: GasBinary
   startNode: start
   targetNode: dualportventpump
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/Atmospherics/vent.rsi
-    state: vent_off
-  layers:
-  - sprite: Structures/Piping/Atmospherics/pipe.rsi
-    state: pipeStraight
-  - sprite: Structures/Piping/Atmospherics/vent.rsi
-    state: vent_off
 
 - type: construction
   id: HeatExchanger
-  name: radiator
-  description: Transfers heat between the pipe and its surroundings.
   graph: GasBinary
   startNode: start
   targetNode: radiator
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/Atmospherics/heatexchanger.rsi
-    state: heStraight
 
 - type: construction
   id: HeatExchangerBend
-  name: radiator bend
-  description: Transfers heat between the pipe and its surroundings.
   graph: GasBinary
   startNode: start
   targetNode: bendradiator
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/Atmospherics/heatexchanger.rsi
-    state: heBend
 
 # ATMOS TRINARY
 - type: construction
   id: GasFilter
-  name: gas filter
-  description: Very useful for filtering gases.
   graph: GasTrinary
   startNode: start
   targetNode: filter
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/Atmospherics/gasfilter.rsi
-    state: gasFilter
   mirror: GasFilterFlipped
   conditions:
     - !type:NoUnstackableInTile
 - type: construction
   id: GasFilterFlipped
   hide: true
-  name: gas filter
-  description: Very useful for filtering gases.
   graph: GasTrinary
   startNode: start
   targetNode: filterflipped
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/Atmospherics/gasfilter.rsi
-    state: gasFilterF
   mirror: GasFilter
   conditions:
     - !type:NoUnstackableInTile
 
 - type: construction
   id: GasMixer
-  name: gas mixer
-  description: Very useful for mixing gases.
   graph: GasTrinary
   startNode: start
   targetNode: mixer
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/Atmospherics/gasmixer.rsi
-    state: gasMixer
   mirror: GasMixerFlipped
   conditions:
     - !type:NoUnstackableInTile
 - type: construction
   id: GasMixerFlipped
   hide: true
-  name: gas mixer
-  description: Very useful for mixing gases.
   graph: GasTrinary
   startNode: start
   targetNode: mixerflipped
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/Atmospherics/gasmixer.rsi
-    state: gasMixerF
   mirror: GasMixer
   conditions:
     - !type:NoUnstackableInTile
 
 - type: construction
   id: PressureControlledValve
-  name: pneumatic valve
-  description: A bidirectional valve controlled by pressure. Opens if the output pipe is lower than the pressure of the control pipe by 101.325 kPa.
   graph: GasTrinary
   startNode: start
   targetNode: pneumaticvalve
   category: construction-category-utilities
   placementMode: SnapgridCenter
   canBuildInImpassable: false
-  icon:
-    sprite: Structures/Piping/Atmospherics/pneumaticvalve.rsi
-    state: off
   conditions:
     - !type:NoUnstackableInTile
 
 # INTERCOM
 - type: construction
-  name: intercom
   id: IntercomAssembly
   graph: Intercom
   startNode: start
   targetNode: intercom
   category: construction-category-structures
-  description: An intercom. For when the station just needs to know something.
-  icon:
-    sprite: Structures/Wallmounts/intercom.rsi
-    state: base
   placementMode: SnapgridCenter
   objectType: Structure
   canRotate: true
 
 # TIMERS
 - type: construction
-  name: signal timer
   id: SignalTimer
   graph: Timer
   startNode: start
   targetNode: signal
   category: construction-category-utilities
-  description: "A wallmounted timer for sending timed signals to things."
-  icon:
-    sprite: Structures/Wallmounts/switch.rsi
-    state: on
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: true
   - !type:WallmountCondition
 
 - type: construction
-  name: screen timer
   id: ScreenTimer
   graph: Timer
   startNode: start
   targetNode: screen
   category: construction-category-utilities
-  description: "A wallmounted timer for sending timed signals to things. This one has a screen for displaying text."
-  icon:
-    sprite: Structures/Wallmounts/signalscreen.rsi
-    state: signalscreen
   objectType: Structure
   canRotate: false
   placementMode: SnapgridCenter
   - !type:WallmountCondition
 
 - type: construction
-  name: brig timer
   id: BrigTimer
   graph: Timer
   startNode: start
   targetNode: brig
   category: construction-category-utilities
-  description: "A wallmounted timer for sending timed signals to things. This one has a screen for displaying text and requires security access to use."
-  icon:
-    sprite: Structures/Wallmounts/signalscreen.rsi
-    state: signalscreen
   objectType: Structure
   canRotate: false
   placementMode: SnapgridCenter
index 4bc75805fec0362c261b5a4ff5f0681327829d1f..f703724cc9648406fd60a319ff1b12188107510d 100644 (file)
 - 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
index 9a0d832d012d9dbe778df8e2b6d177a5ba2e06fc..bb8a69a6a70476830c7691afc7ec3ee48ea96a27 100644 (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
     - !type:TileNotBlocked
 
 - type: construction
-  name: web table
   id: TableWeb
   graph: WebStructures
   startNode: start
   targetNode: table
   category: construction-category-furniture
-  description: Essential for any serious web development.
-  icon:
-    sprite: Structures/Furniture/Tables/web.rsi
-    state: full
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: web bed
   id: WebBed
   graph: WebStructures
   startNode: start
   targetNode: bed
   category: construction-category-furniture
-  description: Fun fact, you eating spiders in your sleep is false.
-  icon:
-    sprite: Structures/Web/bed.rsi
-    state: icon
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
     - !type:TileNotBlocked
 
 - type: construction
-  name: web chair
   id: ChairWeb
   graph: WebStructures
   startNode: start
   targetNode: chair
   category: construction-category-furniture
-  description: You want to get serious about web development? Get this chair!
-  icon:
-    sprite: Structures/Web/chair.rsi
-    state: icon
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
     - SpiderCraft
 
 - type: construction
-  name: web crate
   id: CrateWeb
   graph: WebStructures
   startNode: start
   targetNode: crate
   category: construction-category-storage
-  description: For containment of food and other things. Not as durable as a normal crate, and can't be welded shut.
-  icon:
-    sprite: Structures/Storage/Crates/web.rsi
-    state: icon
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: false
     - SpiderCraft
 
 - type: construction
-  name: web door
   id: WebDoor
   graph: WebStructures
   startNode: start
   targetNode: door
   category: construction-category-structures
-  description: A manual door made from web, normally placed right before a pit or trap.
-  icon:
-    sprite: Structures/Doors/web_door.rsi
-    state: closed
   objectType: Structure
   placementMode: SnapgridCenter
   canBuildInImpassable: false
index a7345455072962f5e1436a7f865ba1ffb11cca26..bf70f9fedcad64697da4a38f93bd5b875dee44f0 100644 (file)
         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
index 977ffd409333d2a2101be78e6f2da5ee30e5023c..6e7d37d4b7d894f811d0259839ec36c474a7401f 100644 (file)
         icon:
           sprite: Objects/Misc/fire_extinguisher.rsi
           state: fire_extinguisher_open
-        name: fire extinguisher
+        name: construction-graph-tag-fire-extinguisher
       - tag: FireHelmet
-        icon: 
+        icon:
           sprite: Clothing/Head/Helmets/firehelmet.rsi
           state: icon
-        name: fire helmet
+        name: construction-graph-tag-fire-helmet
         doAfter: 2
       - tag: ProximitySensor
         icon:
           sprite: Objects/Misc/proximity_sensor.rsi
           state: icon
-        name: proximity sensor
+        name: construction-graph-tag-proximity-sensor
         doAfter: 2
       - tag: BorgArm
         icon:
           sprite: Mobs/Silicon/drone.rsi
           state: l_hand
-        name: borg arm
+        name: construction-graph-tag-borg-arm
         doAfter: 2
   - node: bot
     entity: MobFireBot
index 6806aacc241539d3488a0f6269862a8a796bdb4f..ec6f9dcb1a8cd1652ff57cfe789788a25fff0215 100644 (file)
         icon:
           sprite: Objects/Storage/Happyhonk/clown.rsi
           state: box
-        name: happy honk meal
+        name: construction-graph-tag-happy-honk-meal
       - tag: BikeHorn
         icon:
             sprite: Objects/Fun/bikehorn.rsi
             state: icon
-        name: bike horn
+        name: construction-graph-tag-clown-bike-horn
         doAfter: 2
       - tag: ProximitySensor
         icon:
           sprite: Objects/Misc/proximity_sensor.rsi
           state: icon
-        name: proximity sensor
+        name: construction-graph-tag-proximity-sensor
       - tag: BorgArm
         icon:
           sprite: Mobs/Silicon/drone.rsi
           state: l_hand
-        name: borg arm
+        name: construction-graph-tag-borg-arm
         doAfter: 2
   - node: bot
     entity: MobHonkBot
         icon:
           sprite: Objects/Storage/Happyhonk/cluwne.rsi
           state: box
-        name: woeful cluwne meal
+        name: construction-graph-tag-woeful-cluwne-meal
       - tag: CluwneHorn
         icon:
           sprite: Objects/Fun/cluwnehorn.rsi
           state: icon
-        name: broken bike horn
+        name: construction-graph-tag-clowne-horn
         doAfter: 2
       - tag: ProximitySensor
         icon:
           sprite: Objects/Misc/proximity_sensor.rsi
           state: icon
-        name: proximity sensor
+        name: construction-graph-tag-proximity-sensor
       - tag: BorgArm
         icon:
           sprite: Mobs/Silicon/drone.rsi
           state: l_hand
-        name: borg arm
+        name: construction-graph-tag-borg-arm
         doAfter: 2
   - node: bot
     entity: MobJonkBot
index 92e731d23b96e637d708d9a799ea0296864a5c98..023af2c957199811d87f4e2cf45be3147f8f869a 100644 (file)
         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
index 27391898c7bfc1835ab586ae4f41472240f14884..bde4e67564a7d1d924db9e746af4c6f6bea45901 100644 (file)
         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
index efabb849bbce5fee282a4466ecd349417f66279e..cdacd0685315009664de31e08c06eff57937a6d8 100644 (file)
         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
index 0bb82cf26111f2d6f0378ce9e303a30e972c16c2..b763f920d75176542cc82ba959f3e6d938d922ae 100644 (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
index 529585583ca80433af36f1f954881aa814846358..e2519b765c6f7d56f42130dd93e47a1c32b92aa3 100644 (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
index b8e580230daad6cd7842ddb34e9e89bf66398d70..f5580d56b120e0c01ab0e09d6f87e44c31282566 100644 (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
index f8e7b64b90a3b3771d3e40aae15dec7c2ee9df34..02ec4625e663d262da85be726c81e01d3cdb0529 100644 (file)
         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
index 9f666dd61c1518c76057e9fd69473f1b3b55ea43..6d5d31516f5fd2baec43bf7b78659233e921ba50 100644 (file)
@@ -8,66 +8,66 @@
           steps:
             - material: Steel
               amount: 1
-              doAfter: 0.5 
+              doAfter: 0.5
             - material: Plastic
               amount: 1
-              doAfter: 0.5 
+              doAfter: 0.5
             - tag: GlassShard
-              name: glass shard
+              name: construction-graph-tag-glass-shard
               icon:
                 sprite: Objects/Materials/Shards/shard.rsi
                 state: shard1
-              doAfter: 0.5 
+              doAfter: 0.5
             - tag: GlassShard
-              name: glass shard
+              name: construction-graph-tag-glass-shard
               icon:
                 sprite: Objects/Materials/Shards/shard.rsi
                 state: shard2
-              doAfter: 0.5 
+              doAfter: 0.5
             - tag: GlassShard
-              name: glass shard
+              name: construction-graph-tag-glass-shard
               icon:
                 sprite: Objects/Materials/Shards/shard.rsi
                 state: shard1
-              doAfter: 0.5 
+              doAfter: 0.5
             - tag: GlassShard
-              name: glass shard
+              name: construction-graph-tag-glass-shard
               icon:
                 sprite: Objects/Materials/Shards/shard.rsi
                 state: shard3
-              doAfter: 0.5 
+              doAfter: 0.5
             - tag: Matchstick
-              name: match stick
+              name: construction-graph-tag-match-stick
               icon:
                 sprite: Objects/Tools/matches.rsi
                 state: match_unlit
-              doAfter: 0.5 
+              doAfter: 0.5
             - tag: Matchstick
-              name: match stick
+              name: construction-graph-tag-match-stick
               icon:
                 sprite: Objects/Tools/matches.rsi
                 state: match_unlit
-              doAfter: 0.5 
+              doAfter: 0.5
             - tag: Matchstick
-              name: match stick
+              name: construction-graph-tag-match-stick
               icon:
                 sprite: Objects/Tools/matches.rsi
                 state: match_unlit
-              doAfter: 0.5 
+              doAfter: 0.5
             - tag: Matchstick
-              name: match stick
+              name: construction-graph-tag-match-stick
               icon:
                 sprite: Objects/Tools/matches.rsi
                 state: match_unlit
-              doAfter: 0.5 
+              doAfter: 0.5
             - tag: Matchstick
-              name: match stick
+              name: construction-graph-tag-match-stick
               icon:
                 sprite: Objects/Tools/matches.rsi
                 state: match_unlit
-              doAfter: 0.5 
+              doAfter: 0.5
             - tag: Matchstick
-              name: match stick
+              name: construction-graph-tag-match-stick
               icon:
                 sprite: Objects/Tools/matches.rsi
                 state: match_unlit
index e928d15933252a99ffed7367f7f006e6bf760ca1..b5dbdf032a56ba4e303dd02972e7f45e9065e8ad 100644 (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
                 sprite: Objects/Misc/cablecuffs.rsi
                 state: cuff
                 color: red
-              name: cuffs
+              name: construction-graph-tag-cuffs
             - tag: Igniter
-              name: igniter
+              name: construction-graph-tag-igniter
               icon:
                 sprite: Objects/Devices/igniter.rsi
                 state: icon
               doAfter: 15
     - node: msstunprod
       entity: Stunprod
-      
+
index bc661b47d938d9d4f0afdc863202e2fd4263d038..0e61dd2517d8e220254ec7e40ea4c41c0473dd2a 100644 (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
index 85a68d5f39e8f75a52a3161cd477b5e2c335d1c7..049b55b78c4f0916a09680ca5d76b31fe8f1cb00 100644 (file)
         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
index f03670b673cfc3eeb62c556bba9382379d66c129..c7ba3c131107bb58fb5982718e35ac2a2845aa92 100644 (file)
@@ -7,7 +7,7 @@
         - to: potatobattery
           steps:
             - tag: Potato
-              name: potato
+              name: construction-graph-tag-potato
               icon:
                 sprite: Objects/Specific/Hydroponics/potato.rsi
                 state: produce
         - to: potatoai
           steps:
             - tag: PotatoBattery
-              name: a potato battery
+              name: construction-graph-tag-potato-battery
               icon:
                 sprite: Objects/Power/power_cells.rsi
                 state: potato
               doAfter: 1
             - tag: SmallAIChip
-              name: a super-compact AI chip
+              name: construction-graph-tag-super-compact-ai-chip
               icon:
                 sprite: Objects/Misc/potatoai_chip.rsi
                 state: icon
@@ -63,4 +63,4 @@
             - material: Capacitor
               amount: 2
     - node: potatoaichip
-      entity: PotatoAIChip
\ No newline at end of file
+      entity: PotatoAIChip
index a43d84e1734e5836ebcbe0839159fb701104f817..ab12dd4d6f4412d1830f96a24e3dc4d9034faab2 100644 (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
index c465d74db7b790fc79683efe5e97cbc42f958022..006e774de4278773bdac115064cb73107aa54c2d 100644 (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
index be429bb5648c94c54e03f288009289708268ea68..e92c55669ecc842ec18233b9cf385f4778f26931 100644 (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
index 56e31bbe8d1cda538de9bec11063828235b902e5..e756f9518edadc802de8579b5aace19569f4a54c 100644 (file)
@@ -7,12 +7,12 @@
         - to: plushie
           steps:
             - tag: PlushieGhost
-              name: ghost soft toy
+              name: construction-graph-tag-ghost
               icon:
                 sprite: Mobs/Ghosts/ghost_human.rsi
                 state: icon
             - tag: Ectoplasm
-              name: ectoplasm
+              name: construction-graph-tag-ectoplasm
               icon:
                 sprite: Mobs/Ghosts/revenant.rsi
                 state: ectoplasm
@@ -29,7 +29,7 @@
     - to: suit
       steps:
       - tag: HideCorgi
-        name: corgi hide
+        name: construction-graph-tag-corgi-hide
         icon:
           sprite: Objects/Materials/materials.rsi
           state: corgihide
index c627f00c16291381f06f10765ba78f0d9b42f2fc..475c7c877ecad5669b25fffd9ef7dcfffb535143 100644 (file)
@@ -1,12 +1,7 @@
 - type: construction
-  name: alien artifact
   id: Artifact
   graph: Artifact
   startNode: start
   targetNode: done
   category: construction-category-misc
   objectType: Item
-  description: A strange alien artifact
-  icon:
-    sprite: Objects/Specific/Xenoarchaeology/item_artifacts.rsi
-    state: ano01
index 21b524a060956a312f15c58b0f0098f7eb349b4f..f76d545e94506d417fb527d0e35aaf6d62cf3244 100644 (file)
@@ -1,90 +1,55 @@
 - type: construction
-  name: cleanbot
   id: cleanbot
   graph: CleanBot
   startNode: start
   targetNode: bot
   category: construction-category-utilities
   objectType: Item
-  description: This bot wanders around the station, mopping up any puddles it sees.
-  icon:
-    sprite: Mobs/Silicon/Bots/cleanbot.rsi
-    state: cleanbot
 
 - type: construction
-  name: firebot
   id: firebot
   graph: FireBot
   startNode: start
   targetNode: bot
   category: construction-category-utilities
   objectType: Item
-  description: This bot puts out fires wherever it goes.
-  icon:
-    sprite: Mobs/Silicon/Bots/firebot.rsi
-    state: firebot
 
 - type: construction
-  name: honkbot
   id: honkbot
   graph: HonkBot
   startNode: start
   targetNode: bot
   category: construction-category-utilities
   objectType: Item
-  description: This bot honks and slips people.
-  icon:
-    sprite: Mobs/Silicon/Bots/honkbot.rsi
-    state: honkbot
 
 - type: construction
-  name: jonkbot
   id: jonkbot
   graph: JonkBot
   startNode: start
   targetNode: bot
   category: construction-category-utilities
   objectType: Item
-  description: This cursed bot honks, laughs and slips people.
-  icon:
-    sprite: Mobs/Silicon/Bots/honkbot.rsi
-    state: jonkbot
 
 - type: construction
-  name: medibot
   id: medibot
   graph: MediBot
   startNode: start
   targetNode: bot
   category: construction-category-utilities
   objectType: Item
-  description: This bot can help supply basic healing.
-  icon:
-    sprite: Mobs/Silicon/Bots/medibot.rsi
-    state: medibot
 
 - type: construction
-  name: mimebot
   id: mimebot
   graph: MimeBot
   startNode: start
   targetNode: bot
   category: construction-category-utilities
   objectType: Item
-  description: This bot knows how to wave.
-  icon:
-    sprite: Mobs/Silicon/Bots/mimebot.rsi
-    state: mimebot
 
 - type: construction
-  name: supplybot
   id: supplybot
   graph: SupplyBot
   startNode: start
   targetNode: bot
   category: construction-category-utilities
   objectType: Item
-  description: This bot can be loaded with cargo to make deliveries.
-  icon:
-    sprite: Mobs/Silicon/Bots/supplybot.rsi
-    state: supplybot
index 25450b7d98258ec0625bab88d4d07850d5abd295..878e656e30bd8a52396197234168409828860176 100644 (file)
 - type: construction
-  name: livestock crate
   id: CrateLivestock
   graph: CrateLivestock
   startNode: start
   targetNode: cratelivestock
   category: construction-category-storage
-  description: A wooden crate for holding livestock.
-  icon: { sprite: Structures/Storage/Crates/livestock.rsi, state: base }
   objectType: Structure
 
 - type: construction
-  name: steel crate
   id: CrateGenericSteel
   graph: CrateGenericSteel
   startNode: start
   targetNode: crategenericsteel
   category: construction-category-storage
-  description: A metal crate for storing things.
-  icon: { sprite: Structures/Storage/Crates/generic.rsi, state: icon }
   objectType: Structure
 
 - type: construction
-  name: secure crate
   id: CrateSecure
   graph: CrateSecure
   startNode: start
   targetNode: cratesecure
   category: construction-category-storage
-  description: A secure metal crate for storing things. Requires no special access, can be configured with an Access Configurator.
-  icon: { sprite: Structures/Storage/Crates/secure.rsi, state: icon }
   objectType: Structure
 
 - type: construction
-  name: freezer
   id: CrateFreezer
   graph: CrateFreezer
   startNode: start
   targetNode: done
   category: construction-category-storage
-  description: A metal freezing crate for storing things.
-  icon: { sprite: Structures/Storage/Crates/freezer.rsi, state: icon }
   objectType: Structure
 
 - type: construction
-  name: plastic crate
   id: CratePlastic
   graph: CratePlastic
   startNode: start
   targetNode: crateplastic
   category: construction-category-storage
-  description: A plastic crate for storing things.
-  icon: { sprite: Structures/Storage/Crates/plastic.rsi, state: icon }
   objectType: Structure
 
 - type: construction
-  name: cardboard box
   id: BigBox
   graph: BaseBigBox
   startNode: start
   targetNode: basebigbox
   category: construction-category-storage
-  description: A big box for storing things or hiding in.
-  icon: { sprite: Structures/Storage/closet.rsi, state: cardboard }
   objectType: Structure
 
 - type: construction
-  name: cardboard box
   id: BoxCardboard
   graph: BoxCardboard
   startNode: start
   targetNode: boxcardboard
   category: construction-category-storage
-  description: A small box for storing things.
-  icon: { sprite: Objects/Storage/boxes.rsi, state: box }
   objectType: Item
 
 - type: construction
-  name: pizza box
   id: FoodBoxPizza
   graph: FoodBoxPizza
   startNode: start
   targetNode: foodboxpizza
   category: construction-category-storage
-  description: A box for pizza.
-  icon: 
-    sprite: Objects/Consumable/Food/Baked/pizza.rsi
-    state: box
   objectType: Item
 
 - type: construction
-  name: coffin
   id: CrateCoffin
   graph: CrateCoffin
   startNode: start
   targetNode: cratecoffin
   category: construction-category-storage
-  description: A coffin for storing corpses.
-  icon: { sprite: Structures/Storage/Crates/coffin.rsi, state: base }
   objectType: Structure
index 9a203a4d626dc414b53991b13baea77659e14547..4c94fcb6ff803301b31c6a2cc20030639677d1bd 100644 (file)
 - type: construction
-  name: baseball bat
   id: bat
   graph: WoodenBat
   startNode: start
   targetNode: bat
   category: construction-category-weapons
-  description: A robust baseball bat.
-  icon:
-    sprite: Objects/Weapons/Melee/baseball_bat.rsi
-    state: icon
   objectType: Item
 
 - type: construction
-  name: ghost sheet
   id: ghost_sheet
   graph: GhostSheet
   startNode: start
   targetNode: ghost_sheet
   category: construction-category-clothing
-  description: Become a spooky ghost. Boo!
-  icon:
-    sprite: Clothing/OuterClothing/Misc/ghostsheet.rsi
-    state: icon
   objectType: Item
 
 - type: construction
-  name: makeshift handcuffs
   id: makeshifthandcuffs
   graph: makeshifthandcuffs
   startNode: start
   targetNode: cuffscable
   category: construction-category-tools
-  description: "Homemade handcuffs crafted from spare cables."
-  icon: { sprite: Objects/Misc/cablecuffs.rsi, state: cuff }
   objectType: Item
 
 - type: construction
-  name: makeshift stunprod
   id: makeshiftstunprod
   graph: makeshiftstunprod
   startNode: start
   targetNode: msstunprod
   category: construction-category-weapons
-  description: "Homemade stunprod."
-  icon: { sprite: Objects/Weapons/Melee/stunprod.rsi, state: stunprod_off }
   objectType: Item
 
 - type: construction
-  name: muzzle
   id: muzzle
   graph: Muzzle
   startNode: start
   targetNode: muzzle
   category: construction-category-tools
   objectType: Item
-  description: "A muzzle to shut your victim up."
-  icon:
-    sprite: Clothing/Mask/muzzle.rsi
-    state: icon
 
 - type: construction
-  name: improvised pneumatic cannon
   id: pneumaticcannon
   graph: PneumaticCannon
   startNode: start
   targetNode: cannon
   category: construction-category-weapons
   objectType: Item
-  description: This son of a gun can fire anything that fits in it using just a little gas.
-  icon:
-    sprite: Objects/Weapons/Guns/Cannons/pneumatic_cannon.rsi
-    state: icon
 
 - type: construction
-  name: gauze
   id: gauze
   graph: Gauze
   startNode: start
   targetNode: gauze
   category: construction-category-tools
   objectType: Item
-  description: When you've really got nothing left.
-  icon:
-    sprite: Objects/Specific/Medical/medical.rsi
-    state: gauze
 
 - type: construction
-  name: blindfold
   id: blindfold
   graph: Blindfold
   startNode: start
   targetNode: blindfold
   category: construction-category-tools
   objectType: Item
-  description: Better hope everyone turns a blind eye to you crafting this sussy item...
-  icon:
-    sprite: Clothing/Eyes/Misc/blindfold.rsi
-    state: icon
 
 - type: construction
-  name: flower wreath
   id: flowerwreath
   graph: flowerwreath
   startNode: start
   targetNode: flowerwreath
   category: construction-category-clothing
-  description: A wreath of colourful flowers. Can be worn both on head and neck.
-  icon:
-    sprite: Clothing/Head/Misc/flower-wreath.rsi
-    state: icon
   objectType: Item
 
 - type: construction
-  name: damp rag
   id: rag
   graph: Rag
   startNode: start
   targetNode: rag
   category: construction-category-tools
   objectType: Item
-  description: A damp rag to clean up the ground. Better than slipping around all day.
-  icon:
-    sprite: Objects/Specific/Janitorial/rag.rsi
-    state: rag
 
 - type: construction
-  name: improvised shotgun
   id: improvisedshotgun
   graph: ImprovisedShotgunGraph
   startNode: start
   targetNode: shotgun
   category: construction-category-weapons
   objectType: Item
-  description: A shitty, single-shot shotgun made from salvaged and hand-crafted gun parts. Ammo not included.
-  icon:
-    sprite: Objects/Weapons/Guns/Shotguns/improvised_shotgun.rsi
-    state: icon
 
 - type: construction
-  name: improvised shotgun shell
   id: ShellShotgunImprovised
   graph: ImprovisedShotgunShellGraph
   startNode: start
   targetNode: shell
   category: construction-category-weapons
   objectType: Item
-  description: A homemade shotgun shell that shoots painful glass shrapnel. The spread is so wide that it couldn't hit the broad side of a barn.
-  icon:
-    sprite: Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell.rsi
-    state: improvised
 
 - type: construction
-  name: rifle stock
   id: riflestock
   graph: RifleStockGraph
   startNode: start
   targetNode: riflestock
   category: construction-category-weapons
   objectType: Item
-  description: A stock carved out of wood, vital for improvised firearms.
-  icon:
-    sprite: Objects/Misc/rifle_stock.rsi
-    state: icon
 
 - type: construction
-  name: fire bomb
   id: firebomb
   graph: FireBomb
   startNode: start
   targetNode: firebomb
   category: construction-category-weapons
   objectType: Item
-  description: A weak, improvised incendiary device.
-  icon:
-    sprite: Objects/Weapons/Bombs/ied.rsi
-    state: icon
 
 - type: construction
-  name: cotton woven cloth
   id: CottonWovenCloth
   graph: CottonObjects
   startNode: start
   targetNode: cottoncloth
   category: construction-category-misc
-  description: "A homemade piece of cotton cloth, it feels coarse."
-  icon:
-    sprite: Objects/Materials/materials.rsi
-    state: cloth_3
   objectType: Item
 
 - type: construction
-  name: straw hat
   id: strawHat
   graph: StrawHat
   startNode: start
   targetNode: strawhat
   category: construction-category-clothing
-  description: A fancy hat for hot days! Not recommended to wear near fires.
-  icon:
-    sprite: Clothing/Head/Hats/straw_hat.rsi
-    state: icon
   objectType: Item
 
 - type: construction
-  name: pipe bomb
   id: pipebomb
   graph: PipeBomb
   startNode: start
   targetNode: pipebomb
   category: construction-category-weapons
   objectType: Item
-  description: An improvised explosive made from pipes and wire.
-  icon:
-    sprite: Objects/Weapons/Bombs/pipebomb.rsi
-    state: icon
 
 - type: construction
-  name: rolling pin
   id: rollingpin
   graph: WoodenRollingPin
   startNode: start
   targetNode: rollingpin
   category: construction-category-tools
   objectType: Item
-  description: A rolling pin, used for cooking and defending the kitchen.
-  icon:
-    sprite: Objects/Tools/rolling_pin.rsi
-    state: icon
 
 - type: construction
-  name: pet carrier
   id: PetCarrier
   graph: PetCarrier
   startNode: start
   targetNode: petCarrier
   category: construction-category-misc
   objectType: Item
-  description: Allows large animals to be carried comfortably.
-  icon:
-    sprite: Objects/Storage/petcarrier.rsi
-    state: icon
 
 - type: construction
-  name: goliath hardsuit
   id: HardsuitGoliath
   graph: HardsuitGoliath
   startNode: start
   targetNode: hardsuitGoliath
   category: construction-category-clothing
   objectType: Item
-  description: A lightweight hardsuit, adorned with a patchwork of thick, chitinous goliath hide.
-  icon:
-    sprite: Clothing/OuterClothing/Hardsuits/goliath.rsi
-    state: icon
index 17f2cc401364c40ada8816d5a61e342dcd963d0d..fb8e12c528ad966d80b07899cd54927817a2e50a 100644 (file)
@@ -1,32 +1,23 @@
 - type: construction
-  name: potato battery
   id: PowerCellPotato
   graph: PowerCellPotato
   startNode: start
   targetNode: potatobattery
   category: construction-category-misc
-  description: A truly ingenious source of power.
-  icon: { sprite: Objects/Power/power_cells.rsi, state: potato }
   objectType: Item
 
 - type: construction
-  name: potato artificial intelligence
   id: PotatoAI
   graph: PotatoAI
   startNode: start
   targetNode: potatoai
   category: construction-category-misc
-  description: The potato happens to be the perfect power source for this chip.
-  icon: { sprite: Objects/Fun/pai.rsi, state: icon-potato-off }
   objectType: Item
-  
+
 - type: construction
-  name: supercompact AI chip
   id: PotatoAIChip
   graph: PotatoAIChip
   startNode: start
   targetNode: potatoaichip
   category: construction-category-misc
-  description: A masterfully(?) crafted AI chip, requiring a similarly improvised power source.
-  icon: { sprite: Objects/Misc/potatoai_chip.rsi, state: icon }
-  objectType: Item
\ No newline at end of file
+  objectType: Item
index e4280f6d6621b3ba8a0962c4b0290f5db4bae995..cf30bf4edb4e5058c481bc53e37e908ce607444a 100644 (file)
@@ -1,91 +1,67 @@
 - type: construction
-  name: joint
   id: smokeableJoint
   graph: smokeableJoint
   startNode: start
   targetNode: joint
   category: construction-category-misc
-  description: "A roll of dried plant matter wrapped in thin paper."
-  icon: { sprite: Objects/Consumable/Smokeables/Cannabis/joint.rsi, state: unlit-icon }
   objectType: Item
-  
+
 - type: construction
-  name: rainbow joint
   id: smokeableJointRainbow
   graph: smokeableJointRainbow
   startNode: start
   targetNode: jointRainbow
   category: construction-category-misc
-  description: "A roll of dried plant matter wrapped in thin paper."
-  icon: { sprite: Objects/Consumable/Smokeables/Cannabis/joint.rsi, state: unlit-icon }
   objectType: Item
 
 - type: construction
-  name: blunt
   id: smokeableBlunt
   graph: smokeableBlunt
   startNode: start
   targetNode: blunt
   category: construction-category-misc
-  description: "A roll of dried plant matter wrapped in a dried tobacco leaf."
-  icon: { sprite: Objects/Consumable/Smokeables/Cannabis/blunt.rsi, state: unlit-icon }
   objectType: Item
 
 - type: construction
-  name: rainbow blunt
   id: smokeableBluntRainbow
   graph: smokeableBluntRainbow
   startNode: start
   targetNode: bluntRainbow
   category: construction-category-misc
-  description: "A roll of dried plant matter wrapped in a dried tobacco leaf."
-  icon: { sprite: Objects/Consumable/Smokeables/Cannabis/blunt.rsi, state: unlit-icon }
   objectType: Item
 
 - type: construction
-  name: cigarette
   id: smokeableCigarette
   graph: smokeableCigarette
   startNode: start
   targetNode: cigarette
   category: construction-category-misc
-  description: "A roll of tobacco and nicotine."
-  icon: { sprite: Objects/Consumable/Smokeables/Cigarettes/cigarette.rsi, state: unlit-icon }
   objectType: Item
 
 # I wanted to put a hand-grinder here but we need construction graphs that use non-consumed catalysts first.
 
 - type: construction
-  name: ground cannabis
   id: smokeableGroundCannabis
   graph: smokeableGroundCannabis
   startNode: start
   targetNode: ground
   category: construction-category-misc
-  description: "Ground cannabis, ready to take you on a trip."
-  icon: { sprite: Objects/Misc/reagent_fillings.rsi, state: powderpile }
 #    color: darkgreen
   objectType: Item
 
 - type: construction
-  name: ground rainbow cannabis
   id: smokeableGroundCannabisRainbow
   graph: smokeableGroundCannabisRainbow
   startNode: start
   targetNode: groundRainbow
   category: construction-category-misc
-  description: "Ground rainbow cannabis, ready to take you on a trip."
-  icon: { sprite: Objects/Specific/Hydroponics/rainbow_cannabis.rsi, state: powderpile_rainbow }
   objectType: Item
 
 - type: construction
-  name: ground tobacco
   id: smokeableGroundTobacco
   graph: smokeableGroundTobacco
   startNode: start
   targetNode: ground
   category: construction-category-misc
-  description: "Ground tobacco, perfect for hand-rolled cigarettes."
-  icon: { sprite: Objects/Misc/reagent_fillings.rsi, state: powderpile }
 #    color: brown
   objectType: Item
index 7de80870afc07b0e7604f3c3519004ac3c20949a..acecfb1d7ecd54bab5d29f0d989ead95b716815e 100644 (file)
@@ -1,56 +1,41 @@
 - type: construction
   id: ClosetSteel
-  name: closet
   graph: ClosetSteel
   startNode: start
   targetNode: done
   category: construction-category-storage
-  description: A tall steel box that cannot be locked.
-  icon: { sprite: Structures/Storage/closet.rsi, state: generic_icon }
   objectType: Structure
 
 - type: construction
   id: ClosetSteelSecure
-  name: secure closet
   graph: ClosetSteelSecure
   startNode: start
   targetNode: done
   category: construction-category-storage
-  description: A tall steel box that can be locked.
-  icon: { sprite: Structures/Storage/closet.rsi, state: secure_icon }
   objectType: Structure
 
 - type: construction
   id: ClosetFreezer
-  name: freezer
   graph: ClosetFreezer
   startNode: start
   targetNode: done
   category: construction-category-storage
-  description: A tall steel box with freezing abilities.
-  icon: { sprite: Structures/Storage/closet.rsi, state: freezer_icon }
   objectType: Structure
 
 - type: construction
   id: GunSafe
-  name: gun safe
   graph: GunSafe
   startNode: start
   targetNode: done
   category: construction-category-storage
-  description: A durable gun safe that can be locked.
-  icon: { sprite: Structures/Storage/closet.rsi, state: shotguncase }
   objectType: Structure
 
 - type: construction
   id: ClosetWall
-  name: wall closet
   graph: ClosetWall
   startNode: start
   targetNode: done
   category: construction-category-storage
-  description: A standard-issue Nanotrasen storage unit, now on walls.
-  icon: { sprite: Structures/Storage/wall_locker.rsi, state: generic_icon }
   objectType: Structure
   placementMode: SnapgridCenter
   canRotate: true
index 433a3bec29c4002da633fa37e885ff9285673338..d9e19566bec3ad65f8cb25930551d77824ed02e0 100644 (file)
 # These should be lathe recipes but lathe code sucks so hard rn so they'll be crafted by hand.
 
 - type: construction
-  name: steel tile
   id: TileSteel
   graph: TileSteel
   startNode: start
   targetNode: steeltile
   category: construction-category-tiles
-  description: "Four steel station tiles."
-  icon: { sprite: Objects/Tiles/tile.rsi, state: steel }
   objectType: Item
 
 - type: construction
-  name: wood floor
   id: TileWood
   graph: TileWood
   startNode: start
   targetNode: woodtile
   category: construction-category-tiles
-  description: "Four pieces of wooden station flooring."
-  icon: { sprite: Objects/Tiles/tile.rsi, state: wood }
   objectType: Item
-  
+
 - type: construction
-  name: filled brass plate
   id: TileBrassFilled
   graph: TilesBrass
   startNode: start
   targetNode: filledPlate
   category: construction-category-tiles
-  description: "Four pieces of brass station flooring, only compatible with brass plating."
-  icon: { sprite: Objects/Tiles/tile.rsi, state: brass-filled }
   objectType: Item
-  
+
 - type: construction
-  name: smooth brass plate
   id: TileBrassReebe
   graph: TilesBrass
   startNode: start
   targetNode: reebe
   category: construction-category-tiles
-  description: "Four pieces of smooth brass station flooring, only compatible with brass plating."
-  icon: { sprite: Objects/Tiles/tile.rsi, state: reebe }
   objectType: Item
 
 - type: construction
-  name: white tile
   id: TileWhite
   graph: TileWhite
   startNode: start
   targetNode: whitetile
   category: construction-category-tiles
-  description: "Four white station tiles."
-  icon: { sprite: Objects/Tiles/tile.rsi, state: white }
   objectType: Item
 
 - type: construction
-  name: dark tile
   id: TileDark
   graph: TileDark
   startNode: start
   targetNode: darktile
   category: construction-category-tiles
-  description: "Four dark station tiles."
-  icon: { sprite: Objects/Tiles/tile.rsi, state: dark }
   objectType: Item
 
 - type: construction
-  name: flesh tile
   id: TileFlesh
   graph: TileFlesh
   startNode: start
   targetNode: fleshTile
   category: construction-category-tiles
-  description: "Four fleshy tiles."
-  icon: { sprite: Objects/Tiles/tile.rsi, state: meat }
   objectType: Item
 
-# - type: construction
-#   name: techmaint floor
-#   id: tileTechmaint
-#   graph: tileTechmaint
-#   startNode: start
-#   targetNode: techmainttile
-#   category: construction-category-tiles
-#   description: "A piece of techmaint flooring."
-#   icon: { sprite: Objects/Tiles/tile.rsi, state: steel_techfloor_grid }
-#   objectType: Item
-#
-# - type: construction
-#   name: freezer tile
-#   id: tileFreezer
-#   graph: tileFreezer
-#   startNode: start
-#   targetNode: freezertile
-#   category: construction-category-tiles
-#   description: "A freezer station tile."
-#   icon: { sprite: Objects/Tiles/tile.rsi, state: showroom }
-#   objectType: Item
-#
-# - type: construction
-#   name: showroom tile
-#   id: tileShowroom
-#   graph: tileShowroom
-#   startNode: start
-#   targetNode: showroomtile
-#   category: construction-category-tiles
-#   description: "A showroom station tile."
-#   icon: { sprite: Objects/Tiles/tile.rsi, state: showroom }
-#   objectType: Item
-#
-# - type: construction
-#   name: green-circuit floor
-#   id: tileGCircuit
-#   graph: tileGCircuit
-#   startNode: start
-#   targetNode: gcircuittile
-#   category: construction-category-tiles
-#   description: "A piece of green-circuit flooring."
-#   icon: { sprite: Objects/Tiles/tile.rsi, state: gcircuit }
-#   objectType: Item
-#
-# - type: construction
-#   name: gold floor
-#   id: tileGold
-#   graph: tileGold
-#   startNode: start
-#   targetNode: goldtile
-#   category: construction-category-tiles
-#   description: "A piece of gold flooring."
-#   icon: { sprite: Objects/Tiles/tile.rsi, state: gold }
-#   objectType: Item
-#
-# - type: construction
-#   name: reinforced tile
-#   id: tileReinforced
-#   graph: tileReinforced
-#   startNode: start
-#   targetNode: reinforcedtile
-#   category: construction-category-tiles
-#   description: "A reinforced station tile."
-#   icon: { sprite: Objects/Tiles/tile.rsi, state: reinforced }
-#   objectType: Item
-#
-# - type: construction
-#   name: mono tile
-#   id: tileMono
-#   graph: tileMono
-#   startNode: start
-#   targetNode: monotile
-#   category: construction-category-tiles
-#   description: "A mono station tile."
-#   icon: { sprite: Objects/Tiles/tile.rsi, state: white_monofloor }
-#   objectType: Item
-#
-# - type: construction
-#   name: linoleum floor
-#   id: tileLino
-#   graph: tileLino
-#   startNode: start
-#   targetNode: linotile
-#   category: construction-category-tiles
-#   description: "A piece of linoleum flooring."
-#   icon: { sprite: Objects/Tiles/tile.rsi, state: white_monofloor }
-#   objectType: Item
-#
-# - type: construction
-#   name: hydro tile
-#   id: tileHydro
-#   graph: tileHydro
-#   startNode: start
-#   targetNode: hydrotile
-#   category: construction-category-tiles
-#   description: "A hydro station tile."
-#   icon: { sprite: Objects/Tiles/tile.rsi, state: hydro }
-#   objectType: Item
-#
-# - type: construction
-#   name: dirty tile
-#   id: tileDirty
-#   graph: tileDirty
-#   startNode: start
-#   targetNode: dirtytile
-#   category: construction-category-tiles
-#   description: "A dirty station tile."
-#   icon: { sprite: Objects/Tiles/tile.rsi, state: dirty }
-#   objectType: Item
-
 - type: construction
-  name: large wood floor
   id: TileWoodLarge
   graph: TileWoodLarge
   startNode: start
   targetNode: woodtilelarge
   category: construction-category-tiles
-  description: "Four pieces of wooden station flooring."
-  icon: { sprite: Objects/Tiles/tile.rsi, state: wood-large }
-  objectType: Item
\ No newline at end of file
+  objectType: Item
index 4fd91bdb69d4e278d85e97f94f3499404d7b8fc3..a3bc1bdf72889f425211bb578190646d8cf48e1f 100644 (file)
@@ -1,25 +1,15 @@
 - type: construction
-  name: revenant plushie
   id: PlushieGhostRevenant
   graph: PlushieGhostRevenant
   startNode: start
   targetNode: plushie
   category: construction-category-misc
   objectType: Item
-  description: A toy to scare the medbay with.
-  icon:
-    sprite: Mobs/Ghosts/revenant.rsi
-    state: icon
 
 - type: construction
-  name: ian suit
   id: ClothingOuterSuitIan
   graph: ClothingOuterSuitIan
   startNode: start
   targetNode: suit
   category: construction-category-misc
   objectType: Item
-  description: Make yourself look just like Ian!
-  icon:
-    sprite: Clothing/OuterClothing/Suits/iansuit.rsi
-    state: icon
index 55f73fef5073a04edb4d88058af253315636dcab..e1b47b10473a06f7cde039df900e594837abff7a 100644 (file)
 - type: construction
-  name: web tile
   id: TileWeb
   graph: WebObjects
   startNode: start
   targetNode: tile
   category: construction-category-tiles
-  description: "Nice and smooth."
   entityWhitelist:
     tags:
     - SpiderCraft
-  icon:
-    sprite: Objects/Tiles/web.rsi
-    state: icon
   objectType: Item
 
 - type: construction
-  name: web winter coat
   id: ClothingOuterWinterWeb
   graph: WebObjects
   startNode: start
   targetNode: coat
   category: construction-category-clothing
-  description: "Surprisingly warm and durable."
   entityWhitelist:
     tags:
     - SpiderCraft
-  icon:
-    sprite: Clothing/OuterClothing/WinterCoats/coat.rsi
-    state: WEB-icon
   objectType: Item
 
 - type: construction
-  name: web jumpsuit
   id: ClothingUniformJumpsuitWeb
   graph: WebObjects
   startNode: start
   targetNode: jumpsuit
   category: construction-category-clothing
-  description: "At least it's something."
   entityWhitelist:
     tags:
     - SpiderCraft
-  icon:
-    sprite: Clothing/Uniforms/Jumpsuit/web.rsi
-    state: icon
   objectType: Item
 
 - type: construction
-  name: web jumpskirt
   id: ClothingUniformJumpskirtWeb
   graph: WebObjects
   startNode: start
   targetNode: jumpskirt
   category: construction-category-clothing
-  description: "At least it's something."
   entityWhitelist:
     tags:
     - SpiderCraft
-  icon:
-    sprite: Clothing/Uniforms/Jumpskirt/web.rsi
-    state: icon
   objectType: Item
 
 - type: construction
-  name: silk woven cloth
   id: SilkWovenCloth
   graph: WebObjects
   startNode: start
   targetNode: cloth
   category: construction-category-materials
-  description: "Feels just like cloth, strangely enough."
   entityWhitelist:
     tags:
     - SpiderCraft
-  icon:
-    sprite: Objects/Materials/materials.rsi
-    state: cloth_3
   objectType: Item
 
 - type: construction
-  name: web shield
   id: WebShield
   graph: WebObjects
   startNode: start
   targetNode: shield
   category: construction-category-clothing
-  description: "It's thick enough to handle a few blows, but probably not heat."
   entityWhitelist:
     tags:
     - SpiderCraft
-  icon:
-    sprite: Objects/Weapons/Melee/web-shield.rsi
-    state: icon
   objectType: Item
 
 - type: construction
-  name: web winter boots
   id: ClothingShoesBootsWinterWeb
   graph: WebObjects
   startNode: start
   targetNode: boots
   category: construction-category-clothing
-  description: "Tightly woven web should protect against the cold"
   entityWhitelist:
     tags:
     - SpiderCraft
-  icon:
-    sprite: Clothing/Shoes/Boots/winterbootsweb.rsi
-    state: icon
   objectType: Item
index cd6aed7cdfcb0199058238847a8c65da2d699962..c3752b62aebd513debbba756281e60c663809c5d 100644 (file)
@@ -1,48 +1,48 @@
 - type: stack
   id: Glass
-  name: glass
+  name: stack-glass
   icon: { sprite: /Textures/Objects/Materials/Sheets/glass.rsi, state: glass }
   spawn: SheetGlass1
   maxCount: 30
 
 - type: stack
   id: ReinforcedGlass
-  name: reinforced glass
+  name: stack-reinforced-glass
   icon: { sprite: /Textures/Objects/Materials/Sheets/glass.rsi, state: rglass }
   spawn: SheetRGlass1
   maxCount: 30
 
 - type: stack
   id: PlasmaGlass
-  name: plasma glass
+  name: stack-plasma-glass
   icon: { sprite: /Textures/Objects/Materials/Sheets/glass.rsi, state: pglass }
   spawn: SheetPGlass1
   maxCount: 30
 
 - type: stack
   id: ReinforcedPlasmaGlass
-  name: reinforced plasma glass
+  name: stack-reinforced-plasma-glass
   icon: { sprite: /Textures/Objects/Materials/Sheets/glass.rsi, state: rpglass }
   spawn: SheetRPGlass1
   maxCount: 30
 
 - type: stack
   id: UraniumGlass
-  name: uranium glass
+  name: stack-uranium-glass
   icon: { sprite: /Textures/Objects/Materials/Sheets/glass.rsi, state: uglass }
   spawn: SheetUGlass1
   maxCount: 30
 
 - type: stack
   id: ReinforcedUraniumGlass
-  name: reinforced uranium glass
+  name: stack-reinforced-uranium-glass
   icon: { sprite: /Textures/Objects/Materials/Sheets/glass.rsi, state: ruglass }
   spawn: SheetRUGlass1
   maxCount: 30
 
 - type: stack
   id: ClockworkGlass
-  name: clockwork glass
+  name: stack-clockwork-glass
   icon: { sprite: /Textures/Objects/Materials/Sheets/glass.rsi, state: cglass }
   spawn: SheetClockworkGlass1
   maxCount: 30
index 7520130b9be14e6110054250d6a8061ee523f6ff..90c37e3ddab9a2c3e60267912989f91f2dfbe016 100644 (file)
@@ -1,20 +1,20 @@
 - type: stack
   id: Steel
-  name: steel
+  name: stack-steel
   icon: { sprite: /Textures/Objects/Materials/Sheets/metal.rsi, state: steel }
   spawn: SheetSteel1
   maxCount: 30
 
 - type: stack
   id: Plasteel
-  name: plasteel
+  name: stack-plasteel
   icon: { sprite: /Textures/Objects/Materials/Sheets/metal.rsi, state: plasteel }
   spawn: SheetPlasteel1
   maxCount: 30
 
 - type: stack
   id: Brass
-  name: brass
+  name: stack-brass
   icon: { sprite: /Textures/Objects/Materials/Sheets/metal.rsi, state: brass }
   spawn: SheetBrass1
   maxCount: 30
index 565b1fc1aeec0c3d9b73d6ee3f86fdd7e2cdb610..a86b4bec6ffaed3ddf18f7400ac9692c48062df6 100644 (file)
@@ -1,27 +1,27 @@
 - type: stack
   id: Paper
-  name: paper
+  name: stack-paper
   icon: { sprite: /Textures/Objects/Materials/Sheets/other.rsi, state: paper }
   spawn: SheetPaper1
   maxCount: 30
 
 - type: stack
   id: Plasma
-  name: plasma
+  name: stack-plasma
   icon: { sprite: /Textures/Objects/Materials/Sheets/other.rsi, state: plasma }
   spawn: SheetPlasma1
   maxCount: 30
 
 - type: stack
   id: Plastic
-  name: plastic
+  name: stack-plastic
   icon: { sprite: /Textures/Objects/Materials/Sheets/other.rsi, state: plastic }
   spawn: SheetPlastic1
   maxCount: 30
 
 - type: stack
   id: Uranium
-  name: uranium
+  name: stack-uranium
   icon: { sprite: /Textures/Objects/Materials/Sheets/other.rsi, state: uranium }
   spawn: SheetUranium1
   maxCount: 30
index 28f4ed70ca0247fc5486e7a9cfd9a16fb3613605..e5fda560c89dbbe4e8caef9c4953929e6b11e2a9 100644 (file)
@@ -1,5 +1,5 @@
 - type: stack
   id: Telecrystal
-  name: telecrystal
+  name: stack-telecrystal
   icon: Objects/Specific/Syndicate/telecrystal.rsi
   spawn: Telecrystal1
index 1fd67a096dc7340f58c747cf3253d7b47775c337..154dacc679053938e4926674c4482a92c345711e 100644 (file)
@@ -1,13 +1,13 @@
 - type: stack
   id: Gold
-  name: gold
+  name: stack-gold
   icon: { sprite: "/Textures/Objects/Materials/ingots.rsi", state: gold }
   spawn: IngotGold1
   maxCount: 30
 
 - type: stack
   id: Silver
-  name: silver
+  name: stack-silver
   icon: { sprite: "/Textures/Objects/Materials/ingots.rsi", state: silver }
   spawn: IngotSilver1
   maxCount: 30
index 69d47495488f7512fd691c4bb2a0f0f38a242b0a..a75992290031f76ff4997adad18c6e3a3a20f34a 100644 (file)
 - type: stack
   id: Biomass
-  name: biomass
+  name: stack-biomass
   icon: { sprite: /Textures/Objects/Misc/monkeycube.rsi, state: cube }
   spawn: MaterialBiomass1
   maxCount: 100
 
 - type: stack
   id: WoodPlank
-  name: wood plank
+  name: stack-wood-plank
   icon: { sprite: /Textures/Objects/Materials/materials.rsi, state: wood }
   spawn: MaterialWoodPlank1
   maxCount: 30
 
 - type: stack
   id: Cardboard
-  name: cardboard
+  name: stack-cardboard
   icon: { sprite: /Textures/Objects/Materials/materials.rsi, state: cardboard }
   spawn: MaterialCardboard1
   maxCount: 30
 
 - type: stack
   id: Cloth
-  name: cloth
+  name: stack-cloth
   icon: { sprite: /Textures/Objects/Materials/materials.rsi, state: cloth }
   spawn: MaterialCloth1
   maxCount: 30
 
 - type: stack
   id: Durathread
-  name: durathread
+  name: stack-durathread
   icon: { sprite: /Textures/Objects/Materials/materials.rsi, state: durathread }
   spawn: MaterialDurathread1
   maxCount: 30
 
 - type: stack
   id: Diamond
-  name: diamond
+  name: stack-diamond
   icon: { sprite: /Textures/Objects/Materials/materials.rsi, state: diamond }
   spawn: MaterialDiamond1
   maxCount: 30
 
 - type: stack
   id: Cotton
-  name: cotton
+  name: stack-cotton
   icon: { sprite: /Textures/Objects/Materials/materials.rsi, state: cotton }
   spawn: MaterialCotton1
   maxCount: 30
 
 - type: stack
   id: Pyrotton
-  name: pyrotton
+  name: stack-pyrotton
   icon: { sprite: /Textures/Objects/Materials/materials.rsi, state: pyrotton }
   spawn: MaterialPyrotton1
   maxCount: 30
 
 - type: stack
   id: Bananium
-  name: bananium
+  name: stack-bananium
   icon: { sprite: /Textures/Objects/Materials/materials.rsi, state: bananium }
   spawn: MaterialBananium1
   maxCount: 10
 
 - type: stack
   id: MeatSheets
-  name: meat sheet
+  name: stack-meat-sheet
   icon: { sprite: /Textures/Objects/Materials/Sheets/meaterial.rsi, state: meat }
   spawn: MaterialSheetMeat1
   maxCount: 30
 
 - type: stack
   id: WebSilk
-  name: silk
+  name: stack-silk
   icon: { sprite: /Textures/Objects/Materials/silk.rsi, state: icon }
   spawn: MaterialWebSilk1
   maxCount: 50
 
 - type: stack
   id: SpaceCarpTooth
-  name: space carp tooth
-  icon: { sprite: /Textures/Objects/Materials/Mob/carptooth.rsi, state: tooth}
+  name: stack-space-carp-tooth
+  icon: { sprite: /Textures/Objects/Materials/Mob/carptooth.rsi, state: tooth }
   spawn: MaterialToothSpaceCarp1
   maxCount: 30
 
 - type: stack
   id: SharkMinnowTooth
-  name: sharkminnow tooth
-  icon: { sprite: /Textures/Objects/Materials/Mob/sharktooth.rsi, state: tooth}
+  name: stack-sharkminnow-tooth
+  icon: { sprite: /Textures/Objects/Materials/Mob/sharktooth.rsi, state: tooth }
   spawn: MaterialToothSharkminnow1
   maxCount: 30
 
 - type: stack
   id: Bones
-  name: bones
-  icon: { sprite: /Textures/Objects/Materials/materials.rsi, state: bones}
+  name: stack-bones
+  icon: { sprite: /Textures/Objects/Materials/materials.rsi, state: bones }
   spawn: MaterialBones1
   maxCount: 30
 
 - type: stack
   id: Gunpowder
-  name: gunpowder
+  name: stack-gunpowder
   icon: { sprite: /Textures/Objects/Misc/reagent_fillings.rsi, state: powderpile }
   spawn: MaterialGunpowder
   maxCount: 60
 
 - type: stack
   id: GoliathHide
-  name: goliath hide
+  name: stack-goliath-hide
   icon: { sprite: /Textures/Objects/Materials/hide.rsi, state: goliath_hide }
   spawn: MaterialGoliathHide1
   maxCount: 30
index 3aaa04601aa3bb8ade115296e3b783bc437d8d9d..240e584e40d23be10935460ed7d1e3a77ca6fcd6 100644 (file)
@@ -1,70 +1,69 @@
 - type: stack
   id: GoldOre
-  name: gold ore
+  name: stack-gold-ore
   icon: { sprite: /Textures/Objects/Materials/ore.rsi, state: gold }
   spawn: GoldOre1
   maxCount: 30
-  
+
 - type: stack
   id: DiamondOre
-  name: rough diamond
+  name: stack-rough-diamond
   icon: { sprite: /Textures/Objects/Materials/ore.rsi, state: diamond }
   spawn: DiamondOre1
   maxCount: 30
 
 - type: stack
   id: SteelOre
-  name: iron ore
+  name: stack-iron-ore
   icon: { sprite: /Textures/Objects/Materials/ore.rsi, state: iron }
   spawn: SteelOre1
   maxCount: 30
 
 - type: stack
   id: PlasmaOre
-  name: plasma ore
+  name: stack-plasma-ore
   icon: { sprite: /Textures/Objects/Materials/ore.rsi, state: plasma }
   spawn: PlasmaOre1
   maxCount: 30
 
 - type: stack
   id: SilverOre
-  name: silver ore
+  name: stack-silver-ore
   icon: { sprite: /Textures/Objects/Materials/ore.rsi, state: silver }
   spawn: SilverOre1
   maxCount: 30
 
 - type: stack
   id: SpaceQuartz
-  name: space quartz
+  name: stack-space-quartz
   icon: { sprite: /Textures/Objects/Materials/ore.rsi, state: spacequartz }
   spawn: SpaceQuartz1
   maxCount: 30
 
 - type: stack
   id: UraniumOre
-  name: uranium ore
+  name: stack-uranium-ore
   icon: { sprite: /Textures/Objects/Materials/ore.rsi, state: uranium }
   spawn: UraniumOre1
   maxCount: 30
 
-
 - type: stack
   id: BananiumOre
-  name: bananium ore
+  name: stack-bananium-ore
   icon: { sprite: /Textures/Objects/Materials/ore.rsi, state: bananium }
   spawn: BananiumOre1
   maxCount: 30
 
 - type: stack
   id: Coal
-  name: coal
+  name: stack-coal
   icon: { sprite: /Textures/Objects/Materials/ore.rsi, state: coal }
   spawn: Coal1
   maxCount: 30
 
 - type: stack
   id: SaltOre
-  name: salt
+  name: stack-salt
   icon: { sprite: /Textures/Objects/Materials/ore.rsi, state: salt }
   spawn: Salt1
   maxCount: 30
index 50ceb28757a729e47081cf5c10ac453087a5521c..3b6fb4bcfff5f019234658211ea42eaafab9ea17 100644 (file)
@@ -1,6 +1,6 @@
 - type: stack
   id: MetalRod
-  name: rods
+  name: stack-rods
   icon: { sprite: /Textures/Objects/Materials/parts.rsi, state: rods }
   spawn: PartRodMetal1
   maxCount: 30
index 971d3800b4e8200d68f29b8574b4be43f5bf07c5..fcd10e5d7feee5a610843cd02ce9d5407c351194 100644 (file)
@@ -2,19 +2,19 @@
 
 - type: stack
   id: Pancake
-  name: pancake
+  name: stack-pancake
   spawn: FoodBakedPancake
   maxCount: 9
 
 - type: stack
   id: PancakeBb
-  name: blueberry pancake
+  name: stack-blueberry-pancake
   spawn: FoodBakedPancakeBb
   maxCount: 9
 
 - type: stack
   id: PancakeCc
-  name: chocolate chip pancake
+  name: stack-chocolate-chip-pancake
   spawn: FoodBakedPancakeCc
   maxCount: 9
 
@@ -22,7 +22,7 @@
 
 - type: stack
   id: PizzaBox
-  name: pizza box
+  name: stack-pizza-box
   icon: { sprite: Objects/Consumable/Food/Baked/pizza.rsi, state: box }
   spawn: FoodBoxPizza
   maxCount: 30
 
 - type: stack
   id: PaperRolling
-  name: rolling paper
+  name: stack-rolling-paper
   icon: { sprite: /Textures/Objects/Consumable/Smokeables/Cigarettes/paper.rsi, state: cigpaper }
   spawn: PaperRolling
   maxCount: 5
 
 - type: stack
   id: CigaretteFilter
-  name: cigarette filter
+  name: stack-cigarette-filter
   icon: { sprite: /Textures/Objects/Consumable/Smokeables/Cigarettes/paper.rsi, state: cigfilter }
   spawn: CigaretteFilter
   maxCount: 5
 
 - type: stack
   id: GroundTobacco
-  name: ground tobacco
+  name: stack-ground-tobacco
   icon: { sprite: /Textures/Objects/Misc/reagent_fillings.rsi, state: powderpile }
   spawn: GroundTobacco
   maxCount: 5
 
 - type: stack
   id: GroundCannabis
-  name: ground cannabis
+  name: stack-ground-cannabis
   icon: { sprite: /Textures/Objects/Misc/reagent_fillings.rsi, state: powderpile }
   spawn: GroundCannabis
   maxCount:
 
 - type: stack
   id: GroundCannabisRainbow
-  name: ground rainbow cannabis
+  name: stack-ground-rainbow-cannabis
   icon: { sprite: /Textures/Objects/Specific/Hydroponics/rainbow_cannabis.rsi, state: powderpile_rainbow }
   spawn: GroundCannabisRainbow
   maxCount:
 
 - type: stack
   id: LeavesTobaccoDried
-  name: dried tobacco leaves
+  name: stack-dried-tobacco-leaves
   icon: { sprite: /Textures/Objects/Specific/Hydroponics/tobacco.rsi, state: dried }
   spawn: LeavesTobaccoDried
   maxCount: 5
 
 - type: stack
   id: LeavesCannabisDried
-  name: dried cannabis leaves
+  name: stack-dried-cannabis-leaves
   icon: { sprite: /Textures/Objects/Specific/Hydroponics/tobacco.rsi, state: dried }
   spawn: LeavesCannabisDried
   maxCount: 5
 
 - type: stack
   id: LeavesCannabisRainbowDried
-  name: dried rainbow cannabis leaves
+  name: stack-dried-rainbow-cannabis-leaves
   icon: { sprite: /Textures/Objects/Specific/Hydroponics/rainbow_cannabis.rsi, state: dried }
   spawn: LeavesCannabisRainbowDried
index b4550015dc4561b5c4ff54ad53d6775917c51b38..4d9fcbb57be38ec886d1f8e6daf0deb6036648aa 100644 (file)
@@ -1,12 +1,12 @@
 # they're uninflated by default so they're tiny
 - type: stack
   id: InflatableWall
-  name: inflatable wall
+  name: stack-inflatable-wall
   spawn: InflatableWallStack1
   maxCount: 10
 
 - type: stack
   id: InflatableDoor
-  name: inflatable door
+  name: stack-inflatable-door
   spawn: InflatableDoorStack1
   maxCount: 4
index b5d5fb7dc015a69e9012a7f3d18cf10b0909b99a..3bc6c9f837a02097979dc1eb6482dfdacf2abe3b 100644 (file)
 - type: stack
   id: FloorTileDark
-  name: dark tile
+  name: stack-dark-tile
   spawn: FloorTileItemDark
   maxCount: 30
 
 - type: stack
   id: FloorTileDarkDiagonalMini
-  name: dark steel diagonal mini tile
+  name: stack-dark-steel-diagonal-mini-tile
   spawn: FloorTileItemDarkDiagonalMini
   maxCount: 30
 
 - type: stack
   id: FloorTileDarkDiagonal
-  name: dark steel diagonal tile
+  name: stack-dark-steel-diagonal-tile
   spawn: FloorTileItemDarkDiagonal
   maxCount: 30
 
 - type: stack
   id: FloorTileDarkHerringbone
-  name: dark steel herringbone
+  name: stack-dark-steel-herringbone
   spawn: FloorTileItemDarkHerringbone
   maxCount: 30
 
 - type: stack
   id: FloorTileDarkMini
-  name: dark steel mini tile
+  name: stack-dark-steel-mini-tile
   spawn: FloorTileItemDarkMini
   maxCount: 30
 
 - type: stack
   id: FloorTileDarkMono
-  name: dark steel mono tile
+  name: stack-dark-steel-mono-tile
   spawn: FloorTileItemDarkMono
   maxCount: 30
 
 - type: stack
   id: FloorTileDarkPavement
-  name: dark steel pavement
+  name: stack-dark-steel-pavement
   spawn: FloorTileItemDarkPavement
   maxCount: 30
 
 - type: stack
   id: FloorTileDarkPavementVertical
-  name: dark steel vertical pavement
+  name: stack-dark-steel-vertical-pavement
   spawn: FloorTileItemDarkPavementVertical
   maxCount: 30
 
 - type: stack
   id: FloorTileDarkOffset
-  name: offset dark steel tile
+  name: stack-offset-dark-steel-tile
   spawn: FloorTileItemDarkOffset
   maxCount: 30
 
 - type: stack
   id: FloorTileSteel
-  name: steel tile
+  name: stack-steel-tile
   spawn: FloorTileItemSteel
   maxCount: 30
 
 - type: stack
   id: FloorTileSteelOffset
-  name: offset steel tile
+  name: stack-offset-steel-tile
   spawn: FloorTileItemSteelOffset
   maxCount: 30
 
 - type: stack
   id: FloorTileSteelDiagonalMini
-  name: steel diagonal mini tile
+  name: stack-steel-diagonal-mini-tile
   spawn: FloorTileItemSteelDiagonalMini
   maxCount: 30
 
 - type: stack
   id: FloorTileSteelDiagonal
-  name: steel diagonal tile
+  name: stack-steel-diagonal-tile
   spawn: FloorTileItemSteelDiagonal
   maxCount: 30
 
 - type: stack
   id: FloorTileSteelHerringbone
-  name: steel herringbone
+  name: stack-steel-herringbone
   spawn: FloorTileItemSteelHerringbone
   maxCount: 30
 
 - type: stack
   id: FloorTileSteelMini
-  name: steel mini tile
+  name: stack-steel-mini-tile
   spawn: FloorTileItemSteelMini
   maxCount: 30
 
 - type: stack
   id: FloorTileSteelMono
-  name: steel mono tile
+  name: stack-steel-mono-tile
   spawn: FloorTileItemSteelMono
   maxCount: 30
 
 - type: stack
   id: FloorTileSteelPavement
-  name: steel pavement
+  name: stack-steel-pavement
   spawn: FloorTileItemSteelPavement
   maxCount: 30
 
 - type: stack
   id: FloorTileSteelPavementVertical
-  name: steel vertical pavement
+  name: stack-steel-vertical-pavement
   spawn: FloorTileItemSteelPavementVertical
   maxCount: 30
 
 - type: stack
   id: FloorTileWhite
-  name: white tile
+  name: stack-white-tile
   spawn: FloorTileItemWhite
   maxCount: 30
 
 - type: stack
   id: FloorTileWhiteOffset
-  name: offset white steel tile
+  name: stack-offset-white-steel-tile
   spawn: FloorTileItemWhiteOffset
   maxCount: 30
 
 - type: stack
   id: FloorTileWhiteDiagonalMini
-  name: white steel diagonal mini tile
+  name: stack-white-steel-diagonal-mini-tile
   spawn: FloorTileItemWhiteDiagonalMini
   maxCount: 30
 
 - type: stack
   id: FloorTileWhiteDiagonal
-  name: white steel diagonal tile
+  name: stack-white-steel-diagonal-tile
   spawn: FloorTileItemWhiteDiagonal
   maxCount: 30
 
 - type: stack
   id: FloorTileWhiteHerringbone
-  name: white steel herringbone
+  name: stack-white-steel-herringbone
   spawn: FloorTileItemWhiteHerringbone
   maxCount: 30
 
 - type: stack
   id: FloorTileWhiteMini
-  name: white steel mini tile
+  name: stack-white-steel-mini-tile
   spawn: FloorTileItemWhiteMini
   maxCount: 30
 
 - type: stack
   id: FloorTileWhiteMono
-  name: white steel mono tile
+  name: stack-white-steel-mono-tile
   spawn: FloorTileItemWhiteMono
   maxCount: 30
 
 - type: stack
   id: FloorTileWhitePavement
-  name: white steel pavement
+  name: stack-white-steel-pavement
   spawn: FloorTileItemWhitePavement
   maxCount: 30
 
 - type: stack
   id: FloorTileWhitePavementVertical
-  name: white steel vertical pavement
+  name: stack-white-steel-vertical-pavement
   spawn: FloorTileItemWhitePavementVertical
   maxCount: 30
 
 - type: stack
   id: FloorTileSteelCheckerDark
-  name: steel dark checker tile
+  name: stack-steel-dark-checker-tile
   spawn: FloorTileItemSteelCheckerDark
   maxCount: 30
 
 - type: stack
   id: FloorTileSteelCheckerLight
-  name: steel light checker tile
+  name: stack-steel-light-checker-tile
   spawn: FloorTileItemSteelCheckerLight
   maxCount: 30
 
 - type: stack
   id: FloorTileMetalDiamond
-  name: steel tile
+  name: stack-steel-tile
   spawn: FloorTileItemMetalDiamond
   maxCount: 30
 
 - type: stack
   id: FloorTileWood
-  name: wood floor
+  name: stack-wood-floor
   spawn: FloorTileItemWood
   maxCount: 30
 
 - type: stack
   id: FloorTileTechmaint
-  name: techmaint floor
+  name: stack-techmaint-floor
   spawn: FloorTileItemTechmaint
   maxCount: 30
 
 - type: stack
   id: FloorTileFreezer
-  name: freezer tile
+  name: stack-freezer-tile
   spawn: FloorTileItemFreezer
   maxCount: 30
 
 - type: stack
   id: FloorTileShowroom
-  name: showroom tile
+  name: stack-showroom-tile
   spawn: FloorTileItemShowroom
   maxCount: 30
 
 - type: stack
   id: FloorTileGCircuit
-  name: green-circuit floor
+  name: stack-green-circuit-floor
   spawn: FloorTileItemGCircuit
   maxCount: 30
 
 - type: stack
   id: FloorTileGold
-  name: gold floor
+  name: stack-gold-floor
   spawn: FloorTileItemGold
   maxCount: 30
 
 - type: stack
   id: FloorTileMono
-  name: mono tile
+  name: stack-mono-tile
   spawn: FloorTileItemMono
   maxCount: 30
 
 - type: stack
   id: FloorTileBrassFilled
-  name: filled brass plate
+  name: stack-filled-brass-plate
   spawn: FloorTileItemBrassFilled
   maxCount: 30
 
 - type: stack
   id: FloorTileBrassReebe
-  name: smooth brass plate
+  name: stack-smooth-brass-plate
   spawn: FloorTileItemBrassReebe
   maxCount: 30
 
 - type: stack
   id: FloorTileLino
-  name: linoleum floor
+  name: stack-linoleum-floor
   spawn: FloorTileItemLino
   maxCount: 30
 
 - type: stack
   id: FloorTileHydro
-  name: hydro tile
+  name: stack-hydro-tile
   spawn: FloorTileItemHydro
   maxCount: 30
 
 - type: stack
   id: FloorTileLime
-  name: lime tile
+  name: stack-lime-tile
   spawn: FloorTileItemLime
   maxCount: 30
 
 - type: stack
   id: FloorTileDirty
-  name: dirty tile
+  name: stack-dirty-tile
   spawn: FloorTileItemDirty
   maxCount: 30
 
 - type: stack
   id: FloorTileStackShuttleWhite
-  name: white shuttle tile
+  name: stack-white-shuttle-tile
   spawn: FloorTileItemShuttleWhite
   maxCount: 30
 
 - type: stack
   id: FloorTileStackShuttleBlue
-  name: blue shuttle tile
+  name: stack-blue-shuttle-tile
   spawn: FloorTileItemShuttleBlue
   maxCount: 30
 
 - type: stack
   id: FloorTileStackShuttleOrange
-  name: orange shuttle tile
+  name: stack-orange-shuttle-tile
   spawn: FloorTileItemShuttleOrange
   maxCount: 30
 
 - type: stack
   id: FloorTileStackShuttlePurple
-  name: purple shuttle tile
+  name: stack-purple-shuttle-tile
   spawn: FloorTileItemShuttlePurple
   maxCount: 30
 
 - type: stack
   id: FloorTileStackShuttleRed
-  name: red shuttle tile
+  name: stack-red-shuttle-tile
   spawn: FloorTileItemShuttleRed
   maxCount: 30
 
 - type: stack
   id: FloorTileStackShuttleGrey
-  name: grey shuttle tile
+  name: stack-grey-shuttle-tile
   spawn: FloorTileItemShuttleGrey
   maxCount: 30
 
 - type: stack
   id: FloorTileStackShuttleBlack
-  name: black shuttle tile
+  name: stack-black-shuttle-tile
   spawn: FloorTileItemShuttleBlack
   maxCount: 30
 
 - type: stack
   id: FloorTileStackEighties
-  name: eighties floor tile
+  name: stack-eighties-floor-tile
   spawn: FloorTileItemEighties
   maxCount: 30
 
 - type: stack
   id: FloorTileStackArcadeBlue
-  name: blue arcade tile
+  name: stack-blue-arcade-tile
   spawn: FloorTileItemArcadeBlue
   maxCount: 30
 
 - type: stack
   id: FloorTileStackArcadeBlue2
-  name: blue arcade tile
+  name: stack-blue-arcade-tile
   spawn: FloorTileItemArcadeBlue2
   maxCount: 30
 
 - type: stack
   id: FloorTileStackArcadeRed
-  name: red arcade tile
+  name: stack-red-arcade-tile
   spawn: FloorTileItemArcadeRed
   maxCount: 30
 
 - type: stack
   id: FloorCarpetRed
-  name: red carpet tile
+  name: stack-red-carpet-tile
   spawn: FloorCarpetItemRed
   maxCount: 30
 
 - type: stack
   id: FloorCarpetBlack
-  name: block carpet tile
+  name: stack-block-carpet-tile
   spawn: FloorCarpetItemBlack
   maxCount: 30
 
 - type: stack
   id: FloorCarpetBlue
-  name: blue carpet tile
+  name: stack-blue-carpet-tile
   spawn: FloorCarpetItemBlue
   maxCount: 30
 
 - type: stack
   id: FloorCarpetGreen
-  name: green carpet tile
+  name: stack-green-carpet-tile
   spawn: FloorCarpetItemGreen
   maxCount: 30
 
 - type: stack
   id: FloorCarpetOrange
-  name: orange carpet tile
+  name: stack-orange-carpet-tile
   spawn: FloorCarpetItemOrange
   maxCount: 30
 
 - type: stack
   id: FloorCarpetSkyBlue
-  name: skyblue carpet tile
+  name: stack-skyblue-carpet-tile
   spawn: FloorCarpetItemSkyBlue
   maxCount: 30
 
 - type: stack
   id: FloorCarpetPurple
-  name: purple carpet tile
+  name: stack-purple-carpet-tile
   spawn: FloorCarpetItemPurple
   maxCount: 30
 
 - type: stack
   id: FloorCarpetPink
-  name: pink carpet tile
+  name: stack-pink-carpet-tile
   spawn: FloorCarpetItemPink
   maxCount: 30
 
 - type: stack
   id: FloorCarpetCyan
-  name: cyan carpet tile
+  name: stack-cyan-carpet-tile
   spawn: FloorCarpetItemCyan
   maxCount: 30
 
 - type: stack
   id: FloorCarpetWhite
-  name: white carpet tile
+  name: stack-white-carpet-tile
   spawn: FloorCarpetItemWhite
   maxCount: 30
 
 - type: stack
   id: FloorTileStackCarpetClown
-  name: clown carpet tile
+  name: stack-clown-carpet-tile
   spawn: FloorTileItemCarpetClown
   maxCount: 30
 
 - type: stack
   id: FloorTileStackCarpetOffice
-  name: office carpet tile
+  name: stack-office-carpet-tile
   spawn: FloorTileItemCarpetOffice
   maxCount: 30
 
 - type: stack
   id: FloorTileStackBoxing
-  name: boxing ring tile
+  name: stack-boxing-ring-tile
   spawn: FloorTileItemBoxing
   maxCount: 30
 
 - type: stack
   id: FloorTileStackGym
-  name: gym floor tile
+  name: stack-gym-floor-tile
   spawn: FloorTileItemGym
   maxCount: 30
 
 - type: stack
   id: FloorTileElevatorShaft
-  name: elevator shaft tile
+  name: stack-elevator-shaft-tile
   spawn: FloorTileItemElevatorShaft
   maxCount: 30
 
 - type: stack
   id: FloorTileRockVault
-  name: rock vault tile
+  name: stack-rock-vault-tile
   spawn: FloorTileItemRockVault
   maxCount: 30
 
 - type: stack
   id: FloorTileBlue
-  name: blue floor tile
+  name: stack-blue-floor-tile
   spawn: FloorTileItemBlue
   maxCount: 30
 
 - type: stack
   id: FloorTileMining
-  name: mining floor tile
+  name: stack-mining-floor-tile
   spawn: FloorTileItemMining
   maxCount: 30
 
 - type: stack
   id: FloorTileMiningDark
-  name: dark mining floor tile
+  name: stack-dark-mining-floor-tile
   spawn: FloorTileItemMiningDark
   maxCount: 30
 
 - type: stack
   id: FloorTileMiningLight
-  name: light mining floor tile
+  name: stack-light-mining-floor-tile
   spawn: FloorTileItemMiningLight
   maxCount: 30
 
 - type: stack
   id: FloorTileBar
-  name: item bar floor tile
+  name: stack-item-bar-floor-tile
   spawn: FloorTileItemBar
   maxCount: 30
 
 - type: stack
   id: FloorTileClown
-  name: clown floor tile
+  name: stack-clown-floor-tile
   spawn: FloorTileItemClown
   maxCount: 30
 
 - type: stack
   id: FloorTileMime
-  name: mime floor tile
+  name: stack-mime-floor-tile
   spawn: FloorTileItemMime
   maxCount: 30
 
 - type: stack
   id: FloorTileKitchen
-  name: kitchen floor tile
+  name: stack-kitchen-floor-tile
   spawn: FloorTileItemKitchen
   maxCount: 30
 
 - type: stack
   id: FloorTileLaundry
-  name: laundry floor tile
+  name: stack-laundry-floor-tile
   spawn: FloorTileItemLaundry
   maxCount: 30
 
 - type: stack
   id: FloorTileConcrete
-  name: concrete tile
+  name: stack-concrete-tile
   spawn: FloorTileItemGrayConcrete
   maxCount: 30
 
 - type: stack
   id: FloorTileConcreteMono
-  name: concrete mono tile
+  name: stack-concrete-mono-tile
   spawn: FloorTileItemConcreteMono
   maxCount: 30
 
 - type: stack
   id: FloorTileConcreteSmooth
-  name: concrete smooth
+  name: stack-concrete-smooth
   spawn: FloorTileItemConcreteSmooth
   maxCount: 30
 
 - type: stack
   id: FloorTileGrayConcrete
-  name: gray concrete tile
+  name: stack-gray-concrete-tile
   spawn: FloorTileItemGrayConcrete
   maxCount: 30
 
 - type: stack
   id: FloorTileGrayConcreteMono
-  name: gray concrete mono tile
+  name: stack-gray-concrete-mono-tile
   spawn: FloorTileItemGrayConcreteMono
   maxCount: 30
 
 - type: stack
   id: FloorTileGrayConcreteSmooth
-  name: gray concrete smooth
+  name: stack-gray-concrete-smooth
   spawn: FloorTileItemGrayConcreteSmooth
   maxCount: 30
 
 - type: stack
   id: FloorTileOldConcrete
-  name: old concrete tile
+  name: stack-old-concrete-tile
   spawn: FloorTileItemOldConcrete
   maxCount: 30
 
 - type: stack
   id: FloorTileOldConcreteMono
-  name: old concrete mono tile
+  name: stack-old-concrete-mono-tile
   spawn: FloorTileItemOldConcreteMono
   maxCount: 30
 
 - type: stack
   id: FloorTileOldConcreteSmooth
-  name: old concrete smooth
+  name: stack-old-concrete-smooth
   spawn: FloorTileItemOldConcreteSmooth
   maxCount: 30
 
 - type: stack
   id: FloorTileSilver
-  name: silver floor tile
+  name: stack-silver-floor-tile
   spawn: FloorTileItemSilver
   maxCount: 30
 
 - type: stack
   id: FloorTileBCircuit
-  name: bcircuit floor tile
+  name: stack-bcircuit-floor-tile
   spawn: FloorTileItemBCircuit
   maxCount: 30
 
 - type: stack
   id: FloorTileRCircuit
-  name: red-circuit floor
+  name: stack-red-circuit-floor
   spawn: FloorTileItemRCircuit
   maxCount: 30
 
 - type: stack
   id: FloorTileGrass
-  name: grass floor tile
+  name: stack-grass-floor-tile
   spawn: FloorTileItemGrass
   maxCount: 30
 
 - type: stack
   id: FloorTileGrassJungle
-  name: grass jungle floor tile
+  name: stack-grass-jungle-floor-tile
   spawn: FloorTileItemGrassJungle
   maxCount: 30
 
 - type: stack
   id: FloorTileSnow
-  name: snow floor tile
+  name: stack-snow-floor-tile
   spawn: FloorTileItemSnow
   maxCount: 30
 
 - type: stack
   id: FloorTileWoodPattern
-  name: wood pattern floor
+  name: stack-wood-patter-floor
   spawn: FloorTileItemWoodPattern
   maxCount: 30
 
 - type: stack
   id: FloorTileFlesh
-  name: flesh floor
+  name: stack-flesh-floor
   spawn: FloorTileItemFlesh
   maxCount: 30
 
 - type: stack
   id: FloorTileSteelMaint
-  name: steel maint floor
+  name: stack-steel-maint-floor
   spawn: FloorTileItemSteelMaint
   maxCount: 30
 
 - type: stack
   id: FloorTileGratingMaint
-  name: grating maint floor
+  name: stack-grating-maint-floor
   spawn: FloorTileItemGratingMaint
   maxCount: 30
 
 - type: stack
   id: FloorTileWeb
-  name: web tile
+  name: stack-web-tile
   spawn: FloorTileItemWeb
   maxCount: 30
 
 # Faux science tiles
 - type: stack
   id: FloorTileAstroGrass
-  name: astro-grass floor
+  name: stack-astro-grass-floor
   spawn: FloorTileItemAstroGrass
   maxCount: 30
 
 - type: stack
   id: FloorTileMowedAstroGrass
-  name: mowed astro-grass floor
+  name: stack-mowed-astro-grass-floor
   spawn: FloorTileItemMowedAstroGrass
   maxCount: 30
 
 - type: stack
   id: FloorTileJungleAstroGrass
-  name: jungle astro-grass floor
+  name: stack-jungle-astro-grass-floor
   spawn: FloorTileItemJungleAstroGrass
   maxCount: 30
 
 - type: stack
   id: FloorTileAstroIce
-  name: astro-ice floor
+  name: stack-astro-ice-floor
   spawn: FloorTileItemAstroIce
   maxCount: 30
 
 - type: stack
   id: FloorTileAstroSnow
-  name: astro-snow floor
+  name: stack-astro-snow-floor
   spawn: FloorTileItemAstroSnow
   maxCount: 30
 
 - type: stack
   id: FloorTileAstroAsteroidSand
-  name: asteroid astro-sand floor
+  name: stack-asteroid-astro-sand-floor
   spawn: FloorTileItemAstroAsteroidSand
   maxCount: 30
 
 - type: stack
   id: FloorTileWoodLarge
-  name: large wood floor
+  name: stack-large-wood-floor
   spawn: FloorTileItemWoodLarge
   maxCount: 30
index 7ad3c21634c77679c89100d1eaced2fa6ce5e7ab..5c4e98f6f643ab55ea99041bb98ef8115a8f6aec 100644 (file)
@@ -1,48 +1,48 @@
 - type: stack
   id: Ointment
-  name: ointment
+  name: stack-ointment
   icon: { sprite: "/Textures/Objects/Specific/Medical/medical.rsi", state: ointment }
   spawn: Ointment
   maxCount: 10
 
 - type: stack
   id: AloeCream
-  name: aloe cream
+  name: stack-aloe-cream
   icon: { sprite: "/Textures/Objects/Specific/Hydroponics/aloe.rsi", state: cream }
   spawn: AloeCream
   maxCount: 10
 
 - type: stack
   id: Gauze
-  name: gauze
+  name: stack-gauze
   icon: { sprite: "/Textures/Objects/Specific/Medical/medical.rsi", state: gauze }
   spawn: Gauze
   maxCount: 10
 
 - type: stack
   id: Brutepack
-  name: brutepack
+  name: stack-brutepack
   icon: { sprite: "/Textures/Objects/Specific/Medical/medical.rsi", state: gauze }
   spawn: Brutepack
   maxCount: 10
 
 - type: stack
   id: Bloodpack
-  name: bloodpack
+  name: stack-bloodpack
   icon: { sprite: "/Textures/Objects/Specific/Medical/medical.rsi", state: bloodpack }
   spawn: Bloodpack
   maxCount: 10
 
 - type: stack
   id: MedicatedSuture
-  name: medicated-suture
+  name: stack-medicated-suture
   icon: {sprite: "/Textures/Objects/Specific/Medical/medical.rsi", state: medicated-suture }
   spawn: MedicatedSuture
   maxCount: 10
 
 - type: stack
   id: RegenerativeMesh
-  name: regenerative-mesh
+  name: stack-regenerative-mesh
   icon: {sprite: "/Textures/Objects/Specific/Medical/medical.rsi", state: regenerative-mesh}
   spawn: RegenerativeMesh
   maxCount: 10
index 7f015659e92ed52696dd41b980385172bca9f26a..305c85943da785fcdc95910797906939ed7ddf50 100644 (file)
@@ -1,20 +1,20 @@
 - type: stack
   id: Cable
-  name: lv cable
+  name: stack-lv-cable
   icon: { sprite: "/Textures/Objects/Tools/cable-coils.rsi", state: coil-30 }
   spawn: CableApcStack1
   maxCount: 30
 
 - type: stack
   id: CableMV
-  name: mv cable
+  name: stack-mv-cable
   icon: { sprite: "/Textures/Objects/Tools/cable-coils.rsi", state: coilmv-30 }
   spawn: CableMVStack1
   maxCount: 30
 
 - type: stack
   id: CableHV
-  name: hv cable
+  name: stack-hv-cable
   icon: { sprite: "/Textures/Objects/Tools/cable-coils.rsi", state: coilhv-30 }
   spawn: CableHVStack1
   maxCount: 30
index 647a5b2a7bf351e9c8f0aa22ecafa9c1fa2f8055..3c9d95df11ced81fde1219c346d19dfb79cce744 100644 (file)
@@ -1,24 +1,24 @@
 - type: stack
   id: ArtifactFragment
-  name: artifact fragment
+  name: stack-artifact-fragment
   spawn: ArtifactFragment1
   maxCount: 30
 
 - type: stack
   id: Capacitor
-  name: capacitor
+  name: stack-capacitor
   icon: { sprite: /Textures/Objects/Misc/stock_parts.rsi, state: capacitor }
   spawn: CapacitorStockPart
   maxCount: 10
 
 - type: stack
   id: Manipulator
-  name: micro manipulator
+  name: stack-micro-manipulator
   spawn: MicroManipulatorStockPart
   maxCount: 10
 
 - type: stack
   id: MatterBin
-  name: matter bin
+  name: stack-matter-bin
   spawn: MatterBinStockPart
   maxCount: 10