diff --git a/Content.Server/_NF/Construction/Conditions/NFStrapEmpty.cs b/Content.Server/_NF/Construction/Conditions/NFStrapEmpty.cs new file mode 100644 index 00000000000..79143f64ed7 --- /dev/null +++ b/Content.Server/_NF/Construction/Conditions/NFStrapEmpty.cs @@ -0,0 +1,44 @@ +using Content.Shared.Construction; +using JetBrains.Annotations; +using Content.Shared.Examine; +using Content.Shared.Buckle.Components; + +namespace Content.Server.Construction.Conditions; + +[UsedImplicitly] +[DataDefinition] +public sealed partial class NFStrapEmpty : IGraphCondition +{ + public bool Condition(EntityUid uid, IEntityManager entityManager) + { + if (!entityManager.TryGetComponent(uid, out StrapComponent? strap)) + return true; // No strap, nothing can be buckled. + + return strap.BuckledEntities.Count == 0; + } + + public bool DoExamine(ExaminedEvent args) + { + var entity = args.Examined; + + var entMan = IoCManager.Resolve(); + + if (!entMan.TryGetComponent(entity, out StrapComponent? strap)) return false; + + if (strap.BuckledEntities.Count > 0) + { + args.PushMarkup(Loc.GetString("construction-examine-condition-nf-strap-empty", ("entityName", entMan.GetComponent(entity).EntityName)) + "\n"); + return true; + } + + return false; + } + + public IEnumerable GenerateGuideEntry() + { + yield return new ConstructionGuideEntry() + { + Localization = "construction-step-condition-nf-strap-empty" + }; + } +} \ No newline at end of file diff --git a/Resources/Locale/en-US/_NF/construction/conditions/strap-buckled.ftl b/Resources/Locale/en-US/_NF/construction/conditions/strap-buckled.ftl new file mode 100644 index 00000000000..6edbcc47363 --- /dev/null +++ b/Resources/Locale/en-US/_NF/construction/conditions/strap-buckled.ftl @@ -0,0 +1,3 @@ +# NFBuckled +construction-examine-condition-nf-strap-empty = Unbuckle everything from the {$entityName}. +construction-step-condition-nf-strap-empty = Nothing must be buckled. diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/furniture/seats.yml b/Resources/Prototypes/Recipes/Construction/Graphs/furniture/seats.yml index 18dcaf04031..ff4647e483a 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/furniture/seats.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/furniture/seats.yml @@ -191,53 +191,62 @@ steps: - tool: Screwing doAfter: 1 - - #Frontier: fancy wooden chairs + # Frontier: fancy wooden chairs - to: chairWoodFancyBlack + conditions: + - !type:NFStrapEmpty steps: - material: FloorCarpetBlack amount: 1 - - to: chairWoodFancyBlue + conditions: + - !type:NFStrapEmpty steps: - material: FloorCarpetBlue amount: 1 - - to: chairWoodFancyCyan + conditions: + - !type:NFStrapEmpty steps: - material: FloorCarpetCyan amount: 1 - - to: chairWoodFancyGreen + conditions: + - !type:NFStrapEmpty steps: - material: FloorCarpetGreen amount: 1 - - to: chairWoodFancyOrange + conditions: + - !type:NFStrapEmpty steps: - material: FloorCarpetOrange amount: 1 - - - to: chairWoodFancyPurple - steps: - - material: FloorCarpetPurple - amount: 1 - - to: chairWoodFancyPink + conditions: + - !type:NFStrapEmpty steps: - material: FloorCarpetPink amount: 1 - + - to: chairWoodFancyPurple + conditions: + - !type:NFStrapEmpty + steps: + - material: FloorCarpetPurple + amount: 1 - to: chairWoodFancyRed + conditions: + - !type:NFStrapEmpty steps: - material: FloorCarpetRed amount: 1 - - to: chairWoodFancyWhite + conditions: + - !type:NFStrapEmpty steps: - material: FloorCarpetWhite amount: 1 - #End Frontier + # End Frontier - node: chairMeat entity: ChairMeat @@ -329,6 +338,8 @@ entity: ChairWoodFancyBlack edges: - to: chairWood + conditions: + - !type:NFStrapEmpty completed: - !type:SpawnPrototype prototype: FloorCarpetItemBlack @@ -341,6 +352,8 @@ entity: ChairWoodFancyBlue edges: - to: chairWood + conditions: + - !type:NFStrapEmpty completed: - !type:SpawnPrototype prototype: FloorCarpetItemBlue @@ -353,6 +366,8 @@ entity: ChairWoodFancyCyan edges: - to: chairWood + conditions: + - !type:NFStrapEmpty completed: - !type:SpawnPrototype prototype: FloorCarpetItemCyan @@ -365,6 +380,8 @@ entity: ChairWoodFancyGreen edges: - to: chairWood + conditions: + - !type:NFStrapEmpty completed: - !type:SpawnPrototype prototype: FloorCarpetItemGreen @@ -377,6 +394,8 @@ entity: ChairWoodFancyOrange edges: - to: chairWood + conditions: + - !type:NFStrapEmpty completed: - !type:SpawnPrototype prototype: FloorCarpetItemOrange @@ -385,25 +404,29 @@ - tool: Prying doAfter: 1 - - node: chairWoodFancyPink - entity: ChairWoodFancyPink + - node: chairWoodFancyPurple + entity: ChairWoodFancyPurple edges: - to: chairWood + conditions: + - !type:NFStrapEmpty completed: - !type:SpawnPrototype - prototype: FloorCarpetItemPink + prototype: FloorCarpetItemPurple amount: 1 steps: - tool: Prying doAfter: 1 - - node: chairWoodFancyPurple - entity: ChairWoodFancyPurple + - node: chairWoodFancyPink + entity: ChairWoodFancyPink edges: - to: chairWood + conditions: + - !type:NFStrapEmpty completed: - !type:SpawnPrototype - prototype: FloorCarpetItemPurple + prototype: FloorCarpetItemPink amount: 1 steps: - tool: Prying @@ -413,6 +436,8 @@ entity: ChairWoodFancyRed edges: - to: chairWood + conditions: + - !type:NFStrapEmpty completed: - !type:SpawnPrototype prototype: FloorCarpetItemRed @@ -425,6 +450,8 @@ entity: ChairWoodFancyWhite edges: - to: chairWood + conditions: + - !type:NFStrapEmpty completed: - !type:SpawnPrototype prototype: FloorCarpetItemWhite @@ -432,3 +459,4 @@ steps: - tool: Prying doAfter: 1 + # End Frontier