]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Fix SCRAM implant not working while cuffed. Incidentally fix freedom implant working...
authornikthechampiongr <32041239+nikthechampiongr@users.noreply.github.com>
Mon, 18 Mar 2024 22:35:46 +0000 (00:35 +0200)
committerGitHub <noreply@github.com>
Mon, 18 Mar 2024 22:35:46 +0000 (23:35 +0100)
* Fix SCRAM implant not being usable while in cuffs. Also fix freedom implant from working while dead/crit as a side effect

* Move check up to apply to all actions and do thing I forgor to do before

* Change check into an ActionBlocker check that also checks whether the user is sleeping.

* Make checking for Consciousness the default for actions

Went through and chose what I believe to be sensible defaults for actions that had CheckCanInteract.

* Fix typos my beloved

I had an unbelievable skill issue

* Fix major skill issue

13 files changed:
Content.Client/Actions/ActionsSystem.cs
Content.Server/Bed/Sleep/SleepingSystem.cs
Content.Shared/ActionBlocker/ActionBlockerSystem.cs
Content.Shared/Actions/BaseActionComponent.cs
Content.Shared/Actions/SharedActionsSystem.cs
Content.Shared/Interaction/Events/InteractionAttemptEvent.cs
Content.Shared/Mobs/Systems/MobStateSystem.Subscribers.cs
Resources/Prototypes/Actions/crit.yml
Resources/Prototypes/Actions/diona.yml
Resources/Prototypes/Actions/types.yml
Resources/Prototypes/Entities/Mobs/Player/guardian.yml
Resources/Prototypes/Entities/Objects/Fun/pai.yml
Resources/mapping_actions.yml

index 4eaf06b691e1355b92b6ffb51a4231e4edc0dbcd..5ff003452ab72f822659ee23cd26d730d8ac2ccb 100644 (file)
@@ -94,6 +94,7 @@ namespace Content.Client.Actions
             component.Container = EnsureEntity<T>(state.Container, uid);
             component.EntityIcon = EnsureEntity<T>(state.EntityIcon, uid);
             component.CheckCanInteract = state.CheckCanInteract;
+            component.CheckConsciousness = state.CheckConsciousness;
             component.ClientExclusive = state.ClientExclusive;
             component.Priority = state.Priority;
             component.AttachedEntity = EnsureEntity<T>(state.AttachedEntity, uid);
index 5d1def7cec11604609471bf776643ac5303d5c7a..685b1087d70010ff3d6c982817455226c1b8c0fb 100644 (file)
@@ -7,6 +7,7 @@ using Content.Shared.Damage;
 using Content.Shared.Examine;
 using Content.Shared.IdentityManagement;
 using Content.Shared.Interaction;
+using Content.Shared.Interaction.Events;
 using Content.Shared.Mobs;
 using Content.Shared.Mobs.Components;
 using Content.Shared.Slippery;
@@ -45,6 +46,7 @@ namespace Content.Server.Bed.Sleep
             SubscribeLocalEvent<SleepingComponent, InteractHandEvent>(OnInteractHand);
             SubscribeLocalEvent<SleepingComponent, ExaminedEvent>(OnExamined);
             SubscribeLocalEvent<SleepingComponent, SlipAttemptEvent>(OnSlip);
+            SubscribeLocalEvent<SleepingComponent, ConsciousAttemptEvent>(OnConsciousAttempt);
             SubscribeLocalEvent<ForcedSleepingComponent, ComponentInit>(OnInit);
         }
 
@@ -173,6 +175,12 @@ namespace Content.Server.Bed.Sleep
             args.Cancel();
         }
 
+        private void OnConsciousAttempt(EntityUid uid, SleepingComponent component, ConsciousAttemptEvent args)
+        {
+            args.Cancel();
+        }
+
+
         private void OnInit(EntityUid uid, ForcedSleepingComponent component, ComponentInit args)
         {
             TrySleeping(uid);
index 6dff8161eefc286d7656ae90d700a2c2f1ce1c9f..a914a8f267d5e3fbad2c53e7c85d3f183d0c203b 100644 (file)
@@ -1,3 +1,4 @@
+using Content.Shared.Bed.Sleep;
 using Content.Shared.Body.Events;
 using Content.Shared.DragDrop;
 using Content.Shared.Emoting;
@@ -5,6 +6,8 @@ using Content.Shared.Hands;
 using Content.Shared.Interaction;
 using Content.Shared.Interaction.Events;
 using Content.Shared.Item;
+using Content.Shared.Mobs;
+using Content.Shared.Mobs.Components;
 using Content.Shared.Movement.Components;
 using Content.Shared.Movement.Events;
 using Content.Shared.Speech;
@@ -67,6 +70,9 @@ namespace Content.Shared.ActionBlocker
         /// <returns></returns>
         public bool CanInteract(EntityUid user, EntityUid? target)
         {
+            if (!CanConsciouslyPerformAction(user))
+                return false;
+
             var ev = new InteractionAttemptEvent(user, target);
             RaiseLocalEvent(user, ev);
 
@@ -98,6 +104,21 @@ namespace Content.Shared.ActionBlocker
             return !ev.Cancelled;
         }
 
+
+        /// <summary>
+        /// Whether a user conscious to perform an action.
+        /// </summary>
+        /// <remarks>
+        /// This should be used when you want a much more permissive check than <see cref="CanInteract"/>
+        /// </remarks>
+        public bool CanConsciouslyPerformAction(EntityUid user)
+        {
+            var ev = new ConsciousAttemptEvent(user);
+            RaiseLocalEvent(user, ev);
+
+            return !ev.Cancelled;
+        }
+
         public bool CanThrow(EntityUid user, EntityUid itemUid)
         {
             var ev = new ThrowAttemptEvent(user, itemUid);
index cce7b912c76662f3455afe5da2137e8d4f9bea07..6d9242acc1da35e77267566fd56c1e3ebd5e00ab 100644 (file)
@@ -1,4 +1,5 @@
-using Robust.Shared.Audio;
+using Content.Shared.Mobs;
+using Robust.Shared.Audio;
 using Robust.Shared.Serialization;
 using Robust.Shared.Utility;
 
@@ -118,6 +119,12 @@ public abstract partial class BaseActionComponent : Component
     /// </summary>
     [DataField("checkCanInteract")] public bool CheckCanInteract = true;
 
+    /// <summary>
+    /// Whether to check if the user is conscious or not. Can be used instead of <see cref="CheckCanInteract"/>
+    /// for a more permissive check.
+    /// </summary>
+    [DataField] public bool CheckConsciousness = true;
+
     /// <summary>
     ///     If true, this will cause the action to only execute locally without ever notifying the server.
     /// </summary>
@@ -177,6 +184,7 @@ public abstract class BaseActionComponentState : ComponentState
     public NetEntity? Container;
     public NetEntity? EntityIcon;
     public bool CheckCanInteract;
+    public bool CheckConsciousness;
     public bool ClientExclusive;
     public int Priority;
     public NetEntity? AttachedEntity;
@@ -204,6 +212,7 @@ public abstract class BaseActionComponentState : ComponentState
         MaxCharges = component.MaxCharges;
         RenewCharges = component.RenewCharges;
         CheckCanInteract = component.CheckCanInteract;
+        CheckConsciousness = component.CheckConsciousness;
         ClientExclusive = component.ClientExclusive;
         Priority = component.Priority;
         AutoPopulate = component.AutoPopulate;
index a3bfa071308f70ad8fe0a83c7b2294952962a71c..e909f0a8a305058ab2f78fc4954b86127ebb6634 100644 (file)
@@ -8,6 +8,7 @@ using Content.Shared.Hands;
 using Content.Shared.Interaction;
 using Content.Shared.Inventory.Events;
 using Content.Shared.Mind;
+using Content.Shared.Mobs.Components;
 using Robust.Shared.Audio.Systems;
 using Robust.Shared.Containers;
 using Robust.Shared.GameStates;
@@ -370,6 +371,9 @@ public abstract class SharedActionsSystem : EntitySystem
 
         BaseActionEvent? performEvent = null;
 
+        if (action.CheckConsciousness && !_actionBlockerSystem.CanConsciouslyPerformAction(user))
+            return;
+
         // Validate request by checking action blockers and the like:
         switch (action)
         {
index 46dfd20c34dc75b7d4dc5040c216ce3015fc06bd..0024811c369e53fcc1b267db8a729862b8833101 100644 (file)
         public EntityUid? Target { get; }
     }
 
+    /// <summary>
+    /// Raised to determine whether an entity is conscious to perform an action.
+    /// </summary>
+    public sealed class ConsciousAttemptEvent(EntityUid Uid) : CancellableEntityEventArgs
+    {
+        public EntityUid Uid { get; } = Uid;
+    }
+
     /// <summary>
     ///     Event raised directed at the target entity of an interaction to see if the user is allowed to perform some
     ///     generic interaction.
index 51991332539e57597a3784d0ddff1612191cd594..0c2fcc057945eca93c1cc97ef9ac710a5b2b7d4c 100644 (file)
@@ -28,7 +28,7 @@ public partial class MobStateSystem
         SubscribeLocalEvent<MobStateComponent, ChangeDirectionAttemptEvent>(CheckAct);
         SubscribeLocalEvent<MobStateComponent, UseAttemptEvent>(CheckAct);
         SubscribeLocalEvent<MobStateComponent, AttackAttemptEvent>(CheckAct);
-        SubscribeLocalEvent<MobStateComponent, InteractionAttemptEvent>(CheckAct);
+        SubscribeLocalEvent<MobStateComponent, ConsciousAttemptEvent>(CheckAct);
         SubscribeLocalEvent<MobStateComponent, ThrowAttemptEvent>(CheckAct);
         SubscribeLocalEvent<MobStateComponent, SpeakAttemptEvent>(OnSpeakAttempt);
         SubscribeLocalEvent<MobStateComponent, IsEquippingAttemptEvent>(OnEquipAttempt);
index bdd09d697ec4e328c4023dbbe8f74e936bc83e92..705ee6ee6b39dd381f787fb3f30f4eb69e38c869 100644 (file)
@@ -1,4 +1,4 @@
-# Actions added to mobs in crit.
+# Actions added to mobs in crit.
 - type: entity
   id: ActionCritSuccumb
   name: Succumb
@@ -8,6 +8,7 @@
   - type: InstantAction
     itemIconStyle: NoItem
     checkCanInteract: false
+    checkConsciousness: false
     icon:
       sprite: Mobs/Ghosts/ghost_human.rsi
       state: icon
@@ -22,6 +23,7 @@
   - type: InstantAction
     itemIconStyle: NoItem
     checkCanInteract: false
+    checkConsciousness: false
     icon:
       sprite: Interface/Actions/actions_crit.rsi
       state: fakedeath
@@ -37,6 +39,7 @@
   - type: InstantAction
     itemIconStyle: NoItem
     checkCanInteract: false
+    checkConsciousness: false
     icon:
       sprite: Interface/Actions/actions_crit.rsi
       state: lastwords
index 73bc1ba529062e9a34bc6a5220e933f12d2b50bb..2d188987afc7bb15ec60a1a44ec51ca45578a8f1 100644 (file)
@@ -8,6 +8,7 @@
     icon: Mobs/Species/Diona/organs.rsi/brain.png
     event: !type:GibActionEvent {}
     checkCanInteract: false
+    checkConsciousness: false
 
 - type: entity
   id: DionaReformAction
index 2d5ec9a6784c8d5f0a3abdbbe01cc5e8d62a2238..84f0839b254a6641dda8256d581052e654b25dd0 100644 (file)
@@ -29,6 +29,7 @@
   components:
   - type: InstantAction
     checkCanInteract: false
+    checkConsciousness: false
     icon: Interface/Actions/zombie-turn.png
     event: !type:ZombifySelfActionEvent
 
@@ -66,6 +67,7 @@
   components:
   - type: InstantAction
     checkCanInteract: false
+    checkConsciousness: false
     itemIconStyle: BigAction
     priority: -20
     icon:
@@ -82,6 +84,7 @@
   components:
   - type: InstantAction
     checkCanInteract: false
+    checkConsciousness: false
     itemIconStyle: BigAction
     priority: -20
     icon:
   noSpawn: true
   components:
   - type: InstantAction
+    checkCanInteract: false
     charges: 2
     useDelay: 5
     itemIconStyle: BigAction
   components:
   - type: InstantAction
     checkCanInteract: false
+    checkConsciousness: false
     icon: Interface/Actions/harmOff.png
     iconOn: Interface/Actions/harm.png
     event: !type:ToggleCombatActionEvent
   - type: InstantAction
     clientExclusive: true
     checkCanInteract: false
+    checkConsciousness: false
     temporary: true
     icon: { sprite: Objects/Tools/multitool.rsi, state: icon }
     event: !type:ClearAllOverlaysEvent
   components:
   - type: InstantAction
     checkCanInteract: false
+    checkConsciousness: false
     icon: { sprite: Clothing/Head/Hats/pyjamasyndicatered.rsi, state: icon }
     event: !type:SleepActionEvent
 
   - type: InstantAction
     icon: { sprite: Clothing/Head/Hats/pyjamasyndicatered.rsi, state: icon }
     checkCanInteract: false
+    checkConsciousness: false
     event: !type:WakeActionEvent
 
 - type: entity
     event: !type:ToggleEyesActionEvent
     useDelay: 1 # so u cant give yourself and observers eyestrain by rapidly spamming the action
     checkCanInteract: false
+    checkConsciousness: false
 
 - type: entity
   id: ActionToggleWagging
index c37826666acd10bb1cee0e017bdfdf85d10b1a64..9f0d54ee64a7515bc8d69447c0a79068eadb8351 100644 (file)
     event: !type:GuardianToggleActionEvent
     useDelay: 2
     checkCanInteract: false
+    checkConsciousness: false
index 36e20c22a9c162036f9e3ff87a450fdcdeb69940..537562f4618dcc9bef6a494d09aab1d5fcfdc8f8 100644 (file)
   components:
   - type: InstantAction
     checkCanInteract: false
+    checkConsciousness: false
     icon: Interface/Actions/pai-midi.png
     event: !type:OpenUiActionEvent
       key: enum.InstrumentUiKey.Key
   components:
     - type: InstantAction
       checkCanInteract: false
+      checkConsciousness: false
       icon: { sprite: Interface/Actions/pai-map.rsi, state: icon }
       event: !type:OpenUiActionEvent
         key: enum.StationMapUiKey.Key
index 0dda6b38a52303fe1598175071c67b3d1576e1f0..9498c3062a30dc7208dda610c53b435bd891e3f5 100644 (file)
@@ -3,6 +3,7 @@
       entity: ReinforcedWindow
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
@@ -17,6 +18,7 @@
       entity: WallSolid
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
@@ -31,6 +33,7 @@
       entity: WallReinforced
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
@@ -45,6 +48,7 @@
       entity: Window
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
@@ -59,6 +63,7 @@
       entity: Firelock
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
@@ -73,6 +78,7 @@
       entity: Grille
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
@@ -86,6 +92,7 @@
     icon: Interface/VerbIcons/delete.svg.192dpi.png
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: GasPipeStraight
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: GasPipeBend
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: GasPipeTJunction
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: GasPipeFourway
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: GasVentScrubber
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: GasVentPump
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: AirAlarm
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: FireAlarm
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: APCBasic
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: CableApcExtension
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: CableMV
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: CableHV
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: SubstationBasic
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: Poweredlight
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: EmergencyLight
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: SMESBasic
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: TableWood
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: Table
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: ChairWood
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: Chair
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: ChairOfficeLight
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: StoolBar
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: Stool
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: Rack
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: ChairOfficeDark
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: LampGold
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: DisposalPipe
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: DisposalBend
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: DisposalJunction
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: DisposalJunctionFlipped
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: DisposalRouter
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: DisposalRouterFlipped
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: DisposalUnit
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: DisposalTrunk
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: SignDisposalSpace
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: Windoor
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: WindowDirectional
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: WindowReinforcedDirectional
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: PlasmaWindowDirectional
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: Railing
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: RailingCorner
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: RailingCornerSmall
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
     name: RailingRound
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: AirlockMaintLocked
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: AirlockGlass
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: AirlockServiceLocked
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: AirlockSecurityLocked
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: AirlockCommand
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: AirlockScience
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: AirlockMedical
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: AirlockEngineering
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       entity: AirlockCargo
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       state: bot_left
     iconColor: '#EFB34196'
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       state: delivery
     iconColor: '#EFB34196'
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       state: warn_full
     iconColor: '#EFB34196'
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       state: halftile_overlay
     iconColor: '#EFB34196'
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       state: halftile_overlay
     iconColor: '#334E6DC8'
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       state: halftile_overlay
     iconColor: '#52B4E996'
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       state: halftile_overlay
     iconColor: '#9FED5896'
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       state: halftile_overlay
     iconColor: '#DE3A3A96'
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       state: halftile_overlay
     iconColor: '#D381C996'
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
       state: halftile_overlay
     iconColor: '#A4610696'
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
     icon: /Textures/Tiles/steel.png
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
     icon: /Textures/Tiles/plating.png
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True
     icon: /Textures/Tiles/cropped_parallax.png
     keywords: []
     checkCanInteract: False
+    checkConsciousness: False
     clientExclusive: True
     autoPopulate: False
     temporary: True