diff --git a/Content.Client/Construction/ConstructionSystem.cs b/Content.Client/Construction/ConstructionSystem.cs index 66000a8457d..323da30cf39 100644 --- a/Content.Client/Construction/ConstructionSystem.cs +++ b/Content.Client/Construction/ConstructionSystem.cs @@ -1,4 +1,5 @@ using System.Diagnostics.CodeAnalysis; +using Content.Client.Construction.UI; using Content.Client.Popups; using Content.Shared.Construction; using Content.Shared.Construction.Prototypes; @@ -89,7 +90,7 @@ private void HandleConstructionGhostExamined(EntityUid uid, ConstructionGhostCom { args.PushMarkup(Loc.GetString( "construction-ghost-examine-message", - ("name", component.Prototype.Name))); + ("name", ConstructionMenuPresenter.GetLocalizationFromID(component.Prototype.ID)))); if (!_prototypeManager.TryIndex(component.Prototype.Graph, out ConstructionGraphPrototype? graph)) return; diff --git a/Content.Client/Construction/UI/ConstructionMenu.xaml b/Content.Client/Construction/UI/ConstructionMenu.xaml index dd210d97293..354213314cb 100644 --- a/Content.Client/Construction/UI/ConstructionMenu.xaml +++ b/Content.Client/Construction/UI/ConstructionMenu.xaml @@ -2,7 +2,7 @@ - + diff --git a/Content.Client/Construction/UI/ConstructionMenu.xaml.cs b/Content.Client/Construction/UI/ConstructionMenu.xaml.cs index 8fce1dbbda0..f7c3425343e 100644 --- a/Content.Client/Construction/UI/ConstructionMenu.xaml.cs +++ b/Content.Client/Construction/UI/ConstructionMenu.xaml.cs @@ -85,6 +85,7 @@ public ConstructionMenu() Recipes.OnItemDeselected += _ => RecipeSelected?.Invoke(this, null); SearchBar.OnTextChanged += _ => PopulateRecipes?.Invoke(this, (SearchBar.Text, Categories[Category.SelectedId])); + /* SearchBar.PlaceHolder = Loc.GetString("construction-menu-title"); */ Category.OnItemSelected += obj => { Category.SelectId(obj.Id); diff --git a/Content.Client/Construction/UI/ConstructionMenuPresenter.cs b/Content.Client/Construction/UI/ConstructionMenuPresenter.cs index 0c7912e0bcd..10465bb76d2 100644 --- a/Content.Client/Construction/UI/ConstructionMenuPresenter.cs +++ b/Content.Client/Construction/UI/ConstructionMenuPresenter.cs @@ -65,7 +65,7 @@ private bool WindowOpen else _constructionView.OpenCentered(); - if(_selected != null) + if (_selected != null) PopulateInfo(_selected); } else @@ -166,7 +166,9 @@ private void OnViewPopulateRecipes(object? sender, (string search, string catago if (!string.IsNullOrEmpty(search)) { - if (!recipe.Name.ToLowerInvariant().Contains(search.Trim().ToLowerInvariant())) + // var defaultSearchAttempt = !recipe.Name.ToLowerInvariant().Contains(search.Trim().ToLowerInvariant()); + var locSearchAttempt = !GetLocalizationFromID(recipe.ID).ToLowerInvariant().Contains(search.Trim().ToLowerInvariant()); + if (locSearchAttempt) continue; } @@ -189,6 +191,11 @@ private void OnViewPopulateRecipes(object? sender, (string search, string catago // There is apparently no way to set which } + public static string GetLocalizationFromID(string id, bool desc = false) + { + return Loc.GetString($"ent-{id.Replace("Fixture", "").Replace("Recipe", "")}{(desc ? ".desc" : "")}"); + } + private void PopulateCategories() { var uniqueCategories = new HashSet(); @@ -222,7 +229,8 @@ private void PopulateInfo(ConstructionPrototype prototype) { var spriteSys = _systemManager.GetEntitySystem(); _constructionView.ClearRecipeInfo(); - _constructionView.SetRecipeInfo(prototype.Name, prototype.Description, spriteSys.Frame0(prototype.Icon), prototype.Type != ConstructionType.Item); + _constructionView.SetRecipeInfo( + GetLocalizationFromID(prototype.ID), GetLocalizationFromID(prototype.ID, true), spriteSys.Frame0(prototype.Icon), prototype.Type != ConstructionType.Item); var stepList = _constructionView.RecipeStepList; GenerateStepList(prototype, stepList); @@ -259,7 +267,7 @@ private static ItemList.Item GetItem(ConstructionPrototype recipe, ItemList item return new(itemList) { Metadata = recipe, - Text = recipe.Name, + Text = GetLocalizationFromID(recipe.ID), Icon = recipe.Icon.Frame0(), TooltipEnabled = true, TooltipText = recipe.Description diff --git a/Content.Server/Construction/ConstructionSystem.Guided.cs b/Content.Server/Construction/ConstructionSystem.Guided.cs index e096bc02c31..caff1b6cd19 100644 --- a/Content.Server/Construction/ConstructionSystem.Guided.cs +++ b/Content.Server/Construction/ConstructionSystem.Guided.cs @@ -6,6 +6,7 @@ using Content.Shared.Popups; using Content.Shared.Verbs; using Robust.Shared.Player; +using Robust.Shared.Prototypes; using Robust.Shared.Utility; namespace Content.Server.Construction @@ -28,7 +29,7 @@ private void OnGuideRequested(RequestConstructionGuide msg, EntitySessionEventAr if (!_prototypeManager.TryIndex(msg.ConstructionId, out ConstructionPrototype? prototype)) return; - if(GetGuide(prototype) is {} guide) + if (GetGuide(prototype) is { } guide) RaiseNetworkEvent(new ResponseConstructionGuide(msg.ConstructionId, guide), args.SenderSession.Channel); } @@ -58,7 +59,7 @@ private void AddDeconstructVerb(EntityUid uid, ConstructionComponent component, //TODO VERBS add more construction verbs? Until then, removing construction category verb.Text = Loc.GetString("deconstructible-verb-begin-deconstruct"); verb.Icon = new SpriteSpecifier.Texture( - new ("/Textures/Interface/hammer_scaled.svg.192dpi.png")); + new("/Textures/Interface/hammer_scaled.svg.192dpi.png")); verb.Act = () => { @@ -81,7 +82,7 @@ private void HandleConstructionExamined(EntityUid uid, ConstructionComponent com { using (args.PushGroup(nameof(ConstructionComponent))) { - if (GetTargetNode(uid, component) is {} target) + if (GetTargetNode(uid, component) is { } target) { if (target.Name == component.DeconstructionNode) { @@ -95,7 +96,7 @@ private void HandleConstructionExamined(EntityUid uid, ConstructionComponent com } } - if (component.EdgeIndex == null && GetTargetEdge(uid, component) is {} targetEdge) + if (component.EdgeIndex == null && GetTargetEdge(uid, component) is { } targetEdge) { var preventStepExamine = false; @@ -109,7 +110,7 @@ private void HandleConstructionExamined(EntityUid uid, ConstructionComponent com return; } - if (GetCurrentEdge(uid, component) is {} edge) + if (GetCurrentEdge(uid, component) is { } edge) { var preventStepExamine = false; @@ -149,12 +150,12 @@ private void HandleConstructionExamined(EntityUid uid, ConstructionComponent com return null; // If either the start node or the target node are missing, do nothing. - if (GetNodeFromGraph(graph, construction.StartNode) is not {} startNode - || GetNodeFromGraph(graph, construction.TargetNode) is not {} targetNode) + if (GetNodeFromGraph(graph, construction.StartNode) is not { } startNode + || GetNodeFromGraph(graph, construction.TargetNode) is not { } targetNode) return null; // If there's no path from start to target, do nothing. - if (graph.Path(construction.StartNode, construction.TargetNode) is not {} path + if (graph.Path(construction.StartNode, construction.TargetNode) is not { } path || path.Length == 0) return null; @@ -176,7 +177,7 @@ private void HandleConstructionExamined(EntityUid uid, ConstructionComponent com // Iterate until the penultimate node. var node = startNode; var index = 0; - while(node != targetNode) + while (node != targetNode) { // Can't find path, therefore can't generate guide... if (!node.TryGetEdge(path[index].Name, out var edge)) @@ -197,7 +198,7 @@ private void HandleConstructionExamined(EntityUid uid, ConstructionComponent com // Now actually list the construction conditions. foreach (var condition in construction.Conditions) { - if (condition.GenerateGuideEntry() is not {} conditionEntry) + if (condition.GenerateGuideEntry() is not { } conditionEntry) continue; conditionEntry.Padding += 4; @@ -208,7 +209,7 @@ private void HandleConstructionExamined(EntityUid uid, ConstructionComponent com node = path[index++]; // Add a bit of padding if there will be more steps after this. - if(node != targetNode) + if (node != targetNode) entries.Add(new ConstructionGuideEntry()); continue; diff --git a/Content.Server/Construction/ConstructionSystem.Interactions.cs b/Content.Server/Construction/ConstructionSystem.Interactions.cs index ad7b2a11b0e..aa504d6d5bb 100644 --- a/Content.Server/Construction/ConstructionSystem.Interactions.cs +++ b/Content.Server/Construction/ConstructionSystem.Interactions.cs @@ -11,8 +11,10 @@ using Content.Shared.Interaction; using Content.Shared.Prying.Systems; using Content.Shared.Radio.EntitySystems; +using Content.Shared.Tools.Components; using Content.Shared.Tools.Systems; using Robust.Shared.Containers; +using Robust.Shared.Map; using Robust.Shared.Utility; #if EXCEPTION_TOLERANCE // ReSharper disable once RedundantUsingDirective @@ -37,8 +39,8 @@ private void InitializeInteractions() // Event handling. Add your subscriptions here! Just make sure they're all handled by EnqueueEvent. SubscribeLocalEvent(EnqueueEvent, - new []{typeof(AnchorableSystem), typeof(PryingSystem), typeof(WeldableSystem)}, - new []{typeof(EncryptionKeySystem)}); + new[] { typeof(AnchorableSystem), typeof(PryingSystem), typeof(WeldableSystem) }, + new[] { typeof(EncryptionKeySystem) }); SubscribeLocalEvent(EnqueueEvent); SubscribeLocalEvent(EnqueueEvent); } @@ -56,13 +58,13 @@ private HandleResult HandleEvent(EntityUid uid, object ev, bool validation, Cons return HandleResult.False; // If the state machine is in an invalid state (not on a valid node) we can't do anything, ever. - if (GetCurrentNode(uid, construction) is not {} node) + if (GetCurrentNode(uid, construction) is not { } node) { return HandleResult.False; } // If we're currently in an edge, we'll let the edge handle or validate the interaction. - if (GetCurrentEdge(uid, construction) is {} edge) + if (GetCurrentEdge(uid, construction) is { } edge) { var result = HandleEdge(uid, ev, edge, validation, construction); @@ -258,30 +260,28 @@ private HandleResult HandleInteraction(EntityUid uid, object ev, ConstructionGra // Note: Please use braces for your new case, it's convenient. case EntityInsertConstructionGraphStep insertStep: - { - // EntityInsert steps only work with InteractUsing! - if (ev is not InteractUsingEvent interactUsing) - break; - - // TODO: Sanity checks. + { + // EntityInsert steps only work with InteractUsing! + if (ev is not InteractUsingEvent interactUsing) + break; - user = interactUsing.User; + user = interactUsing.User; - var insert = interactUsing.Used; + var insert = interactUsing.Used; - // Since many things inherit this step, we delegate the "is this entity valid?" logic to them. - // While this is very OOP and I find it icky, I must admit that it simplifies the code here a lot. - if(!insertStep.EntityValid(insert, EntityManager, _factory)) - return HandleResult.False; + // Since many things inherit this step, we delegate the "is this entity valid?" logic to them. + // While this is very OOP and I find it icky, I must admit that it simplifies the code here a lot. + if (!insertStep.EntityValid(insert, EntityManager, _factory)) + return HandleResult.False; - // If we're only testing whether this step would be handled by the given event, then we're done. - if (validation) - return HandleResult.Validated; + // If we're only testing whether this step would be handled by the given event, then we're done. + if (validation) + return HandleResult.Validated; - // If we still haven't completed this step's DoAfter... - if (doAfterState == DoAfterState.None && insertStep.DoAfter > 0) - { - var doAfterEv = new ConstructionInteractDoAfterEvent(EntityManager, interactUsing); + // If we still haven't completed this step's DoAfter... + if (doAfterState == DoAfterState.None && insertStep.DoAfter > 0) + { + var doAfterEv = new ConstructionInteractDoAfterEvent(EntityManager, interactUsing); var doAfterEventArgs = new DoAfterArgs(EntityManager, interactUsing.User, step.DoAfter, doAfterEv, uid, uid, interactUsing.Used) { @@ -290,134 +290,133 @@ private HandleResult HandleInteraction(EntityUid uid, object ev, ConstructionGra NeedHand = true }; - var started = _doAfterSystem.TryStartDoAfter(doAfterEventArgs); + var started = _doAfterSystem.TryStartDoAfter(doAfterEventArgs); - if (!started) - return HandleResult.False; + if (!started) + return HandleResult.False; #if DEBUG - // Verify that the resulting DoAfter event will be handled by the current construction state. - // if it can't what is even the point of raising this DoAfter? - doAfterEv.DoAfter = new(default, doAfterEventArgs, default); - var result = HandleInteraction(uid, doAfterEv, step, validation: true, out _, construction); - DebugTools.Assert(result == HandleResult.Validated); + // Verify that the resulting DoAfter event will be handled by the current construction state. + // if it can't what is even the point of raising this DoAfter? + doAfterEv.DoAfter = new(default, doAfterEventArgs, default); + var result = HandleInteraction(uid, doAfterEv, step, validation: true, out _, construction); + DebugTools.Assert(result == HandleResult.Validated); #endif - return HandleResult.DoAfter; - } + return HandleResult.DoAfter; + } - // Material steps, which use stacks, are handled specially. Instead of inserting the whole item, - // we split the stack in two and insert the split stack. - if (insertStep is MaterialConstructionGraphStep materialInsertStep) - { - if (_stackSystem.Split(insert, materialInsertStep.Amount, Transform(interactUsing.User).Coordinates) is not {} stack) - return HandleResult.False; + // Material steps, which use stacks, are handled specially. Instead of inserting the whole item, + // we split the stack in two and insert the split stack. + if (insertStep is MaterialConstructionGraphStep materialInsertStep) + { + if (_stackSystem.Split(insert, materialInsertStep.Amount, Transform(interactUsing.User).Coordinates) is not { } stack) + return HandleResult.False; - insert = stack; - } + insert = stack; + } - // Container-storage handling. - if (!string.IsNullOrEmpty(insertStep.Store)) - { - // In the case we want to store this item in a container on the entity... - var store = insertStep.Store; + // Container-storage handling. + if (!string.IsNullOrEmpty(insertStep.Store)) + { + // In the case we want to store this item in a container on the entity... + var store = insertStep.Store; - // Add this container to the collection of "construction-owned" containers. - // Containers in that set will be transferred to new entities in the case of a prototype change. - construction.Containers.Add(store); + // Add this container to the collection of "construction-owned" containers. + // Containers in that set will be transferred to new entities in the case of a prototype change. + construction.Containers.Add(store); - // The container doesn't necessarily need to exist, so we ensure it. - _container.Insert(insert, _container.EnsureContainer(uid, store)); + // The container doesn't necessarily need to exist, so we ensure it. + _container.Insert(insert, _container.EnsureContainer(uid, store)); + } + else + { + // If we don't store the item in a container on the entity, we just delete it right away. + Del(insert); + } + + // Step has been handled correctly, so we signal this. + return HandleResult.True; } - else + + case ToolConstructionGraphStep toolInsertStep: { - // If we don't store the item in a container on the entity, we just delete it right away. - Del(insert); - } + if (ev is not InteractUsingEvent interactUsing) + break; - // Step has been handled correctly, so we signal this. - return HandleResult.True; - } + // TODO: Sanity checks. - case ToolConstructionGraphStep toolInsertStep: - { - if (ev is not InteractUsingEvent interactUsing) - break; + user = interactUsing.User; - // TODO: Sanity checks. + // If we're validating whether this event handles the step... + if (validation) + { + // Then we only really need to check whether the tool entity has that quality or not. + return _toolSystem.HasQuality(interactUsing.Used, toolInsertStep.Tool) + ? HandleResult.Validated + : HandleResult.False; + } - user = interactUsing.User; + // If we're handling an event after its DoAfter finished... + if (doAfterState == DoAfterState.Completed) + return HandleResult.True; - // If we're validating whether this event handles the step... - if (validation) - { - // Then we only really need to check whether the tool entity has that quality or not. - return _toolSystem.HasQuality(interactUsing.Used, toolInsertStep.Tool) - ? HandleResult.Validated - : HandleResult.False; - } + var result = _toolSystem.UseTool( + interactUsing.Used, + interactUsing.User, + uid, + TimeSpan.FromSeconds(toolInsertStep.DoAfter), + new[] { toolInsertStep.Tool }, + new ConstructionInteractDoAfterEvent(EntityManager, interactUsing), + out var doAfter); - // If we're handling an event after its DoAfter finished... - if (doAfterState == DoAfterState.Completed) - return HandleResult.True; - - var result = _toolSystem.UseTool( - interactUsing.Used, - interactUsing.User, - uid, - TimeSpan.FromSeconds(toolInsertStep.DoAfter), - new [] { toolInsertStep.Tool }, - new ConstructionInteractDoAfterEvent(EntityManager, interactUsing), - out var doAfter, - toolInsertStep.Fuel); - - return result && doAfter != null ? HandleResult.DoAfter : HandleResult.False; - } + return result && doAfter != null ? HandleResult.DoAfter : HandleResult.False; + } case TemperatureConstructionGraphStep temperatureChangeStep: - { - if (ev is not OnTemperatureChangeEvent) - break; + { + if (ev is not OnTemperatureChangeEvent) + break; - // Some things, like microwaves, might need to block the temperature construction step from kicking in, or override it entirely. - var tempEvent = new OnConstructionTemperatureEvent(); - RaiseLocalEvent(uid, tempEvent, true); + // Some things, like microwaves, might need to block the temperature construction step from kicking in, or override it entirely. + var tempEvent = new OnConstructionTemperatureEvent(); + RaiseLocalEvent(uid, tempEvent, true); - if (tempEvent.Result is not null) - return tempEvent.Result.Value; + if (tempEvent.Result is not null) + return tempEvent.Result.Value; - // prefer using InternalTemperature since that's more accurate for cooking. - float temp; - if (TryComp(uid, out var internalTemp)) - { - temp = internalTemp.Temperature; - } - else if (TryComp(uid, out var tempComp)) - { - temp = tempComp.CurrentTemperature; - } - else - { - return HandleResult.False; - } + // prefer using InternalTemperature since that's more accurate for cooking. + float temp; + if (TryComp(uid, out var internalTemp)) + { + temp = internalTemp.Temperature; + } + else if (TryComp(uid, out var tempComp)) + { + temp = tempComp.CurrentTemperature; + } + else + { + return HandleResult.False; + } - if ((!temperatureChangeStep.MinTemperature.HasValue || temp >= temperatureChangeStep.MinTemperature.Value) && - (!temperatureChangeStep.MaxTemperature.HasValue || temp <= temperatureChangeStep.MaxTemperature.Value)) - { - return HandleResult.True; - } + if ((!temperatureChangeStep.MinTemperature.HasValue || temp >= temperatureChangeStep.MinTemperature.Value) && + (!temperatureChangeStep.MaxTemperature.HasValue || temp <= temperatureChangeStep.MaxTemperature.Value)) + { + return HandleResult.True; + } - return HandleResult.False; - } + return HandleResult.False; + } case PartAssemblyConstructionGraphStep partAssemblyStep: - { - if (ev is not PartAssemblyPartInsertedEvent) - break; + { + if (ev is not PartAssemblyPartInsertedEvent) + break; - if (partAssemblyStep.Condition(uid, EntityManager)) - return HandleResult.True; - return HandleResult.False; - } + if (partAssemblyStep.Condition(uid, EntityManager)) + return HandleResult.True; + return HandleResult.False; + } #endregion // --- CONSTRUCTION STEP EVENT HANDLING FINISH --- diff --git a/Content.Shared/Construction/ConstructionGuide.cs b/Content.Shared/Construction/ConstructionGuide.cs index 9132c1851d3..70593e165fe 100644 --- a/Content.Shared/Construction/ConstructionGuide.cs +++ b/Content.Shared/Construction/ConstructionGuide.cs @@ -22,5 +22,6 @@ public sealed class ConstructionGuideEntry public string Localization { get; set; } = string.Empty; public (string, object)[]? Arguments { get; set; } = null; public SpriteSpecifier? Icon { get; set; } = null; + public string? NameLocalization { get; set; } } } diff --git a/Content.Shared/Construction/Steps/ArbitraryInsertConstructionGraphStep.cs b/Content.Shared/Construction/Steps/ArbitraryInsertConstructionGraphStep.cs index 49d429aa267..a29797fe784 100644 --- a/Content.Shared/Construction/Steps/ArbitraryInsertConstructionGraphStep.cs +++ b/Content.Shared/Construction/Steps/ArbitraryInsertConstructionGraphStep.cs @@ -1,4 +1,6 @@ using Content.Shared.Examine; +using Content.Shared.Tag; +using Robust.Shared.Prototypes; using Robust.Shared.Utility; namespace Content.Shared.Construction.Steps @@ -9,6 +11,9 @@ public abstract partial class ArbitraryInsertConstructionGraphStep : EntityInser [DataField("icon")] public SpriteSpecifier? Icon { get; private set; } + [DataField("tag")] + public string? _tag; + public override void DoExamine(ExaminedEvent examinedEvent) { if (string.IsNullOrEmpty(Name)) @@ -19,11 +24,30 @@ public override void DoExamine(ExaminedEvent examinedEvent) public override ConstructionGuideEntry GenerateGuideEntry() { + var prototypeManager = IoCManager.Resolve(); + string? nameLocale = null; + if (_tag is not null && prototypeManager.TryIndex(_tag, out var tag)) + { + var entities = prototypeManager.EnumeratePrototypes(); + foreach (var item in entities) + { + if (!item.TryGetComponent(out var entityTag)) + continue; + + if (entityTag.Tags.Contains(tag.ID)) + { + nameLocale = item.Name; + break; + } + } + } + return new ConstructionGuideEntry { Localization = "construction-presenter-arbitrary-step", - Arguments = new (string, object)[]{("name", Name)}, + Arguments = new (string, object)[]{ ("name", nameLocale ?? Name) }, Icon = Icon, + NameLocalization = nameLocale, }; } } diff --git a/Content.Shared/Construction/Steps/ConstructionGraphStep.cs b/Content.Shared/Construction/Steps/ConstructionGraphStep.cs index 82248fa1051..fce576459d4 100644 --- a/Content.Shared/Construction/Steps/ConstructionGraphStep.cs +++ b/Content.Shared/Construction/Steps/ConstructionGraphStep.cs @@ -1,4 +1,5 @@ using Content.Shared.Examine; +using Robust.Shared.Prototypes; namespace Content.Shared.Construction.Steps { diff --git a/Content.Shared/Construction/Steps/MaterialConstructionGraphStep.cs b/Content.Shared/Construction/Steps/MaterialConstructionGraphStep.cs index eec8d89b808..2ca2fc1aa94 100644 --- a/Content.Shared/Construction/Steps/MaterialConstructionGraphStep.cs +++ b/Content.Shared/Construction/Steps/MaterialConstructionGraphStep.cs @@ -20,7 +20,11 @@ public override void DoExamine(ExaminedEvent examinedEvent) { var material = IoCManager.Resolve().Index(MaterialPrototypeId); - examinedEvent.PushMarkup(Loc.GetString("construction-insert-material-entity", ("amount", Amount), ("materialName", material.Name))); + examinedEvent.PushMarkup(Loc.GetString( + "construction-insert-material-entity", + ("amount", Amount), + ("materialName", Loc.GetString($"ent-{material.Spawn}")) + )); } public override bool EntityValid(EntityUid uid, IEntityManager entityManager, IComponentFactory compFactory) @@ -41,11 +45,11 @@ public bool EntityValid(EntityUid entity, [NotNullWhen(true)] out StackComponent public override ConstructionGuideEntry GenerateGuideEntry() { var material = IoCManager.Resolve().Index(MaterialPrototypeId); - + return new ConstructionGuideEntry() { Localization = "construction-presenter-material-step", - Arguments = new (string, object)[]{("amount", Amount), ("material", material.Name)}, + Arguments = new (string, object)[]{("amount", Amount), ("material", Loc.GetString($"ent-{material.Spawn}"))}, Icon = material.Icon, }; } diff --git a/Content.Shared/Construction/Steps/TagConstructionGraphStep.cs b/Content.Shared/Construction/Steps/TagConstructionGraphStep.cs index df8c166aa1d..299be2fdb56 100644 --- a/Content.Shared/Construction/Steps/TagConstructionGraphStep.cs +++ b/Content.Shared/Construction/Steps/TagConstructionGraphStep.cs @@ -5,8 +5,6 @@ namespace Content.Shared.Construction.Steps [DataDefinition] public sealed partial class TagConstructionGraphStep : ArbitraryInsertConstructionGraphStep { - [DataField("tag")] - private string? _tag; public override bool EntityValid(EntityUid uid, IEntityManager entityManager, IComponentFactory compFactory) { diff --git a/Resources/Locale/ru-RU/construction/ui/construction-menu.ftl b/Resources/Locale/ru-RU/construction/ui/construction-menu.ftl index 6c821936693..f004c29a932 100644 --- a/Resources/Locale/ru-RU/construction/ui/construction-menu.ftl +++ b/Resources/Locale/ru-RU/construction/ui/construction-menu.ftl @@ -5,3 +5,4 @@ construction-menu-place-ghost = Разместить призрак констр construction-menu-clear-all = Очистить всё construction-menu-eraser-mode = Режим ластика construction-menu-craft = Создание +construction-menu-search = Поиск diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/machines/computer.yml b/Resources/Prototypes/Recipes/Construction/Graphs/machines/computer.yml index 4792bb216f3..3c0dd7c993a 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/machines/computer.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/machines/computer.yml @@ -24,7 +24,7 @@ steps: - component: ComputerBoard store: board - name: any computer circuit board + name: любую консольную плату icon: sprite: "Objects/Misc/module.rsi" state: "id_mod" diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml b/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml index 0f012cefc98..504535713f7 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml @@ -43,7 +43,7 @@ - tool: Screwing doAfter: 0.5 - + - to: engineer steps: - assemblyId: engineer @@ -179,6 +179,33 @@ - tool: Screwing doAfter: 0.5 + - to: security + steps: + - assemblyId: security + guideString: borg-construction-guide-string + + - material: Cable + amount: 1 + doAfter: 1 + store: part-container + + - component: Flash + name: flash + store: part-container + icon: + sprite: Objects/Weapons/Melee/flash.rsi + state: flash + + - component: Flash + name: second flash + store: part-container + icon: + sprite: Objects/Weapons/Melee/flash.rsi + state: flash + + - tool: Screwing + doAfter: 0.5 + - node: cyborg entity: BorgChassisGeneric @@ -197,6 +224,12 @@ - node: service entity: BorgChassisService + - node: security + entity: BorgChassisSecurity + + - node: ertcombat + entity: BorgChassisERT + - node: syndicateassault entity: BorgChassisSyndicateAssault diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/hamtr_construction.yml b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/hamtr_construction.yml index fb05cc313bd..5e1bba5698d 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/hamtr_construction.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/hamtr_construction.yml @@ -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: любую батарею store: battery-container icon: sprite: Objects/Power/power_cells.rsi diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/honker_construction.yml b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/honker_construction.yml index 830b6bcb6fc..9831defb9ce 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/honker_construction.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/honker_construction.yml @@ -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: любую батарею store: battery-container icon: sprite: Objects/Power/power_cells.rsi diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/ripley_construction.yml b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/ripley_construction.yml index 659a0360caf..77ff20118d5 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/ripley_construction.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/ripley_construction.yml @@ -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: любую батарею store: battery-container icon: sprite: Objects/Power/power_cells.rsi @@ -122,4 +122,4 @@ - node: ripley actions: - !type:BuildMech - mechPrototype: MechRipley \ No newline at end of file + mechPrototype: MechRipley diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/airlock.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/airlock.yml index 0bb6b4b1ce4..5529514fdcb 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/airlock.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/airlock.yml @@ -121,6 +121,7 @@ actions: - !type:SetWiresPanelSecurity wiresAccessible: true + weldingAllowed: true edges: - to: glassElectronics conditions: @@ -161,6 +162,7 @@ actions: - !type:SetWiresPanelSecurity wiresAccessible: true + weldingAllowed: true edges: - to: wired conditions: @@ -199,6 +201,7 @@ actions: - !type:SetWiresPanelSecurity wiresAccessible: true + weldingAllowed: true edges: - to: medSecurityUnfinished conditions: @@ -222,6 +225,7 @@ - !type:SetWiresPanelSecurity examine: wires-panel-component-on-examine-security-level1 wiresAccessible: false + weldingAllowed: false edges: - to: glassAirlock completed: @@ -274,6 +278,7 @@ - !type:SetWiresPanelSecurity examine: wires-panel-component-on-examine-security-level2 wiresAccessible: false + weldingAllowed: false edges: - to: medSecurityUnfinished conditions: @@ -288,6 +293,7 @@ - !type:SetWiresPanelSecurity examine: wires-panel-component-on-examine-security-level3 wiresAccessible: false + weldingAllowed: false edges: - to: glassAirlock completed: @@ -340,6 +346,7 @@ - !type:SetWiresPanelSecurity examine: wires-panel-component-on-examine-security-level4 wiresAccessible: false + weldingAllowed: false edges: - to: highSecurityUnfinished conditions: @@ -362,6 +369,7 @@ - !type:SetWiresPanelSecurity examine: wires-panel-component-on-examine-security-level5 wiresAccessible: false + weldingAllowed: true edges: - to: highSecurity completed: @@ -389,6 +397,7 @@ - !type:SetWiresPanelSecurity examine: wires-panel-component-on-examine-security-level6 wiresAccessible: false + weldingAllowed: false edges: - to: maxSecurity completed: @@ -413,6 +422,7 @@ - !type:SetWiresPanelSecurity examine: wires-panel-component-on-examine-security-level7 wiresAccessible: false + weldingAllowed: false edges: - to: superMaxSecurityUnfinished conditions: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/airlock_clockwork.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/airlock_clockwork.yml index 76b641a06d9..b0cfe30eb01 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/airlock_clockwork.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/airlock_clockwork.yml @@ -121,6 +121,7 @@ actions: - !type:SetWiresPanelSecurity wiresAccessible: true + weldingAllowed: true edges: - to: glassElectronics conditions: @@ -145,6 +146,7 @@ actions: - !type:SetWiresPanelSecurity wiresAccessible: true + weldingAllowed: true edges: - to: wired conditions: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/conveyor.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/conveyor.yml index 43d2484bbd2..ff0ecbc4ed1 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/conveyor.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/conveyor.yml @@ -23,6 +23,7 @@ - !type:SetAnchor value: true - !type:SnapToGrid + offset: Center edges: - to: item steps: @@ -30,4 +31,4 @@ doAfter: 3 completed: - !type:SetAnchor - value: false + value: false \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/firelock.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/firelock.yml index 0d7bdddd2f2..0dbf26794d9 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/firelock.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/firelock.yml @@ -103,14 +103,6 @@ - tool: Anchoring doAfter: 1 - - to: FirelockEdge - conditions: - - !type:EntityAnchored - anchored: true - steps: - - tool: Welding - doAfter: 0.5 - - to: FirelockGlassFrame conditions: - !type:EntityAnchored @@ -168,14 +160,3 @@ steps: - tool: Anchoring doAfter: 1 - - - node: FirelockEdge - entity: FirelockEdge - edges: - - to: frame4 - conditions: - - !type:DoorWelded - welded: true - steps: - - tool: Anchoring - doAfter: 0.25 diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/lighting.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/lighting.yml index f70a44efe3c..111d8ebcd72 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/lighting.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/lighting.yml @@ -19,11 +19,6 @@ - material: Steel amount: 5 doAfter: 2.0 - - to: strobeLight - steps: - - material: Steel - amount: 1 - doAfter: 2.0 - node: tubeLight entity: PoweredlightEmpty edges: @@ -68,19 +63,4 @@ - !type:SpawnPrototype prototype: SheetSteel1 amount: 5 - - !type:DeleteEntity {} - - node: strobeLight - entity: PoweredStrobeLightEmpty - edges: - - to: start - conditions: - - !type:ContainerEmpty - container: "light_bulb" - steps: - - tool: Screwing - doAfter: 2.0 - completed: - - !type:SpawnPrototype - prototype: SheetSteel1 - amount: 1 - !type:DeleteEntity {} \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/plastic_flaps.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/plastic_flaps.yml index 781dd4aa871..776c1491a63 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/plastic_flaps.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/plastic_flaps.yml @@ -33,6 +33,16 @@ - tool: Welding doAfter: 5 + - to: airtightFlaps + completed: + - !type:SnapToGrid { } + steps: + - material: Plastic + amount: 5 + doAfter: 5 + - tool: Screwing + doAfter: 5 + - node: opaqueFlaps entity: PlasticFlapsOpaque edges: @@ -44,3 +54,44 @@ steps: - tool: Anchoring doAfter: 10 + + - to: airtightopaqueFlaps + completed: + - !type:SnapToGrid { } + steps: + - material: Plastic + amount: 5 + doAfter: 5 + - tool: Screwing + doAfter: 5 + + - node: airtightFlaps + entity: PlasticFlapsAirtightClear + edges: + - to: plasticFlaps + completed: + - !type:SpawnPrototype + prototype: SheetPlastic + amount: 5 + steps: + - tool: Screwing + doAfter: 10 + + - to: airtightopaqueFlaps #test + completed: + - !type:SnapToGrid { } + steps: + - tool: Welding + doAfter: 5 + + - node: airtightopaqueFlaps + entity: PlasticFlapsAirtightOpaque + edges: + - to: opaqueFlaps + completed: + - !type:SpawnPrototype + prototype: SheetPlastic + amount: 5 + steps: + - tool: Screwing + doAfter: 10 diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/secretdoor.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/secretdoor.yml index 2c5a0db2b82..b6553c7cb22 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/secretdoor.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/secretdoor.yml @@ -48,7 +48,7 @@ - to: electronics steps: - component: PowerCell - name: power cell + name: любую батарею store: battery-container icon: sprite: Objects/Power/power_cells.rsi diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/APC.yml b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/APC.yml index 2941ba8235a..53b5312d2af 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/APC.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/APC.yml @@ -15,7 +15,7 @@ - to: apc steps: - component: ApcElectronics - name: "APC electronics" + name: микросхема ЛКП doAfter: 2 - to: start completed: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/solarpanel.yml b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/solarpanel.yml index 922e8857c92..6c23238026e 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/solarpanel.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/solarpanel.yml @@ -6,8 +6,8 @@ edges: - to: solarassembly steps: - - tag: SolarAssemblyFlatpack - name: Solar Assembly Parts + - tag: SolarAssemblyPart + name: упаковка каркаса солнечной панели icon: sprite: Objects/Devices/flatpack.rsi state: solar-assembly-part @@ -28,15 +28,18 @@ - to: solarpanel conditions: - !type:EntityAnchored + value: true steps: - material: Glass amount: 2 doAfter: 0.5 completed: - !type:SnapToGrid + offset: Center - to: solartracker conditions: - !type:EntityAnchored + value: true steps: - tag: SolarTrackerElectronics name: Solar Tracker Electronics @@ -49,6 +52,7 @@ doAfter: 2 completed: - !type:SnapToGrid + offset: Center - node: solarpanel entity: SolarPanel diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_substation.yml b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_substation.yml index 7e4087b20a2..381871f94af 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_substation.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_substation.yml @@ -26,13 +26,7 @@ steps: - material: Cable amount: 5 - doAfter: 0.5 - - material: CableMV - amount: 5 - doAfter: 0.5 - - material: CableHV - amount: 5 - doAfter: 0.5 + doAfter: 2 - tool: Screwing doAfter: 2 @@ -47,34 +41,12 @@ icon: sprite: "Objects/Misc/module.rsi" state: "charger_APC" - doAfter: 0.5 - - anyTags: - - PowerCell - - PowerCellSmall - store: powercell - name: a powercell - icon: - sprite: "Objects/Power/power_cells.rsi" - state: "medium" - doAfter: 0.5 - - tag: CapacitorStockPart - name: a capacitor - store: capacitor - icon: - sprite: "Objects/Misc/stock_parts.rsi" - state: "capacitor" - doAfter: 0.5 + doAfter: 1 - to: frame completed: - !type:GivePrototype prototype: CableApcStack1 amount: 5 - - !type:GivePrototype - prototype: CableMVStack1 - amount: 5 - - !type:GivePrototype - prototype: CableHVStack1 - amount: 5 steps: - tool: Cutting doAfter: 1 diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/modular_grenade.yml b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/modular_grenade.yml index 243a030c981..020be4e09c3 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/modular_grenade.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/modular_grenade.yml @@ -12,7 +12,7 @@ doAfter: 1 - node: emptyCase - entity: ModularGrenade + entity: ModularGrenade actions: - !type:AppearanceChange edges: @@ -31,7 +31,7 @@ doAfter: 2 - node: wiredCase - entity: ModularGrenade + entity: ModularGrenade actions: - !type:AppearanceChange - !type:PlaySound @@ -50,12 +50,6 @@ store: payloadTrigger name: Trigger doAfter: 0.5 - - to: caseWithPayload - steps: - - tag: Payload - store: payload - name: Payload - doAfter: 0.5 - node: caseWithTrigger actions: @@ -77,26 +71,6 @@ name: Payload doAfter: 0.5 - - node: caseWithPayload - actions: - - !type:AppearanceChange - - !type:PlaySound - sound: /Audio/Machines/button.ogg - edges: - - to: wiredCase - steps: - - tool: Prying - doAfter: 0.5 - completed: - - !type:EmptyContainer - container: payload - - to: grenade - steps: - - component: PayloadTrigger - store: payloadTrigger - name: Trigger - doAfter: 0.5 - - node: grenade actions: - !type:AppearanceChange diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/spear.yml b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/spear.yml index f1efe63ff50..6e1c682f475 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/spear.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/spear.yml @@ -10,7 +10,7 @@ amount: 2 doAfter: 2 - material: Cable - amount: 3 + amount: 2 doAfter: 1 - tag: GlassShard name: Glass Shard @@ -33,7 +33,7 @@ amount: 2 doAfter: 2 - material: Cable - amount: 3 + amount: 2 doAfter: 1 - tag: ReinforcedGlassShard name: Reinforced Glass Shard @@ -56,7 +56,7 @@ amount: 2 doAfter: 2 - material: Cable - amount: 3 + amount: 2 doAfter: 1 - tag: PlasmaGlassShard name: Plasma Glass Shard @@ -79,7 +79,7 @@ amount: 2 doAfter: 2 - material: Cable - amount: 3 + amount: 2 doAfter: 1 - tag: UraniumGlassShard name: Uranium Glass Shard diff --git a/Resources/Prototypes/Recipes/Construction/clothing.yml b/Resources/Prototypes/Recipes/Construction/clothing.yml index 420f38aab84..04cd2ee0d5c 100644 --- a/Resources/Prototypes/Recipes/Construction/clothing.yml +++ b/Resources/Prototypes/Recipes/Construction/clothing.yml @@ -1,6 +1,6 @@ - type: construction name: clown hardsuit - id: ClownHardsuit + id: ClothingOuterHardsuitClownRecipe graph: ClownHardsuit startNode: start targetNode: clownHardsuit @@ -11,7 +11,7 @@ - type: construction name: mime hardsuit - id: MimeHardsuit + id: ClothingOuterHardsuitMimeRecipe graph: MimeHardsuit startNode: start targetNode: mimeHardsuit @@ -22,7 +22,7 @@ - type: construction name: bone armor - id: BoneArmor + id: ClothingOuterArmorBoneRecipe graph: BoneArmor startNode: start targetNode: armor @@ -33,7 +33,7 @@ - type: construction name: bone helmet - id: BoneHelmet + id: ClothingHeadHelmetBoneRecipe graph: BoneHelmet startNode: start targetNode: helmet @@ -44,7 +44,7 @@ - type: construction name: banana clown mask - id: BananaClownMask + id: ClothingMaskClownBananaRecipe graph: BananaClownMask startNode: start targetNode: mask @@ -55,7 +55,7 @@ - type: construction name: banana clown suit - id: BananaClownJumpsuit + id: ClothingUniformJumpsuitClownBananaRecipe graph: BananaClownJumpsuit startNode: start targetNode: jumpsuit @@ -66,7 +66,7 @@ - type: construction name: banana clown shoes - id: BananaClownShoes + id: ClothingShoesClownBananaRecipe graph: BananaClownShoes startNode: start targetNode: shoes @@ -106,15 +106,4 @@ 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 + objectType: Item \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Construction/fun.yml b/Resources/Prototypes/Recipes/Construction/fun.yml index 46d43e73729..9c04c527fa3 100644 --- a/Resources/Prototypes/Recipes/Construction/fun.yml +++ b/Resources/Prototypes/Recipes/Construction/fun.yml @@ -1,6 +1,6 @@ - type: construction name: bananium horn - id: HornBananium + id: BananiumHornRecipe graph: BananiumHorn startNode: start targetNode: bananiumHorn diff --git a/Resources/Prototypes/Recipes/Construction/furniture.yml b/Resources/Prototypes/Recipes/Construction/furniture.yml index 5f7ec9c92d8..6dfd34de1af 100644 --- a/Resources/Prototypes/Recipes/Construction/furniture.yml +++ b/Resources/Prototypes/Recipes/Construction/furniture.yml @@ -103,7 +103,7 @@ - type: construction name: comfy chair - id: ChairComfy + id: ComfyChairRecipe graph: Seat startNode: start targetNode: chairComfy @@ -120,7 +120,7 @@ - type: construction name: pilots chair - id: chairPilotSeat + id: ChairPilotSeatRecipe graph: Seat startNode: start targetNode: chairPilotSeat @@ -205,7 +205,7 @@ - type: construction name: steel bench - id: ChairSteelBench + id: SteelBenchRecipe graph: Seat startNode: start targetNode: chairSteelBench @@ -239,7 +239,7 @@ - type: construction name: comfortable red bench - id: RedComfBench + id: BenchRedComfyRecipe graph: Seat startNode: start targetNode: redComfBench @@ -256,7 +256,7 @@ - type: construction name: comfortable blue bench - id: BlueComfBench + id: BenchBlueComfyRecipe graph: Seat startNode: start targetNode: blueComfBench @@ -702,7 +702,7 @@ #misc - type: construction - id: MeatSpike + id: KitchenSpikeRecipe name: meat spike description: A spike found in kitchens butchering animals. graph: MeatSpike @@ -719,7 +719,7 @@ - !type:TileNotBlocked - type: construction - id: Curtains + id: HospitalCurtainsRecipe name: curtains description: Contains less than 1% mercury. graph: Curtains @@ -884,21 +884,3 @@ canBuildInImpassable: false conditions: - !type:TileNotBlocked - -- 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 - canBuildInImpassable: false - conditions: - - !type:TileNotBlocked diff --git a/Resources/Prototypes/Recipes/Construction/lighting.yml b/Resources/Prototypes/Recipes/Construction/lighting.yml index 0533f70f1ac..f396228b8d5 100644 --- a/Resources/Prototypes/Recipes/Construction/lighting.yml +++ b/Resources/Prototypes/Recipes/Construction/lighting.yml @@ -1,6 +1,6 @@ - type: construction name: cyan light tube - id: CyanLight + id: LightTubeCrystalCyanRecipe graph: CyanLight startNode: start targetNode: icon @@ -11,7 +11,7 @@ - type: construction name: blue light tube - id: BlueLight + id: LightTubeCrystalBlueRecipe graph: BlueLight startNode: start targetNode: icon @@ -22,7 +22,7 @@ - type: construction name: pink light tube - id: PinkLight + id: LightTubeCrystalPinkRecipe graph: PinkLight startNode: start targetNode: icon @@ -33,7 +33,7 @@ - type: construction name: orange light tube - id: OrangeLight + id: LightTubeCrystalOrangeRecipe graph: OrangeLight startNode: start targetNode: icon @@ -44,7 +44,7 @@ - type: construction name: red light tube - id: RedLight + id: LightTubeCrystalRedRecipe graph: RedLight startNode: start targetNode: icon @@ -55,7 +55,7 @@ - type: construction name: green light tube - id: GreenLight + id: LightTubeCrystalGreenRecipe graph: GreenLight startNode: start targetNode: icon diff --git a/Resources/Prototypes/Recipes/Construction/machines.yml b/Resources/Prototypes/Recipes/Construction/machines.yml index 4026d5c98a6..790d5380bd4 100644 --- a/Resources/Prototypes/Recipes/Construction/machines.yml +++ b/Resources/Prototypes/Recipes/Construction/machines.yml @@ -1,6 +1,6 @@ - type: construction name: computer - id: Computer + id: ComputerFrameRecipe graph: Computer startNode: start targetNode: computer @@ -45,7 +45,7 @@ - type: construction name: light switch - id: LightSwitchRecipe + id: ApcNetSwitchDirectionalRecipe graph: LightSwitchGraph startNode: start targetNode: LightSwitchNode @@ -99,7 +99,7 @@ - type: construction name: directional light switch - id: LightSwitchDirectionalRecipe + id: SignalSwitchDirectionalFixture graph: LightSwitchDirectionalGraph startNode: start targetNode: LightSwitchDirectionalNode diff --git a/Resources/Prototypes/Recipes/Construction/materials.yml b/Resources/Prototypes/Recipes/Construction/materials.yml index d644538a452..dc8f94d4a8c 100644 --- a/Resources/Prototypes/Recipes/Construction/materials.yml +++ b/Resources/Prototypes/Recipes/Construction/materials.yml @@ -1,6 +1,6 @@ - type: construction name: metal rod - id: MetalRod + id: PartRodMetalRecipe graph: MetalRod startNode: start targetNode: MetalRod diff --git a/Resources/Prototypes/Recipes/Construction/modular.yml b/Resources/Prototypes/Recipes/Construction/modular.yml index affacb098b8..0a7e0a0f3d7 100644 --- a/Resources/Prototypes/Recipes/Construction/modular.yml +++ b/Resources/Prototypes/Recipes/Construction/modular.yml @@ -13,7 +13,7 @@ - type: construction name: modular mine - id: ModularMineRecipe + id: LandMineModularRecipe graph: ModularMineGraph startNode: start targetNode: mine diff --git a/Resources/Prototypes/Recipes/Construction/storage.yml b/Resources/Prototypes/Recipes/Construction/storage.yml index c8edebc5096..ebdf457b7c4 100644 --- a/Resources/Prototypes/Recipes/Construction/storage.yml +++ b/Resources/Prototypes/Recipes/Construction/storage.yml @@ -1,6 +1,6 @@ #bureaucracy - type: construction - id: FilingCabinet + id: filingCabinetRecipe name: filing cabinet description: A cabinet for all your filing needs. graph: FilingCabinet @@ -17,7 +17,7 @@ - !type:TileNotBlocked - type: construction - id: TallCabinet + id: filingCabinetTallRecipe name: tall cabinet description: A cabinet for all your filing needs. graph: FilingCabinet @@ -34,7 +34,7 @@ - !type:TileNotBlocked - type: construction - id: ChestDrawer + id: filingCabinetDrawerRecipe name: chest drawer description: A small drawer for all your filing needs, Now with wheels! graph: FilingCabinet @@ -49,21 +49,3 @@ canBuildInImpassable: false conditions: - !type:TileNotBlocked - -# 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 - conditions: - - !type:TileNotBlocked diff --git a/Resources/Prototypes/Recipes/Construction/structures.yml b/Resources/Prototypes/Recipes/Construction/structures.yml index 86c00029960..2be5925705a 100644 --- a/Resources/Prototypes/Recipes/Construction/structures.yml +++ b/Resources/Prototypes/Recipes/Construction/structures.yml @@ -54,7 +54,7 @@ - type: construction name: wall - id: Wall + id: WallSolidRecipe graph: Girder startNode: start targetNode: wall @@ -72,7 +72,7 @@ - type: construction name: reinforced wall - id: ReinforcedWall + id: WallReinforcedRecipe graph: Girder startNode: start targetNode: reinforcedWall @@ -108,7 +108,7 @@ # here - type: construction name: wood wall - id: WoodWall + id: WallWoodRecipe graph: Girder startNode: start targetNode: woodWall @@ -126,7 +126,7 @@ - type: construction name: uranium wall - id: UraniumWall + id: WallUraniumRecipe graph: Girder startNode: start targetNode: uraniumWall @@ -144,7 +144,7 @@ - type: construction name: silver wall - id: SilverWall + id: WallSilverRecipe graph: Girder startNode: start targetNode: silverWall @@ -162,7 +162,7 @@ - type: construction name: plastic wall - id: PlasticWall + id: WallPlasticRecipe graph: Girder startNode: start targetNode: plasticWall @@ -180,7 +180,7 @@ - type: construction name: plasma wall - id: PlasmaWall + id: WallPlasmaRecipe graph: Girder startNode: start targetNode: plasmaWall @@ -198,7 +198,7 @@ - type: construction name: gold wall - id: GoldWall + id: WallGoldRecipe graph: Girder startNode: start targetNode: goldWall @@ -216,7 +216,7 @@ - type: construction name: shuttle wall - id: ShuttleWall + id: WallShuttleRecipe graph: Girder startNode: start targetNode: shuttleWall @@ -234,7 +234,7 @@ - type: construction name: interior shuttle wall - id: InteriorShuttleWall + id: WallShuttleInteriorRecipe graph: Girder startNode: start targetNode: shuttleInteriorWall @@ -252,7 +252,7 @@ - type: construction name: diagonal shuttle wall - id: DiagonalShuttleWall + id: WallShuttleDiagonalRecipe graph: Girder startNode: start targetNode: diagonalshuttleWall @@ -270,7 +270,7 @@ - type: construction name: bananium wall - id: ClownWall + id: WallClownRecipe graph: Girder startNode: start targetNode: bananiumWall @@ -288,7 +288,7 @@ - type: construction name: meat wall - id: MeatWall + id: WallMeatRecipe graph: Girder startNode: start targetNode: meatWall @@ -324,7 +324,7 @@ - type: construction name: clockwork grille - id: ClockGrille + id: ClockworkGrilleRecipe graph: ClockGrille startNode: start targetNode: clockGrille @@ -795,26 +795,9 @@ conditions: - !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 - conditions: - - !type:TileNotBlocked - - type: construction name: shutter - id: Shutters + id: ShuttersNormalRecipe graph: Shutters startNode: start targetNode: Shutters @@ -896,7 +879,7 @@ - type: construction name: bananium floor - id: FloorBananium + id: FloorBananiumEntityRecipe graph: FloorBananium startNode: start targetNode: BananiumFloor @@ -1020,7 +1003,7 @@ # Chain link fencing - type: construction name: chain link fence - id: FenceMetal + id: FenceMetalStraightRecipe graph: FenceMetal startNode: start targetNode: straight @@ -1382,7 +1365,7 @@ - type: construction name: secure windoor - id: SecureWindoor + id: WindoorSecureRecipe graph: Windoor startNode: start targetNode: windoorSecure @@ -1399,7 +1382,7 @@ - type: construction name: clockwork windoor - id: ClockworkWindoor + id: WindoorClockworkRecipe graph: Windoor startNode: start targetNode: windoorClockwork @@ -1437,7 +1420,7 @@ - type: construction name: small wall light - id: LightSmallFixture + id: PoweredSmallLightEmptyRecipe graph: LightFixture startNode: start targetNode: bulbLight @@ -1456,7 +1439,7 @@ - type: construction name: ground light post - id: LightGroundFixture + id: PoweredLightPostSmallEmptyRecipe graph: LightFixture startNode: start targetNode: groundLight @@ -1472,24 +1455,6 @@ conditions: - !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 - canBuildInImpassable: false - conditions: - - !type:TileNotBlocked - #conveyor - type: construction name: conveyor belt @@ -1625,6 +1590,23 @@ conditions: - !type:TileNotBlocked +- type: construction + name: airtight plastic flaps + id: PlasticFlapsAirtight + graph: PlasticFlapsGraph + startNode: start + targetNode: airtightFlaps + category: construction-category-structures + placementMode: SnapgridCenter + description: An airtight 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 @@ -1642,9 +1624,26 @@ conditions: - !type:TileNotBlocked +- type: construction + name: airtight opaque plastic flaps + id: PlasticFlapsAirtightOpaque + graph: PlasticFlapsGraph + startNode: start + targetNode: airtightopaqueFlaps + category: construction-category-structures + placementMode: SnapgridCenter + description: An opaque, airtight 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: bananium clown statue - id: BananiumClownStatue + id: StatueBananiumClownRecipe graph: BananiumStatueClown startNode: start targetNode: bananiumStatue @@ -1678,7 +1677,7 @@ - type: construction name: bananium altar - id: BananiumAltar + id: AltarBananiumRecipe graph: BananiumAltarGraph startNode: start targetNode: bananiumAltar diff --git a/Resources/Prototypes/Recipes/Construction/tools.yml b/Resources/Prototypes/Recipes/Construction/tools.yml index a6d9e33f4c1..dc5631a9104 100644 --- a/Resources/Prototypes/Recipes/Construction/tools.yml +++ b/Resources/Prototypes/Recipes/Construction/tools.yml @@ -1,6 +1,6 @@ - type: construction name: torch - id: LightTorch + id: TorchRecipe graph: LightTorch startNode: start targetNode: torch diff --git a/Resources/Prototypes/Recipes/Construction/utilities.yml b/Resources/Prototypes/Recipes/Construction/utilities.yml index 19f2fee1837..ad668bbb7dc 100644 --- a/Resources/Prototypes/Recipes/Construction/utilities.yml +++ b/Resources/Prototypes/Recipes/Construction/utilities.yml @@ -1,7 +1,7 @@ # SURVEILLANCE - type: construction name: camera - id: camera + id: SurveillanceCameraAssemblyRecipe graph: SurveillanceCamera startNode: start targetNode: camera @@ -49,7 +49,7 @@ # POWER - type: construction name: APC - id: APC + id: BaseAPCRecipe graph: APC startNode: start targetNode: apc @@ -97,7 +97,7 @@ - type: construction name: wallmount substation - id: WallmountSubstation + id: SubstationWallBasicRecipe graph: WallmountSubstation startNode: start targetNode: substation @@ -112,7 +112,7 @@ - type: construction name: wallmount generator - id: WallmountGenerator + id: GeneratorWallmountBasicRecipe graph: WallmountGenerator startNode: start targetNode: generator @@ -127,7 +127,7 @@ - type: construction name: wallmount APU - id: WallmountGeneratorAPU + id: GeneratorWallmountAPURecipe graph: WallmountGenerator startNode: start targetNode: APU @@ -178,7 +178,7 @@ targetNode: pipe category: construction-category-utilities placementMode: SnapgridCenter - canBuildInImpassable: false + canBuildInImpassable: true icon: sprite: Structures/Piping/disposal.rsi state: conpipe-s diff --git a/Resources/Prototypes/Recipes/Construction/weapons.yml b/Resources/Prototypes/Recipes/Construction/weapons.yml index 040d4c8963d..b507362d902 100644 --- a/Resources/Prototypes/Recipes/Construction/weapons.yml +++ b/Resources/Prototypes/Recipes/Construction/weapons.yml @@ -143,7 +143,7 @@ - type: construction name: glass shard arrow - id: ImprovisedArrow + id: ArrowImprovisedRecipe graph: ImprovisedArrow startNode: start targetNode: ImprovisedArrow @@ -154,7 +154,7 @@ - type: construction name: improvised bow - id: ImprovisedBow + id: BowImprovisedRecipe graph: ImprovisedBow startNode: start targetNode: ImprovisedBow