Fix SCRAM implant not working while cuffed. Incidentally fix freedom implant working while dead/crit (#25978)

* 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
This commit is contained in:
nikthechampiongr
2024-03-19 00:35:46 +02:00
committed by GitHub
parent 5185a4a6b3
commit 22e9d6562f
13 changed files with 142 additions and 3 deletions

View File

@@ -94,6 +94,7 @@ namespace Content.Client.Actions
component.Container = EnsureEntity<T>(state.Container, uid); component.Container = EnsureEntity<T>(state.Container, uid);
component.EntityIcon = EnsureEntity<T>(state.EntityIcon, uid); component.EntityIcon = EnsureEntity<T>(state.EntityIcon, uid);
component.CheckCanInteract = state.CheckCanInteract; component.CheckCanInteract = state.CheckCanInteract;
component.CheckConsciousness = state.CheckConsciousness;
component.ClientExclusive = state.ClientExclusive; component.ClientExclusive = state.ClientExclusive;
component.Priority = state.Priority; component.Priority = state.Priority;
component.AttachedEntity = EnsureEntity<T>(state.AttachedEntity, uid); component.AttachedEntity = EnsureEntity<T>(state.AttachedEntity, uid);

View File

@@ -7,6 +7,7 @@ using Content.Shared.Damage;
using Content.Shared.Examine; using Content.Shared.Examine;
using Content.Shared.IdentityManagement; using Content.Shared.IdentityManagement;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
using Content.Shared.Mobs; using Content.Shared.Mobs;
using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Components;
using Content.Shared.Slippery; using Content.Shared.Slippery;
@@ -45,6 +46,7 @@ namespace Content.Server.Bed.Sleep
SubscribeLocalEvent<SleepingComponent, InteractHandEvent>(OnInteractHand); SubscribeLocalEvent<SleepingComponent, InteractHandEvent>(OnInteractHand);
SubscribeLocalEvent<SleepingComponent, ExaminedEvent>(OnExamined); SubscribeLocalEvent<SleepingComponent, ExaminedEvent>(OnExamined);
SubscribeLocalEvent<SleepingComponent, SlipAttemptEvent>(OnSlip); SubscribeLocalEvent<SleepingComponent, SlipAttemptEvent>(OnSlip);
SubscribeLocalEvent<SleepingComponent, ConsciousAttemptEvent>(OnConsciousAttempt);
SubscribeLocalEvent<ForcedSleepingComponent, ComponentInit>(OnInit); SubscribeLocalEvent<ForcedSleepingComponent, ComponentInit>(OnInit);
} }
@@ -173,6 +175,12 @@ namespace Content.Server.Bed.Sleep
args.Cancel(); args.Cancel();
} }
private void OnConsciousAttempt(EntityUid uid, SleepingComponent component, ConsciousAttemptEvent args)
{
args.Cancel();
}
private void OnInit(EntityUid uid, ForcedSleepingComponent component, ComponentInit args) private void OnInit(EntityUid uid, ForcedSleepingComponent component, ComponentInit args)
{ {
TrySleeping(uid); TrySleeping(uid);

View File

@@ -1,3 +1,4 @@
using Content.Shared.Bed.Sleep;
using Content.Shared.Body.Events; using Content.Shared.Body.Events;
using Content.Shared.DragDrop; using Content.Shared.DragDrop;
using Content.Shared.Emoting; using Content.Shared.Emoting;
@@ -5,6 +6,8 @@ using Content.Shared.Hands;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Content.Shared.Interaction.Events; using Content.Shared.Interaction.Events;
using Content.Shared.Item; using Content.Shared.Item;
using Content.Shared.Mobs;
using Content.Shared.Mobs.Components;
using Content.Shared.Movement.Components; using Content.Shared.Movement.Components;
using Content.Shared.Movement.Events; using Content.Shared.Movement.Events;
using Content.Shared.Speech; using Content.Shared.Speech;
@@ -67,6 +70,9 @@ namespace Content.Shared.ActionBlocker
/// <returns></returns> /// <returns></returns>
public bool CanInteract(EntityUid user, EntityUid? target) public bool CanInteract(EntityUid user, EntityUid? target)
{ {
if (!CanConsciouslyPerformAction(user))
return false;
var ev = new InteractionAttemptEvent(user, target); var ev = new InteractionAttemptEvent(user, target);
RaiseLocalEvent(user, ev); RaiseLocalEvent(user, ev);
@@ -98,6 +104,21 @@ namespace Content.Shared.ActionBlocker
return !ev.Cancelled; 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) public bool CanThrow(EntityUid user, EntityUid itemUid)
{ {
var ev = new ThrowAttemptEvent(user, itemUid); var ev = new ThrowAttemptEvent(user, itemUid);

View File

@@ -1,4 +1,5 @@
using Robust.Shared.Audio; using Content.Shared.Mobs;
using Robust.Shared.Audio;
using Robust.Shared.Serialization; using Robust.Shared.Serialization;
using Robust.Shared.Utility; using Robust.Shared.Utility;
@@ -118,6 +119,12 @@ public abstract partial class BaseActionComponent : Component
/// </summary> /// </summary>
[DataField("checkCanInteract")] public bool CheckCanInteract = true; [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> /// <summary>
/// If true, this will cause the action to only execute locally without ever notifying the server. /// If true, this will cause the action to only execute locally without ever notifying the server.
/// </summary> /// </summary>
@@ -177,6 +184,7 @@ public abstract class BaseActionComponentState : ComponentState
public NetEntity? Container; public NetEntity? Container;
public NetEntity? EntityIcon; public NetEntity? EntityIcon;
public bool CheckCanInteract; public bool CheckCanInteract;
public bool CheckConsciousness;
public bool ClientExclusive; public bool ClientExclusive;
public int Priority; public int Priority;
public NetEntity? AttachedEntity; public NetEntity? AttachedEntity;
@@ -204,6 +212,7 @@ public abstract class BaseActionComponentState : ComponentState
MaxCharges = component.MaxCharges; MaxCharges = component.MaxCharges;
RenewCharges = component.RenewCharges; RenewCharges = component.RenewCharges;
CheckCanInteract = component.CheckCanInteract; CheckCanInteract = component.CheckCanInteract;
CheckConsciousness = component.CheckConsciousness;
ClientExclusive = component.ClientExclusive; ClientExclusive = component.ClientExclusive;
Priority = component.Priority; Priority = component.Priority;
AutoPopulate = component.AutoPopulate; AutoPopulate = component.AutoPopulate;

View File

@@ -8,6 +8,7 @@ using Content.Shared.Hands;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Content.Shared.Inventory.Events; using Content.Shared.Inventory.Events;
using Content.Shared.Mind; using Content.Shared.Mind;
using Content.Shared.Mobs.Components;
using Robust.Shared.Audio.Systems; using Robust.Shared.Audio.Systems;
using Robust.Shared.Containers; using Robust.Shared.Containers;
using Robust.Shared.GameStates; using Robust.Shared.GameStates;
@@ -370,6 +371,9 @@ public abstract class SharedActionsSystem : EntitySystem
BaseActionEvent? performEvent = null; BaseActionEvent? performEvent = null;
if (action.CheckConsciousness && !_actionBlockerSystem.CanConsciouslyPerformAction(user))
return;
// Validate request by checking action blockers and the like: // Validate request by checking action blockers and the like:
switch (action) switch (action)
{ {

View File

@@ -15,6 +15,14 @@
public EntityUid? Target { get; } 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> /// <summary>
/// Event raised directed at the target entity of an interaction to see if the user is allowed to perform some /// Event raised directed at the target entity of an interaction to see if the user is allowed to perform some
/// generic interaction. /// generic interaction.

View File

@@ -28,7 +28,7 @@ public partial class MobStateSystem
SubscribeLocalEvent<MobStateComponent, ChangeDirectionAttemptEvent>(CheckAct); SubscribeLocalEvent<MobStateComponent, ChangeDirectionAttemptEvent>(CheckAct);
SubscribeLocalEvent<MobStateComponent, UseAttemptEvent>(CheckAct); SubscribeLocalEvent<MobStateComponent, UseAttemptEvent>(CheckAct);
SubscribeLocalEvent<MobStateComponent, AttackAttemptEvent>(CheckAct); SubscribeLocalEvent<MobStateComponent, AttackAttemptEvent>(CheckAct);
SubscribeLocalEvent<MobStateComponent, InteractionAttemptEvent>(CheckAct); SubscribeLocalEvent<MobStateComponent, ConsciousAttemptEvent>(CheckAct);
SubscribeLocalEvent<MobStateComponent, ThrowAttemptEvent>(CheckAct); SubscribeLocalEvent<MobStateComponent, ThrowAttemptEvent>(CheckAct);
SubscribeLocalEvent<MobStateComponent, SpeakAttemptEvent>(OnSpeakAttempt); SubscribeLocalEvent<MobStateComponent, SpeakAttemptEvent>(OnSpeakAttempt);
SubscribeLocalEvent<MobStateComponent, IsEquippingAttemptEvent>(OnEquipAttempt); SubscribeLocalEvent<MobStateComponent, IsEquippingAttemptEvent>(OnEquipAttempt);

View File

@@ -1,4 +1,4 @@
# Actions added to mobs in crit. # Actions added to mobs in crit.
- type: entity - type: entity
id: ActionCritSuccumb id: ActionCritSuccumb
name: Succumb name: Succumb
@@ -8,6 +8,7 @@
- type: InstantAction - type: InstantAction
itemIconStyle: NoItem itemIconStyle: NoItem
checkCanInteract: false checkCanInteract: false
checkConsciousness: false
icon: icon:
sprite: Mobs/Ghosts/ghost_human.rsi sprite: Mobs/Ghosts/ghost_human.rsi
state: icon state: icon
@@ -22,6 +23,7 @@
- type: InstantAction - type: InstantAction
itemIconStyle: NoItem itemIconStyle: NoItem
checkCanInteract: false checkCanInteract: false
checkConsciousness: false
icon: icon:
sprite: Interface/Actions/actions_crit.rsi sprite: Interface/Actions/actions_crit.rsi
state: fakedeath state: fakedeath
@@ -37,6 +39,7 @@
- type: InstantAction - type: InstantAction
itemIconStyle: NoItem itemIconStyle: NoItem
checkCanInteract: false checkCanInteract: false
checkConsciousness: false
icon: icon:
sprite: Interface/Actions/actions_crit.rsi sprite: Interface/Actions/actions_crit.rsi
state: lastwords state: lastwords

View File

@@ -8,6 +8,7 @@
icon: Mobs/Species/Diona/organs.rsi/brain.png icon: Mobs/Species/Diona/organs.rsi/brain.png
event: !type:GibActionEvent {} event: !type:GibActionEvent {}
checkCanInteract: false checkCanInteract: false
checkConsciousness: false
- type: entity - type: entity
id: DionaReformAction id: DionaReformAction

View File

@@ -29,6 +29,7 @@
components: components:
- type: InstantAction - type: InstantAction
checkCanInteract: false checkCanInteract: false
checkConsciousness: false
icon: Interface/Actions/zombie-turn.png icon: Interface/Actions/zombie-turn.png
event: !type:ZombifySelfActionEvent event: !type:ZombifySelfActionEvent
@@ -66,6 +67,7 @@
components: components:
- type: InstantAction - type: InstantAction
checkCanInteract: false checkCanInteract: false
checkConsciousness: false
itemIconStyle: BigAction itemIconStyle: BigAction
priority: -20 priority: -20
icon: icon:
@@ -82,6 +84,7 @@
components: components:
- type: InstantAction - type: InstantAction
checkCanInteract: false checkCanInteract: false
checkConsciousness: false
itemIconStyle: BigAction itemIconStyle: BigAction
priority: -20 priority: -20
icon: icon:
@@ -143,6 +146,7 @@
noSpawn: true noSpawn: true
components: components:
- type: InstantAction - type: InstantAction
checkCanInteract: false
charges: 2 charges: 2
useDelay: 5 useDelay: 5
itemIconStyle: BigAction itemIconStyle: BigAction
@@ -186,6 +190,7 @@
components: components:
- type: InstantAction - type: InstantAction
checkCanInteract: false checkCanInteract: false
checkConsciousness: false
icon: Interface/Actions/harmOff.png icon: Interface/Actions/harmOff.png
iconOn: Interface/Actions/harm.png iconOn: Interface/Actions/harm.png
event: !type:ToggleCombatActionEvent event: !type:ToggleCombatActionEvent
@@ -256,6 +261,7 @@
- type: InstantAction - type: InstantAction
clientExclusive: true clientExclusive: true
checkCanInteract: false checkCanInteract: false
checkConsciousness: false
temporary: true temporary: true
icon: { sprite: Objects/Tools/multitool.rsi, state: icon } icon: { sprite: Objects/Tools/multitool.rsi, state: icon }
event: !type:ClearAllOverlaysEvent event: !type:ClearAllOverlaysEvent
@@ -279,6 +285,7 @@
components: components:
- type: InstantAction - type: InstantAction
checkCanInteract: false checkCanInteract: false
checkConsciousness: false
icon: { sprite: Clothing/Head/Hats/pyjamasyndicatered.rsi, state: icon } icon: { sprite: Clothing/Head/Hats/pyjamasyndicatered.rsi, state: icon }
event: !type:SleepActionEvent event: !type:SleepActionEvent
@@ -291,6 +298,7 @@
- type: InstantAction - type: InstantAction
icon: { sprite: Clothing/Head/Hats/pyjamasyndicatered.rsi, state: icon } icon: { sprite: Clothing/Head/Hats/pyjamasyndicatered.rsi, state: icon }
checkCanInteract: false checkCanInteract: false
checkConsciousness: false
event: !type:WakeActionEvent event: !type:WakeActionEvent
- type: entity - type: entity
@@ -328,6 +336,7 @@
event: !type:ToggleEyesActionEvent event: !type:ToggleEyesActionEvent
useDelay: 1 # so u cant give yourself and observers eyestrain by rapidly spamming the action useDelay: 1 # so u cant give yourself and observers eyestrain by rapidly spamming the action
checkCanInteract: false checkCanInteract: false
checkConsciousness: false
- type: entity - type: entity
id: ActionToggleWagging id: ActionToggleWagging

View File

@@ -255,3 +255,4 @@
event: !type:GuardianToggleActionEvent event: !type:GuardianToggleActionEvent
useDelay: 2 useDelay: 2
checkCanInteract: false checkCanInteract: false
checkConsciousness: false

View File

@@ -138,6 +138,7 @@
components: components:
- type: InstantAction - type: InstantAction
checkCanInteract: false checkCanInteract: false
checkConsciousness: false
icon: Interface/Actions/pai-midi.png icon: Interface/Actions/pai-midi.png
event: !type:OpenUiActionEvent event: !type:OpenUiActionEvent
key: enum.InstrumentUiKey.Key key: enum.InstrumentUiKey.Key
@@ -150,6 +151,7 @@
components: components:
- type: InstantAction - type: InstantAction
checkCanInteract: false checkCanInteract: false
checkConsciousness: false
icon: { sprite: Interface/Actions/pai-map.rsi, state: icon } icon: { sprite: Interface/Actions/pai-map.rsi, state: icon }
event: !type:OpenUiActionEvent event: !type:OpenUiActionEvent
key: enum.StationMapUiKey.Key key: enum.StationMapUiKey.Key

View File

@@ -3,6 +3,7 @@
entity: ReinforcedWindow entity: ReinforcedWindow
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -17,6 +18,7 @@
entity: WallSolid entity: WallSolid
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -31,6 +33,7 @@
entity: WallReinforced entity: WallReinforced
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -45,6 +48,7 @@
entity: Window entity: Window
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -59,6 +63,7 @@
entity: Firelock entity: Firelock
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -73,6 +78,7 @@
entity: Grille entity: Grille
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -86,6 +92,7 @@
icon: Interface/VerbIcons/delete.svg.192dpi.png icon: Interface/VerbIcons/delete.svg.192dpi.png
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -104,6 +111,7 @@
entity: GasPipeStraight entity: GasPipeStraight
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -118,6 +126,7 @@
entity: GasPipeBend entity: GasPipeBend
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -132,6 +141,7 @@
entity: GasPipeTJunction entity: GasPipeTJunction
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -146,6 +156,7 @@
entity: GasPipeFourway entity: GasPipeFourway
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -160,6 +171,7 @@
entity: GasVentScrubber entity: GasVentScrubber
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -174,6 +186,7 @@
entity: GasVentPump entity: GasVentPump
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -188,6 +201,7 @@
entity: AirAlarm entity: AirAlarm
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -202,6 +216,7 @@
entity: FireAlarm entity: FireAlarm
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -216,6 +231,7 @@
entity: APCBasic entity: APCBasic
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -230,6 +246,7 @@
entity: CableApcExtension entity: CableApcExtension
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -244,6 +261,7 @@
entity: CableMV entity: CableMV
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -258,6 +276,7 @@
entity: CableHV entity: CableHV
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -272,6 +291,7 @@
entity: SubstationBasic entity: SubstationBasic
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -286,6 +306,7 @@
entity: Poweredlight entity: Poweredlight
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -300,6 +321,7 @@
entity: EmergencyLight entity: EmergencyLight
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -314,6 +336,7 @@
entity: SMESBasic entity: SMESBasic
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -328,6 +351,7 @@
entity: TableWood entity: TableWood
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -342,6 +366,7 @@
entity: Table entity: Table
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -356,6 +381,7 @@
entity: ChairWood entity: ChairWood
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -370,6 +396,7 @@
entity: Chair entity: Chair
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -384,6 +411,7 @@
entity: ChairOfficeLight entity: ChairOfficeLight
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -398,6 +426,7 @@
entity: StoolBar entity: StoolBar
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -412,6 +441,7 @@
entity: Stool entity: Stool
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -426,6 +456,7 @@
entity: Rack entity: Rack
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -440,6 +471,7 @@
entity: ChairOfficeDark entity: ChairOfficeDark
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -454,6 +486,7 @@
entity: LampGold entity: LampGold
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -468,6 +501,7 @@
entity: DisposalPipe entity: DisposalPipe
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -482,6 +516,7 @@
entity: DisposalBend entity: DisposalBend
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -496,6 +531,7 @@
entity: DisposalJunction entity: DisposalJunction
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -510,6 +546,7 @@
entity: DisposalJunctionFlipped entity: DisposalJunctionFlipped
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -524,6 +561,7 @@
entity: DisposalRouter entity: DisposalRouter
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -538,6 +576,7 @@
entity: DisposalRouterFlipped entity: DisposalRouterFlipped
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -552,6 +591,7 @@
entity: DisposalUnit entity: DisposalUnit
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -566,6 +606,7 @@
entity: DisposalTrunk entity: DisposalTrunk
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -580,6 +621,7 @@
entity: SignDisposalSpace entity: SignDisposalSpace
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -594,6 +636,7 @@
entity: Windoor entity: Windoor
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -608,6 +651,7 @@
entity: WindowDirectional entity: WindowDirectional
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -622,6 +666,7 @@
entity: WindowReinforcedDirectional entity: WindowReinforcedDirectional
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -636,6 +681,7 @@
entity: PlasmaWindowDirectional entity: PlasmaWindowDirectional
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -650,6 +696,7 @@
entity: Railing entity: Railing
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -664,6 +711,7 @@
entity: RailingCorner entity: RailingCorner
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -678,6 +726,7 @@
entity: RailingCornerSmall entity: RailingCornerSmall
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -693,6 +742,7 @@
name: RailingRound name: RailingRound
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -706,6 +756,7 @@
entity: AirlockMaintLocked entity: AirlockMaintLocked
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -720,6 +771,7 @@
entity: AirlockGlass entity: AirlockGlass
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -734,6 +786,7 @@
entity: AirlockServiceLocked entity: AirlockServiceLocked
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -748,6 +801,7 @@
entity: AirlockSecurityLocked entity: AirlockSecurityLocked
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -762,6 +816,7 @@
entity: AirlockCommand entity: AirlockCommand
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -776,6 +831,7 @@
entity: AirlockScience entity: AirlockScience
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -790,6 +846,7 @@
entity: AirlockMedical entity: AirlockMedical
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -804,6 +861,7 @@
entity: AirlockEngineering entity: AirlockEngineering
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -818,6 +876,7 @@
entity: AirlockCargo entity: AirlockCargo
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -837,6 +896,7 @@
state: bot_left state: bot_left
iconColor: '#EFB34196' iconColor: '#EFB34196'
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -857,6 +917,7 @@
state: delivery state: delivery
iconColor: '#EFB34196' iconColor: '#EFB34196'
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -877,6 +938,7 @@
state: warn_full state: warn_full
iconColor: '#EFB34196' iconColor: '#EFB34196'
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -897,6 +959,7 @@
state: halftile_overlay state: halftile_overlay
iconColor: '#EFB34196' iconColor: '#EFB34196'
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -917,6 +980,7 @@
state: halftile_overlay state: halftile_overlay
iconColor: '#334E6DC8' iconColor: '#334E6DC8'
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -937,6 +1001,7 @@
state: halftile_overlay state: halftile_overlay
iconColor: '#52B4E996' iconColor: '#52B4E996'
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -957,6 +1022,7 @@
state: halftile_overlay state: halftile_overlay
iconColor: '#9FED5896' iconColor: '#9FED5896'
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -977,6 +1043,7 @@
state: halftile_overlay state: halftile_overlay
iconColor: '#DE3A3A96' iconColor: '#DE3A3A96'
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -997,6 +1064,7 @@
state: halftile_overlay state: halftile_overlay
iconColor: '#D381C996' iconColor: '#D381C996'
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -1017,6 +1085,7 @@
state: halftile_overlay state: halftile_overlay
iconColor: '#A4610696' iconColor: '#A4610696'
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -1031,6 +1100,7 @@
icon: /Textures/Tiles/steel.png icon: /Textures/Tiles/steel.png
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -1044,6 +1114,7 @@
icon: /Textures/Tiles/plating.png icon: /Textures/Tiles/plating.png
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True
@@ -1059,6 +1130,7 @@
icon: /Textures/Tiles/cropped_parallax.png icon: /Textures/Tiles/cropped_parallax.png
keywords: [] keywords: []
checkCanInteract: False checkCanInteract: False
checkConsciousness: False
clientExclusive: True clientExclusive: True
autoPopulate: False autoPopulate: False
temporary: True temporary: True