diff --git a/Content.Server/_NF/Tools/Component/DisableToolUseComponent.cs b/Content.Server/_NF/Tools/Component/DisableToolUseComponent.cs new file mode 100644 index 00000000000..c9dd9b4cc5c --- /dev/null +++ b/Content.Server/_NF/Tools/Component/DisableToolUseComponent.cs @@ -0,0 +1,34 @@ +using Content.Shared.Tools; +using Robust.Shared.Prototypes; +using Robust.Shared.Utility; + +namespace Content.Server._NF.Tools.Components +{ + [RegisterComponent] + public sealed partial class DisableToolUseComponent : Component + { + // A field for each tool use type to allow for inheritance + [DataField, ViewVariables(VVAccess.ReadWrite)] + public bool Anchoring; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public bool Prying; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public bool Screwing; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public bool Cutting; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public bool Welding; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public bool Pulsing; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public bool Slicing; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public bool Sawing; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public bool Honking; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public bool Rolling; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public bool Digging; + } +} diff --git a/Content.Server/_NF/Tools/Component/OnToolsUseComponent.cs b/Content.Server/_NF/Tools/Component/OnToolsUseComponent.cs deleted file mode 100644 index 670d1b34ee2..00000000000 --- a/Content.Server/_NF/Tools/Component/OnToolsUseComponent.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Content.Shared.Chemistry.Components; -using Content.Shared.Chemistry.Reagent; -using Content.Shared.FixedPoint; -using Content.Shared.Tools.Components; -using Robust.Shared.Audio; -using Robust.Shared.Prototypes; - -namespace Content.Server._NF.Tools.Components -{ - [RegisterComponent] - public sealed partial class OnToolsUseComponent : Component - { - /// - /// Disable the use of tools on the entity. - /// - [DataField, ViewVariables(VVAccess.ReadWrite)] - public bool Disabled; - } -} diff --git a/Content.Server/_NF/Tools/DisableToolUseSystem.cs b/Content.Server/_NF/Tools/DisableToolUseSystem.cs new file mode 100644 index 00000000000..2763c8dd4bf --- /dev/null +++ b/Content.Server/_NF/Tools/DisableToolUseSystem.cs @@ -0,0 +1,57 @@ +using Content.Server._NF.Tools.Components; +using Content.Shared.Tools; +using Content.Shared.Tools.Components; +using Robust.Shared.Prototypes; +using Robust.Shared.Toolshed.TypeParsers; + +namespace Content.Server._NF.Tools; + +public sealed class DisableToolUseSystem : EntitySystem +{ + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnToolUseAttempt); + } + + private void OnToolUseAttempt(EntityUid uid, DisableToolUseComponent component, ToolUseAttemptEvent args) + { + // Check each tool quality being cancelled. + foreach (var quality in args.Qualities) + { + if (Disabled(component, quality)) + args.Cancel(); + } + } + + private bool Disabled(DisableToolUseComponent component, ProtoId quality) + { + switch (quality) + { + case "Anchoring": + return component.Anchoring; + case "Prying": + return component.Prying; + case "Screwing": + return component.Screwing; + case "Cutting": + return component.Cutting; + case "Welding": + return component.Welding; + case "Pulsing": + return component.Pulsing; + case "Slicing": + return component.Slicing; + case "Sawing": + return component.Sawing; + case "Honking": + return component.Honking; + case "Rolling": + return component.Rolling; + case "Digging": + return component.Digging; + default: + return false; + } + } +} diff --git a/Content.Server/_NF/Tools/OnToolsUseSystem.cs b/Content.Server/_NF/Tools/OnToolsUseSystem.cs deleted file mode 100644 index 5c72d599afb..00000000000 --- a/Content.Server/_NF/Tools/OnToolsUseSystem.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Content.Server._NF.Tools.Components; -using Content.Shared.Tools.Components; - -namespace Content.Server._NF.Tools; - -public sealed class OnToolsUseSystem : EntitySystem -{ - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnToolUseAttempt); - } - - private void OnToolUseAttempt(EntityUid uid, OnToolsUseComponent component, ToolUseAttemptEvent args) - { - // prevent deconstruct - if (component.Disabled) - args.Cancel(); - } -} diff --git a/Content.Shared/Tools/Components/ToolComponent.cs b/Content.Shared/Tools/Components/ToolComponent.cs index a7210c6fa07..5d661e185f7 100644 --- a/Content.Shared/Tools/Components/ToolComponent.cs +++ b/Content.Shared/Tools/Components/ToolComponent.cs @@ -26,10 +26,12 @@ public sealed partial class ToolComponent : Component /// Attempt event called *before* any do afters to see if the tool usage should succeed or not. /// Raised on both the tool and then target. /// -public sealed class ToolUseAttemptEvent(EntityUid user, float fuel) : CancellableEntityEventArgs +public sealed class ToolUseAttemptEvent(EntityUid user, float fuel, EntityUid tool, IEnumerable qualities) : CancellableEntityEventArgs // Frontier: added tool, qualities { public EntityUid User { get; } = user; public float Fuel = fuel; + public EntityUid Tool { get; } = tool; // Frontier: the tool being used + public IEnumerable Qualities { get; } = qualities; // Frontier: the tool qualities being used here } /// diff --git a/Content.Shared/Tools/Systems/SharedToolSystem.cs b/Content.Shared/Tools/Systems/SharedToolSystem.cs index 201eb19a88b..f269c6e4c06 100644 --- a/Content.Shared/Tools/Systems/SharedToolSystem.cs +++ b/Content.Shared/Tools/Systems/SharedToolSystem.cs @@ -217,7 +217,7 @@ private bool CanStartToolUse(EntityUid tool, EntityUid user, EntityUid? target, return false; // check if the tool allows being used - var beforeAttempt = new ToolUseAttemptEvent(user, fuel); + var beforeAttempt = new ToolUseAttemptEvent(user, fuel, tool, toolQualitiesNeeded); // Frontier: added tool, toolQualitiesNeeded RaiseLocalEvent(tool, beforeAttempt); if (beforeAttempt.Cancelled) return false; diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml b/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml index db0b97f000f..3200d15ea16 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml @@ -249,7 +249,7 @@ #HOS's hardsuit - type: entity id: SuitStorageHOS - parent: [BaseStructureIndestructible, BaseStructureLockImmuneToEmag, BaseStructureAccessReaderImmuneToEmag, BaseStructureDisableToolUse, BaseStructureUnanchorable, SuitStorageBase] # Frontier + parent: [BaseStructureIndestructible, BaseStructureLockImmuneToEmag, BaseStructureAccessReaderImmuneToEmag, BaseStructureDisableToolUse, SuitStorageBase] # Frontier: added BaseStructureDisableToolUse suffix: Head of Security components: - type: StorageFill @@ -268,7 +268,7 @@ #Warden's hardsuit - type: entity id: SuitStorageWarden - parent: [BaseStructureIndestructible, BaseStructureLockImmuneToEmag, BaseStructureAccessReaderImmuneToEmag, BaseStructureDisableToolUse, BaseStructureUnanchorable, SuitStorageBase] # Frontier + parent: [BaseStructureIndestructible, BaseStructureLockImmuneToEmag, BaseStructureAccessReaderImmuneToEmag, BaseStructureDisableToolUse, SuitStorageBase] # Frontier: added BaseStructureDisableToolUse suffix: Warden components: - type: StorageFill diff --git a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml index 531c290aaa1..f14dd3df580 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml @@ -141,7 +141,7 @@ noRot: false - type: entity - parent: [BaseStructureUnanchorable, VendingMachine] # Frontier + parent: [BaseStructureDisableAnchoring, VendingMachine] # Frontier id: VendingMachineAmmo name: liberation station description: An overwhelming amount of ancient patriotism washes over you just by looking at the machine. @@ -204,7 +204,7 @@ - Bartender - type: entity - parent: [BaseStructureIndestructible, BaseStructureAccessReaderImmuneToEmag, VendingMachine] # Frontier + parent: [BaseStructureDisableScrewing, BaseStructureIndestructible, BaseStructureAccessReaderImmuneToEmag, VendingMachine] # Frontier: add BaseStructureDisableScrewing, BaseStructureIndestructible, BaseStructureAccessReaderImmuneToEmag id: VendingMachineCart name: PTech description: PTech vending! Providing a ROBUST selection of PDAs, cartridges, and anything else a dull paper pusher needs! @@ -1883,7 +1883,7 @@ map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: entity - parent: [BaseStructureUnanchorable, VendingMachine] # Frontier + parent: [BaseStructureDisableAnchoring, VendingMachine] # Frontier id: VendingMachineSyndieDrobe name: SyndieDrobe description: Wardrobe machine encoded by the syndicate, contains elite outfits for various operations. @@ -1993,7 +1993,7 @@ map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: entity - parent: [BaseStructureUnanchorable, VendingMachine] # Frontier + parent: [BaseStructureDisableAnchoring, VendingMachine] # Frontier id: VendingMachineCentDrobe name: CentDrobe description: A one-of-a-kind vending machine for all your centcom aesthetic needs! diff --git a/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/lockers.yml b/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/lockers.yml index f71bfe23ece..e41ad80d71c 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/lockers.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/lockers.yml @@ -295,7 +295,7 @@ # HoS - type: entity id: LockerHeadOfSecurity - parent: [BaseStructureIndestructible, BaseStructureLockImmuneToEmag, BaseStructureAccessReaderImmuneToEmag, BaseStructureDisableToolUse, BaseStructureUnanchorable, LockerBaseSecure] # Frontier + parent: [BaseStructureIndestructible, BaseStructureLockImmuneToEmag, BaseStructureAccessReaderImmuneToEmag, BaseStructureDisableToolUse, BaseStructureDisableAnchoring, LockerBaseSecure] # Frontier name: head of security's locker components: - type: Appearance @@ -309,7 +309,7 @@ # Warden - type: entity id: LockerWarden - parent: [BaseStructureIndestructible, BaseStructureLockImmuneToEmag, BaseStructureAccessReaderImmuneToEmag, BaseStructureDisableToolUse, BaseStructureUnanchorable, LockerBaseSecure] # Frontier + parent: [BaseStructureIndestructible, BaseStructureLockImmuneToEmag, BaseStructureAccessReaderImmuneToEmag, BaseStructureDisableToolUse, BaseStructureDisableAnchoring, LockerBaseSecure] # Frontier name: warden's locker components: - type: Appearance diff --git a/Resources/Prototypes/_NF/Entities/Structures/Machines/fax_machine.yml b/Resources/Prototypes/_NF/Entities/Structures/Machines/fax_machine.yml index 534dde26b42..fbaaaf7eaee 100644 --- a/Resources/Prototypes/_NF/Entities/Structures/Machines/fax_machine.yml +++ b/Resources/Prototypes/_NF/Entities/Structures/Machines/fax_machine.yml @@ -19,7 +19,7 @@ # Outpost - type: entity - parent: [BaseStructureDisableToolUse, BaseStructureUnanchorable, FaxMachineBase] + parent: [BaseStructureDisableToolUse, FaxMachineBase] id: FaxMachineNFOutpostSTC suffix: Outpost, STC noSpawn: true @@ -28,7 +28,7 @@ name: "Frontier Outpost STC" - type: entity - parent: [BaseStructureDisableToolUse, BaseStructureUnanchorable, FaxMachineBase] + parent: [BaseStructureDisableToolUse, FaxMachineBase] id: FaxMachineNFOutpostSR suffix: Outpost, SR noSpawn: true @@ -37,7 +37,7 @@ name: "Frontier Outpost SR" - type: entity - parent: [BaseStructureDisableToolUse, BaseStructureUnanchorable, FaxMachineBase] + parent: [BaseStructureDisableToolUse, FaxMachineBase] id: FaxMachineNFOutpostGuard suffix: Outpost, Guard noSpawn: true @@ -46,7 +46,7 @@ name: "Frontier Outpost Guard" - type: entity - parent: [BaseStructureDisableToolUse, BaseStructureUnanchorable, FaxMachineBase] + parent: [BaseStructureDisableToolUse, FaxMachineBase] id: FaxMachineNFOutpostReception suffix: Outpost, Reception noSpawn: true @@ -55,7 +55,7 @@ name: "Frontier Outpost Reception" - type: entity - parent: [BaseStructureDisableToolUse, BaseStructureUnanchorable, FaxMachineCaptain] + parent: [BaseStructureDisableToolUse, FaxMachineCaptain] id: FaxMachineNFOutpostAdministration suffix: Outpost, Administration noSpawn: true @@ -65,7 +65,7 @@ # POI - type: entity - parent: [BaseStructureDisableToolUse, BaseStructureUnanchorable, FaxMachineBase] + parent: [BaseStructureDisableToolUse, FaxMachineBase] id: FaxMachineNFBeacon suffix: POI, Omnichurch Beacon noSpawn: true @@ -74,7 +74,7 @@ name: "Omnichurch Beacon" - type: entity - parent: [BaseStructureDisableToolUse, BaseStructureUnanchorable, FaxMachineSyndie, FaxMachineShipAntag] + parent: [BaseStructureDisableToolUse, FaxMachineSyndie, FaxMachineShipAntag] id: FaxMachineNFLPBravo suffix: POI, LP Bravo noSpawn: true @@ -85,7 +85,7 @@ powerDisabled: true #starts off - type: entity - parent: [BaseStructureDisableToolUse, BaseStructureUnanchorable, FaxMachineBase] + parent: [BaseStructureDisableToolUse, FaxMachineBase] id: FaxMachineNFLodge suffix: POI, Lodge noSpawn: true @@ -94,7 +94,7 @@ name: "The Lodge" - type: entity - parent: [BaseStructureDisableToolUse, BaseStructureUnanchorable, FaxMachineBase] + parent: [BaseStructureDisableToolUse, FaxMachineBase] id: FaxMachineNFPole suffix: POI, Pole noSpawn: true @@ -103,7 +103,7 @@ name: "The North Pole" - type: entity - parent: [BaseStructureDisableToolUse, BaseStructureUnanchorable, FaxMachineBase] + parent: [BaseStructureDisableToolUse, FaxMachineBase] id: FaxMachineNFTinnia suffix: POI, Tinnia noSpawn: true @@ -112,7 +112,7 @@ name: "Tinnia's Rest" - type: entity - parent: [BaseStructureDisableToolUse, BaseStructureUnanchorable, FaxMachineBase] + parent: [BaseStructureDisableToolUse, FaxMachineBase] id: FaxMachineNFTrade suffix: POI, Trade noSpawn: true @@ -121,7 +121,7 @@ name: "Trade Outpost" - type: entity - parent: [BaseStructureDisableToolUse, BaseStructureUnanchorable, FaxMachineBase] + parent: [BaseStructureDisableToolUse, FaxMachineBase] id: FaxMachineNFLab suffix: POI, Lab noSpawn: true @@ -130,7 +130,7 @@ name: "Anomalous Lab" - type: entity - parent: [BaseStructureDisableToolUse, BaseStructureUnanchorable, FaxMachineBase] + parent: [BaseStructureDisableToolUse, FaxMachineBase] id: FaxMachineNFArena suffix: POI, Arena noSpawn: true @@ -139,7 +139,7 @@ name: "The Pit" - type: entity - parent: [BaseStructureDisableToolUse, BaseStructureUnanchorable, FaxMachineBase] + parent: [BaseStructureDisableToolUse, FaxMachineBase] id: FaxMachineNFCasino suffix: POI, Casino noSpawn: true @@ -148,7 +148,7 @@ name: "Casey's Casino" - type: entity - parent: [BaseStructureDisableToolUse, BaseStructureUnanchorable, FaxMachineBase] + parent: [BaseStructureDisableToolUse, FaxMachineBase] id: FaxMachineNFCourthouse suffix: POI, Courthouse noSpawn: true @@ -157,7 +157,7 @@ name: "Courthouse" - type: entity - parent: [BaseStructureDisableToolUse, BaseStructureUnanchorable, FaxMachineShipAntag] + parent: [BaseStructureDisableToolUse, FaxMachineShipAntag] id: FaxMachineNFCove suffix: POI, Cove noSpawn: true @@ -166,7 +166,7 @@ name: "Pirate's Cove" - type: entity - parent: [BaseStructureDisableToolUse, BaseStructureUnanchorable, FaxMachineBase] + parent: [BaseStructureDisableToolUse, FaxMachineBase] id: FaxMachineNFNfsd suffix: POI, NFSD noSpawn: true @@ -175,7 +175,7 @@ name: "NFSD Outpost Sheriff" - type: entity - parent: [BaseStructureDisableToolUse, BaseStructureUnanchorable, FaxMachineBase] + parent: [BaseStructureDisableToolUse, FaxMachineBase] id: FaxMachineNFNfsdLawyer suffix: POI, NFSD Lawyer noSpawn: true diff --git a/Resources/Prototypes/_NF/Entities/Structures/Machines/vending_machines.yml b/Resources/Prototypes/_NF/Entities/Structures/Machines/vending_machines.yml index 4c7b538f828..b78c7343807 100644 --- a/Resources/Prototypes/_NF/Entities/Structures/Machines/vending_machines.yml +++ b/Resources/Prototypes/_NF/Entities/Structures/Machines/vending_machines.yml @@ -1,5 +1,5 @@ - type: entity - parent: [BaseStructureUnanchorable, VendingMachine] + parent: [BaseStructureDisableAnchoring, VendingMachine] id: VendingMachineCuddlyCritterVend name: CuddlyCritterVend description: Step into the world of wonder and warmth with Cuddly Critters Vending Machine, a haven for plushie and toy enthusiasts alike. @@ -30,7 +30,7 @@ mod: 15 - type: entity - parent: [BaseStructureUnanchorable, VendingMachine] + parent: [BaseStructureDisableAnchoring, VendingMachine] id: VendingMachineAstroVend name: AstroVend description: Essential gear for the spaceman on the go. @@ -67,7 +67,7 @@ pack: AstroVendPOIInventory - type: entity - parent: [BaseStructureUnanchorable, VendingMachine] + parent: [BaseStructureDisableAnchoring, VendingMachine] id: VendingMachineFlatpackVend name: FlatpackVend description: Essential tech for the spaceman on the go. @@ -99,7 +99,7 @@ mod: 25 - type: entity - parent: [BaseStructureUnanchorable, VendingMachineFlatpackVend] + parent: [BaseStructureDisableAnchoring, VendingMachineFlatpackVend] id: VendingMachineExpeditionaryFlatpackVend name: Expeditionary FlatpackVend description: Essential tech for the spaceman on an expedition. @@ -110,7 +110,7 @@ sprite: _NF/Structures/Machines/VendingMachines/expeditionaryflatpackvend.rsi - type: entity - parent: [BaseStructureUnanchorable, VendingMachine] + parent: [BaseStructureDisableAnchoring, VendingMachine] id: VendingMachineSyndieContraband name: ContraVend description: Wanted across multiple sectors! @@ -149,7 +149,7 @@ mod: 50 - type: entity - parent: [BaseStructureUnanchorable, VendingMachine] + parent: [BaseStructureDisableAnchoring, VendingMachine] id: VendingMachineBountyVend name: BountyVend description: Essential gear for the bounty hunter on the go. @@ -244,7 +244,7 @@ color: "#ff033e" - type: entity - parent: LessLethalVendingMachine + parent: [BaseStructureDisableAnchoring, LessLethalVendingMachine] id: LessLethalVendingMachinePOI suffix: POI components: @@ -285,7 +285,7 @@ color: "#ff033e" - type: entity - parent: [BaseStructureUnanchorable, VendingMachine] + parent: [BaseStructureDisableAnchoring, VendingMachine] id: VendingMachineAutoTuneVend name: AutoTune description: Feeling BASSed? Time to TUNE into AutoVend! Take NOTES and let your audience TREBLE. @@ -336,7 +336,7 @@ # - type: GhostTakeoverAvailable - type: entity - parent: [BaseStructureUnanchorable, VendingMachine] + parent: [BaseStructureDisableAnchoring, VendingMachine] id: VendingMachinePottedPlantVend name: Plant-O-Matic description: Sometimes potted plants are the best crewmates money can get. @@ -370,7 +370,7 @@ mod: 10 - type: entity - parent: [BaseStructureUnanchorable, VendingMachine] + parent: [BaseStructureDisableAnchoring, VendingMachine] id: VendingMachineNfsdDrobe name: NFSDDrobe description: A vending machine for NFSD and NFSD clothing! @@ -396,7 +396,7 @@ access: [["Security"]] - type: entity - parent: [BaseStructureUnanchorable, VendingMachine] + parent: [BaseStructureDisableAnchoring, VendingMachine] id: VendingMachineYarrrDrobe name: YarrrDrobe description: A vending machine for skallywags and booty lovers! @@ -420,7 +420,7 @@ map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: entity - parent: [BaseStructureUnanchorable, VendingMachine] + parent: [BaseStructureDisableAnchoring, VendingMachine] id: VendingMachineNfsdTech name: NFSDTech description: A vending machine for NFSD and NFSD tech! @@ -446,7 +446,7 @@ access: [["Security"]] - type: entity - parent: [BaseStructureIndestructible, BaseStructureAccessReaderImmuneToEmag, VendingMachineCart] # Frontier + parent: VendingMachineCart # Frontier id: VendingMachineCartNfsd suffix: NFSD components: @@ -602,13 +602,13 @@ map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: entity - parent: [BaseCiviMedVend, BaseStructureUnanchorable, BaseStructureIndestructible, VendingMachine] + parent: [BaseCiviMedVend, BaseStructureDisableAnchoring, BaseStructureIndestructible, VendingMachine] id: VendingMachineCiviMedPlus name: CiviMed Plus description: CiviMed Plus, distributing lifesaving meds harder than the rocks you break! Miners, DON'T DIE! - type: entity - parent: [BaseCiviMedVend, BaseStructureUnanchorable, BaseStructureIndestructible, VendingMachineWallmount] + parent: [BaseCiviMedVend, BaseStructureDisableAnchoring, BaseStructureIndestructible, VendingMachineWallmount] id: VendingMachineCiviMed name: CiviMed description: CiviMed, distributing lifesaving meds harder than the rocks you break! Miners, DON'T DIE! diff --git a/Resources/Prototypes/_NF/Entities/Structures/Shuttles/thrusters_security.yml b/Resources/Prototypes/_NF/Entities/Structures/Shuttles/thrusters_security.yml index 52deda3f8da..080cd261fb0 100644 --- a/Resources/Prototypes/_NF/Entities/Structures/Shuttles/thrusters_security.yml +++ b/Resources/Prototypes/_NF/Entities/Structures/Shuttles/thrusters_security.yml @@ -1,6 +1,6 @@ - type: entity id: ThrusterSecurity - parent: [ BaseStructureUnanchorable, Thruster ] + parent: [ BaseStructureDisableAnchoring, Thruster ] name: thruster suffix: Security components: diff --git a/Resources/Prototypes/_NF/Entities/Structures/Storage/Closets/wall_lockers.yml b/Resources/Prototypes/_NF/Entities/Structures/Storage/Closets/wall_lockers.yml index 273968aaaba..540251c1a99 100644 --- a/Resources/Prototypes/_NF/Entities/Structures/Storage/Closets/wall_lockers.yml +++ b/Resources/Prototypes/_NF/Entities/Structures/Storage/Closets/wall_lockers.yml @@ -1,7 +1,7 @@ # Frontier-specific parent for turning regular objects into wallmounts to avoid redefining upstream prototypes. # Base - type: entity - parent: BaseStructureUnanchorable + parent: BaseStructureDisableAnchoring id: BaseWallmount abstract: true placement: diff --git a/Resources/Prototypes/_NF/Entities/Structures/base_structure.yml b/Resources/Prototypes/_NF/Entities/Structures/base_structure.yml index b41fd7ff51c..50b5aa129b8 100644 --- a/Resources/Prototypes/_NF/Entities/Structures/base_structure.yml +++ b/Resources/Prototypes/_NF/Entities/Structures/base_structure.yml @@ -2,17 +2,43 @@ id: BaseStructureDisableToolUse abstract: true components: - - type: OnToolsUse - disabled: true + - type: Transform + anchored: true + - type: DisableToolUse + anchoring: true + prying: true + screwing: true + cutting: true + welding: true + pulsing: true + slicing: true + sawing: true + honking: true + rolling: true + digging: true - type: entity - id: BaseStructureUnanchorable + id: BaseStructureDisableAnchoring abstract: true components: - type: Transform anchored: true - - type: Anchorable - delay: 999999 + - type: DisableToolUse + anchoring: true + +- type: entity + id: BaseStructureDisablePrying + abstract: true + components: + - type: DisableToolUse + prying: true + +- type: entity + id: BaseStructureDisableScrewing + abstract: true + components: + - type: DisableToolUse + screwing: true - type: entity id: BaseStructureDestructible