From 151b5e1007bd3f99659735a6f76729f583bd54b9 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 21:40:56 -0700 Subject: [PATCH] Mirror: Fix SCRAM implant not working while cuffed. Incidentally fix freedom implant working while dead/crit (#266) ## Mirror of PR #25978: [Fix SCRAM implant not working while cuffed. Incidentally fix freedom implant working while dead/crit](https://github.com/space-wizards/space-station-14/pull/25978) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `22e9d6562f21bdd4f0962d6e3b6fcdd81bb4c253` PR opened by nikthechampiongr at 2024-03-10 19:33:05 UTC --- PR changed 13 files with 142 additions and 3 deletions. The PR had the following labels: - Status: Needs Review ---

Original Body

> fixes #25662 > > > > > ## About the PR > > This pr makes it so you can use the SCRAM implant while cuffed. Also fixes the freedom implant working while you are in crit, or even dead. > > ## Why / Balance > > The implant is made so you can escape horrible situations. It should as such work while in crit. > > ## Technical details > > ActionBlockers now has a specific check to see if someone is conscious. It is also used in the Interaction check now. Actions can now use that check if the bool is set. The bool is now set for the freedom and SCRAM! implant actions. Additionally the SCRAM! action now ignores whether the user can interact in order to be able to use it while cuffed. > > ## Media > > > - [x] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > > **Changelog** > > > > :cl: > fix: You can now use the SCRAM! implant while cuffed. > fix: The freedom implant can no longer be used while in crit, or dead.
Co-authored-by: SimpleStation14 --- Content.Client/Actions/ActionsSystem.cs | 1 + Content.Server/Bed/Sleep/SleepingSystem.cs | 8 +++ .../ActionBlocker/ActionBlockerSystem.cs | 21 ++++++ Content.Shared/Actions/BaseActionComponent.cs | 11 ++- Content.Shared/Actions/SharedActionsSystem.cs | 4 ++ .../Events/InteractionAttemptEvent.cs | 8 +++ .../Systems/MobStateSystem.Subscribers.cs | 2 +- Resources/Prototypes/Actions/crit.yml | 5 +- Resources/Prototypes/Actions/diona.yml | 1 + Resources/Prototypes/Actions/types.yml | 9 +++ .../Entities/Mobs/Player/guardian.yml | 1 + .../Prototypes/Entities/Objects/Fun/pai.yml | 2 + Resources/mapping_actions.yml | 72 +++++++++++++++++++ 13 files changed, 142 insertions(+), 3 deletions(-) diff --git a/Content.Client/Actions/ActionsSystem.cs b/Content.Client/Actions/ActionsSystem.cs index 31d092b25d..b992e77256 100644 --- a/Content.Client/Actions/ActionsSystem.cs +++ b/Content.Client/Actions/ActionsSystem.cs @@ -95,6 +95,7 @@ namespace Content.Client.Actions component.Container = EnsureEntity(state.Container, uid); component.EntityIcon = EnsureEntity(state.EntityIcon, uid); component.CheckCanInteract = state.CheckCanInteract; + component.CheckConsciousness = state.CheckConsciousness; component.ClientExclusive = state.ClientExclusive; component.Priority = state.Priority; component.AttachedEntity = EnsureEntity(state.AttachedEntity, uid); diff --git a/Content.Server/Bed/Sleep/SleepingSystem.cs b/Content.Server/Bed/Sleep/SleepingSystem.cs index 5d1def7cec..685b1087d7 100644 --- a/Content.Server/Bed/Sleep/SleepingSystem.cs +++ b/Content.Server/Bed/Sleep/SleepingSystem.cs @@ -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(OnInteractHand); SubscribeLocalEvent(OnExamined); SubscribeLocalEvent(OnSlip); + SubscribeLocalEvent(OnConsciousAttempt); SubscribeLocalEvent(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); diff --git a/Content.Shared/ActionBlocker/ActionBlockerSystem.cs b/Content.Shared/ActionBlocker/ActionBlockerSystem.cs index 6dff8161ee..a914a8f267 100644 --- a/Content.Shared/ActionBlocker/ActionBlockerSystem.cs +++ b/Content.Shared/ActionBlocker/ActionBlockerSystem.cs @@ -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 /// 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; } + + /// + /// Whether a user conscious to perform an action. + /// + /// + /// This should be used when you want a much more permissive check than + /// + 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); diff --git a/Content.Shared/Actions/BaseActionComponent.cs b/Content.Shared/Actions/BaseActionComponent.cs index cce7b912c7..6d9242acc1 100644 --- a/Content.Shared/Actions/BaseActionComponent.cs +++ b/Content.Shared/Actions/BaseActionComponent.cs @@ -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 /// [DataField("checkCanInteract")] public bool CheckCanInteract = true; + /// + /// Whether to check if the user is conscious or not. Can be used instead of + /// for a more permissive check. + /// + [DataField] public bool CheckConsciousness = true; + /// /// If true, this will cause the action to only execute locally without ever notifying the server. /// @@ -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; diff --git a/Content.Shared/Actions/SharedActionsSystem.cs b/Content.Shared/Actions/SharedActionsSystem.cs index a3bfa07130..e909f0a8a3 100644 --- a/Content.Shared/Actions/SharedActionsSystem.cs +++ b/Content.Shared/Actions/SharedActionsSystem.cs @@ -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) { diff --git a/Content.Shared/Interaction/Events/InteractionAttemptEvent.cs b/Content.Shared/Interaction/Events/InteractionAttemptEvent.cs index 46dfd20c34..0024811c36 100644 --- a/Content.Shared/Interaction/Events/InteractionAttemptEvent.cs +++ b/Content.Shared/Interaction/Events/InteractionAttemptEvent.cs @@ -15,6 +15,14 @@ public EntityUid? Target { get; } } + /// + /// Raised to determine whether an entity is conscious to perform an action. + /// + public sealed class ConsciousAttemptEvent(EntityUid Uid) : CancellableEntityEventArgs + { + public EntityUid Uid { get; } = Uid; + } + /// /// Event raised directed at the target entity of an interaction to see if the user is allowed to perform some /// generic interaction. diff --git a/Content.Shared/Mobs/Systems/MobStateSystem.Subscribers.cs b/Content.Shared/Mobs/Systems/MobStateSystem.Subscribers.cs index 5199133253..0c2fcc0579 100644 --- a/Content.Shared/Mobs/Systems/MobStateSystem.Subscribers.cs +++ b/Content.Shared/Mobs/Systems/MobStateSystem.Subscribers.cs @@ -28,7 +28,7 @@ public partial class MobStateSystem SubscribeLocalEvent(CheckAct); SubscribeLocalEvent(CheckAct); SubscribeLocalEvent(CheckAct); - SubscribeLocalEvent(CheckAct); + SubscribeLocalEvent(CheckAct); SubscribeLocalEvent(CheckAct); SubscribeLocalEvent(OnSpeakAttempt); SubscribeLocalEvent(OnEquipAttempt); diff --git a/Resources/Prototypes/Actions/crit.yml b/Resources/Prototypes/Actions/crit.yml index bdd09d697e..705ee6ee6b 100644 --- a/Resources/Prototypes/Actions/crit.yml +++ b/Resources/Prototypes/Actions/crit.yml @@ -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 diff --git a/Resources/Prototypes/Actions/diona.yml b/Resources/Prototypes/Actions/diona.yml index 1215276f28..11db30386a 100644 --- a/Resources/Prototypes/Actions/diona.yml +++ b/Resources/Prototypes/Actions/diona.yml @@ -10,6 +10,7 @@ state: brain event: !type:GibActionEvent {} checkCanInteract: false + checkConsciousness: false - type: entity id: DionaReformAction diff --git a/Resources/Prototypes/Actions/types.yml b/Resources/Prototypes/Actions/types.yml index b2038b04b7..b91b26e357 100644 --- a/Resources/Prototypes/Actions/types.yml +++ b/Resources/Prototypes/Actions/types.yml @@ -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: @@ -143,6 +146,7 @@ noSpawn: true components: - type: InstantAction + checkCanInteract: false charges: 2 useDelay: 5 itemIconStyle: BigAction @@ -186,6 +190,7 @@ components: - type: InstantAction checkCanInteract: false + checkConsciousness: false icon: Interface/Actions/harmOff.png iconOn: Interface/Actions/harm.png event: !type:ToggleCombatActionEvent @@ -256,6 +261,7 @@ - type: InstantAction clientExclusive: true checkCanInteract: false + checkConsciousness: false temporary: true icon: { sprite: Objects/Tools/multitool.rsi, state: icon } event: !type:ClearAllOverlaysEvent @@ -279,6 +285,7 @@ components: - type: InstantAction checkCanInteract: false + checkConsciousness: false icon: { sprite: Clothing/Head/Hats/pyjamasyndicatered.rsi, state: icon } event: !type:SleepActionEvent @@ -291,6 +298,7 @@ - type: InstantAction icon: { sprite: Clothing/Head/Hats/pyjamasyndicatered.rsi, state: icon } checkCanInteract: false + checkConsciousness: false event: !type:WakeActionEvent - type: entity @@ -328,6 +336,7 @@ 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 diff --git a/Resources/Prototypes/Entities/Mobs/Player/guardian.yml b/Resources/Prototypes/Entities/Mobs/Player/guardian.yml index d892b31fac..c7cd40988d 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/guardian.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/guardian.yml @@ -253,3 +253,4 @@ event: !type:GuardianToggleActionEvent useDelay: 2 checkCanInteract: false + checkConsciousness: false diff --git a/Resources/Prototypes/Entities/Objects/Fun/pai.yml b/Resources/Prototypes/Entities/Objects/Fun/pai.yml index 36e20c22a9..537562f461 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/pai.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/pai.yml @@ -138,6 +138,7 @@ components: - type: InstantAction checkCanInteract: false + checkConsciousness: false icon: Interface/Actions/pai-midi.png event: !type:OpenUiActionEvent key: enum.InstrumentUiKey.Key @@ -150,6 +151,7 @@ components: - type: InstantAction checkCanInteract: false + checkConsciousness: false icon: { sprite: Interface/Actions/pai-map.rsi, state: icon } event: !type:OpenUiActionEvent key: enum.StationMapUiKey.Key diff --git a/Resources/mapping_actions.yml b/Resources/mapping_actions.yml index 0dda6b38a5..9498c3062a 100644 --- a/Resources/mapping_actions.yml +++ b/Resources/mapping_actions.yml @@ -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 @@ -104,6 +111,7 @@ entity: GasPipeStraight keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -118,6 +126,7 @@ entity: GasPipeBend keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -132,6 +141,7 @@ entity: GasPipeTJunction keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -146,6 +156,7 @@ entity: GasPipeFourway keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -160,6 +171,7 @@ entity: GasVentScrubber keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -174,6 +186,7 @@ entity: GasVentPump keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -188,6 +201,7 @@ entity: AirAlarm keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -202,6 +216,7 @@ entity: FireAlarm keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -216,6 +231,7 @@ entity: APCBasic keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -230,6 +246,7 @@ entity: CableApcExtension keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -244,6 +261,7 @@ entity: CableMV keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -258,6 +276,7 @@ entity: CableHV keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -272,6 +291,7 @@ entity: SubstationBasic keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -286,6 +306,7 @@ entity: Poweredlight keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -300,6 +321,7 @@ entity: EmergencyLight keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -314,6 +336,7 @@ entity: SMESBasic keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -328,6 +351,7 @@ entity: TableWood keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -342,6 +366,7 @@ entity: Table keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -356,6 +381,7 @@ entity: ChairWood keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -370,6 +396,7 @@ entity: Chair keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -384,6 +411,7 @@ entity: ChairOfficeLight keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -398,6 +426,7 @@ entity: StoolBar keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -412,6 +441,7 @@ entity: Stool keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -426,6 +456,7 @@ entity: Rack keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -440,6 +471,7 @@ entity: ChairOfficeDark keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -454,6 +486,7 @@ entity: LampGold keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -468,6 +501,7 @@ entity: DisposalPipe keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -482,6 +516,7 @@ entity: DisposalBend keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -496,6 +531,7 @@ entity: DisposalJunction keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -510,6 +546,7 @@ entity: DisposalJunctionFlipped keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -524,6 +561,7 @@ entity: DisposalRouter keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -538,6 +576,7 @@ entity: DisposalRouterFlipped keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -552,6 +591,7 @@ entity: DisposalUnit keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -566,6 +606,7 @@ entity: DisposalTrunk keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -580,6 +621,7 @@ entity: SignDisposalSpace keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -594,6 +636,7 @@ entity: Windoor keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -608,6 +651,7 @@ entity: WindowDirectional keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -622,6 +666,7 @@ entity: WindowReinforcedDirectional keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -636,6 +681,7 @@ entity: PlasmaWindowDirectional keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -650,6 +696,7 @@ entity: Railing keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -664,6 +711,7 @@ entity: RailingCorner keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -678,6 +726,7 @@ entity: RailingCornerSmall keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -693,6 +742,7 @@ name: RailingRound keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -706,6 +756,7 @@ entity: AirlockMaintLocked keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -720,6 +771,7 @@ entity: AirlockGlass keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -734,6 +786,7 @@ entity: AirlockServiceLocked keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -748,6 +801,7 @@ entity: AirlockSecurityLocked keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -762,6 +816,7 @@ entity: AirlockCommand keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -776,6 +831,7 @@ entity: AirlockScience keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -790,6 +846,7 @@ entity: AirlockMedical keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -804,6 +861,7 @@ entity: AirlockEngineering keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -818,6 +876,7 @@ entity: AirlockCargo keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -837,6 +896,7 @@ state: bot_left iconColor: '#EFB34196' checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -857,6 +917,7 @@ state: delivery iconColor: '#EFB34196' checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -877,6 +938,7 @@ state: warn_full iconColor: '#EFB34196' checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -897,6 +959,7 @@ state: halftile_overlay iconColor: '#EFB34196' checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -917,6 +980,7 @@ state: halftile_overlay iconColor: '#334E6DC8' checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -937,6 +1001,7 @@ state: halftile_overlay iconColor: '#52B4E996' checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -957,6 +1022,7 @@ state: halftile_overlay iconColor: '#9FED5896' checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -977,6 +1043,7 @@ state: halftile_overlay iconColor: '#DE3A3A96' checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -997,6 +1064,7 @@ state: halftile_overlay iconColor: '#D381C996' checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -1017,6 +1085,7 @@ state: halftile_overlay iconColor: '#A4610696' checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -1031,6 +1100,7 @@ icon: /Textures/Tiles/steel.png keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -1044,6 +1114,7 @@ icon: /Textures/Tiles/plating.png keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -1059,6 +1130,7 @@ icon: /Textures/Tiles/cropped_parallax.png keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True