Generalize tile prying to any tool quality (#24432)

* Generalize tile prying to any tool quality

* ballin
This commit is contained in:
Nemanja
2024-01-23 02:45:40 -05:00
committed by GitHub
parent 258b9436b5
commit 5e2e652165
22 changed files with 267 additions and 389 deletions

View File

@@ -1,5 +1,6 @@
using Content.Shared.Atmos;
using Content.Shared.Movement.Systems;
using Content.Shared.Tools;
using Robust.Shared.Audio;
using Robust.Shared.Map;
using Robust.Shared.Prototypes;
@@ -12,6 +13,9 @@ namespace Content.Shared.Maps
[Prototype("tile")]
public sealed partial class ContentTileDefinition : IPrototype, IInheritingPrototype, ITileDefinition
{
[ValidatePrototypeId<ToolQualityPrototype>]
public const string PryingToolQuality = "Prying";
public const string SpaceID = "Space";
[ParentDataFieldAttribute(typeof(AbstractPrototypeIdArraySerializer<ContentTileDefinition>))]
@@ -38,14 +42,13 @@ namespace Content.Shared.Maps
[DataField("baseTurf")]
public string BaseTurf { get; private set; } = string.Empty;
[DataField("canCrowbar")] public bool CanCrowbar { get; private set; }
[DataField]
public PrototypeFlags<ToolQualityPrototype> DeconstructTools { get; set; } = new();
/// <summary>
/// Whether this tile can be pried by an advanced prying tool if not pryable otherwise.
/// </summary>
[DataField("canAxe")] public bool CanAxe { get; private set; }
[DataField("canWirecutter")] public bool CanWirecutter { get; private set; }
/// <remarks>
/// Legacy AF but nice to have.
/// </remarks>
public bool CanCrowbar => DeconstructTools.Contains(PryingToolQuality);
/// <summary>
/// These play when the mob has shoes on.

View File

@@ -65,22 +65,7 @@ public sealed class TileSystem : EntitySystem
var tileDef = (ContentTileDefinition) _tileDefinitionManager[tile.TypeId];
if (!tileDef.CanCrowbar && !(pryPlating && tileDef.CanAxe))
return false;
return DeconstructTile(tileRef);
}
public bool CutTile(TileRef tileRef)
{
var tile = tileRef.Tile;
if (tile.IsEmpty)
return false;
var tileDef = (ContentTileDefinition) _tileDefinitionManager[tile.TypeId];
if (!tileDef.CanWirecutter)
if (!tileDef.CanCrowbar)
return false;
return DeconstructTile(tileRef);
@@ -112,7 +97,7 @@ public sealed class TileSystem : EntitySystem
return true;
}
private bool DeconstructTile(TileRef tileRef)
public bool DeconstructTile(TileRef tileRef)
{
if (tileRef.Tile.IsEmpty)
return false;