From 3af05a6606992cf9ac7cf119a731cdd8afc3e392 Mon Sep 17 00:00:00 2001 From: Slava0135 <40753025+Slava0135@users.noreply.github.com> Date: Thu, 15 Jun 2023 05:25:29 +0300 Subject: [PATCH] allow grilles to be placed on lattice (#17073) * allow grilles to be placed on lattice * Revert "allow grilles to be placed on lattice" This reverts commit 5c536686cdcd85d49681f934d9abaf69076e2bc2. * allow grilles to be placed on lattice (fixed) * file namespace --- .../Construction/Conditions/TileNotBlocked.cs | 48 ++++++++++++------- .../Recipes/Construction/structures.yml | 1 + .../Recipes/Construction/utilities.yml | 4 -- 3 files changed, 31 insertions(+), 22 deletions(-) diff --git a/Content.Shared/Construction/Conditions/TileNotBlocked.cs b/Content.Shared/Construction/Conditions/TileNotBlocked.cs index cf6d3435cd..c7baaa01c7 100644 --- a/Content.Shared/Construction/Conditions/TileNotBlocked.cs +++ b/Content.Shared/Construction/Conditions/TileNotBlocked.cs @@ -2,31 +2,43 @@ using Content.Shared.Maps; using JetBrains.Annotations; using Robust.Shared.Map; -namespace Content.Shared.Construction.Conditions +namespace Content.Shared.Construction.Conditions; + +[UsedImplicitly] +[DataDefinition] +public sealed class TileNotBlocked : IConstructionCondition { - [UsedImplicitly] - [DataDefinition] - public sealed class TileNotBlocked : IConstructionCondition + [DataField("filterMobs")] private bool _filterMobs = false; + [DataField("failIfSpace")] private bool _failIfSpace = true; + [DataField("failIfNotSturdy")] private bool _failIfNotSturdy = true; + + public bool Condition(EntityUid user, EntityCoordinates location, Direction direction) { - [DataField("filterMobs")] private bool _filterMobs = false; - [DataField("failIfSpace")] private bool _failIfSpace = true; + var tileRef = location.GetTileRef(); - public bool Condition(EntityUid user, EntityCoordinates location, Direction direction) + if (tileRef == null) { - var tileRef = location.GetTileRef(); - - if (tileRef == null || tileRef.Value.IsSpace()) - return !_failIfSpace; - - return !tileRef.Value.IsBlockedTurf(_filterMobs); + return false; } - public ConstructionGuideEntry GenerateGuideEntry() + if (tileRef.Value.IsSpace() && _failIfSpace) { - return new ConstructionGuideEntry - { - Localization = "construction-step-condition-tile-not-blocked", - }; + return false; } + + if (!tileRef.Value.GetContentTileDefinition().Sturdy && _failIfNotSturdy) + { + return false; + } + + return !tileRef.Value.IsBlockedTurf(_filterMobs); + } + + public ConstructionGuideEntry GenerateGuideEntry() + { + return new ConstructionGuideEntry + { + Localization = "construction-step-condition-tile-not-blocked", + }; } } diff --git a/Resources/Prototypes/Recipes/Construction/structures.yml b/Resources/Prototypes/Recipes/Construction/structures.yml index d44977ae37..595235e220 100644 --- a/Resources/Prototypes/Recipes/Construction/structures.yml +++ b/Resources/Prototypes/Recipes/Construction/structures.yml @@ -224,6 +224,7 @@ description: A flimsy framework of iron rods. conditions: - !type:TileNotBlocked + failIfSpace: false icon: sprite: Structures/Walls/grille.rsi state: grille diff --git a/Resources/Prototypes/Recipes/Construction/utilities.yml b/Resources/Prototypes/Recipes/Construction/utilities.yml index cd527858ae..f39b11b477 100644 --- a/Resources/Prototypes/Recipes/Construction/utilities.yml +++ b/Resources/Prototypes/Recipes/Construction/utilities.yml @@ -79,10 +79,6 @@ conditions: - !type:TileNotBlocked failIfSpace: false - - !type:TileType - targets: - - Lattice - - Plating - type: construction name: cable terminal