-using Content.Shared.Actions.ActionTypes;
-
namespace Content.Client.Actions;
/// <summary>
-/// This event is raised when a user clicks on an empty action slot. Enables other systems to fill this slow.
+/// This event is raised when a user clicks on an empty action slot. Enables other systems to fill this slot.
/// </summary>
public sealed class FillActionSlotEvent : EntityEventArgs
{
- public ActionType? Action;
+ public EntityUid? Action;
}
using System.IO;
using System.Linq;
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using JetBrains.Annotations;
using Robust.Client.GameObjects;
using Robust.Client.Player;
+using Robust.Shared.Containers;
using Robust.Shared.ContentPack;
using Robust.Shared.GameStates;
using Robust.Shared.Input.Binding;
using Robust.Shared.Serialization.Markdown;
using Robust.Shared.Serialization.Markdown.Mapping;
using Robust.Shared.Serialization.Markdown.Sequence;
+using Robust.Shared.Serialization.Markdown.Value;
using Robust.Shared.Utility;
using YamlDotNet.RepresentationModel;
[UsedImplicitly]
public sealed class ActionsSystem : SharedActionsSystem
{
- public delegate void OnActionReplaced(ActionType existing, ActionType action);
+ public delegate void OnActionReplaced(EntityUid actionId);
[Dependency] private readonly IPlayerManager _playerManager = default!;
[Dependency] private readonly IResourceManager _resources = default!;
[Dependency] private readonly ISerializationManager _serialization = default!;
+ [Dependency] private readonly MetaDataSystem _metaData = default!;
- public event Action<ActionType>? ActionAdded;
- public event Action<ActionType>? ActionRemoved;
+ public event Action<EntityUid>? ActionAdded;
+ public event Action<EntityUid>? ActionRemoved;
public event OnActionReplaced? ActionReplaced;
public event Action? ActionsUpdated;
public event Action<ActionsComponent>? LinkActions;
public event Action? ClearAssignments;
public event Action<List<SlotAssignment>>? AssignSlot;
- public ActionsComponent? PlayerActions { get; private set; }
+ /// <summary>
+ /// Queue of entities with <see cref="ActionsComponent"/> that needs to be updated after
+ /// handling a state.
+ /// </summary>
+ private readonly Queue<EntityUid> _actionHoldersQueue = new();
public override void Initialize()
{
SubscribeLocalEvent<ActionsComponent, ComponentHandleState>(HandleComponentState);
}
- public override void Dirty(ActionType action)
+ public override void Dirty(EntityUid? actionId)
{
- if (_playerManager.LocalPlayer?.ControlledEntity != action.AttachedEntity)
+ var action = GetActionData(actionId);
+ if (_playerManager.LocalPlayer?.ControlledEntity != action?.AttachedEntity)
return;
- base.Dirty(action);
+ base.Dirty(actionId);
ActionsUpdated?.Invoke();
}
private void HandleComponentState(EntityUid uid, ActionsComponent component, ref ComponentHandleState args)
{
- if (args.Current is not ActionsComponentState state)
+ if (args.Current is not ActionsComponentState)
return;
- state.SortedActions ??= new SortedSet<ActionType>(state.Actions);
- var serverActions = state.SortedActions;
- var removed = new List<ActionType>();
+ _actionHoldersQueue.Enqueue(uid);
+ }
- foreach (var act in component.Actions.ToList())
+ protected override void AddActionInternal(EntityUid actionId, IContainer container)
+ {
+ // Sometimes the client receives actions from the server, before predicting that newly added components will add
+ // their own shared actions. Just in case those systems ever decided to directly access action properties (e.g.,
+ // action.Toggled), we will remove duplicates:
+ if (container.Contains(actionId))
{
- if (act.ClientExclusive)
- continue;
-
- if (!serverActions.TryGetValue(act, out var serverAct))
- {
- component.Actions.Remove(act);
- if (act.AutoRemove)
- removed.Add(act);
-
- continue;
- }
-
- act.CopyFrom(serverAct);
+ ActionReplaced?.Invoke(actionId);
}
-
- var added = new List<ActionType>();
-
- // Anything that remains is a new action
- foreach (var newAct in serverActions)
+ else
{
- if (component.Actions.Contains(newAct))
- continue;
-
- // We create a new action, not just sorting a reference to the state's action.
- var action = (ActionType) newAct.Clone();
- component.Actions.Add(action);
- added.Add(action);
+ container.Insert(actionId);
}
+ }
- if (_playerManager.LocalPlayer?.ControlledEntity != uid)
+ public override void AddAction(EntityUid holderId, EntityUid actionId, EntityUid? provider, ActionsComponent? holder = null, BaseActionComponent? action = null, bool dirty = true, IContainer? actionContainer = null)
+ {
+ if (!Resolve(holderId, ref holder, false))
return;
- foreach (var action in removed)
+ action ??= GetActionData(actionId);
+ if (action == null)
{
- ActionRemoved?.Invoke(action);
+ Log.Warning($"No {nameof(BaseActionComponent)} found on entity {actionId}");
+ return;
}
- foreach (var action in added)
- {
- ActionAdded?.Invoke(action);
- }
+ dirty &= !action.ClientExclusive;
+ base.AddAction(holderId, actionId, provider, holder, action, dirty, actionContainer);
- ActionsUpdated?.Invoke();
+ if (holderId == _playerManager.LocalPlayer?.ControlledEntity)
+ ActionAdded?.Invoke(actionId);
}
- protected override void AddActionInternal(ActionsComponent comp, ActionType action)
+ public override void RemoveAction(EntityUid holderId, EntityUid? actionId, ActionsComponent? comp = null, BaseActionComponent? action = null, bool dirty = true, ContainerManagerComponent? actionContainer = null)
{
- // Sometimes the client receives actions from the server, before predicting that newly added components will add
- // their own shared actions. Just in case those systems ever decided to directly access action properties (e.g.,
- // action.Toggled), we will remove duplicates:
- if (comp.Actions.TryGetValue(action, out var existing))
- {
- comp.Actions.Remove(existing);
- ActionReplaced?.Invoke(existing, action);
- }
-
- comp.Actions.Add(action);
- }
+ if (GameTiming.ApplyingState)
+ return;
- public override void AddAction(EntityUid uid, ActionType action, EntityUid? provider, ActionsComponent? comp = null, bool dirty = true)
- {
- if (!Resolve(uid, ref comp, false))
+ if (!Resolve(holderId, ref comp, false))
return;
- dirty &= !action.ClientExclusive;
- base.AddAction(uid, action, provider, comp, dirty);
+ if (actionId == null)
+ return;
- if (uid == _playerManager.LocalPlayer?.ControlledEntity)
- ActionAdded?.Invoke(action);
- }
+ action ??= GetActionData(actionId);
- public override void RemoveAction(EntityUid uid, ActionType action, ActionsComponent? comp = null, bool dirty = true)
- {
- if (GameTiming.ApplyingState && !action.ClientExclusive)
+ if (action is { ClientExclusive: false })
return;
- if (!Resolve(uid, ref comp, false))
+ dirty &= !action?.ClientExclusive ?? true;
+ base.RemoveAction(holderId, actionId, comp, action, dirty, actionContainer);
+
+ if (_playerManager.LocalPlayer?.ControlledEntity != holderId)
return;
- dirty &= !action.ClientExclusive;
- base.RemoveAction(uid, action, comp, dirty);
+ if (action == null || action.AutoRemove)
+ ActionRemoved?.Invoke(actionId.Value);
+ }
+
+ public IEnumerable<(EntityUid Id, BaseActionComponent Comp)> GetClientActions()
+ {
+ if (_playerManager.LocalPlayer?.ControlledEntity is not { } user)
+ return Enumerable.Empty<(EntityUid, BaseActionComponent)>();
- if (action.AutoRemove && uid == _playerManager.LocalPlayer?.ControlledEntity)
- ActionRemoved?.Invoke(action);
+ return GetActions(user);
}
private void OnPlayerAttached(EntityUid uid, ActionsComponent component, PlayerAttachedEvent args)
public void UnlinkAllActions()
{
- PlayerActions = null;
UnlinkActions?.Invoke();
}
public void LinkAllActions(ActionsComponent? actions = null)
{
- var player = _playerManager.LocalPlayer?.ControlledEntity;
- if (player == null || !Resolve(player.Value, ref actions, false))
+ if (_playerManager.LocalPlayer?.ControlledEntity is not { } user ||
+ !Resolve(user, ref actions, false))
{
return;
}
LinkActions?.Invoke(actions);
- PlayerActions = actions;
}
public override void Shutdown()
CommandBinds.Unregister<ActionsSystem>();
}
- public void TriggerAction(ActionType? action)
+ public void TriggerAction(EntityUid actionId, BaseActionComponent action)
{
- if (PlayerActions == null || action == null || _playerManager.LocalPlayer?.ControlledEntity is not { Valid: true } user)
+ if (_playerManager.LocalPlayer?.ControlledEntity is not { } user ||
+ !TryComp(user, out ActionsComponent? actions))
+ {
return;
+ }
if (action.Provider != null && Deleted(action.Provider))
return;
- if (action is not InstantAction instantAction)
- {
+ if (action is not InstantActionComponent instantAction)
return;
- }
if (action.ClientExclusive)
{
if (instantAction.Event != null)
instantAction.Event.Performer = user;
- PerformAction(user, PlayerActions, instantAction, instantAction.Event, GameTiming.CurTime);
+ PerformAction(user, actions, actionId, instantAction, instantAction.Event, GameTiming.CurTime);
}
else
{
- var request = new RequestPerformActionEvent(instantAction);
+ var request = new RequestPerformActionEvent(actionId);
EntityManager.RaisePredictiveEvent(request);
}
}
/// </summary>
public void LoadActionAssignments(string path, bool userData)
{
- if (PlayerActions == null)
+ if (_playerManager.LocalPlayer?.ControlledEntity is not { } user)
return;
var file = new ResPath(path).ToRootedPath();
if (!map.TryGet("action", out var actionNode))
continue;
- var action = _serialization.Read<ActionType>(actionNode, notNullableOverride: true);
+ var action = _serialization.Read<BaseActionComponent>(actionNode, notNullableOverride: true);
+ var actionId = Spawn(null);
+ AddComp<Component>(actionId, action);
+ AddAction(user, actionId, null);
- if (PlayerActions.Actions.TryGetValue(action, out var existingAction))
- {
- existingAction.CopyFrom(action);
- action = existingAction;
- }
- else
- {
- PlayerActions.Actions.Add(action);
- }
+ if (map.TryGet<ValueDataNode>("name", out var nameNode))
+ _metaData.SetEntityName(actionId, nameNode.Value);
if (!map.TryGet("assignments", out var assignmentNode))
continue;
foreach (var index in nodeAssignments)
{
- var assignment = new SlotAssignment(index.Hotbar, index.Slot, action);
+ var assignment = new SlotAssignment(index.Hotbar, index.Slot, actionId);
assignments.Add(assignment);
}
}
AssignSlot?.Invoke(assignments);
}
- public record struct SlotAssignment(byte Hotbar, byte Slot, ActionType Action);
+ public override void Update(float frameTime)
+ {
+ base.Update(frameTime);
+
+ if (_actionHoldersQueue.Count == 0)
+ return;
+
+ var removed = new List<EntityUid>();
+ var added = new List<EntityUid>();
+ var query = GetEntityQuery<ActionsComponent>();
+ var queue = new Queue<EntityUid>(_actionHoldersQueue);
+ _actionHoldersQueue.Clear();
+
+ while (queue.TryDequeue(out var holderId))
+ {
+ if (!TryGetContainer(holderId, out var container) || container.ExpectedEntities.Count > 0)
+ {
+ _actionHoldersQueue.Enqueue(holderId);
+ continue;
+ }
+
+ if (!query.TryGetComponent(holderId, out var holder))
+ continue;
+
+ removed.Clear();
+ added.Clear();
+
+ foreach (var (act, data) in holder.OldClientActions.ToList())
+ {
+ if (data.ClientExclusive)
+ continue;
+
+ if (!container.Contains(act))
+ {
+ holder.OldClientActions.Remove(act);
+ if (data.AutoRemove)
+ removed.Add(act);
+ }
+ }
+
+ // Anything that remains is a new action
+ foreach (var newAct in container.ContainedEntities)
+ {
+ if (!holder.OldClientActions.ContainsKey(newAct))
+ added.Add(newAct);
+
+ if (TryGetActionData(newAct, out var serverData))
+ holder.OldClientActions[newAct] = new ActionMetaData(serverData.ClientExclusive, serverData.AutoRemove);
+ }
+
+ if (_playerManager.LocalPlayer?.ControlledEntity != holderId)
+ return;
+
+ foreach (var action in removed)
+ {
+ ActionRemoved?.Invoke(action);
+ }
+
+ foreach (var action in added)
+ {
+ ActionAdded?.Invoke(action);
+ }
+
+ ActionsUpdated?.Invoke();
+ }
+ }
+
+ public record struct SlotAssignment(byte Hotbar, byte Slot, EntityUid ActionId);
}
}
-using System;
-using Content.Client.Stylesheets;
-using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
+using Content.Client.Stylesheets;
using Robust.Client.UserInterface.Controls;
-using Robust.Shared.IoC;
using Robust.Shared.Timing;
using Robust.Shared.Utility;
using static Robust.Client.UserInterface.Controls.BoxContainer;
using Content.Client.Actions;
using Content.Client.Decals.Overlays;
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Decals;
using Robust.Client.GameObjects;
using Robust.Client.Graphics;
using Robust.Shared.Input;
using Robust.Shared.Input.Binding;
using Robust.Shared.Prototypes;
-using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Client.Decals;
[Dependency] private readonly IOverlayManager _overlay = default!;
[Dependency] private readonly IPrototypeManager _protoMan = default!;
[Dependency] private readonly InputSystem _inputSystem = default!;
+ [Dependency] private readonly MetaDataSystem _metaData = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
[Dependency] private readonly SpriteSystem _sprite = default!;
Cleanable = _cleanable,
};
- ev.Action = new WorldTargetAction()
+ var actionId = Spawn(null);
+ AddComp(actionId, new WorldTargetActionComponent
{
- DisplayName = $"{_decalId} ({_decalColor.ToHex()}, {(int) _decalAngle.Degrees})", // non-unique actions may be considered duplicates when saving/loading.
+ // non-unique actions may be considered duplicates when saving/loading.
Icon = decalProto.Sprite,
Repeat = true,
ClientExclusive = true,
Range = -1,
Event = actionEvent,
IconColor = _decalColor,
- };
+ });
+
+ _metaData.SetEntityName(actionId, $"{_decalId} ({_decalColor.ToHex()}, {(int) _decalAngle.Degrees})");
+
+ ev.Action = actionId;
}
public override void Shutdown()
_inputSystem.SetEntityContextActive();
}
}
-
-public sealed partial class PlaceDecalActionEvent : WorldTargetActionEvent
-{
- [DataField("decalId", customTypeSerializer:typeof(PrototypeIdSerializer<DecalPrototype>), required:true)]
- public string DecalId = string.Empty;
-
- [DataField("color")]
- public Color Color;
-
- [DataField("rotation")]
- public double Rotation;
-
- [DataField("snap")]
- public bool Snap;
-
- [DataField("zIndex")]
- public int ZIndex;
-
- [DataField("cleanable")]
- public bool Cleanable;
-}
using Content.Shared.Actions;
using Content.Shared.Ghost;
using Content.Shared.Popups;
-using JetBrains.Annotations;
using Robust.Client.Console;
using Robust.Client.GameObjects;
using Robust.Client.Graphics;
using Robust.Client.Player;
-using Robust.Shared.GameStates;
namespace Content.Client.Ghost
{
sprite.Visible = GhostVisibility;
}
- _actions.AddAction(uid, component.ToggleLightingAction, null);
- _actions.AddAction(uid, component.ToggleFoVAction, null);
- _actions.AddAction(uid, component.ToggleGhostsAction, null);
+ _actions.AddAction(uid, ref component.ToggleLightingActionEntity, component.ToggleGhostsAction);
+ _actions.AddAction(uid, ref component.ToggleFoVActionEntity, component.ToggleFoVAction);
+ _actions.AddAction(uid, ref component.ToggleGhostsActionEntity, component.ToggleGhostsAction);
}
private void OnToggleLighting(EntityUid uid, GhostComponent component, ToggleLightingActionEvent args)
private void OnGhostRemove(EntityUid uid, GhostComponent component, ComponentRemove args)
{
- _actions.RemoveAction(uid, component.ToggleLightingAction);
- _actions.RemoveAction(uid, component.ToggleFoVAction);
- _actions.RemoveAction(uid, component.ToggleGhostsAction);
+ _actions.RemoveAction(uid, component.ToggleLightingActionEntity);
+ _actions.RemoveAction(uid, component.ToggleFoVActionEntity);
+ _actions.RemoveAction(uid, component.ToggleGhostsActionEntity);
if (uid != _playerManager.LocalPlayer?.ControlledEntity)
return;
using Content.Client.Actions;
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
+using Content.Shared.Mapping;
using Content.Shared.Maps;
using Robust.Client.Placement;
using Robust.Shared.Map;
using Robust.Shared.Utility;
+using static Robust.Shared.Utility.SpriteSpecifier;
namespace Content.Client.Mapping;
[Dependency] private readonly IPlacementManager _placementMan = default!;
[Dependency] private readonly ITileDefinitionManager _tileMan = default!;
[Dependency] private readonly ActionsSystem _actionsSystem = default!;
+ [Dependency] private readonly MetaDataSystem _metaData = default!;
/// <summary>
/// The icon to use for space tiles.
/// </summary>
- private readonly SpriteSpecifier _spaceIcon = new SpriteSpecifier.Texture(new ("Tiles/cropped_parallax.png"));
+ private readonly SpriteSpecifier _spaceIcon = new Texture(new ("Tiles/cropped_parallax.png"));
/// <summary>
/// The icon to use for entity-eraser.
/// </summary>
- private readonly SpriteSpecifier _deleteIcon = new SpriteSpecifier.Texture(new ("Interface/VerbIcons/delete.svg.192dpi.png"));
+ private readonly SpriteSpecifier _deleteIcon = new Texture(new ("Interface/VerbIcons/delete.svg.192dpi.png"));
public string DefaultMappingActions = "/mapping_actions.yml";
else
return;
+ InstantActionComponent action;
+ string name;
+
if (tileDef != null)
{
if (tileDef is not ContentTileDefinition contentTileDef)
var tileIcon = contentTileDef.IsSpace
? _spaceIcon
- : new SpriteSpecifier.Texture(contentTileDef.Sprite!.Value);
+ : new Texture(contentTileDef.Sprite!.Value);
- ev.Action = new InstantAction()
+ action = new InstantActionComponent
{
ClientExclusive = true,
CheckCanInteract = false,
Event = actionEvent,
- DisplayName = Loc.GetString(tileDef.Name),
Icon = tileIcon
};
- return;
+ name = Loc.GetString(tileDef.Name);
}
-
- if (actionEvent.Eraser)
+ else if (actionEvent.Eraser)
{
- ev.Action = new InstantAction()
+ action = new InstantActionComponent
{
ClientExclusive = true,
CheckCanInteract = false,
Event = actionEvent,
- DisplayName = "action-name-mapping-erase",
Icon = _deleteIcon,
};
- return;
+ name = Loc.GetString("action-name-mapping-erase");
}
+ else
+ {
+ if (string.IsNullOrWhiteSpace(actionEvent.EntityType))
+ return;
- if (string.IsNullOrWhiteSpace(actionEvent.EntityType))
- return;
+ action = new InstantActionComponent
+ {
+ ClientExclusive = true,
+ CheckCanInteract = false,
+ Event = actionEvent,
+ Icon = new EntityPrototype(actionEvent.EntityType),
+ };
- ev.Action = new InstantAction()
- {
- ClientExclusive = true,
- CheckCanInteract = false,
- Event = actionEvent,
- DisplayName = actionEvent.EntityType,
- Icon = new SpriteSpecifier.EntityPrototype(actionEvent.EntityType),
- };
+ name = actionEvent.EntityType;
+ }
+
+ var actionId = Spawn(null);
+ AddComp<Component>(actionId, action);
+ _metaData.SetEntityName(actionId, name);
+
+ ev.Action = actionId;
}
private void OnStartPlacementAction(StartPlacementActionEvent args)
_placementMan.ToggleEraser();
}
}
-
-public sealed partial class StartPlacementActionEvent : InstantActionEvent
-{
- [DataField("entityType")]
- public string? EntityType;
-
- [DataField("tileId")]
- public string? TileId;
-
- [DataField("placementOption")]
- public string? PlacementOption;
-
- [DataField("eraser")]
- public bool Eraser;
-}
using Content.Client.Items;
using Content.Client.Message;
using Content.Client.Stylesheets;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.DeviceNetwork.Components;
using Content.Shared.DeviceNetwork.Systems;
using Content.Shared.Input;
{
[Dependency] private readonly IPlayerManager _playerManager = default!;
[Dependency] private readonly IOverlayManager _overlay = default!;
- [Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly ActionsSystem _actions = default!;
[Dependency] private readonly IInputManager _inputManager = default!;
- private const string Action = "ClearNetworkLinkOverlays";
+ [ValidatePrototypeId<EntityPrototype>]
+ private const string Action = "ActionClearNetworkLinkOverlays";
public override void Initialize()
{
if (!EntityQuery<NetworkConfiguratorActiveLinkOverlayComponent>().Any())
{
_overlay.RemoveOverlay<NetworkConfiguratorLinkOverlay>();
- _actions.RemoveAction(_playerManager.LocalPlayer.ControlledEntity.Value, _prototypeManager.Index<InstantActionPrototype>(Action));
+ _actions.RemoveAction(_playerManager.LocalPlayer.ControlledEntity.Value, Action);
}
if (!_overlay.HasOverlay<NetworkConfiguratorLinkOverlay>())
{
_overlay.AddOverlay(new NetworkConfiguratorLinkOverlay());
- _actions.AddAction(_playerManager.LocalPlayer.ControlledEntity.Value, new InstantAction(_prototypeManager.Index<InstantActionPrototype>(Action)), null);
+ _actions.AddAction(_playerManager.LocalPlayer.ControlledEntity.Value, Spawn(Action), null);
}
EnsureComp<NetworkConfiguratorActiveLinkOverlayComponent>(component.ActiveDeviceList.Value);
if (_playerManager.LocalPlayer?.ControlledEntity != null)
{
- _actions.RemoveAction(_playerManager.LocalPlayer.ControlledEntity.Value, _prototypeManager.Index<InstantActionPrototype>(Action));
+ _actions.RemoveAction(_playerManager.LocalPlayer.ControlledEntity.Value, Action);
}
}
+using System.Linq;
+using Content.Client.Actions;
using Content.Client.Message;
+using Content.Shared.FixedPoint;
using Content.Shared.Store;
using Robust.Client.AutoGenerated;
using Robust.Client.GameObjects;
+using Robust.Client.Graphics;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.CustomControls;
using Robust.Client.UserInterface.XAML;
using Robust.Shared.Prototypes;
-using Robust.Client.Graphics;
-using Content.Shared.Actions.ActionTypes;
-using System.Linq;
-using Content.Shared.FixedPoint;
namespace Content.Client.Store.Ui;
}
else if (listing.ProductAction != null)
{
- var action = _prototypeManager.Index<InstantActionPrototype>(listing.ProductAction);
- if (action.Icon != null)
+ var actionId = _entityManager.Spawn(listing.ProductAction);
+ if (_entityManager.System<ActionsSystem>().TryGetActionData(actionId, out var action) &&
+ action.Icon != null)
+ {
texture = spriteSys.Frame0(action.Icon);
+ }
}
var newListing = new StoreListingControl(listingName, listingDesc, GetListingPriceString(listing), canBuy, texture);
using Content.Client.UserInterface.Systems.Actions.Windows;
using Content.Client.UserInterface.Systems.Gameplay;
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Input;
using Robust.Client.GameObjects;
using Robust.Client.Graphics;
/// <summary>
/// Action slot we are currently selecting a target for.
/// </summary>
- public TargetedAction? SelectingTargetFor { get; private set; }
+ public EntityUid? SelectingTargetFor { get; private set; }
public ActionUIController()
{
/// </summary>
private bool TargetingOnUse(in PointerInputCmdArgs args)
{
- if (!_timing.IsFirstTimePredicted || _actionsSystem == null || SelectingTargetFor is not { } action)
+ if (!_timing.IsFirstTimePredicted || _actionsSystem == null || SelectingTargetFor is not { } actionId)
return false;
if (_playerManager.LocalPlayer?.ControlledEntity is not { } user)
if (!EntityManager.TryGetComponent(user, out ActionsComponent? comp))
return false;
+ if (!_actionsSystem.TryGetActionData(actionId, out var baseAction) ||
+ baseAction is not BaseTargetActionComponent action)
+ {
+ return false;
+ }
+
// Is the action currently valid?
if (!action.Enabled
|| action.Charges is 0
switch (action)
{
- case WorldTargetAction mapTarget:
- return TryTargetWorld(args, mapTarget, user, comp) || !action.InteractOnMiss;
+ case WorldTargetActionComponent mapTarget:
+ return TryTargetWorld(args, actionId, mapTarget, user, comp) || !mapTarget.InteractOnMiss;
- case EntityTargetAction entTarget:
- return TryTargetEntity(args, entTarget, user, comp) || !action.InteractOnMiss;
+ case EntityTargetActionComponent entTarget:
+ return TryTargetEntity(args, actionId, entTarget, user, comp) || !entTarget.InteractOnMiss;
default:
- Logger.Error($"Unknown targeting action: {action.GetType()}");
+ Logger.Error($"Unknown targeting action: {actionId.GetType()}");
return false;
}
}
- private bool TryTargetWorld(in PointerInputCmdArgs args, WorldTargetAction action, EntityUid user, ActionsComponent actionComp)
+ private bool TryTargetWorld(in PointerInputCmdArgs args, EntityUid actionId, WorldTargetActionComponent action, EntityUid user, ActionsComponent actionComp)
{
if (_actionsSystem == null)
return false;
action.Event.Performer = user;
}
- _actionsSystem.PerformAction(user, actionComp, action, action.Event, _timing.CurTime);
+ _actionsSystem.PerformAction(user, actionComp, actionId, action, action.Event, _timing.CurTime);
}
else
- EntityManager.RaisePredictiveEvent(new RequestPerformActionEvent(action, coords));
+ EntityManager.RaisePredictiveEvent(new RequestPerformActionEvent(actionId, coords));
if (!action.Repeat)
StopTargeting();
return true;
}
- private bool TryTargetEntity(in PointerInputCmdArgs args, EntityTargetAction action, EntityUid user, ActionsComponent actionComp)
+ private bool TryTargetEntity(in PointerInputCmdArgs args, EntityUid actionId, EntityTargetActionComponent action, EntityUid user, ActionsComponent actionComp)
{
if (_actionsSystem == null)
return false;
action.Event.Performer = user;
}
- _actionsSystem.PerformAction(user, actionComp, action, action.Event, _timing.CurTime);
+ _actionsSystem.PerformAction(user, actionComp, actionId, action, action.Event, _timing.CurTime);
}
else
- EntityManager.RaisePredictiveEvent(new RequestPerformActionEvent(action, args.EntityUid));
+ EntityManager.RaisePredictiveEvent(new RequestPerformActionEvent(actionId, args.EntityUid));
if (!action.Repeat)
StopTargeting();
private void TriggerAction(int index)
{
- if (CurrentPage[index] is not { } type)
+ if (_actionsSystem == null ||
+ CurrentPage[index] is not { } actionId ||
+ !_actionsSystem.TryGetActionData(actionId, out var baseAction))
+ {
return;
+ }
- if (type is TargetedAction action)
- ToggleTargeting(action);
+ if (baseAction is BaseTargetActionComponent action)
+ ToggleTargeting(actionId, action);
else
- _actionsSystem?.TriggerAction(type);
+ _actionsSystem?.TriggerAction(actionId, baseAction);
}
private void ChangePage(int index)
ChangePage(_currentPageIndex + 1);
}
- private void AppendAction(ActionType action)
+ private void AppendAction(EntityUid action)
{
if (_container == null)
return;
foreach (var button in _container.GetButtons())
{
- if (button.Action != null)
+ if (button.ActionId != null)
continue;
SetAction(button, action);
}
}
- private void OnActionAdded(ActionType action)
+ private void OnActionAdded(EntityUid actionId)
{
+ if (_actionsSystem == null ||
+ !_actionsSystem.TryGetActionData(actionId, out var action))
+ {
+ return;
+ }
+
// if the action is toggled when we add it, start targeting
- if (action is TargetedAction targetAction && action.Toggled)
- StartTargeting(targetAction);
+ if (action is BaseTargetActionComponent targetAction && action.Toggled)
+ StartTargeting(actionId, targetAction);
foreach (var page in _pages)
{
for (var i = 0; i < page.Size; i++)
{
- if (page[i] == action)
+ if (page[i] == actionId)
{
return;
}
}
}
- AppendAction(action);
+ AppendAction(actionId);
SearchAndDisplay();
}
- private void OnActionRemoved(ActionType action)
+ private void OnActionRemoved(EntityUid actionId)
{
if (_container == null)
return;
// stop targeting if the action is removed
- if (action == SelectingTargetFor)
+ if (actionId == SelectingTargetFor)
StopTargeting();
foreach (var button in _container.GetButtons())
{
- if (button.Action == action)
+ if (button.ActionId == actionId)
{
SetAction(button, null);
}
{
for (var i = 0; i < page.Size; i++)
{
- if (page[i] == action)
+ if (page[i] == actionId)
{
page[i] = null;
}
SearchAndDisplay();
}
- private void OnActionReplaced(ActionType existing, ActionType action)
+ private void OnActionReplaced(EntityUid actionId)
{
if (_container == null)
return;
foreach (var button in _container.GetButtons())
{
- if (button.Action == existing)
- button.UpdateData(action);
+ if (button.ActionId == actionId)
+ button.UpdateData(actionId);
}
}
}
}
- private bool MatchesFilter(ActionType action, Filters filter)
+ private bool MatchesFilter(BaseActionComponent action, Filters filter)
{
return filter switch
{
Filters.Enabled => action.Enabled,
Filters.Item => action.Provider != null && action.Provider != _playerManager.LocalPlayer?.ControlledEntity,
Filters.Innate => action.Provider == null || action.Provider == _playerManager.LocalPlayer?.ControlledEntity,
- Filters.Instant => action is InstantAction,
- Filters.Targeted => action is TargetedAction,
+ Filters.Instant => action is InstantActionComponent,
+ Filters.Targeted => action is BaseTargetActionComponent,
_ => throw new ArgumentOutOfRangeException(nameof(filter), filter, null)
};
}
_window.ResultsGrid.RemoveAllChildren();
}
- private void PopulateActions(IEnumerable<ActionType> actions)
+ private void PopulateActions(IEnumerable<(EntityUid Id, BaseActionComponent Comp)> actions)
{
if (_window == null)
return;
{
var button = new ActionButton {Locked = true};
- button.UpdateData(action);
+ button.UpdateData(action.Id);
button.ActionPressed += OnWindowActionPressed;
button.ActionUnpressed += OnWindowActionUnPressed;
button.ActionFocusExited += OnWindowActionFocusExisted;
}
}
- private void SearchAndDisplay(ActionsComponent? component = null)
+ private void SearchAndDisplay()
{
- if (_window == null)
+ if (_window is not { Disposed: false } || _actionsSystem == null)
return;
var search = _window.SearchBar.Text;
var filters = _window.FilterButton.SelectedKeys;
-
- IEnumerable<ActionType>? actions = (component ?? _actionsSystem?.PlayerActions)?.Actions;
- actions ??= Array.Empty<ActionType>();
+ var actions = _actionsSystem.GetClientActions();
if (filters.Count == 0 && string.IsNullOrWhiteSpace(search))
{
actions = actions.Where(action =>
{
- if (filters.Count > 0 && filters.Any(filter => !MatchesFilter(action, filter)))
+ if (filters.Count > 0 && filters.Any(filter => !MatchesFilter(action.Comp, filter)))
return false;
- if (action.Keywords.Any(keyword => search.Contains(keyword, StringComparison.OrdinalIgnoreCase)))
+ if (action.Comp.Keywords.Any(keyword => search.Contains(keyword, StringComparison.OrdinalIgnoreCase)))
return true;
- if (action.DisplayName.Contains(search, StringComparison.OrdinalIgnoreCase))
+ var name = EntityManager.GetComponent<MetaDataComponent>(action.Id).EntityName;
+ if (name.Contains(search, StringComparison.OrdinalIgnoreCase))
return true;
- if (action.Provider == null || action.Provider == _playerManager.LocalPlayer?.ControlledEntity)
+ if (action.Comp.Provider == null || action.Comp.Provider == _playerManager.LocalPlayer?.ControlledEntity)
return false;
- var name = EntityManager.GetComponent<MetaDataComponent>(action.Provider.Value).EntityName;
- return name.Contains(search, StringComparison.OrdinalIgnoreCase);
+ var providerName = EntityManager.GetComponent<MetaDataComponent>(action.Comp.Provider.Value).EntityName;
+ return providerName.Contains(search, StringComparison.OrdinalIgnoreCase);
});
PopulateActions(actions);
}
- private void SetAction(ActionButton button, ActionType? type)
+ private void SetAction(ActionButton button, EntityUid? actionId)
{
int position;
- if (type == null)
+ if (actionId == null)
{
button.ClearData();
if (_container?.TryGetButtonIndex(button, out position) ?? false)
{
- CurrentPage[position] = type;
+ CurrentPage[position] = actionId;
}
return;
}
- if (button.TryReplaceWith(type) &&
+ if (button.TryReplaceWith(actionId.Value) &&
_container != null &&
_container.TryGetButtonIndex(button, out position))
{
- CurrentPage[position] = type;
+ CurrentPage[position] = actionId;
}
}
{
if (UIManager.CurrentlyHovered is ActionButton button)
{
- if (!_menuDragHelper.IsDragging || _menuDragHelper.Dragged?.Action is not { } type)
+ if (!_menuDragHelper.IsDragging || _menuDragHelper.Dragged?.ActionId is not { } type)
{
_menuDragHelper.EndDrag();
return;
{
if (args.Function == EngineKeyFunctions.UIClick)
{
- if (button.Action == null)
+ if (button.ActionId == null)
{
var ev = new FillActionSlotEvent();
EntityManager.EventBus.RaiseEvent(EventSource.Local, ev);
private void OnActionUnpressed(GUIBoundKeyEventArgs args, ActionButton button)
{
- if (args.Function != EngineKeyFunctions.UIClick)
+ if (args.Function != EngineKeyFunctions.UIClick || _actionsSystem == null)
return;
if (UIManager.CurrentlyHovered == button)
{
_menuDragHelper.EndDrag();
- if (button.Action is TargetedAction action)
+ if (_actionsSystem.TryGetActionData(button.ActionId, out var baseAction))
{
- // for target actions, we go into "select target" mode, we don't
- // message the server until we actually pick our target.
+ if (baseAction is BaseTargetActionComponent action)
+ {
+ // for target actions, we go into "select target" mode, we don't
+ // message the server until we actually pick our target.
- // if we're clicking the same thing we're already targeting for, then we simply cancel
- // targeting
- ToggleTargeting(action);
- return;
- }
+ // if we're clicking the same thing we're already targeting for, then we simply cancel
+ // targeting
+ ToggleTargeting(button.ActionId.Value, action);
+ return;
+ }
- _actionsSystem?.TriggerAction(button.Action);
+ _actionsSystem?.TriggerAction(button.ActionId.Value, baseAction);
+ }
}
else
{
private bool OnMenuBeginDrag()
{
- if (_menuDragHelper.Dragged?.Action is { } action)
+ if (_actionsSystem != null && _actionsSystem.TryGetActionData(_menuDragHelper.Dragged?.ActionId, out var action))
{
if (action.EntityIcon != null)
{
{
foreach (ref var assignment in CollectionsMarshal.AsSpan(assignments))
{
- _pages[assignment.Hotbar][assignment.Slot] = assignment.Action;
+ _pages[assignment.Hotbar][assignment.Slot] = assignment.ActionId;
}
_container?.SetActionData(_pages[_currentPageIndex]);
{
LoadDefaultActions(component);
_container?.SetActionData(_pages[DefaultPageIndex]);
- SearchAndDisplay(component);
+ SearchAndDisplay();
}
private void OnComponentUnlinked()
private void LoadDefaultActions(ActionsComponent component)
{
- var actions = component.Actions.Where(actionType => actionType.AutoPopulate).ToList();
+ if (_actionsSystem == null)
+ return;
+
+ var actions = _actionsSystem.GetClientActions().Where(action => action.Comp.AutoPopulate).ToList();
var offset = 0;
var totalPages = _pages.Count;
var actionIndex = slot + offset;
if (actionIndex < actions.Count)
{
- page[slot] = actions[slot + offset];
+ page[slot] = actions[slot + offset].Id;
}
else
{
/// If currently targeting with no slot or a different slot, switches to
/// targeting with the specified slot.
/// </summary>
- private void ToggleTargeting(TargetedAction action)
+ private void ToggleTargeting(EntityUid actionId, BaseTargetActionComponent action)
{
- if (SelectingTargetFor == action)
+ if (SelectingTargetFor == actionId)
{
StopTargeting();
return;
}
- StartTargeting(action);
+ StartTargeting(actionId, action);
}
/// <summary>
/// Puts us in targeting mode, where we need to pick either a target point or entity
/// </summary>
- private void StartTargeting(TargetedAction action)
+ private void StartTargeting(EntityUid actionId, BaseTargetActionComponent action)
{
// If we were targeting something else we should stop
StopTargeting();
- SelectingTargetFor = action;
+ SelectingTargetFor = actionId;
// override "held-item" overlay
if (action.TargetingIndicator && _overlays.TryGetOverlay<ShowHandItemOverlay>(out var handOverlay))
// - Add a yes/no checkmark where the HandItemOverlay usually is
// Highlight valid entity targets
- if (action is not EntityTargetAction entityAction)
+ if (action is not EntityTargetActionComponent entityAction)
return;
Func<EntityUid, bool>? predicate = null;
//TODO: Serialize this shit
private sealed class ActionPage
{
- private readonly ActionType?[] _data;
+ private readonly EntityUid?[] _data;
public ActionPage(int size)
{
- _data = new ActionType?[size];
+ _data = new EntityUid?[size];
}
- public ActionType? this[int index]
+ public EntityUid? this[int index]
{
get => _data[index];
set => _data[index] = value;
}
- public static implicit operator ActionType?[](ActionPage p)
+ public static implicit operator EntityUid?[](ActionPage p)
{
return p._data.ToArray();
}
using System.Numerics;
+using Content.Client.Actions;
using Content.Client.Actions.UI;
using Content.Client.Cooldown;
using Content.Client.Stylesheets;
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Robust.Client.GameObjects;
using Robust.Client.Graphics;
using Robust.Client.UserInterface;
public sealed class ActionButton : Control
{
+ private IEntityManager? _entities;
+
private ActionUIController Controller => UserInterfaceManager.GetUIController<ActionUIController>();
+ private IEntityManager Entities => _entities ??= IoCManager.Resolve<IEntityManager>();
+ private ActionsSystem Actions => Entities.System<ActionsSystem>();
private bool _beingHovered;
private bool _depressed;
private bool _toggled;
- private bool _spriteViewDirty;
public BoundKeyFunction? KeyBind
{
private readonly SpriteView _smallItemSpriteView;
private readonly SpriteView _bigItemSpriteView;
- public ActionType? Action { get; private set; }
+ public EntityUid? ActionId { get; private set; }
public bool Locked { get; set; }
public event Action<GUIBoundKeyEventArgs, ActionButton>? ActionPressed;
private Control? SupplyTooltip(Control sender)
{
- if (Action == null)
+ if (!Entities.TryGetComponent(ActionId, out MetaDataComponent? metadata))
return null;
- var name = FormattedMessage.FromMarkupPermissive(Loc.GetString(Action.DisplayName));
- var decr = FormattedMessage.FromMarkupPermissive(Loc.GetString(Action.Description));
+ var name = FormattedMessage.FromMarkupPermissive(Loc.GetString(metadata.EntityName));
+ var decr = FormattedMessage.FromMarkupPermissive(Loc.GetString(metadata.EntityDescription));
return new ActionAlertTooltip(name, decr);
}
private void UpdateItemIcon()
{
- var entityManager = IoCManager.Resolve<IEntityManager>();
- if (Action?.EntityIcon != null && !entityManager.EntityExists(Action.EntityIcon))
- {
- // This is almost certainly because a player received/processed their own actions component state before
- // being send the entity in their inventory that enabled this action.
-
- // Defer updating icons to the next FrameUpdate().
- _spriteViewDirty = true;
- return;
- }
-
- if (Action?.EntityIcon is not { } entity || !entityManager.HasComponent<SpriteComponent>(entity))
+ if (!Actions.TryGetActionData(ActionId, out var action) ||
+ action is not { EntityIcon: { } entity } ||
+ !Entities.HasComponent<SpriteComponent>(entity))
{
_bigItemSpriteView.Visible = false;
_bigItemSpriteView.SetEntity(null);
}
else
{
- switch (Action.ItemIconStyle)
+ switch (action.ItemIconStyle)
{
case ItemActionIconStyle.BigItem:
_bigItemSpriteView.Visible = true;
private void SetActionIcon(Texture? texture)
{
- if (texture == null || Action == null)
+ if (!Actions.TryGetActionData(ActionId, out var action) || texture == null)
{
_bigActionIcon.Texture = null;
_bigActionIcon.Visible = false;
_smallActionIcon.Texture = null;
_smallActionIcon.Visible = false;
}
- else if (Action.EntityIcon != null && Action.ItemIconStyle == ItemActionIconStyle.BigItem)
+ else if (action.EntityIcon != null && action.ItemIconStyle == ItemActionIconStyle.BigItem)
{
_smallActionIcon.Texture = texture;
- _smallActionIcon.Modulate = Action.IconColor;
+ _smallActionIcon.Modulate = action.IconColor;
_smallActionIcon.Visible = true;
_bigActionIcon.Texture = null;
_bigActionIcon.Visible = false;
else
{
_bigActionIcon.Texture = texture;
- _bigActionIcon.Modulate = Action.IconColor;
+ _bigActionIcon.Modulate = action.IconColor;
_bigActionIcon.Visible = true;
_smallActionIcon.Texture = null;
_smallActionIcon.Visible = false;
{
UpdateItemIcon();
- if (Action == null)
+ if (!Actions.TryGetActionData(ActionId, out var action))
{
SetActionIcon(null);
return;
}
- if ((Controller.SelectingTargetFor == Action || Action.Toggled) && Action.IconOn != null)
- SetActionIcon(Action.IconOn.Frame0());
+ if ((Controller.SelectingTargetFor == ActionId || action.Toggled) && action.IconOn != null)
+ SetActionIcon(action.IconOn.Frame0());
else
- SetActionIcon(Action.Icon?.Frame0());
+ SetActionIcon(action.Icon?.Frame0());
}
- public bool TryReplaceWith(ActionType action)
+ public bool TryReplaceWith(EntityUid actionId)
{
if (Locked)
{
return false;
}
- UpdateData(action);
+ UpdateData(actionId);
return true;
}
- public void UpdateData(ActionType action)
+ public void UpdateData(EntityUid actionId)
{
- Action = action;
+ ActionId = actionId;
Label.Visible = true;
UpdateIcons();
}
public void ClearData()
{
- Action = null;
+ ActionId = null;
Cooldown.Visible = false;
Cooldown.Progress = 1;
Label.Visible = false;
{
base.FrameUpdate(args);
- if (_spriteViewDirty)
+ if (!Actions.TryGetActionData(ActionId, out var action))
{
- _spriteViewDirty = false;
- UpdateIcons();
+ return;
}
- if (Action?.Cooldown != null)
+ if (action.Cooldown != null)
{
- Cooldown.FromTime(Action.Cooldown.Value.Start, Action.Cooldown.Value.End);
+ Cooldown.FromTime(action.Cooldown.Value.Start, action.Cooldown.Value.End);
}
- if (Action != null && _toggled != Action.Toggled)
+ if (ActionId != null && _toggled != action.Toggled)
{
- _toggled = Action.Toggled;
+ _toggled = action.Toggled;
}
}
public void Depress(GUIBoundKeyEventArgs args, bool depress)
{
// action can still be toggled if it's allowed to stay selected
- if (Action is not {Enabled: true})
+ if (!Actions.TryGetActionData(ActionId, out var action) || action is not { Enabled: true })
return;
if (_depressed && !depress)
HighlightRect.Visible = _beingHovered;
// always show the normal empty button style if no action in this slot
- if (Action == null)
+ if (!Actions.TryGetActionData(ActionId, out var action))
{
SetOnlyStylePseudoClass(ContainerButton.StylePseudoClassNormal);
return;
}
// show a hover only if the action is usable or another action is being dragged on top of this
- if (_beingHovered && (Controller.IsDragging || Action.Enabled))
+ if (_beingHovered && (Controller.IsDragging || action.Enabled))
{
SetOnlyStylePseudoClass(ContainerButton.StylePseudoClassHover);
}
}
// if it's toggled on, always show the toggled on style (currently same as depressed style)
- if (Action.Toggled || Controller.SelectingTargetFor == Action)
+ if (action.Toggled || Controller.SelectingTargetFor == ActionId)
{
// when there's a toggle sprite, we're showing that sprite instead of highlighting this slot
- SetOnlyStylePseudoClass(Action.IconOn != null
+ SetOnlyStylePseudoClass(action.IconOn != null
? ContainerButton.StylePseudoClassNormal
: ContainerButton.StylePseudoClassPressed);
return;
}
- if (!Action.Enabled)
+ if (!action.Enabled)
{
SetOnlyStylePseudoClass(ContainerButton.StylePseudoClassDisabled);
return;
-using Content.Shared.Actions.ActionTypes;
using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls;
}
}
- public void SetActionData(params ActionType?[] actionTypes)
+ public void SetActionData(params EntityUid?[] actionTypes)
{
ClearActionData();
if (action == null)
continue;
- ((ActionButton) GetChild(i)).UpdateData(action);
+ ((ActionButton) GetChild(i)).UpdateData(action.Value);
}
}
using System.Linq;
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.CombatMode;
using Robust.Server.Player;
using Robust.Shared.GameObjects;
var sEntMan = server.ResolveDependency<IEntityManager>();
var cEntMan = client.ResolveDependency<IEntityManager>();
var session = server.ResolveDependency<IPlayerManager>().ServerSessions.Single();
+ var sActionSystem = server.System<SharedActionsSystem>();
+ var cActionSystem = client.System<SharedActionsSystem>();
// Dummy ticker is disabled - client should be in control of a normal mob.
Assert.NotNull(session.AttachedEntity);
// This action should have a non-null event both on the server & client.
var evType = typeof(ToggleCombatActionEvent);
- var sActions = sComp!.Actions.Where(
- x => x is InstantAction act && act.Event?.GetType() == evType).ToArray();
- var cActions = cComp!.Actions.Where(
- x => x is InstantAction act && act.Event?.GetType() == evType).ToArray();
+ var sActions = sActionSystem.GetActions(ent).Where(
+ x => x.Comp is InstantActionComponent act && act.Event?.GetType() == evType).ToArray();
+ var cActions = cActionSystem.GetActions(ent).Where(
+ x => x.Comp is InstantActionComponent act && act.Event?.GetType() == evType).ToArray();
Assert.That(sActions.Length, Is.EqualTo(1));
Assert.That(cActions.Length, Is.EqualTo(1));
- var sAct = (InstantAction) sActions[0];
- var cAct = (InstantAction) cActions[0];
+ var sAct = sActions[0].Comp;
+ var cAct = cActions[0].Comp;
+
+ Assert.NotNull(sAct);
+ Assert.NotNull(cAct);
// Finally, these two actions are not the same object
// required, because integration tests do not respect the [NonSerialized] attribute and will simply events by reference.
Assert.That(ReferenceEquals(sAct, cAct), Is.False);
- Assert.That(ReferenceEquals(sAct.Event, cAct.Event), Is.False);
+ Assert.That(ReferenceEquals(sAct.BaseEvent, cAct.BaseEvent), Is.False);
await pair.CleanReturnAsync();
}
-using Content.Shared.Actions.ActionTypes;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
-using Robust.Shared.Utility;
namespace Content.Server.Abilities.Mime
{
/// The wall prototype to use.
/// </summary>
[DataField("wallPrototype", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
- public string WallPrototype = "WallInvisible";
-
- [DataField("invisibleWallAction")]
- public InstantAction InvisibleWallAction = new()
- {
- UseDelay = TimeSpan.FromSeconds(30),
- Icon = new SpriteSpecifier.Texture(new("Structures/Walls/solid.rsi/full.png")),
- DisplayName = "mime-invisible-wall",
- Description = "mime-invisible-wall-desc",
- Priority = -1,
- Event = new InvisibleWallActionEvent(),
- };
+ public string WallPrototype = "ActionMimeInvisibleWall";
+
+ [DataField("invisibleWallAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string? InvisibleWallAction;
+
+ [DataField("invisibleWallActionEntity")] public EntityUid? InvisibleWallActionEntity;
// The vow zone lies below
public bool VowBroken = false;
using Content.Server.Popups;
+using Content.Server.Speech.Muting;
using Content.Shared.Actions;
+using Content.Shared.Actions.Events;
using Content.Shared.Alert;
using Content.Shared.Coordinates.Helpers;
-using Content.Shared.Physics;
-using Content.Shared.Doors.Components;
using Content.Shared.Maps;
using Content.Shared.Mobs.Components;
-using Robust.Shared.Physics.Components;
-using Robust.Shared.Timing;
-using Content.Server.Speech.Muting;
+using Content.Shared.Physics;
using Robust.Shared.Containers;
using Robust.Shared.Map;
+using Robust.Shared.Timing;
namespace Content.Server.Abilities.Mime
{
{
base.Initialize();
SubscribeLocalEvent<MimePowersComponent, ComponentInit>(OnComponentInit);
+ SubscribeLocalEvent<MimePowersComponent, MapInitEvent>(OnComponentMapInit);
SubscribeLocalEvent<MimePowersComponent, InvisibleWallActionEvent>(OnInvisibleWall);
}
+
public override void Update(float frameTime)
{
base.Update(frameTime);
private void OnComponentInit(EntityUid uid, MimePowersComponent component, ComponentInit args)
{
EnsureComp<MutedComponent>(uid);
- _actionsSystem.AddAction(uid, component.InvisibleWallAction, uid);
_alertsSystem.ShowAlert(uid, AlertType.VowOfSilence);
}
+ private void OnComponentMapInit(EntityUid uid, MimePowersComponent component, MapInitEvent args)
+ {
+ _actionsSystem.AddAction(uid, ref component.InvisibleWallActionEntity, component.InvisibleWallAction, uid);
+ }
+
/// <summary>
/// Creates an invisible wall in a free space after some checks.
/// </summary>
RemComp<MutedComponent>(uid);
_alertsSystem.ClearAlert(uid, AlertType.VowOfSilence);
_alertsSystem.ShowAlert(uid, AlertType.VowBroken);
- _actionsSystem.RemoveAction(uid, mimePowers.InvisibleWallAction);
+ _actionsSystem.RemoveAction(uid, mimePowers.InvisibleWallActionEntity);
}
/// <summary>
AddComp<MutedComponent>(uid);
_alertsSystem.ClearAlert(uid, AlertType.VowBroken);
_alertsSystem.ShowAlert(uid, AlertType.VowOfSilence);
- _actionsSystem.AddAction(uid, mimePowers.InvisibleWallAction, uid);
+ _actionsSystem.AddAction(uid, ref mimePowers.InvisibleWallActionEntity, mimePowers.InvisibleWallAction, uid);
}
}
-
- public sealed partial class InvisibleWallActionEvent : InstantActionEvent
- {
- }
}
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Interaction;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List;
namespace Content.Server.Actions;
[RegisterComponent]
public sealed partial class ActionOnInteractComponent : Component
{
- [DataField("activateActions")]
- public List<InstantAction>? ActivateActions;
+ [DataField("actions", customTypeSerializer: typeof(PrototypeIdListSerializer<EntityPrototype>))]
+ public List<string>? Actions;
- [DataField("entityActions")]
- public List<EntityTargetAction>? EntityActions;
-
- [DataField("worldActions")]
- public List<WorldTargetAction>? WorldActions;
+ [DataField("actionEntities")] public List<EntityUid>? ActionEntities;
}
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Interaction;
using Robust.Shared.Random;
using Robust.Shared.Timing;
private void OnActivate(EntityUid uid, ActionOnInteractComponent component, ActivateInWorldEvent args)
{
- if (args.Handled || component.ActivateActions == null)
+ if (args.Handled || component.ActionEntities == null)
return;
- var options = new List<InstantAction>();
- foreach (var action in component.ActivateActions)
- {
- if (ValidAction(action))
- options.Add(action);
- }
-
+ var options = GetValidActions<InstantActionComponent>(component.ActionEntities);
if (options.Count == 0)
return;
- var act = _random.Pick(options);
+ var (actId, act) = _random.Pick(options);
if (act.Event != null)
act.Event.Performer = args.User;
act.Provider = uid;
- _actions.PerformAction(args.User, null, act, act.Event, _timing.CurTime, false);
+ _actions.PerformAction(args.User, null, actId, act, act.Event, _timing.CurTime, false);
args.Handled = true;
}
private void OnAfterInteract(EntityUid uid, ActionOnInteractComponent component, AfterInteractEvent args)
{
- if (args.Handled)
+ if (args.Handled || component.ActionEntities == null)
return;
// First, try entity target actions
- if (args.Target != null && component.EntityActions != null)
+ if (args.Target != null)
{
- var entOptions = new List<EntityTargetAction>();
- foreach (var action in component.EntityActions)
+ var entOptions = GetValidActions<EntityTargetActionComponent>(component.ActionEntities, args.CanReach);
+ for (var i = entOptions.Count - 1; i >= 0; i--)
{
- if (!ValidAction(action, args.CanReach))
- continue;
-
+ var action = entOptions[i].Comp;
if (!_actions.ValidateEntityTarget(args.User, args.Target.Value, action))
- continue;
-
- entOptions.Add(action);
+ entOptions.RemoveAt(i);
}
if (entOptions.Count > 0)
{
- var entAct = _random.Pick(entOptions);
+ var (entActId, entAct) = _random.Pick(entOptions);
if (entAct.Event != null)
{
entAct.Event.Performer = args.User;
}
entAct.Provider = uid;
- _actions.PerformAction(args.User, null, entAct, entAct.Event, _timing.CurTime, false);
+ _actions.PerformAction(args.User, null, entActId, entAct, entAct.Event, _timing.CurTime, false);
args.Handled = true;
return;
}
}
// else: try world target actions
- if (component.WorldActions == null)
- return;
-
- var options = new List<WorldTargetAction>();
- foreach (var action in component.WorldActions)
+ var options = GetValidActions<WorldTargetActionComponent>(component.ActionEntities, args.CanReach);
+ for (var i = options.Count - 1; i >= 0; i--)
{
- if (!ValidAction(action, args.CanReach))
- continue;
-
+ var action = options[i].Comp;
if (!_actions.ValidateWorldTarget(args.User, args.ClickLocation, action))
- continue;
-
- options.Add(action);
+ options.RemoveAt(i);
}
if (options.Count == 0)
return;
- var act = _random.Pick(options);
+ var (actId, act) = _random.Pick(options);
if (act.Event != null)
{
act.Event.Performer = args.User;
}
act.Provider = uid;
- _actions.PerformAction(args.User, null, act, act.Event, _timing.CurTime, false);
+ _actions.PerformAction(args.User, null, actId, act, act.Event, _timing.CurTime, false);
args.Handled = true;
}
- private bool ValidAction(ActionType act, bool canReach = true)
+ private bool ValidAction(BaseActionComponent action, bool canReach = true)
{
- if (!act.Enabled)
+ if (!action.Enabled)
return false;
- if (act.Charges.HasValue && act.Charges <= 0)
+ if (action.Charges.HasValue && action.Charges <= 0)
return false;
var curTime = _timing.CurTime;
- if (act.Cooldown.HasValue && act.Cooldown.Value.End > curTime)
+ if (action.Cooldown.HasValue && action.Cooldown.Value.End > curTime)
return false;
- return canReach || act is TargetedAction { CheckCanAccess: false };
+ return canReach || action is BaseTargetActionComponent { CheckCanAccess: false };
+ }
+
+ private List<(EntityUid Id, T Comp)> GetValidActions<T>(List<EntityUid>? actions, bool canReach = true) where T : BaseActionComponent
+ {
+ var valid = new List<(EntityUid Id, T Comp)>();
+
+ if (actions == null)
+ return valid;
+
+ foreach (var id in actions)
+ {
+ if (!_actions.TryGetActionData(id, out var baseAction) ||
+ baseAction as T is not { } action ||
+ !ValidAction(action, canReach))
+ {
+ continue;
+ }
+
+ valid.Add((id, action));
+ }
+
+ return valid;
}
}
-using Content.Server.Chat;
-using Content.Server.Chat.Systems;
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using JetBrains.Annotations;
-using Robust.Server.GameObjects;
namespace Content.Server.Actions
{
-using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Storage;
using Robust.Shared.Audio;
-using Robust.Shared.Serialization;
+using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Server.Animals.Components;
[RegisterComponent]
public sealed partial class EggLayerComponent : Component
{
- [DataField("eggLayAction", customTypeSerializer: typeof(PrototypeIdSerializer<InstantActionPrototype>))]
- public string EggLayAction = "AnimalLayEgg";
+ [DataField("eggLayAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string EggLayAction = "ActionAnimalLayEgg";
[ViewVariables(VVAccess.ReadWrite)]
[DataField("hungerUsage")]
[DataField("accumulatedFrametime")]
public float AccumulatedFrametime;
}
-
-public sealed partial class EggLayInstantActionEvent : InstantActionEvent {}
using Content.Server.Actions;
using Content.Server.Animals.Components;
using Content.Server.Popups;
-using Content.Shared.Actions.ActionTypes;
+using Content.Shared.Actions.Events;
using Content.Shared.Nutrition.Components;
using Content.Shared.Nutrition.EntitySystems;
using Content.Shared.Storage;
using Robust.Server.GameObjects;
using Robust.Shared.Player;
-using Robust.Shared.Prototypes;
using Robust.Shared.Random;
namespace Content.Server.Animals.Systems;
public sealed class EggLayerSystem : EntitySystem
{
- [Dependency] private readonly IPrototypeManager _prototype = default!;
[Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly ActionsSystem _actions = default!;
[Dependency] private readonly AudioSystem _audio = default!;
private void OnComponentInit(EntityUid uid, EggLayerComponent component, ComponentInit args)
{
- if (!_prototype.TryIndex<InstantActionPrototype>(component.EggLayAction, out var action))
+ if (string.IsNullOrWhiteSpace(component.EggLayAction))
return;
- _actions.AddAction(uid, new InstantAction(action), uid);
+ _actions.AddAction(uid, Spawn(component.EggLayAction), uid);
component.CurrentEggLayCooldown = _random.NextFloat(component.EggLayCooldownMin, component.EggLayCooldownMax);
}
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Atmos;
using Robust.Shared.Audio;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Server.Atmos.Components
{
[DataField("tankFragmentScale"), ViewVariables(VVAccess.ReadWrite)]
public float TankFragmentScale = 2 * Atmospherics.OneAtmosphere;
- [DataField("toggleAction", required: true)]
- public InstantAction ToggleAction = new();
+ [DataField("toggleAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string ToggleAction = "ActionToggleInternals";
+
+ [DataField("toggleActionEntity")] public EntityUid? ToggleActionEntity;
/// <summary>
/// Valve to release gas from tank
-using System.Numerics;
using Content.Server.Atmos.Components;
using Content.Server.Body.Components;
using Content.Server.Body.Systems;
using Content.Shared.Actions;
using Content.Shared.Atmos;
using Content.Shared.Atmos.Components;
-using Content.Shared.Toggleable;
using Content.Shared.Examine;
+using Content.Shared.Toggleable;
+using Content.Shared.Verbs;
using JetBrains.Annotations;
using Robust.Server.GameObjects;
using Robust.Server.Player;
using Robust.Shared.Audio;
using Robust.Shared.Containers;
+using Robust.Shared.Physics.Systems;
using Robust.Shared.Player;
using Robust.Shared.Random;
-using Content.Shared.Verbs;
-using Robust.Shared.Physics.Systems;
namespace Content.Server.Atmos.EntitySystems
{
private void OnGetActions(EntityUid uid, GasTankComponent component, GetItemActionsEvent args)
{
- args.Actions.Add(component.ToggleAction);
+ args.AddAction(ref component.ToggleActionEntity, component.ToggleAction);
}
private void OnExamined(EntityUid uid, GasTankComponent component, ExaminedEvent args)
if (_internals.TryConnectTank(internals, component.Owner))
component.User = internals.Owner;
- _actions.SetToggled(component.ToggleAction, component.IsConnected);
+ _actions.SetToggled(component.ToggleActionEntity, component.IsConnected);
// Couldn't toggle!
if (!component.IsConnected)
var internals = GetInternalsComponent(component);
component.User = null;
- _actions.SetToggled(component.ToggleAction, false);
+ _actions.SetToggled(component.ToggleActionEntity, false);
_internals.DisconnectTank(internals);
component.DisconnectStream?.Stop();
using Content.Server.Bed.Components;
using Content.Server.Bed.Sleep;
using Content.Server.Body.Systems;
+using Content.Server.Construction;
using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Bed;
using Content.Shared.Bed.Sleep;
using Content.Shared.Body.Components;
using Content.Shared.Damage;
using Content.Shared.Emag.Components;
using Content.Shared.Emag.Systems;
-using Content.Server.Construction;
using Content.Shared.Mobs.Systems;
-using Robust.Shared.Prototypes;
using Robust.Shared.Timing;
namespace Content.Server.Bed
{
[Dependency] private readonly DamageableSystem _damageableSystem = default!;
[Dependency] private readonly ActionsSystem _actionsSystem = default!;
- [Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly SleepingSystem _sleepingSystem = default!;
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
[Dependency] private readonly MobStateSystem _mobStateSystem = default!;
private void ManageUpdateList(EntityUid uid, HealOnBuckleComponent component, ref BuckleChangeEvent args)
{
- _prototypeManager.TryIndex<InstantActionPrototype>("Sleep", out var sleepAction);
if (args.Buckling)
{
AddComp<HealOnBuckleHealingComponent>(uid);
component.NextHealTime = _timing.CurTime + TimeSpan.FromSeconds(component.HealTime);
- if (sleepAction != null)
- _actionsSystem.AddAction(args.BuckledEntity, new InstantAction(sleepAction), null);
+ component.SleepAction = Spawn(SleepingSystem.SleepActionId);
+ _actionsSystem.AddAction(args.BuckledEntity, component.SleepAction.Value, null);
return;
}
- if (sleepAction != null)
- _actionsSystem.RemoveAction(args.BuckledEntity, sleepAction);
+ if (component.SleepAction != null)
+ _actionsSystem.RemoveAction(args.BuckledEntity, component.SleepAction.Value);
_sleepingSystem.TryWaking(args.BuckledEntity);
RemComp<HealOnBuckleHealingComponent>(uid);
public float SleepMultiplier = 3f;
public TimeSpan NextHealTime = TimeSpan.Zero; //Next heal
+
+ [DataField("sleepAction")] public EntityUid? SleepAction;
}
}
using Content.Server.Actions;
using Content.Server.Popups;
using Content.Server.Sound.Components;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Audio;
using Content.Shared.Bed.Sleep;
using Content.Shared.Damage;
using Content.Shared.Interaction;
using Content.Shared.Mobs;
using Content.Shared.Mobs.Components;
-using Content.Shared.StatusEffect;
using Content.Shared.Slippery;
+using Content.Shared.StatusEffect;
using Content.Shared.Stunnable;
using Content.Shared.Verbs;
-using Robust.Shared.Audio;
using Robust.Shared.Player;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
using Robust.Shared.Timing;
-using Content.Shared.Interaction.Components;
namespace Content.Server.Bed.Sleep
{
[Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly StatusEffectsSystem _statusEffectsSystem = default!;
+ [ValidatePrototypeId<EntityPrototype>] public const string SleepActionId = "ActionSleep";
+
public override void Initialize()
{
base.Initialize();
/// </summary>
private void OnSleepStateChanged(EntityUid uid, MobStateComponent component, SleepStateChangedEvent args)
{
- _prototypeManager.TryIndex<InstantActionPrototype>("Wake", out var wakeAction);
if (args.FellAsleep)
{
// Expiring status effects would remove the components needed for sleeping
emitSound.PopUp = sleepSound.PopUp;
}
- if (wakeAction != null)
- {
- var wakeInstance = new InstantAction(wakeAction);
- wakeInstance.Cooldown = (_gameTiming.CurTime, _gameTiming.CurTime + TimeSpan.FromSeconds(15));
- _actionsSystem.AddAction(uid, wakeInstance, null);
- }
return;
}
- if (wakeAction != null)
- _actionsSystem.RemoveAction(uid, wakeAction);
RemComp<StunnedComponent>(uid);
RemComp<KnockedDownComponent>(uid);
RaiseLocalEvent(uid, ref tryingToSleepEvent);
if (tryingToSleepEvent.Cancelled) return false;
- if (_prototypeManager.TryIndex<InstantActionPrototype>("Sleep", out var sleepAction))
- _actionsSystem.RemoveAction(uid, sleepAction);
+ _actionsSystem.RemoveAction(uid, SleepActionId);
EnsureComp<SleepingComponent>(uid);
return true;
using Content.Server.Popups;
using Content.Shared.ActionBlocker;
using Content.Shared.Actions;
+using Content.Shared.Bible;
using Content.Shared.Damage;
using Content.Shared.IdentityManagement;
using Content.Shared.Interaction;
if (component.AlreadySummoned)
return;
- args.Actions.Add(component.SummonAction);
+ args.AddAction(ref component.SummonActionEntity, component.SummonAction);
}
+
private void OnSummon(EntityUid uid, SummonableComponent component, SummonActionEvent args)
{
AttemptSummon(component, args.Performer, Transform(args.Performer));
Transform(familiar).AttachParent(component.Owner);
}
component.AlreadySummoned = true;
- _actionsSystem.RemoveAction(user, component.SummonAction);
+ _actionsSystem.RemoveAction(user, component.SummonActionEntity);
}
}
-
- public sealed partial class SummonActionEvent : InstantActionEvent
- {
-
- }
}
-using Content.Shared.Actions.ActionTypes;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
-using Robust.Shared.Utility;
namespace Content.Server.Bible.Components
{
public string? SpecialItemPrototype = null;
public bool AlreadySummoned = false;
- [DataField("requriesBibleUser")]
+ [DataField("requiresBibleUser")]
public bool RequiresBibleUser = true;
/// <summary>
[ViewVariables]
public EntityUid? Summon = null;
- [DataField("summonAction")]
- public InstantAction SummonAction = new()
- {
- Icon = new SpriteSpecifier.Texture(new ("Clothing/Head/Hats/witch.rsi/icon.png")),
- DisplayName = "bible-summon-verb",
- Description = "bible-summon-verb-desc",
- Event = new SummonActionEvent(),
- };
+ [DataField("summonAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string SummonAction = "ActionBibleSummon";
+
+ [DataField("summonActionEntity")]
+ public EntityUid? SummonActionEntity;
/// Used for respawning
[DataField("accumulator")]
-using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Server.Clothing.Components
{
[RegisterComponent]
public sealed partial class MaskComponent : Component
{
+ [DataField("toggleAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string ToggleAction = "ActionToggleMask";
+
/// <summary>
/// This mask can be toggled (pulled up/down)
/// </summary>
- [DataField("toggleAction")]
- public InstantAction? ToggleAction = null;
+ [DataField("toggleActionEntity")]
+ public EntityUid? ToggleActionEntity;
public bool IsToggled = false;
}
-
- public sealed partial class ToggleMaskEvent : InstantActionEvent { }
}
using Content.Server.Popups;
using Content.Server.VoiceMask;
using Content.Shared.Actions;
+using Content.Shared.Clothing;
using Content.Shared.Clothing.Components;
using Content.Shared.Clothing.EntitySystems;
using Content.Shared.IdentityManagement.Components;
private void OnGetActions(EntityUid uid, MaskComponent component, GetItemActionsEvent args)
{
- if (component.ToggleAction != null && !args.InHands)
- args.Actions.Add(component.ToggleAction);
+ if (!args.InHands)
+ args.AddAction(ref component.ToggleActionEntity, component.ToggleAction);
}
private void OnToggleMask(EntityUid uid, MaskComponent mask, ToggleMaskEvent args)
{
- if (mask.ToggleAction == null)
+ if (mask.ToggleActionEntity == null)
return;
if (!_inventorySystem.TryGetSlotEntity(args.Performer, "mask", out var existing) || !mask.Owner.Equals(existing))
return;
mask.IsToggled ^= true;
- _actionSystem.SetToggled(mask.ToggleAction, mask.IsToggled);
+ _actionSystem.SetToggled(mask.ToggleActionEntity, mask.IsToggled);
// Pulling mask down can change identity, so we want to update that
_identity.QueueIdentityUpdate(args.Performer);
// set to untoggled when unequipped, so it isn't left in a 'pulled down' state
private void OnGotUnequipped(EntityUid uid, MaskComponent mask, GotUnequippedEvent args)
{
- if (mask.ToggleAction == null)
+ if (mask.ToggleActionEntity == null)
return;
mask.IsToggled = false;
- _actionSystem.SetToggled(mask.ToggleAction, mask.IsToggled);
+ _actionSystem.SetToggled(mask.ToggleActionEntity, mask.IsToggled);
ToggleMaskComponents(uid, mask, args.Equipee, true);
}
-using Content.Shared.Devour;
using Content.Server.Body.Systems;
-using Content.Shared.Humanoid;
using Content.Shared.Chemistry.Components;
-using Content.Server.Devour.Components;
-using Content.Shared.DoAfter;
-using Robust.Shared.Serialization;
+using Content.Shared.Devour;
+using Content.Shared.Devour.Components;
+using Content.Shared.Humanoid;
namespace Content.Server.Devour;
-using System.Threading;
-using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
-using Content.Shared.Chemistry.Reagent;
-using Content.Shared.Whitelist;
using Robust.Shared.Audio;
-using Robust.Shared.Containers;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
/// </summary>
[ViewVariables(VVAccess.ReadWrite), DataField("maxAccumulator")] public float RiftMaxAccumulator = 300f;
+ [DataField("spawnRiftAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string SpawnRiftAction = "ActionSpawnRift";
+
/// <summary>
/// Spawns a rift which can summon more mobs.
/// </summary>
- [DataField("spawnRiftAction")]
- public InstantAction? SpawnRiftAction;
+ [DataField("spawnRiftActionEntity")]
+ public EntityUid? SpawnRiftActionEntity;
[ViewVariables(VVAccess.ReadWrite), DataField("riftPrototype", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
public string RiftPrototype = "CarpRift";
Params = AudioParams.Default.WithVolume(3f),
};
}
-
- public sealed partial class DragonDevourActionEvent : EntityTargetActionEvent {}
-
- public sealed partial class DragonSpawnRiftActionEvent : InstantActionEvent {}
}
-using Content.Server.Body.Systems;
+using System.Numerics;
using Content.Server.Chat.Systems;
using Content.Server.GameTicking;
using Content.Server.NPC;
using Content.Server.NPC.Systems;
using Content.Server.Popups;
-using Content.Server.Station.Systems;
using Content.Shared.Actions;
-using Content.Shared.Chemistry.Components;
using Content.Shared.Damage;
-using Content.Shared.DoAfter;
using Content.Shared.Dragon;
using Content.Shared.Examine;
-using Content.Shared.Humanoid;
using Content.Shared.Maps;
using Content.Shared.Mobs;
-using Content.Shared.Mobs.Components;
using Content.Shared.Movement.Systems;
-using Robust.Shared.Containers;
-using Robust.Shared.Player;
+using Content.Shared.Sprite;
using Robust.Shared.GameStates;
using Robust.Shared.Map;
-using Robust.Shared.Random;
-using System.Numerics;
-using Content.Shared.Sprite;
+using Robust.Shared.Player;
using Robust.Shared.Serialization.Manager;
namespace Content.Server.Dragon;
base.Initialize();
SubscribeLocalEvent<DragonComponent, ComponentStartup>(OnStartup);
+ SubscribeLocalEvent<DragonComponent, MapInitEvent>(OnMapInit);
SubscribeLocalEvent<DragonComponent, ComponentShutdown>(OnShutdown);
SubscribeLocalEvent<DragonComponent, DragonSpawnRiftActionEvent>(OnDragonRift);
SubscribeLocalEvent<DragonComponent, RefreshMovementSpeedModifiersEvent>(OnDragonMove);
private void OnStartup(EntityUid uid, DragonComponent component, ComponentStartup args)
{
- if (component.SpawnRiftAction != null)
- _actionsSystem.AddAction(uid, component.SpawnRiftAction, null);
-
Roar(component);
}
+
+ private void OnMapInit(EntityUid uid, DragonComponent component, MapInitEvent args)
+ {
+ _actionsSystem.AddAction(uid, ref component.SpawnRiftActionEntity, component.SpawnRiftAction);
+ }
}
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Roles;
using Robust.Shared.Audio;
+using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
[DataField("shuttleCalled")]
public bool ShuttleCalled;
- [ValidatePrototypeId<InstantActionPrototype>]
- public const string ZombifySelfActionPrototype = "TurnUndead";
+ [ValidatePrototypeId<EntityPrototype>]
+ public const string ZombifySelfActionPrototype = "ActionTurnUndead";
}
using Content.Server.Station.Components;
using Content.Server.Station.Systems;
using Content.Server.Zombies;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.CCVar;
using Content.Shared.Humanoid;
using Content.Shared.Mind;
private void OnZombifySelf(EntityUid uid, ZombifyOnDeathComponent component, ZombifySelfActionEvent args)
{
_zombie.ZombifyEntity(uid);
-
- var action = new InstantAction(_prototypeManager.Index<InstantActionPrototype>(ZombieRuleComponent.ZombifySelfActionPrototype));
- _action.RemoveAction(uid, action);
+ _action.RemoveAction(uid, ZombieRuleComponent.ZombifySelfActionPrototype);
}
private float GetInfectedFraction(bool includeOffStation = true, bool includeDead = false)
EnsureComp<ZombifyOnDeathComponent>(ownedEntity);
EnsureComp<IncurableZombieComponent>(ownedEntity);
var inCharacterName = MetaData(ownedEntity).EntityName;
- var action = new InstantAction(_prototypeManager.Index<InstantActionPrototype>(ZombieRuleComponent.ZombifySelfActionPrototype));
+ var action = Spawn(ZombieRuleComponent.ZombifySelfActionPrototype);
_action.AddAction(mind.OwnedEntity.Value, action, null);
var message = Loc.GetString("zombie-patientzero-role-greeting");
using Content.Shared.Mobs.Components;
using Content.Shared.Mobs.Systems;
using Content.Shared.Movement.Events;
-using Content.Shared.Roles.Jobs;
using Content.Shared.Storage.Components;
using Robust.Server.GameObjects;
using Robust.Server.Player;
SubscribeLocalEvent<GhostComponent, ComponentStartup>(OnGhostStartup);
SubscribeLocalEvent<GhostComponent, ComponentShutdown>(OnGhostShutdown);
+ SubscribeLocalEvent<GhostComponent, MapInitEvent>(OnGhostMapInit);
SubscribeLocalEvent<GhostComponent, ExaminedEvent>(OnGhostExamine);
eye.VisibilityMask |= (uint) VisibilityFlags.Ghost;
}
- var time = _gameTiming.CurTime;
- component.TimeOfDeath = time;
-
- // TODO ghost: remove once ghosts are persistent and aren't deleted when returning to body
- if (component.Action.UseDelay != null)
- component.Action.Cooldown = (time, time + component.Action.UseDelay.Value);
- _actions.AddAction(uid, component.Action, null);
+ component.TimeOfDeath = _gameTiming.CurTime;
}
private void OnGhostShutdown(EntityUid uid, GhostComponent component, ComponentShutdown args)
eye.VisibilityMask &= ~(uint) VisibilityFlags.Ghost;
}
- _actions.RemoveAction(uid, component.Action);
+ _actions.RemoveAction(uid, component.ActionEntity);
}
}
+ private void OnGhostMapInit(EntityUid uid, GhostComponent component, MapInitEvent args)
+ {
+ // TODO ghost: remove once ghosts are persistent and aren't deleted when returning to body
+ var time = _gameTiming.CurTime;
+ var action = _actions.AddAction(uid, ref component.ActionEntity, component.Action);
+ if (action?.UseDelay != null)
+ {
+ action.Cooldown = (time, time + action.UseDelay.Value);
+ Dirty(component.ActionEntity!.Value, action);
+ }
+
+ _actions.AddAction(uid, ref component.ToggleLightingActionEntity, component.ToggleLightingAction);
+ _actions.AddAction(uid, ref component.ToggleFoVActionEntity, component.ToggleFoVAction);
+ _actions.AddAction(uid, ref component.ToggleGhostsActionEntity, component.ToggleGhostsAction);
+ }
+
private void OnGhostExamine(EntityUid uid, GhostComponent component, ExaminedEvent args)
{
var timeSinceDeath = _gameTiming.RealTime.Subtract(component.TimeOfDeath);
-using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Robust.Shared.Containers;
-using Robust.Shared.Utility;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Server.Guardian
{
/// </summary>
[ViewVariables] public ContainerSlot GuardianContainer = default!;
- [DataField("action")]
- public InstantAction Action = new()
- {
- DisplayName = "action-name-guardian",
- Description = "action-description-guardian",
- Icon = new SpriteSpecifier.Texture(new ("Interface/Actions/manifest.png")),
- UseDelay = TimeSpan.FromSeconds(2),
- CheckCanInteract = false, // allow use while stunned, etc. Gets removed on death anyways.
- Event = new GuardianToggleActionEvent(),
- };
- }
+ [DataField("action", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string Action = "ActionToggleGuardian";
- public sealed partial class GuardianToggleActionEvent : InstantActionEvent { };
+ [DataField("actionEntity")] public EntityUid? ActionEntity;
+ }
}
-using Content.Server.Inventory;
-using Content.Server.Popups;
using Content.Server.Body.Systems;
+using Content.Server.Popups;
using Content.Shared.Actions;
using Content.Shared.Audio;
using Content.Shared.Damage;
using Content.Shared.DoAfter;
using Content.Shared.Examine;
using Content.Shared.Guardian;
+using Content.Shared.Hands.Components;
using Content.Shared.Hands.EntitySystems;
using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
using Robust.Shared.Containers;
using Robust.Shared.Player;
using Robust.Shared.Utility;
-using Content.Shared.Hands.Components;
namespace Content.Server.Guardian
{
SubscribeLocalEvent<GuardianComponent, PlayerDetachedEvent>(OnGuardianUnplayer);
SubscribeLocalEvent<GuardianHostComponent, ComponentInit>(OnHostInit);
+ SubscribeLocalEvent<GuardianHostComponent, MapInitEvent>(OnHostMapInit);
SubscribeLocalEvent<GuardianHostComponent, MoveEvent>(OnHostMove);
SubscribeLocalEvent<GuardianHostComponent, MobStateChangedEvent>(OnHostStateChange);
SubscribeLocalEvent<GuardianHostComponent, ComponentShutdown>(OnHostShutdown);
private void OnHostInit(EntityUid uid, GuardianHostComponent component, ComponentInit args)
{
component.GuardianContainer = uid.EnsureContainer<ContainerSlot>("GuardianContainer");
- _actionSystem.AddAction(uid, component.Action, null);
+ }
+
+ private void OnHostMapInit(EntityUid uid, GuardianHostComponent component, MapInitEvent args)
+ {
+ _actionSystem.AddAction(uid, ref component.ActionEntity, component.Action);
}
private void OnHostShutdown(EntityUid uid, GuardianHostComponent component, ComponentShutdown args)
_bodySystem.GibBody(component.HostedGuardian.Value);
EntityManager.QueueDeleteEntity(component.HostedGuardian.Value);
- _actionSystem.RemoveAction(uid, component.Action);
+ _actionSystem.RemoveAction(uid, component.ActionEntity);
}
private void OnGuardianAttackAttempt(EntityUid uid, GuardianComponent component, AttackAttemptEvent args)
using Content.Server.Popups;
using Content.Server.PowerCell;
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Examine;
using Content.Shared.Interaction;
using Content.Shared.Light;
using Content.Shared.Verbs;
using JetBrains.Annotations;
using Robust.Server.GameObjects;
-using Robust.Shared.Audio;
using Robust.Shared.Containers;
using Robust.Shared.GameStates;
-using Robust.Shared.Player;
-using Robust.Shared.Prototypes;
using Robust.Shared.Utility;
namespace Content.Server.Light.EntitySystems
[Dependency] private readonly ActionsSystem _actions = default!;
[Dependency] private readonly PopupSystem _popup = default!;
[Dependency] private readonly PowerCellSystem _powerCell = default!;
- [Dependency] private readonly IPrototypeManager _proto = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
private void OnGetActions(EntityUid uid, HandheldLightComponent component, GetItemActionsEvent args)
{
- if (component.ToggleAction == null
- && _proto.TryIndex(component.ToggleActionId, out InstantActionPrototype? act))
- {
- component.ToggleAction = new(act);
- }
-
- if (component.ToggleAction != null)
- args.Actions.Add(component.ToggleAction);
+ args.AddAction(ref component.ToggleActionEntity, component.ToggleAction);
}
private void OnToggleAction(EntityUid uid, HandheldLightComponent component, ToggleActionEvent args)
private void OnMapInit(EntityUid uid, HandheldLightComponent component, MapInitEvent args)
{
- if (component.ToggleAction == null
- && _proto.TryIndex(component.ToggleActionId, out InstantActionPrototype? act))
- {
- component.ToggleAction = new(act);
- }
-
- if (component.ToggleAction != null)
- _actions.AddAction(uid, component.ToggleAction, null);
+ _actions.AddAction(uid, ref component.ToggleActionEntity, component.ToggleAction);
}
private void OnShutdown(EntityUid uid, HandheldLightComponent component, ComponentShutdown args)
{
- if (component.ToggleAction != null)
- _actions.RemoveAction(uid, component.ToggleAction);
+ _actions.RemoveAction(uid, component.ToggleActionEntity);
}
private byte? GetLevel(EntityUid uid, HandheldLightComponent component)
private void OnGetActions(EntityUid uid, UnpoweredFlashlightComponent component, GetItemActionsEvent args)
{
- args.Actions.Add(component.ToggleAction);
+ args.AddAction(ref component.ToggleActionEntity, component.ToggleAction);
}
private void AddToggleLightVerbs(EntityUid uid, UnpoweredFlashlightComponent component, GetVerbsEvent<ActivationVerb> args)
private void OnMindAdded(EntityUid uid, UnpoweredFlashlightComponent component, MindAddedMessage args)
{
- _actionsSystem.AddAction(uid, component.ToggleAction, null);
+ _actionsSystem.AddAction(uid, ref component.ToggleActionEntity, component.ToggleAction);
}
private void OnGotEmagged(EntityUid uid, UnpoweredFlashlightComponent component, ref GotEmaggedEvent args)
_audioSystem.PlayPvs(flashlight.ToggleSound, uid);
RaiseLocalEvent(uid, new LightToggleEvent(flashlight.LightOn), true);
- _actionsSystem.SetToggled(flashlight.ToggleAction, flashlight.LightOn);
+ _actionsSystem.SetToggled(flashlight.ToggleActionEntity, flashlight.LightOn);
}
}
}
-using Content.Shared.Actions.ActionTypes;
+using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary;
namespace Content.Server.Magic.Components;
/// List of spells that this book has. This is a combination of the WorldSpells, EntitySpells, and InstantSpells.
/// </summary>
[ViewVariables]
- public readonly List<ActionType> Spells = new();
+ public readonly List<EntityUid> Spells = new();
/// <summary>
/// The three fields below is just used for initialization.
/// </summary>
- [DataField("worldSpells", customTypeSerializer: typeof(PrototypeIdDictionarySerializer<int, WorldTargetActionPrototype>))]
+ [DataField("spells", customTypeSerializer: typeof(PrototypeIdDictionarySerializer<int, EntityPrototype>))]
[ViewVariables(VVAccess.ReadWrite)]
- public Dictionary<string, int> WorldSpells = new();
-
- [DataField("entitySpells", customTypeSerializer: typeof(PrototypeIdDictionarySerializer<int, EntityTargetActionPrototype>))]
- [ViewVariables(VVAccess.ReadWrite)]
- public Dictionary<string, int> EntitySpells = new();
-
- [DataField("instantSpells", customTypeSerializer: typeof(PrototypeIdDictionarySerializer<int, InstantActionPrototype>))]
- [ViewVariables(VVAccess.ReadWrite)]
- public Dictionary<string, int> InstantSpells = new();
+ public Dictionary<string, int> SpellActions = new();
[DataField("learnTime")]
[ViewVariables(VVAccess.ReadWrite)]
using Content.Server.Chat.Systems;
using Content.Server.Doors.Systems;
using Content.Server.Magic.Components;
-using Content.Server.Magic.Events;
using Content.Server.Weapons.Ranged.Systems;
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Body.Components;
using Content.Shared.Coordinates.Helpers;
using Content.Shared.DoAfter;
using Content.Shared.Doors.Systems;
using Content.Shared.Interaction.Events;
using Content.Shared.Magic;
+using Content.Shared.Magic.Events;
using Content.Shared.Maps;
using Content.Shared.Physics;
using Content.Shared.Spawners.Components;
using Robust.Server.GameObjects;
using Robust.Shared.Audio;
using Robust.Shared.Map;
-using Robust.Shared.Player;
-using Robust.Shared.Prototypes;
using Robust.Shared.Random;
using Robust.Shared.Serialization.Manager;
-using Robust.Shared.Serialization.Manager.Exceptions;
namespace Content.Server.Magic;
[Dependency] private readonly ISerializationManager _seriMan = default!;
[Dependency] private readonly IComponentFactory _compFact = default!;
[Dependency] private readonly IMapManager _mapManager = default!;
- [Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly DoorBoltSystem _boltsSystem = default!;
[Dependency] private readonly BodySystem _bodySystem = default!;
private void OnInit(EntityUid uid, SpellbookComponent component, ComponentInit args)
{
//Negative charges means the spell can be used without it running out.
- foreach (var (id, charges) in component.WorldSpells)
+ foreach (var (id, charges) in component.SpellActions)
{
- var spell = new WorldTargetAction(_prototypeManager.Index<WorldTargetActionPrototype>(id));
- _actionsSystem.SetCharges(spell, charges < 0 ? null : charges);
- component.Spells.Add(spell);
- }
-
- foreach (var (id, charges) in component.InstantSpells)
- {
- var spell = new InstantAction(_prototypeManager.Index<InstantActionPrototype>(id));
- _actionsSystem.SetCharges(spell, charges < 0 ? null : charges);
- component.Spells.Add(spell);
- }
-
- foreach (var (id, charges) in component.EntitySpells)
- {
- var spell = new EntityTargetAction(_prototypeManager.Index<EntityTargetActionPrototype>(id));
+ var spell = Spawn(id);
_actionsSystem.SetCharges(spell, charges < 0 ? null : charges);
component.Spells.Add(spell);
}
-using System.Threading;
-using Content.Shared.Actions.ActionTypes;
-using Robust.Shared.Utility;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
-namespace Content.Server.Medical.Components
+namespace Content.Server.Medical.Stethoscope.Components
{
/// <summary>
/// Adds an innate verb when equipped to use a stethoscope.
[DataField("delay")]
public float Delay = 2.5f;
- public EntityTargetAction Action = new()
- {
- Icon = new SpriteSpecifier.Texture(new ("Clothing/Neck/Misc/stethoscope.rsi/icon.png")),
- DisplayName = "stethoscope-verb",
- Priority = -1,
- Event = new StethoscopeActionEvent(),
- };
+ [DataField("action", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string Action = "ActionStethoscope";
+
+ [DataField("actionEntity")] public EntityUid? ActionEntity;
}
}
using Content.Server.Body.Components;
using Content.Server.Medical.Components;
+using Content.Server.Medical.Stethoscope.Components;
using Content.Server.Popups;
using Content.Shared.Actions;
using Content.Shared.Clothing.Components;
using Content.Shared.Damage;
+using Content.Shared.DoAfter;
using Content.Shared.FixedPoint;
using Content.Shared.Inventory.Events;
-using Content.Shared.Verbs;
+using Content.Shared.Medical;
+using Content.Shared.Medical.Stethoscope;
using Content.Shared.Mobs.Components;
using Content.Shared.Mobs.Systems;
-using Content.Shared.DoAfter;
-using Content.Shared.Medical;
+using Content.Shared.Verbs;
using Robust.Shared.Utility;
-namespace Content.Server.Medical
+namespace Content.Server.Medical.Stethoscope
{
public sealed class StethoscopeSystem : EntitySystem
{
private void OnGetActions(EntityUid uid, StethoscopeComponent component, GetItemActionsEvent args)
{
- args.Actions.Add(component.Action);
+ args.AddAction(ref component.ActionEntity, component.Action);
}
// construct the doafter and start it
return msg;
}
}
-
- public sealed partial class StethoscopeActionEvent : EntityTargetActionEvent {}
}
using Content.Server.Chat.Systems;
using Content.Server.Popups;
using Content.Server.Speech.Muting;
-using Content.Shared.Actions;
+using Content.Shared.Mobs;
using Content.Shared.Mobs.Components;
using Content.Shared.Mobs.Systems;
using Robust.Server.Console;
args.Handled = true;
}
}
-
-/// <summary>
-/// Only applies to mobs in crit capable of ghosting/succumbing
-/// </summary>
-public sealed partial class CritSuccumbEvent : InstantActionEvent
-{
-}
-
-/// <summary>
-/// Only applies/has functionality to mobs in crit that have <see cref="DeathgaspComponent"/>
-/// </summary>
-public sealed partial class CritFakeDeathEvent : InstantActionEvent
-{
-}
-
-/// <summary>
-/// Only applies to mobs capable of speaking, as a last resort in crit
-/// </summary>
-public sealed partial class CritLastWordsEvent : InstantActionEvent
-{
-}
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Polymorph;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List;
/// A list of all the polymorphs that the entity has.
/// Used to manage them and remove them if needed.
/// </summary>
- public Dictionary<string, InstantAction>? PolymorphActions = null;
+ public Dictionary<string, EntityUid>? PolymorphActions = null;
/// <summary>
/// The polymorphs that the entity starts out being able to do.
using Content.Server.Nutrition;
using Content.Server.Polymorph.Components;
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Buckle;
using Content.Shared.Damage;
using Content.Shared.Hands.EntitySystems;
private ISawmill _sawmill = default!;
+ private const string RevertPolymorphId = "ActionRevertPolymorph";
+
public override void Initialize()
{
base.Initialize();
if (proto.Forced)
return;
- var act = new InstantAction
+ var actionId = Spawn(RevertPolymorphId);
+ if (_actions.TryGetActionData(actionId, out var action))
{
- Event = new RevertPolymorphActionEvent(),
- EntityIcon = component.Parent,
- DisplayName = Loc.GetString("polymorph-revert-action-name"),
- Description = Loc.GetString("polymorph-revert-action-description"),
- UseDelay = TimeSpan.FromSeconds(proto.Delay),
- };
-
- _actions.AddAction(uid, act, null);
+ action.EntityIcon = component.Parent;
+ action.UseDelay = TimeSpan.FromSeconds(proto.Delay);
+ }
+
+ _actions.AddAction(uid, actionId, null, null, action);
}
private void OnBeforeFullyEaten(EntityUid uid, PolymorphedEntityComponent comp, BeforeFullyEatenEvent args)
{
if (!_proto.TryIndex<PolymorphPrototype>(comp.Prototype, out var proto))
{
- _sawmill.Error("Invalid polymorph prototype {comp.Prototype}");
+ _sawmill.Error($"Invalid polymorph prototype {comp.Prototype}");
return;
}
return;
var entproto = _proto.Index<EntityPrototype>(polyproto.Entity);
-
- var act = new InstantAction
+ var actionId = Spawn(RevertPolymorphId);
+ if (_actions.TryGetActionData(actionId, out var baseAction) &&
+ baseAction is InstantActionComponent action)
{
- Event = new PolymorphActionEvent
- {
- Prototype = polyproto,
- },
- DisplayName = Loc.GetString("polymorph-self-action-name", ("target", entproto.Name)),
- Description = Loc.GetString("polymorph-self-action-description", ("target", entproto.Name)),
- Icon = new SpriteSpecifier.EntityPrototype(polyproto.Entity),
- ItemIconStyle = ItemActionIconStyle.NoItem,
- };
-
- polycomp.PolymorphActions ??= new();
-
- polycomp.PolymorphActions.Add(id, act);
- _actions.AddAction(target, act, target);
+ action.Event = new PolymorphActionEvent { Prototype = polyproto };
+ action.Icon = new SpriteSpecifier.EntityPrototype(polyproto.Entity);
+ _metaData.SetEntityName(actionId, Loc.GetString("polymorph-self-action-name", ("target", entproto.Name)));
+ _metaData.SetEntityDescription(actionId, Loc.GetString("polymorph-self-action-description", ("target", entproto.Name)));
+
+ polycomp.PolymorphActions ??= new Dictionary<string, EntityUid>();
+ polycomp.PolymorphActions.Add(id, actionId);
+ _actions.AddAction(target, actionId, target);
+ }
}
[PublicAPI]
UpdateCollide();
}
}
-
- public sealed partial class PolymorphActionEvent : InstantActionEvent
- {
- /// <summary>
- /// The polymorph prototype containing all the information about
- /// the specific polymorph.
- /// </summary>
- public PolymorphPrototype Prototype = default!;
- }
-
- public sealed partial class RevertPolymorphActionEvent : InstantActionEvent
- {
-
- }
}
-using Content.Shared.Actions.ActionTypes;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
[RegisterComponent]
public sealed partial class RatKingComponent : Component
{
+ [DataField("actionRaiseArmy", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string ActionRaiseArmy = "ActionRatKingRaiseArmy";
+
/// <summary>
/// The action for the Raise Army ability
/// </summary>
- [DataField("actionRaiseArmy", required: true)]
- public InstantAction ActionRaiseArmy = new();
+ [DataField("actionRaiseArmyEntity")] public EntityUid? ActionRaiseArmyEntity;
/// <summary>
/// The amount of hunger one use of Raise Army consumes
[ViewVariables(VVAccess.ReadWrite), DataField("armyMobSpawnId", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
public string ArmyMobSpawnId = "MobRatServant";
+ [DataField("actionDomain", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string ActionDomain = "ActionRatKingDomain";
+
/// <summary>
/// The action for the Domain ability
/// </summary>
- [DataField("actionDomain", required: true)]
- public InstantAction ActionDomain = new();
+ [DataField("actionDomainEntity")]
+ public EntityUid? ActionDomainEntity;
/// <summary>
/// The amount of hunger one use of Domain consumes
[DataField("molesMiasmaPerDomain")]
public float MolesMiasmaPerDomain = 100f;
}
-};
+}
using Content.Server.Actions;
using Content.Server.Atmos.EntitySystems;
-using Content.Server.Nutrition.Components;
using Content.Server.Popups;
-using Content.Shared.Actions;
using Content.Shared.Atmos;
using Content.Shared.Nutrition.Components;
using Content.Shared.Nutrition.EntitySystems;
+using Content.Shared.RatKing;
using Robust.Server.GameObjects;
-using Robust.Shared.Player;
namespace Content.Server.RatKing
{
{
base.Initialize();
- SubscribeLocalEvent<RatKingComponent, ComponentStartup>(OnStartup);
+ SubscribeLocalEvent<RatKingComponent, MapInitEvent>(OnMapInit);
SubscribeLocalEvent<RatKingComponent, RatKingRaiseArmyActionEvent>(OnRaiseArmy);
SubscribeLocalEvent<RatKingComponent, RatKingDomainActionEvent>(OnDomain);
}
- private void OnStartup(EntityUid uid, RatKingComponent component, ComponentStartup args)
+ private void OnMapInit(EntityUid uid, RatKingComponent component, MapInitEvent args)
{
- _action.AddAction(uid, component.ActionRaiseArmy, null);
- _action.AddAction(uid, component.ActionDomain, null);
+ _action.AddAction(uid, ref component.ActionRaiseArmyEntity, component.ActionRaiseArmy);
+ _action.AddAction(uid, ref component.ActionDomainEntity, component.ActionDomain);
}
/// <summary>
tileMix?.AdjustMoles(Gas.Miasma, component.MolesMiasmaPerDomain);
}
}
-
- public sealed partial class RatKingRaiseArmyActionEvent : InstantActionEvent
- {
-
- }
-
- public sealed partial class RatKingDomainActionEvent : InstantActionEvent
- {
-
- }
-};
+}
using System.Numerics;
using Content.Server.Actions;
-using Content.Shared.Popups;
-using Content.Shared.Alert;
-using Content.Shared.Damage;
-using Content.Shared.Interaction;
using Content.Server.GameTicking;
-using Content.Shared.Stunnable;
-using Content.Shared.Revenant;
-using Robust.Server.GameObjects;
-using Robust.Shared.Random;
-using Content.Shared.StatusEffect;
-using Content.Server.Visible;
-using Content.Shared.Examine;
-using Robust.Shared.Prototypes;
-using Content.Shared.Actions.ActionTypes;
-using Content.Shared.Tag;
using Content.Server.Store.Components;
using Content.Server.Store.Systems;
+using Content.Server.Visible;
+using Content.Shared.Alert;
+using Content.Shared.Damage;
using Content.Shared.DoAfter;
+using Content.Shared.Examine;
using Content.Shared.FixedPoint;
+using Content.Shared.Interaction;
using Content.Shared.Maps;
using Content.Shared.Mobs.Systems;
using Content.Shared.Physics;
+using Content.Shared.Popups;
+using Content.Shared.Revenant;
using Content.Shared.Revenant.Components;
+using Content.Shared.StatusEffect;
+using Content.Shared.Stunnable;
+using Content.Shared.Tag;
+using Robust.Server.GameObjects;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Random;
namespace Content.Server.Revenant.EntitySystems;
public sealed partial class RevenantSystem : EntitySystem
{
[Dependency] private readonly IRobustRandom _random = default!;
- [Dependency] private readonly IPrototypeManager _proto = default!;
[Dependency] private readonly ActionsSystem _action = default!;
[Dependency] private readonly AlertsSystem _alerts = default!;
[Dependency] private readonly DamageableSystem _damage = default!;
[Dependency] private readonly VisibilitySystem _visibility = default!;
[Dependency] private readonly GameTicker _ticker = default!;
+ [ValidatePrototypeId<EntityPrototype>]
+ private const string RevenantShopId = "ActionRevenantShop";
+
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<RevenantComponent, ComponentStartup>(OnStartup);
+ SubscribeLocalEvent<RevenantComponent, MapInitEvent>(OnMapInit);
SubscribeLocalEvent<RevenantComponent, RevenantShopActionEvent>(OnShop);
SubscribeLocalEvent<RevenantComponent, DamageChangedEvent>(OnDamage);
//ghost vision
if (TryComp(uid, out EyeComponent? eye))
eye.VisibilityMask |= (uint) (VisibilityFlags.Ghost);
+ }
- var shopaction = new InstantAction(_proto.Index<InstantActionPrototype>("RevenantShop"));
- _action.AddAction(uid, shopaction, null);
+ private void OnMapInit(EntityUid uid, RevenantComponent component, MapInitEvent args)
+ {
+ _action.AddAction(uid, Spawn(RevenantShopId), null);
}
private void OnStatusAdded(EntityUid uid, RevenantComponent component, StatusEffectAddedEvent args)
+using Robust.Shared.Prototypes;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
+
namespace Content.Server.Sericulture;
[RegisterComponent]
public sealed partial class SericultureComponent : Component
{
-
[DataField("popupText")]
public string PopupText = "sericulture-failure-hunger";
[DataField("entityProduced", required: true)]
public string EntityProduced = "";
- [DataField("actionProto", required: true)]
- public string ActionProto = "";
+ [DataField("action", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string Action = "ActionSericulture";
+
+ [DataField("actionEntity")] public EntityUid? ActionEntity;
/// <summary>
/// How long will it take to make.
using Content.Server.Actions;
using Content.Server.DoAfter;
using Content.Server.Popups;
-using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
+using Content.Server.Stack;
using Content.Shared.DoAfter;
using Content.Shared.Nutrition.Components;
using Content.Shared.Nutrition.EntitySystems;
-using Robust.Shared.Prototypes;
using Content.Shared.Sericulture;
-using Content.Server.Stack;
namespace Content.Server.Sericulture;
{
[Dependency] private readonly ActionsSystem _actionsSystem = default!;
[Dependency] private readonly DoAfterSystem _doAfterSystem = default!;
- [Dependency] private readonly IPrototypeManager _protoManager = default!;
[Dependency] private readonly HungerSystem _hungerSystem = default!;
[Dependency] private readonly PopupSystem _popupSystem = default!;
[Dependency] private readonly StackSystem _stackSystem = default!;
{
base.Initialize();
- SubscribeLocalEvent<SericultureComponent, ComponentInit>(OnCompInit);
+ SubscribeLocalEvent<SericultureComponent, MapInitEvent>(OnCompMapInit);
SubscribeLocalEvent<SericultureComponent, ComponentShutdown>(OnCompRemove);
SubscribeLocalEvent<SericultureComponent, SericultureActionEvent>(OnSericultureStart);
SubscribeLocalEvent<SericultureComponent, SericultureDoAfterEvent>(OnSericultureDoAfter);
}
- private void OnCompInit(EntityUid uid, SericultureComponent comp, ComponentInit args)
+ private void OnCompMapInit(EntityUid uid, SericultureComponent comp, MapInitEvent args)
{
- if (!_protoManager.TryIndex<InstantActionPrototype>(comp.ActionProto, out var actionProto))
- return;
-
- _actionsSystem.AddAction(uid, new InstantAction(actionProto), uid);
+ _actionsSystem.AddAction(uid, ref comp.ActionEntity, comp.Action, uid);
}
private void OnCompRemove(EntityUid uid, SericultureComponent comp, ComponentShutdown args)
{
- if (!_protoManager.TryIndex<InstantActionPrototype>(comp.ActionProto, out var actionProto))
- return;
-
- _actionsSystem.RemoveAction(uid, new InstantAction(actionProto));
+ _actionsSystem.RemoveAction(uid, comp.ActionEntity);
}
private void OnSericultureStart(EntityUid uid, SericultureComponent comp, SericultureActionEvent args)
return false;
}
-
- public sealed partial class SericultureActionEvent : InstantActionEvent { }
}
private void OnSelectableInstalled(EntityUid uid, SelectableBorgModuleComponent component, ref BorgModuleInstalledEvent args)
{
var chassis = args.ChassisEnt;
- component.ModuleSwapAction.EntityIcon = uid;
- _actions.AddAction(chassis, component.ModuleSwapAction, uid);
+
+ var action = _actions.AddAction(chassis, ref component.ModuleSwapActionEntity, component.ModuleSwapActionId, uid);
+ if (action != null)
+ {
+ action.EntityIcon = uid;
+ Dirty(component.ModuleSwapActionEntity!.Value, action);
+ }
+
SelectModule(chassis, uid, moduleComp: component);
}
using Content.Server.Roles;
using Content.Server.Station.Systems;
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Administration;
using Content.Shared.Chat;
using Content.Shared.Emag.Components;
{
base.Initialize();
- SubscribeLocalEvent<SiliconLawBoundComponent, ComponentStartup>(OnComponentStartup);
SubscribeLocalEvent<SiliconLawBoundComponent, ComponentShutdown>(OnComponentShutdown);
SubscribeLocalEvent<SiliconLawBoundComponent, MapInitEvent>(OnMapInit);
SubscribeLocalEvent<SiliconLawBoundComponent, MindAddedMessage>(OnMindAdded);
SubscribeLocalEvent<EmagSiliconLawComponent, ExaminedEvent>(OnExamined);
}
- private void OnComponentStartup(EntityUid uid, SiliconLawBoundComponent component, ComponentStartup args)
- {
- component.ProvidedAction = new(_prototype.Index<InstantActionPrototype>(component.ViewLawsAction));
- _actions.AddAction(uid, component.ProvidedAction, null);
- }
-
private void OnComponentShutdown(EntityUid uid, SiliconLawBoundComponent component, ComponentShutdown args)
{
- if (component.ProvidedAction != null)
- _actions.RemoveAction(uid, component.ProvidedAction);
+ if (component.ViewLawsActionEntity != null)
+ _actions.RemoveAction(uid, component.ViewLawsActionEntity);
}
private void OnMapInit(EntityUid uid, SiliconLawBoundComponent component, MapInitEvent args)
{
+ _actions.AddAction(uid, ref component.ViewLawsActionEntity, component.ViewLawsAction);
GetLaws(uid, component);
}
-using Content.Server.Humanoid;
using Content.Server.Speech.EntitySystems;
-using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Chat.Prototypes;
using Content.Shared.Humanoid;
using Robust.Shared.Audio;
+using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary;
[DataField("wilhelmProbability")]
public float WilhelmProbability = 0.0002f;
- [DataField("screamActionId", customTypeSerializer: typeof(PrototypeIdSerializer<InstantActionPrototype>))]
- public string ScreamActionId = "Scream";
+ [DataField("screamAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string ScreamAction = "ActionScream";
- [DataField("screamAction")]
- public InstantAction? ScreamAction;
+ [DataField("screamActionEntity")]
+ public EntityUid? ScreamActionEntity;
/// <summary>
/// Currently loaded emote sounds prototype, based on entity sex.
[ViewVariables]
public EmoteSoundsPrototype? EmoteSounds = null;
}
-
-public sealed partial class ScreamActionEvent : InstantActionEvent
-{
-
-}
using Content.Server.Administration.Logs;
using Content.Shared.Actions;
+using Content.Shared.Database;
using Content.Shared.Speech.Components;
using Content.Shared.Speech.EntitySystems;
-using Content.Shared.Database;
using Robust.Server.GameObjects;
namespace Content.Server.Speech.EntitySystems;
SubscribeLocalEvent<MeleeSpeechComponent, MeleeSpeechBattlecryChangedMessage>(OnBattlecryChanged);
SubscribeLocalEvent<MeleeSpeechComponent, MeleeSpeechConfigureActionEvent>(OnConfigureAction);
SubscribeLocalEvent<MeleeSpeechComponent, GetItemActionsEvent>(OnGetActions);
- SubscribeLocalEvent<MeleeSpeechComponent, ComponentInit>(OnComponentInit);
+ SubscribeLocalEvent<MeleeSpeechComponent, MapInitEvent>(OnComponentMapInit);
}
- private void OnComponentInit(EntityUid uid, MeleeSpeechComponent component, ComponentInit args)
+ private void OnComponentMapInit(EntityUid uid, MeleeSpeechComponent component, MapInitEvent args)
{
- if (component.ConfigureAction != null)
- _actionSystem.AddAction(uid, component.ConfigureAction, uid);
+ _actionSystem.AddAction(uid, ref component.ConfigureActionEntity, component.ConfigureAction, uid);
}
private void OnGetActions(EntityUid uid, MeleeSpeechComponent component, GetItemActionsEvent args)
{
- if (component.ConfigureAction != null)
- args.Actions.Add(component.ConfigureAction);
+ args.AddAction(ref component.ConfigureActionEntity, component.ConfigureAction);
}
private void OnBattlecryChanged(EntityUid uid, MeleeSpeechComponent comp, MeleeSpeechBattlecryChangedMessage args)
{
using Content.Server.Actions;
using Content.Server.Chat.Systems;
-using Content.Server.Humanoid;
using Content.Server.Speech.Components;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Chat.Prototypes;
using Content.Shared.Humanoid;
+using Content.Shared.Speech;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
private void OnMapInit(EntityUid uid, VocalComponent component, MapInitEvent args)
{
// try to add scream action when vocal comp added
- if (_proto.TryIndex(component.ScreamActionId, out InstantActionPrototype? proto))
- {
- component.ScreamAction = new InstantAction(proto);
- _actions.AddAction(uid, component.ScreamAction, null);
- }
-
+ _actions.AddAction(uid, ref component.ScreamActionEntity, component.ScreamAction);
LoadSounds(uid, component);
}
private void OnShutdown(EntityUid uid, VocalComponent component, ComponentShutdown args)
{
// remove scream action when component removed
- if (component.ScreamAction != null)
+ if (component.ScreamActionEntity != null)
{
- _actions.RemoveAction(uid, component.ScreamAction);
+ _actions.RemoveAction(uid, component.ScreamActionEntity);
}
}
if (args.Handled)
return;
- _chat.TryEmoteWithChat(uid, component.ScreamActionId);
+ _chat.TryEmoteWithChat(uid, component.ScreamId);
args.Handled = true;
}
+using System.Linq;
using Content.Server.Actions;
using Content.Server.Administration.Logs;
using Content.Server.PDA.Ringer;
using Content.Server.Stack;
using Content.Server.Store.Components;
using Content.Server.UserInterface;
-using Content.Shared.Actions.ActionTypes;
+using Content.Shared.Database;
using Content.Shared.FixedPoint;
using Content.Shared.Hands.EntitySystems;
using Content.Shared.Store;
-using Content.Shared.Database;
using Robust.Server.GameObjects;
-using System.Linq;
namespace Content.Server.Store.Systems;
}
//give action
- if (listing.ProductAction != null)
+ if (!string.IsNullOrWhiteSpace(listing.ProductAction))
{
- var action = new InstantAction(_proto.Index<InstantActionPrototype>(listing.ProductAction));
- _actions.AddAction(buyer, action, null);
+ _actions.AddAction(buyer, Spawn(listing.ProductAction), null);
}
//broadcast event
using Content.Shared.Hands.Components;
using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
+using Content.Shared.UserInterface;
using Content.Shared.Verbs;
using Robust.Server.GameObjects;
using Robust.Server.Player;
-using Content.Shared.Actions.ActionTypes;
-using Robust.Shared.Reflection;
-using Robust.Shared.Serialization;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Server.UserInterface;
[RegisterComponent]
-public sealed partial class IntrinsicUIComponent : Component, ISerializationHooks
+public sealed partial class IntrinsicUIComponent : Component
{
/// <summary>
/// List of UIs and their actions that this entity has.
/// </summary>
- [DataField("uis", required: true)]
- public List<IntrinsicUIEntry> UIs = new();
-
- void ISerializationHooks.AfterDeserialization()
- {
- for (var i = 0; i < UIs.Count; i++)
- {
- var ui = UIs[i];
- ui.AfterDeserialization();
- UIs[i] = ui;
- }
- }
+ [DataField("uis", required: true)] public List<IntrinsicUIEntry> UIs = new();
}
[DataDefinition]
-public partial struct IntrinsicUIEntry
+public partial class IntrinsicUIEntry
{
- [ViewVariables] public Enum? Key { get; private set; } = null;
-
/// <summary>
/// The BUI key that this intrinsic UI should open.
/// </summary>
[DataField("key", required: true)]
- private string _keyRaw = default!;
+ public Enum? Key { get; private set; }
+
+ [DataField("toggleAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>), required: true)]
+ public string? ToggleAction;
/// <summary>
/// The action used for this BUI.
/// </summary>
- [DataField("toggleAction", required: true)]
- public InstantAction ToggleAction = new();
-
- public void AfterDeserialization()
- {
- var reflectionManager = IoCManager.Resolve<IReflectionManager>();
- if (reflectionManager.TryParseEnumReference(_keyRaw, out var key))
- Key = key;
-
- if (ToggleAction.Event is ToggleIntrinsicUIEvent ev)
- {
- ev.Key = Key;
- }
- }
-
- public IntrinsicUIEntry() {}
+ [DataField("toggleActionEntity")]
+ public EntityUid? ToggleActionEntity = new();
}
using Content.Server.Actions;
using Content.Shared.Actions;
-using JetBrains.Annotations;
+using Content.Shared.UserInterface;
using Robust.Server.GameObjects;
namespace Content.Server.UserInterface;
foreach (var entry in component.UIs)
{
- _actionsSystem.AddAction(uid, entry.ToggleAction, null, actions);
+ _actionsSystem.AddAction(uid, ref entry.ToggleActionEntity, entry.ToggleAction, null, actions);
}
}
}
}
-[UsedImplicitly]
-public sealed partial class ToggleIntrinsicUIEvent : InstantActionEvent
-{
- [ViewVariables]
- public Enum? Key { get; set; }
-}
-
// Competing with ActivatableUI for horrible event names.
public sealed class IntrinsicUIOpenAttemptEvent : CancellableEntityEventArgs
{
using Content.Shared.Access.Components;
using Content.Shared.Access.Systems;
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Damage;
using Content.Shared.Destructible;
using Content.Shared.DoAfter;
base.Initialize();
_sawmill = Logger.GetSawmill("vending");
+ SubscribeLocalEvent<VendingMachineComponent, MapInitEvent>(OnComponentMapInit);
SubscribeLocalEvent<VendingMachineComponent, PowerChangedEvent>(OnPowerChanged);
SubscribeLocalEvent<VendingMachineComponent, BreakageEventArgs>(OnBreak);
SubscribeLocalEvent<VendingMachineComponent, GotEmaggedEvent>(OnEmagged);
SubscribeLocalEvent<VendingMachineRestockComponent, PriceCalculationEvent>(OnPriceCalculation);
}
+ private void OnComponentMapInit(EntityUid uid, VendingMachineComponent component, MapInitEvent args)
+ {
+ _action.AddAction(uid, ref component.ActionEntity, component.Action, uid);
+ Dirty(uid, component);
+ }
+
private void OnVendingPrice(EntityUid uid, VendingMachineComponent component, ref PriceCalculationEvent args)
{
var price = 0.0;
{
TryUpdateVisualState(uid, component);
}
-
- if (component.Action != null)
- {
- var action = new InstantAction(PrototypeManager.Index<InstantActionPrototype>(component.Action));
- _action.AddAction(uid, action, uid);
- }
}
private void OnActivatableUIOpenAttempt(EntityUid uid, VendingMachineComponent component, ActivatableUIOpenAttemptEvent args)
using Content.Server.Actions;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Inventory;
using Content.Shared.Inventory.Events;
-using Content.Shared.Speech;
-using Robust.Shared.Prototypes;
namespace Content.Server.VoiceMask;
{
[Dependency] private readonly InventorySystem _inventory = default!;
[Dependency] private readonly ActionsSystem _actions = default!;
- [Dependency] private readonly IPrototypeManager _prototypeManager = default!;
private const string MaskSlot = "mask";
var comp = EnsureComp<VoiceMaskComponent>(user);
comp.VoiceName = component.LastSetName;
- if (!_prototypeManager.TryIndex<InstantActionPrototype>(component.Action, out var action))
- {
- throw new ArgumentException("Could not get voice masking prototype.");
- }
-
- _actions.AddAction(user, (InstantAction) action.Clone(), uid);
+ _actions.AddAction(user, ref component.ActionEntity, component.Action, uid);
}
private void OnUnequip(EntityUid uid, VoiceMaskerComponent compnent, GotUnequippedEvent args)
using Content.Server.Administration.Logs;
using Content.Server.Chat.Systems;
using Content.Server.Popups;
-using Content.Shared.Actions;
using Content.Shared.Database;
using Content.Shared.Inventory.Events;
using Content.Shared.Preferences;
UserInterfaceSystem.SetUiState(bui, new VoiceMaskBuiState(component.VoiceName));
}
}
-
-public sealed partial class VoiceMaskSetNameEvent : InstantActionEvent
-{
-}
-using Content.Shared.Actions.ActionTypes;
+using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Server.VoiceMask;
{
[ViewVariables(VVAccess.ReadWrite)] public string LastSetName = "Unknown";
- [DataField("action", customTypeSerializer: typeof(PrototypeIdSerializer<InstantActionPrototype>))]
- public string Action = "ChangeVoiceMask";
+ [DataField("action", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string Action = "ActionChangeVoiceMask";
+
+ [DataField("actionEntity")] public EntityUid? ActionEntity;
}
using Content.Server.Actions;
using Content.Server.Popups;
-using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Xenoarchaeology.XenoArtifacts;
using Robust.Shared.Prototypes;
[Dependency] private readonly ActionsSystem _actions = default!;
[Dependency] private readonly PopupSystem _popup = default!;
+ [ValidatePrototypeId<EntityPrototype>] private const string ArtifactActivateActionId = "ActionArtifactActivate";
+
/// <summary>
/// Used to add the artifact activation action (hehe), which lets sentient artifacts activate themselves,
/// either through admemery or the sentience effect.
/// </summary>
public void InitializeActions()
{
- SubscribeLocalEvent<ArtifactComponent, ComponentStartup>(OnStartup);
+ SubscribeLocalEvent<ArtifactComponent, MapInitEvent>(OnStartup);
SubscribeLocalEvent<ArtifactComponent, ComponentRemove>(OnRemove);
SubscribeLocalEvent<ArtifactComponent, ArtifactSelfActivateEvent>(OnSelfActivate);
}
- private void OnStartup(EntityUid uid, ArtifactComponent component, ComponentStartup args)
+ private void OnStartup(EntityUid uid, ArtifactComponent component, MapInitEvent args)
{
- if (_prototype.TryIndex<InstantActionPrototype>("ArtifactActivate", out var proto))
- {
- _actions.AddAction(uid, new InstantAction(proto), null);
- }
+ RandomizeArtifact(uid, component);
+ _actions.AddAction(uid, Spawn(ArtifactActivateActionId), null);
}
private void OnRemove(EntityUid uid, ArtifactComponent component, ComponentRemove args)
{
- if (_prototype.TryIndex<InstantActionPrototype>("ArtifactActivate", out var proto))
- {
- _actions.RemoveAction(uid, new InstantAction(proto));
- }
+ _actions.RemoveAction(uid, ArtifactActivateActionId);
}
private void OnSelfActivate(EntityUid uid, ArtifactComponent component, ArtifactSelfActivateEvent args)
args.Handled = true;
}
}
-
using Content.Server.Xenoarchaeology.Equipment.Components;
using Content.Server.Xenoarchaeology.XenoArtifacts.Events;
using Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components;
+using Content.Shared.CCVar;
using Content.Shared.Xenoarchaeology.XenoArtifacts;
using JetBrains.Annotations;
+using Robust.Shared.Configuration;
using Robust.Shared.Random;
using Robust.Shared.Timing;
-using Robust.Shared.Configuration;
-using Content.Shared.CCVar;
namespace Content.Server.Xenoarchaeology.XenoArtifacts;
_sawmill = Logger.GetSawmill("artifact");
- SubscribeLocalEvent<ArtifactComponent, MapInitEvent>(OnInit);
SubscribeLocalEvent<ArtifactComponent, PriceCalculationEvent>(GetPrice);
SubscribeLocalEvent<RoundEndTextAppendEvent>(OnRoundEnd);
InitializeActions();
}
- private void OnInit(EntityUid uid, ArtifactComponent component, MapInitEvent args)
- {
- RandomizeArtifact(uid, component);
- }
-
/// <summary>
/// Calculates the price of an artifact based on
/// how many nodes have been unlocked/triggered
-using Content.Server.Magic.Events;
-using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components;
+using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components;
using Content.Server.Xenoarchaeology.XenoArtifacts.Events;
+using Content.Shared.Magic.Events;
namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Hands;
using Content.Shared.Inventory;
using Content.Shared.Inventory.Events;
using Robust.Shared.Map;
+using Robust.Shared.Network;
using Robust.Shared.Serialization;
namespace Content.Shared.Actions;
/// </remarks>
public sealed class GetItemActionsEvent : EntityEventArgs
{
- public SortedSet<ActionType> Actions = new();
+ private readonly IEntityManager _entities;
+ private readonly INetManager _net;
+ public readonly SortedSet<EntityUid> Actions = new();
/// <summary>
/// User equipping the item.
/// </summary>
public bool InHands => SlotFlags == null;
- public GetItemActionsEvent(EntityUid user, SlotFlags? slotFlags = null)
+ public GetItemActionsEvent(IEntityManager entities, INetManager net, EntityUid user, SlotFlags? slotFlags = null)
{
+ _entities = entities;
+ _net = net;
User = user;
SlotFlags = slotFlags;
}
+
+ public void AddAction(ref EntityUid? actionId, string? prototypeId)
+ {
+ if (_entities.Deleted(actionId))
+ {
+ if (string.IsNullOrWhiteSpace(prototypeId) || _net.IsClient)
+ return;
+
+ actionId = _entities.Spawn(prototypeId);
+ }
+
+ Actions.Add(actionId.Value);
+ }
}
/// <summary>
[Serializable, NetSerializable]
public sealed class RequestPerformActionEvent : EntityEventArgs
{
- public readonly ActionType Action;
+ public readonly EntityUid Action;
public readonly EntityUid? EntityTarget;
public readonly EntityCoordinates? EntityCoordinatesTarget;
- public RequestPerformActionEvent(InstantAction action)
+ public RequestPerformActionEvent(EntityUid action)
{
Action = action;
}
- public RequestPerformActionEvent(EntityTargetAction action, EntityUid entityTarget)
+ public RequestPerformActionEvent(EntityUid action, EntityUid entityTarget)
{
Action = action;
EntityTarget = entityTarget;
}
- public RequestPerformActionEvent(WorldTargetAction action, EntityCoordinates entityCoordinatesTarget)
+ public RequestPerformActionEvent(EntityUid action, EntityCoordinates entityCoordinatesTarget)
{
Action = action;
EntityCoordinatesTarget = entityCoordinatesTarget;
+++ /dev/null
-using Robust.Shared.Prototypes;
-
-namespace Content.Shared.Actions.ActionTypes;
-
-// These are just prototype definitions for actions. Allows actions to be defined once in yaml and re-used elsewhere.
-// Note that you still need to create a new instance of each action to properly track the state (cooldown, toggled,
-// enabled, etc). The prototypes should not be modified directly.
-//
-// If ever action states data is separated from the rest of the data, this might not be required
-// anymore.
-
-[Prototype("worldTargetAction")]
-public sealed partial class WorldTargetActionPrototype : WorldTargetAction, IPrototype
-{
- [IdDataField]
- public string ID { get; private set; } = default!;
-
- // This is a shitty hack to get around the fact that action-prototypes should not in general be sever-exclusive
- // prototypes, but some actions may need to use server-exclusive events, and there is no way to specify on a
- // per-prototype basis whether the client should ignore it when validating yaml.
- [DataField("serverEvent", serverOnly: true)]
- public WorldTargetActionEvent? ServerEvent
- {
- get => Event;
- set => Event = value;
- }
-}
-
-[Prototype("entityTargetAction")]
-public sealed partial class EntityTargetActionPrototype : EntityTargetAction, IPrototype
-{
- [IdDataField]
- public string ID { get; private set; } = default!;
-
- [DataField("serverEvent", serverOnly: true)]
- public EntityTargetActionEvent? ServerEvent
- {
- get => Event;
- set => Event = value;
- }
-}
-
-[Prototype("instantAction")]
-public sealed partial class InstantActionPrototype : InstantAction, IPrototype
-{
- [IdDataField]
- public string ID { get; private set; } = default!;
-
- [DataField("serverEvent", serverOnly: true)]
- public InstantActionEvent? ServerEvent
- {
- get => Event;
- set => Event = value;
- }
-}
-
+++ /dev/null
-using Robust.Shared.Audio;
-using Robust.Shared.Serialization;
-using Robust.Shared.Utility;
-
-namespace Content.Shared.Actions.ActionTypes;
-
-[ImplicitDataDefinitionForInheritors]
-[Serializable, NetSerializable]
-public abstract partial class ActionType : IEquatable<ActionType>, IComparable, ICloneable
-{
- /// <summary>
- /// Icon representing this action in the UI.
- /// </summary>
- [DataField("icon")]
- public SpriteSpecifier? Icon;
-
- /// <summary>
- /// For toggle actions only, icon to show when toggled on. If omitted, the action will simply be highlighted
- /// when turned on.
- /// </summary>
- [DataField("iconOn")]
- public SpriteSpecifier? IconOn;
-
- /// <summary>
- /// If not null, this color will modulate the action icon color.
- /// </summary>
- /// <remarks>
- /// This currently only exists for decal-placement actions, so that the action icons correspond to the color of
- /// the decal. But this is probably useful for other actions, including maybe changing color on toggle.
- /// </remarks>
- [DataField("iconColor")]
- public Color IconColor = Color.White;
-
- /// <summary>
- /// Name to show in UI.
- /// </summary>
- [DataField("name")]
- public string DisplayName = string.Empty;
-
- /// <summary>
- /// This is just <see cref="DisplayName"/> with localized strings resolved and markup removed. If null, will be
- /// inferred from <see cref="DisplayName"/>. This is cached to speed up game state handling.
- /// </summary>
- [NonSerialized]
- public string? RawName;
-
- /// <summary>
- /// Description to show in UI. Accepts formatting.
- /// </summary>
- [DataField("description")]
- public string Description = string.Empty;
-
- /// <summary>
- /// Keywords that can be used to search for this action in the action menu.
- /// </summary>
- [DataField("keywords")]
- public HashSet<string> Keywords = new();
-
- /// <summary>
- /// Whether this action is currently enabled. If not enabled, this action cannot be performed.
- /// </summary>
- [DataField("enabled")]
- public bool Enabled = true;
-
- /// <summary>
- /// The toggle state of this action. Toggling switches the currently displayed icon, see <see cref="Icon"/> and <see cref="IconOn"/>.
- /// </summary>
- /// <remarks>
- /// The toggle can set directly via <see cref="SharedActionsSystem.SetToggled()"/>, but it will also be
- /// automatically toggled for targeted-actions while selecting a target.
- /// </remarks>
- public bool Toggled;
-
- /// <summary>
- /// The current cooldown on the action.
- /// </summary>
- public (TimeSpan Start, TimeSpan End)? Cooldown;
-
- /// <summary>
- /// Time interval between action uses.
- /// </summary>
- [DataField("useDelay")]
- public TimeSpan? UseDelay;
-
- /// <summary>
- /// Convenience tool for actions with limited number of charges. Automatically decremented on use, and the
- /// action is disabled when it reaches zero. Does NOT automatically remove the action from the action bar.
- /// </summary>
- [DataField("charges")]
- public int? Charges;
-
- /// <summary>
- /// The entity that enables / provides this action. If the action is innate, this may be the user themselves. If
- /// this action has no provider (e.g., mapping tools), the this will result in broadcast events.
- /// </summary>
- public EntityUid? Provider;
-
- /// <summary>
- /// Entity to use for the action icon. Defaults to using <see cref="Provider"/>.
- /// </summary>
- public EntityUid? EntityIcon
- {
- get => _entityIcon ?? Provider;
- set => _entityIcon = value;
- }
-
- private EntityUid? _entityIcon;
-
- /// <summary>
- /// Whether the action system should block this action if the user cannot currently interact. Some spells or
- /// abilities may want to disable this and implement their own checks.
- /// </summary>
- [DataField("checkCanInteract")]
- public bool CheckCanInteract = true;
-
- /// <summary>
- /// If true, will simply execute the action locally without sending to the server.
- /// </summary>
- [DataField("clientExclusive")]
- public bool ClientExclusive = false;
-
- /// <summary>
- /// Determines the order in which actions are automatically added the action bar.
- /// </summary>
- [DataField("priority")]
- public int Priority = 0;
-
- /// <summary>
- /// What entity, if any, currently has this action in the actions component?
- /// </summary>
- [ViewVariables]
- public EntityUid? AttachedEntity;
-
- /// <summary>
- /// Whether or not to automatically add this action to the action bar when it becomes available.
- /// </summary>
- [DataField("autoPopulate")]
- public bool AutoPopulate = true;
-
-
- /// <summary>
- /// Whether or not to automatically remove this action to the action bar when it becomes unavailable.
- /// </summary>
- [DataField("autoRemove")]
- public bool AutoRemove = true;
-
- /// <summary>
- /// Temporary actions are removed from the action component when removed from the action-bar/GUI. Currently,
- /// should only be used for client-exclusive actions (server is not notified).
- /// </summary>
- /// <remarks>
- /// Currently there is no way for a player to just voluntarily remove actions. They can hide them from the
- /// toolbar, but not actually remove them. This is undesirable for things like dynamically added mapping
- /// entity-selection actions, as the # of actions would just keep increasing.
- /// </remarks>
- [DataField("temporary")]
- public bool Temporary;
- // TODO re-add support for this
- // UI refactor seems to have just broken it.
-
- /// <summary>
- /// Determines the appearance of the entity-icon for actions that are enabled via some entity.
- /// </summary>
- [DataField("itemIconStyle")]
- public ItemActionIconStyle ItemIconStyle;
-
- /// <summary>
- /// If not null, this sound will be played when performing this action.
- /// </summary>
- [DataField("sound")]
- public SoundSpecifier? Sound;
-
- /// <summary>
- /// Compares two actions based on their properties. This is used to determine equality when the client requests the
- /// server to perform some action. Also determines the order in which actions are automatically added to the action bar.
- /// </summary>
- /// <remarks>
- /// Basically: if an action has the same priority, name, and is enabled by the same entity, then the actions are considered equal.
- /// The entity-check is required to avoid toggling all flashlights simultaneously whenever a flashlight-hoarder uses an action.
- /// </remarks>
- public virtual int CompareTo(object? obj)
- {
- if (obj is not ActionType otherAction)
- return -1;
-
- if (Priority != otherAction.Priority)
- return otherAction.Priority - Priority;
-
- RawName ??= FormattedMessage.RemoveMarkup(Loc.GetString(DisplayName));
- otherAction.RawName ??= FormattedMessage.RemoveMarkup(Loc.GetString(otherAction.DisplayName));
- var cmp = string.Compare(RawName, otherAction.RawName, StringComparison.CurrentCulture);
- if (cmp != 0)
- return cmp;
-
- if (Provider != otherAction.Provider)
- {
- if (Provider == null)
- return -1;
-
- if (otherAction.Provider == null)
- return 1;
-
- // uid to int casting... it says "Do NOT use this in content". You can't tell me what to do.
- return (int) Provider - (int) otherAction.Provider;
- }
-
- return 0;
- }
-
- /// <summary>
- /// Proper client-side state handling requires the ability to clone an action from the component state.
- /// Otherwise modifying the action can lead to modifying the stored server state.
- /// </summary>
- public abstract object Clone();
-
- public virtual void CopyFrom(object objectToClone)
- {
- if (objectToClone is not ActionType toClone)
- return;
-
- // This is pretty Ugly to look at. But actions are sent to the client in a component state, so they have to be
- // cloneable. Would be easy if this were a struct of only value-types, but I don't want to restrict actions like
- // that.
- Priority = toClone.Priority;
- Icon = toClone.Icon;
- IconOn = toClone.IconOn;
- DisplayName = toClone.DisplayName;
- RawName = null;
- Description = toClone.Description;
- Provider = toClone.Provider;
- AttachedEntity = toClone.AttachedEntity;
- Enabled = toClone.Enabled;
- Toggled = toClone.Toggled;
- Cooldown = toClone.Cooldown;
- Charges = toClone.Charges;
- Keywords = new(toClone.Keywords);
- AutoPopulate = toClone.AutoPopulate;
- AutoRemove = toClone.AutoRemove;
- ItemIconStyle = toClone.ItemIconStyle;
- CheckCanInteract = toClone.CheckCanInteract;
- UseDelay = toClone.UseDelay;
- Sound = toClone.Sound;
- ItemIconStyle = toClone.ItemIconStyle;
- _entityIcon = toClone._entityIcon;
- }
-
- public bool Equals(ActionType? other)
- {
- return CompareTo(other) == 0;
- }
-
- public static bool operator ==(ActionType? left, ActionType? right)
- {
- if (left is null)
- return right is null;
-
- return left.Equals(right);
- }
-
- public static bool operator !=(ActionType? left, ActionType? right)
- {
- return !(left == right);
- }
-
- public override int GetHashCode()
- {
- unchecked
- {
- var hashCode = Priority.GetHashCode();
- hashCode = (hashCode * 397) ^ DisplayName.GetHashCode();
- hashCode = (hashCode * 397) ^ Provider.GetHashCode();
- return hashCode;
- }
- }
-}
+++ /dev/null
-using Robust.Shared.Serialization;
-
-namespace Content.Shared.Actions.ActionTypes;
-
-/// <summary>
-/// Instantaneous action with no extra targeting information. Will result in <see cref="InstantActionEvent"/> being raised.
-/// </summary>
-[Serializable, NetSerializable]
-[Virtual]
-public partial class InstantAction : ActionType
-{
- /// <summary>
- /// The local-event to raise when this action is performed.
- /// </summary>
- [DataField("event")]
- [NonSerialized]
- public InstantActionEvent? Event;
-
- public InstantAction() { }
- public InstantAction(InstantAction toClone)
- {
- CopyFrom(toClone);
- }
-
- public override void CopyFrom(object objectToClone)
- {
- base.CopyFrom(objectToClone);
-
- // Server doesn't serialize events to us.
- // As such we don't want them to bulldoze any events we may have gotten locally.
- if (objectToClone is not InstantAction toClone)
- return;
-
- // Events should be re-usable, and shouldn't be modified during prediction.
- if (toClone.Event != null)
- Event = toClone.Event;
- }
-
- public override object Clone()
- {
- return new InstantAction(this);
- }
-}
+++ /dev/null
-using Content.Shared.Interaction;
-using Content.Shared.Whitelist;
-using Robust.Shared.Serialization;
-
-namespace Content.Shared.Actions.ActionTypes;
-
-[Serializable, NetSerializable]
-public abstract partial class TargetedAction : ActionType
-{
- /// <summary>
- /// For entity- or map-targeting actions, if this is true the action will remain selected after it is used, so
- /// it can be continuously re-used. If this is false, the action will be deselected after one use.
- /// </summary>
- [DataField("repeat")]
- public bool Repeat;
-
- /// <summary>
- /// For entity- or map-targeting action, determines whether the action is deselected if the user doesn't click a valid target.
- /// </summary>
- [DataField("deselectOnMiss")]
- public bool DeselectOnMiss;
-
- /// <summary>
- /// Whether the action system should block this action if the user cannot actually access the target
- /// (unobstructed, in inventory, in backpack, etc). Some spells or abilities may want to disable this and
- /// implement their own checks.
- /// </summary>
- /// <remarks>
- /// Even if this is false, the <see cref="Range"/> will still be checked.
- /// </remarks>
- [DataField("checkCanAccess")]
- public bool CheckCanAccess = true;
-
- [DataField("range")]
- public float Range = SharedInteractionSystem.InteractionRange;
-
- /// <summary>
- /// If the target is invalid, this bool determines whether the left-click will default to performing a standard-interaction
- /// </summary>
- /// <remarks>
- /// Interactions will still be blocked if the target-validation generates a pop-up
- /// </remarks>
- [DataField("interactOnMiss")]
- public bool InteractOnMiss = false;
-
- /// <summary>
- /// If true, and if <see cref="ShowHandItemOverlay"/> is enabled, then this action's icon will be drawn by that
- /// over lay in place of the currently held item "held item".
- /// </summary>
- [DataField("targetingIndicator")]
- public bool TargetingIndicator = true;
-
- public override void CopyFrom(object objectToClone)
- {
- base.CopyFrom(objectToClone);
-
- if (objectToClone is not TargetedAction toClone)
- return;
-
- Range = toClone.Range;
- CheckCanAccess = toClone.CheckCanAccess;
- DeselectOnMiss = toClone.DeselectOnMiss;
- Repeat = toClone.Repeat;
- InteractOnMiss = toClone.InteractOnMiss;
- TargetingIndicator = toClone.TargetingIndicator;
- }
-}
-
-/// <summary>
-/// Action that targets some entity. Will result in <see cref="EntityTargetActionEvent"/> being raised.
-/// </summary>
-[Serializable, NetSerializable]
-[Virtual]
-public partial class EntityTargetAction : TargetedAction
-{
- /// <summary>
- /// The local-event to raise when this action is performed.
- /// </summary>
- [NonSerialized]
- [DataField("event")]
- public EntityTargetActionEvent? Event;
-
- [DataField("whitelist")]
- public EntityWhitelist? Whitelist;
-
- [DataField("canTargetSelf")]
- public bool CanTargetSelf = true;
-
- public EntityTargetAction() { }
- public EntityTargetAction(EntityTargetAction toClone)
- {
- CopyFrom(toClone);
- }
- public override void CopyFrom(object objectToClone)
- {
- base.CopyFrom(objectToClone);
-
- if (objectToClone is not EntityTargetAction toClone)
- return;
-
- CanTargetSelf = toClone.CanTargetSelf;
-
- // This isn't a deep copy, but I don't expect white-lists to ever be edited during prediction. So good enough?
- Whitelist = toClone.Whitelist;
-
- // Events should be re-usable, and shouldn't be modified during prediction.
- if (toClone.Event != null)
- Event = toClone.Event;
- }
-
- public override object Clone()
- {
- return new EntityTargetAction(this);
- }
-}
-
-/// <summary>
-/// Action that targets some map coordinates. Will result in <see cref="WorldTargetActionEvent"/> being raised.
-/// </summary>
-[Serializable, NetSerializable]
-[Virtual]
-public partial class WorldTargetAction : TargetedAction
-{
- /// <summary>
- /// The local-event to raise when this action is performed.
- /// </summary>
- [DataField("event")]
- [NonSerialized]
- public WorldTargetActionEvent? Event;
-
- public WorldTargetAction() { }
- public WorldTargetAction(WorldTargetAction toClone)
- {
- CopyFrom(toClone);
- }
-
- public override void CopyFrom(object objectToClone)
- {
- base.CopyFrom(objectToClone);
-
- if (objectToClone is not WorldTargetAction toClone)
- return;
-
- // Events should be re-usable, and shouldn't be modified during prediction.
- if (toClone.Event != null)
- Event = toClone.Event;
- }
-
- public override object Clone()
- {
- return new WorldTargetAction(this);
- }
-}
-using Content.Shared.Actions.ActionTypes;
using Robust.Shared.GameStates;
using Robust.Shared.Serialization;
[Access(typeof(SharedActionsSystem))]
public sealed partial class ActionsComponent : Component
{
- [ViewVariables]
- [Access(typeof(SharedActionsSystem), Other = AccessPermissions.ReadExecute)]
- // FIXME Friends
- public SortedSet<ActionType> Actions = new();
+ /// <summary>
+ /// Handled on the client to track added and removed actions.
+ /// </summary>
+ [ViewVariables] public readonly Dictionary<EntityUid, ActionMetaData> OldClientActions = new();
public override bool SendOnlyToOwner => true;
}
[Serializable, NetSerializable]
public sealed class ActionsComponentState : ComponentState
{
- public readonly List<ActionType> Actions;
+ public readonly List<EntityUid> Actions;
- [NonSerialized]
- public SortedSet<ActionType>? SortedActions;
-
- public ActionsComponentState(List<ActionType> actions)
+ public ActionsComponentState(List<EntityUid> actions)
{
Actions = actions;
}
}
+public readonly record struct ActionMetaData(bool ClientExclusive, bool AutoRemove);
+
/// <summary>
/// Determines how the action icon appears in the hotbar for item actions.
/// </summary>
--- /dev/null
+using Robust.Shared.Audio;
+using Robust.Shared.Serialization;
+using Robust.Shared.Utility;
+
+namespace Content.Shared.Actions;
+
+// TODO this should be an IncludeDataFields of each action component type, not use inheritance
+public abstract partial class BaseActionComponent : Component
+{
+ public abstract BaseActionEvent? BaseEvent { get; }
+
+ /// <summary>
+ /// Icon representing this action in the UI.
+ /// </summary>
+ [DataField("icon")] public SpriteSpecifier? Icon;
+
+ /// <summary>
+ /// For toggle actions only, icon to show when toggled on. If omitted, the action will simply be highlighted
+ /// when turned on.
+ /// </summary>
+ [DataField("iconOn")] public SpriteSpecifier? IconOn;
+
+ /// <summary>
+ /// If not null, this color will modulate the action icon color.
+ /// </summary>
+ /// <remarks>
+ /// This currently only exists for decal-placement actions, so that the action icons correspond to the color of
+ /// the decal. But this is probably useful for other actions, including maybe changing color on toggle.
+ /// </remarks>
+ [DataField("iconColor")] public Color IconColor = Color.White;
+
+ /// <summary>
+ /// Keywords that can be used to search for this action in the action menu.
+ /// </summary>
+ [DataField("keywords")] public HashSet<string> Keywords = new();
+
+ /// <summary>
+ /// Whether this action is currently enabled. If not enabled, this action cannot be performed.
+ /// </summary>
+ [DataField("enabled")] public bool Enabled = true;
+
+ /// <summary>
+ /// The toggle state of this action. Toggling switches the currently displayed icon, see <see cref="Icon"/> and <see cref="IconOn"/>.
+ /// </summary>
+ /// <remarks>
+ /// The toggle can set directly via <see cref="SharedActionsSystem.SetToggled"/>, but it will also be
+ /// automatically toggled for targeted-actions while selecting a target.
+ /// </remarks>
+ public bool Toggled;
+
+ /// <summary>
+ /// The current cooldown on the action.
+ /// </summary>
+ public (TimeSpan Start, TimeSpan End)? Cooldown;
+
+ /// <summary>
+ /// Time interval between action uses.
+ /// </summary>
+ [DataField("useDelay")] public TimeSpan? UseDelay;
+
+ /// <summary>
+ /// Convenience tool for actions with limited number of charges. Automatically decremented on use, and the
+ /// action is disabled when it reaches zero. Does NOT automatically remove the action from the action bar.
+ /// </summary>
+ [DataField("charges")] public int? Charges;
+
+ /// <summary>
+ /// The entity that enables / provides this action. If the action is innate, this may be the user themselves. If
+ /// this action has no provider (e.g., mapping tools), the this will result in broadcast events.
+ /// </summary>
+ public EntityUid? Provider;
+
+ /// <summary>
+ /// Entity to use for the action icon. Defaults to using <see cref="Provider"/>.
+ /// </summary>
+ public EntityUid? EntityIcon
+ {
+ get => _entityIcon ?? Provider;
+ set => _entityIcon = value;
+ }
+
+ private EntityUid? _entityIcon;
+
+ /// <summary>
+ /// Whether the action system should block this action if the user cannot currently interact. Some spells or
+ /// abilities may want to disable this and implement their own checks.
+ /// </summary>
+ [DataField("checkCanInteract")] public bool CheckCanInteract = true;
+
+ /// <summary>
+ /// If true, will simply execute the action locally without sending to the server.
+ /// </summary>
+ [DataField("clientExclusive")] public bool ClientExclusive = false;
+
+ /// <summary>
+ /// Determines the order in which actions are automatically added the action bar.
+ /// </summary>
+ [DataField("priority")] public int Priority = 0;
+
+ /// <summary>
+ /// What entity, if any, currently has this action in the actions component?
+ /// </summary>
+ [ViewVariables] public EntityUid? AttachedEntity;
+
+ /// <summary>
+ /// Whether or not to automatically add this action to the action bar when it becomes available.
+ /// </summary>
+ [DataField("autoPopulate")] public bool AutoPopulate = true;
+
+
+ /// <summary>
+ /// Whether or not to automatically remove this action to the action bar when it becomes unavailable.
+ /// </summary>
+ [DataField("autoRemove")] public bool AutoRemove = true;
+
+ /// <summary>
+ /// Temporary actions are removed from the action component when removed from the action-bar/GUI. Currently,
+ /// should only be used for client-exclusive actions (server is not notified).
+ /// </summary>
+ /// <remarks>
+ /// Currently there is no way for a player to just voluntarily remove actions. They can hide them from the
+ /// toolbar, but not actually remove them. This is undesirable for things like dynamically added mapping
+ /// entity-selection actions, as the # of actions would just keep increasing.
+ /// </remarks>
+ [DataField("temporary")] public bool Temporary;
+ // TODO re-add support for this
+ // UI refactor seems to have just broken it.
+
+ /// <summary>
+ /// Determines the appearance of the entity-icon for actions that are enabled via some entity.
+ /// </summary>
+ [DataField("itemIconStyle")] public ItemActionIconStyle ItemIconStyle;
+
+ /// <summary>
+ /// If not null, this sound will be played when performing this action.
+ /// </summary>
+ [DataField("sound")] public SoundSpecifier? Sound;
+}
+
+[Serializable, NetSerializable]
+public abstract class BaseActionComponentState : ComponentState
+{
+ public SpriteSpecifier? Icon;
+ public SpriteSpecifier? IconOn;
+ public Color IconColor;
+ public HashSet<string> Keywords;
+ public bool Enabled;
+ public bool Toggled;
+ public (TimeSpan Start, TimeSpan End)? Cooldown;
+ public TimeSpan? UseDelay;
+ public int? Charges;
+ public EntityUid? Provider;
+ public EntityUid? EntityIcon;
+ public bool CheckCanInteract;
+ public bool ClientExclusive;
+ public int Priority;
+ public EntityUid? AttachedEntity;
+ public bool AutoPopulate;
+ public bool AutoRemove;
+ public bool Temporary;
+ public ItemActionIconStyle ItemIconStyle;
+ public SoundSpecifier? Sound;
+
+ protected BaseActionComponentState(BaseActionComponent component)
+ {
+ Icon = component.Icon;
+ IconOn = component.IconOn;
+ IconColor = component.IconColor;
+ Keywords = component.Keywords;
+ Enabled = component.Enabled;
+ Toggled = component.Toggled;
+ Cooldown = component.Cooldown;
+ UseDelay = component.UseDelay;
+ Charges = component.Charges;
+ Provider = component.Provider;
+ EntityIcon = component.EntityIcon;
+ CheckCanInteract = component.CheckCanInteract;
+ ClientExclusive = component.ClientExclusive;
+ Priority = component.Priority;
+ AttachedEntity = component.AttachedEntity;
+ AutoPopulate = component.AutoPopulate;
+ AutoRemove = component.AutoRemove;
+ Temporary = component.Temporary;
+ ItemIconStyle = component.ItemIconStyle;
+ Sound = component.Sound;
+ }
+}
--- /dev/null
+using Content.Shared.Interaction;
+
+namespace Content.Shared.Actions;
+
+public abstract partial class BaseTargetActionComponent : BaseActionComponent
+{
+ /// <summary>
+ /// For entity- or map-targeting actions, if this is true the action will remain selected after it is used, so
+ /// it can be continuously re-used. If this is false, the action will be deselected after one use.
+ /// </summary>
+ [DataField("repeat")] public bool Repeat;
+
+ /// <summary>
+ /// For entity- or map-targeting action, determines whether the action is deselected if the user doesn't click a valid target.
+ /// </summary>
+ [DataField("deselectOnMiss")] public bool DeselectOnMiss;
+
+ /// <summary>
+ /// Whether the action system should block this action if the user cannot actually access the target
+ /// (unobstructed, in inventory, in backpack, etc). Some spells or abilities may want to disable this and
+ /// implement their own checks.
+ /// </summary>
+ /// <remarks>
+ /// Even if this is false, the <see cref="Range"/> will still be checked.
+ /// </remarks>
+ [DataField("checkCanAccess")] public bool CheckCanAccess = true;
+
+ [DataField("range")] public float Range = SharedInteractionSystem.InteractionRange;
+
+ /// <summary>
+ /// If the target is invalid, this bool determines whether the left-click will default to performing a standard-interaction
+ /// </summary>
+ /// <remarks>
+ /// Interactions will still be blocked if the target-validation generates a pop-up
+ /// </remarks>
+ [DataField("interactOnMiss")] public bool InteractOnMiss = false;
+
+ /// <summary>
+ /// If true, and if <see cref="ShowHandItemOverlay"/> is enabled, then this action's icon will be drawn by that
+ /// over lay in place of the currently held item "held item".
+ /// </summary>
+ [DataField("targetingIndicator")] public bool TargetingIndicator = true;
+}
--- /dev/null
+using Content.Shared.Whitelist;
+using Robust.Shared.GameStates;
+using Robust.Shared.Serialization;
+
+namespace Content.Shared.Actions;
+
+[RegisterComponent, NetworkedComponent]
+public sealed partial class EntityTargetActionComponent : BaseTargetActionComponent
+{
+ public override BaseActionEvent? BaseEvent => Event;
+
+ /// <summary>
+ /// The local-event to raise when this action is performed.
+ /// </summary>
+ [DataField("event")]
+ [NonSerialized]
+ public EntityTargetActionEvent? Event;
+
+ [DataField("whitelist")] public EntityWhitelist? Whitelist;
+
+ [DataField("canTargetSelf")] public bool CanTargetSelf = true;
+}
+
+[Serializable, NetSerializable]
+public sealed class EntityTargetActionComponentState : BaseActionComponentState
+{
+ public EntityWhitelist? Whitelist;
+ public bool CanTargetSelf;
+
+ public EntityTargetActionComponentState(EntityTargetActionComponent component) : base(component)
+ {
+ Whitelist = component.Whitelist;
+ CanTargetSelf = component.CanTargetSelf;
+ }
+}
--- /dev/null
+namespace Content.Shared.Actions.Events;
+
+public sealed partial class EggLayInstantActionEvent : InstantActionEvent {}
--- /dev/null
+namespace Content.Shared.Actions.Events;
+
+[ByRefEvent]
+public record struct GetActionDataEvent(BaseActionComponent? Action);
--- /dev/null
+namespace Content.Shared.Actions.Events;
+
+public sealed partial class InvisibleWallActionEvent : InstantActionEvent
+{
+}
--- /dev/null
+using Robust.Shared.GameStates;
+using Robust.Shared.Serialization;
+
+namespace Content.Shared.Actions;
+
+[RegisterComponent, NetworkedComponent]
+public sealed partial class InstantActionComponent : BaseActionComponent
+{
+ public override BaseActionEvent? BaseEvent => Event;
+
+ /// <summary>
+ /// The local-event to raise when this action is performed.
+ /// </summary>
+ [DataField("event")]
+ [NonSerialized]
+ public InstantActionEvent? Event;
+}
+
+[Serializable, NetSerializable]
+public sealed class InstantActionComponentState : BaseActionComponentState
+{
+ public InstantActionComponentState(InstantActionComponent component) : base(component)
+ {
+ }
+}
+using System.Diagnostics.CodeAnalysis;
+using System.Linq;
using Content.Shared.ActionBlocker;
-using Content.Shared.Actions.ActionTypes;
+using Content.Shared.Actions.Events;
using Content.Shared.Administration.Logs;
using Content.Shared.Database;
using Content.Shared.Hands;
using Robust.Shared.Containers;
using Robust.Shared.GameStates;
using Robust.Shared.Map;
-using Robust.Shared.Prototypes;
+using Robust.Shared.Network;
using Robust.Shared.Timing;
-using System.Linq;
namespace Content.Shared.Actions;
public abstract class SharedActionsSystem : EntitySystem
{
+ private const string ActionContainerId = "ActionContainer";
+
[Dependency] protected readonly IGameTiming GameTiming = default!;
[Dependency] private readonly ISharedAdminLogManager _adminLogger = default!;
+ [Dependency] private readonly INetManager _net = default!;
[Dependency] private readonly SharedInteractionSystem _interactionSystem = default!;
[Dependency] private readonly ActionBlockerSystem _actionBlockerSystem = default!;
[Dependency] private readonly SharedContainerSystem _containerSystem = default!;
SubscribeLocalEvent<ActionsComponent, DidUnequipEvent>(OnDidUnequip);
SubscribeLocalEvent<ActionsComponent, DidUnequipHandEvent>(OnHandUnequipped);
- SubscribeLocalEvent<ActionsComponent, ComponentGetState>(GetState);
+ SubscribeLocalEvent<ActionsComponent, MapInitEvent>(OnActionsMapInit);
+ SubscribeLocalEvent<ActionsComponent, ComponentGetState>(OnActionsGetState);
+ SubscribeLocalEvent<ActionsComponent, ComponentShutdown>(OnActionsShutdown);
+
+ SubscribeLocalEvent<InstantActionComponent, ComponentGetState>(OnInstantGetState);
+ SubscribeLocalEvent<EntityTargetActionComponent, ComponentGetState>(OnEntityTargetGetState);
+ SubscribeLocalEvent<WorldTargetActionComponent, ComponentGetState>(OnWorldTargetGetState);
+
+ SubscribeLocalEvent<InstantActionComponent, ComponentHandleState>(OnInstantHandleState);
+ SubscribeLocalEvent<EntityTargetActionComponent, ComponentHandleState>(OnEntityTargetHandleState);
+ SubscribeLocalEvent<WorldTargetActionComponent, ComponentHandleState>(OnWorldTargetHandleState);
+
+ SubscribeLocalEvent<InstantActionComponent, GetActionDataEvent>(OnGetActionData);
+ SubscribeLocalEvent<EntityTargetActionComponent, GetActionDataEvent>(OnGetActionData);
+ SubscribeLocalEvent<WorldTargetActionComponent, GetActionDataEvent>(OnGetActionData);
SubscribeAllEvent<RequestPerformActionEvent>(OnActionRequest);
}
+ private void OnInstantGetState(EntityUid uid, InstantActionComponent component, ref ComponentGetState args)
+ {
+ args.State = new InstantActionComponentState(component);
+ }
+
+ private void OnEntityTargetGetState(EntityUid uid, EntityTargetActionComponent component, ref ComponentGetState args)
+ {
+ args.State = new EntityTargetActionComponentState(component);
+ }
+
+ private void OnWorldTargetGetState(EntityUid uid, WorldTargetActionComponent component, ref ComponentGetState args)
+ {
+ args.State = new WorldTargetActionComponentState(component);
+ }
+
+ private void BaseHandleState(BaseActionComponent component, BaseActionComponentState state)
+ {
+ component.Icon = state.Icon;
+ component.IconOn = state.IconOn;
+ component.IconColor = state.IconColor;
+ component.Keywords = new HashSet<string>(state.Keywords);
+ component.Enabled = state.Enabled;
+ component.Toggled = state.Toggled;
+ component.Cooldown = state.Cooldown;
+ component.UseDelay = state.UseDelay;
+ component.Charges = state.Charges;
+ component.Provider = state.Provider;
+ component.EntityIcon = state.EntityIcon;
+ component.CheckCanInteract = state.CheckCanInteract;
+ component.ClientExclusive = state.ClientExclusive;
+ component.Priority = state.Priority;
+ component.AttachedEntity = state.AttachedEntity;
+ component.AutoPopulate = state.AutoPopulate;
+ component.AutoRemove = state.AutoRemove;
+ component.Temporary = state.Temporary;
+ component.ItemIconStyle = state.ItemIconStyle;
+ component.Sound = state.Sound;
+ }
+
+ private void OnInstantHandleState(EntityUid uid, InstantActionComponent component, ref ComponentHandleState args)
+ {
+ if (args.Current is not InstantActionComponentState state)
+ return;
+
+ BaseHandleState(component, state);
+ }
+
+ private void OnEntityTargetHandleState(EntityUid uid, EntityTargetActionComponent component, ref ComponentHandleState args)
+ {
+ if (args.Current is not EntityTargetActionComponentState state)
+ return;
+
+ BaseHandleState(component, state);
+ component.Whitelist = state.Whitelist;
+ component.CanTargetSelf = state.CanTargetSelf;
+ }
+
+ private void OnWorldTargetHandleState(EntityUid uid, WorldTargetActionComponent component, ref ComponentHandleState args)
+ {
+ if (args.Current is not WorldTargetActionComponentState state)
+ return;
+
+ BaseHandleState(component, state);
+ }
+
+ private void OnGetActionData<T>(EntityUid uid, T component, ref GetActionDataEvent args) where T : BaseActionComponent
+ {
+ args.Action = component;
+ }
+
+ public BaseActionComponent? GetActionData(EntityUid? actionId)
+ {
+ if (actionId == null)
+ return null;
+
+ // TODO split up logic between each action component with different subscriptions
+ // good luck future coder
+ var ev = new GetActionDataEvent();
+ RaiseLocalEvent(actionId.Value, ref ev);
+ return ev.Action;
+ }
+
+ public bool TryGetActionData(
+ [NotNullWhen(true)] EntityUid? actionId,
+ [NotNullWhen(true)] out BaseActionComponent? action)
+ {
+ action = null;
+ return actionId != null && (action = GetActionData(actionId)) != null;
+ }
+
+ protected Container EnsureContainer(EntityUid holderId)
+ {
+ return _containerSystem.EnsureContainer<Container>(holderId, ActionContainerId);
+ }
+
+ protected bool TryGetContainer(
+ EntityUid holderId,
+ [NotNullWhen(true)] out IContainer? container,
+ ContainerManagerComponent? containerManager = null)
+ {
+ return _containerSystem.TryGetContainer(holderId, ActionContainerId, out container, containerManager);
+ }
+
+ public void SetCooldown(EntityUid? actionId, TimeSpan start, TimeSpan end)
+ {
+ if (actionId == null)
+ return;
+
+ var action = GetActionData(actionId);
+ if (action == null)
+ return;
+
+ action.Cooldown = (start, end);
+ Dirty(actionId.Value, action);
+ }
+
#region ComponentStateManagement
- public virtual void Dirty(ActionType action)
+ public virtual void Dirty(EntityUid? actionId)
{
+ if (!TryGetActionData(actionId, out var action))
+ return;
+
+ Dirty(actionId.Value, action);
+
if (action.AttachedEntity == null)
return;
return;
}
- Dirty(comp);
+ Dirty(action.AttachedEntity.Value, comp);
}
- public void SetToggled(ActionType action, bool toggled)
+ public void SetToggled(EntityUid? actionId, bool toggled)
{
- if (action.Toggled == toggled)
+ if (!TryGetActionData(actionId, out var action) ||
+ action.Toggled == toggled)
+ {
return;
+ }
action.Toggled = toggled;
- Dirty(action);
+ Dirty(actionId.Value, action);
}
- public void SetEnabled(ActionType action, bool enabled)
+ public void SetEnabled(EntityUid? actionId, bool enabled)
{
- if (action.Enabled == enabled)
+ if (!TryGetActionData(actionId, out var action) ||
+ action.Enabled == enabled)
+ {
return;
+ }
action.Enabled = enabled;
- Dirty(action);
+ Dirty(actionId.Value, action);
}
- public void SetCharges(ActionType action, int? charges)
+ public void SetCharges(EntityUid? actionId, int? charges)
{
- if (action.Charges == charges)
+ if (!TryGetActionData(actionId, out var action) ||
+ action.Charges == charges)
+ {
return;
+ }
action.Charges = charges;
- Dirty(action);
+ Dirty(actionId.Value, action);
+ }
+
+ private void OnActionsMapInit(EntityUid uid, ActionsComponent component, MapInitEvent args)
+ {
+ EnsureContainer(uid);
+ }
+
+ private void OnActionsGetState(EntityUid uid, ActionsComponent component, ref ComponentGetState args)
+ {
+ var actions = new List<EntityUid>();
+ if (TryGetContainer(uid, out var container))
+ actions.AddRange(container.ContainedEntities);
+
+ args.State = new ActionsComponentState(actions);
}
- private void GetState(EntityUid uid, ActionsComponent component, ref ComponentGetState args)
+ private void OnActionsShutdown(EntityUid uid, ActionsComponent component, ComponentShutdown args)
{
- args.State = new ActionsComponentState(component.Actions.ToList());
+ if (TryGetContainer(uid, out var container))
+ container.Shutdown(EntityManager);
}
#endregion
if (!TryComp(user, out ActionsComponent? component))
return;
+ if (!TryComp(ev.Action, out MetaDataComponent? metaData))
+ return;
+
+ var name = Name(ev.Action, metaData);
+
// Does the user actually have the requested action?
- if (!component.Actions.TryGetValue(ev.Action, out var act))
+ if (!TryGetContainer(user, out var container) || !container.Contains(ev.Action))
{
_adminLogger.Add(LogType.Action,
- $"{ToPrettyString(user):user} attempted to perform an action that they do not have: {ev.Action.DisplayName}.");
+ $"{ToPrettyString(user):user} attempted to perform an action that they do not have: {name}.");
return;
}
- if (!act.Enabled)
+ var action = GetActionData(ev.Action);
+ if (action == null || !action.Enabled)
return;
var curTime = GameTiming.CurTime;
- if (act.Cooldown.HasValue && act.Cooldown.Value.End > curTime)
+ if (action.Cooldown.HasValue && action.Cooldown.Value.End > curTime)
return;
BaseActionEvent? performEvent = null;
// Validate request by checking action blockers and the like:
- var name = Loc.GetString(act.DisplayName);
-
- switch (act)
+ switch (action)
{
- case EntityTargetAction entityAction:
-
+ case EntityTargetActionComponent entityAction:
if (ev.EntityTarget is not { Valid: true } entityTarget)
{
- Log.Error($"Attempted to perform an entity-targeted action without a target! Action: {entityAction.DisplayName}");
+ Log.Error($"Attempted to perform an entity-targeted action without a target! Action: {name}");
return;
}
if (!ValidateEntityTarget(user, entityTarget, entityAction))
return;
- if (act.Provider == null)
+ if (action.Provider == null)
{
_adminLogger.Add(LogType.Action,
$"{ToPrettyString(user):user} is performing the {name:action} action targeted at {ToPrettyString(entityTarget):target}.");
else
{
_adminLogger.Add(LogType.Action,
- $"{ToPrettyString(user):user} is performing the {name:action} action (provided by {ToPrettyString(act.Provider.Value):provider}) targeted at {ToPrettyString(entityTarget):target}.");
+ $"{ToPrettyString(user):user} is performing the {name:action} action (provided by {ToPrettyString(action.Provider.Value):provider}) targeted at {ToPrettyString(entityTarget):target}.");
}
if (entityAction.Event != null)
{
entityAction.Event.Target = entityTarget;
+ Dirty(ev.Action, entityAction);
performEvent = entityAction.Event;
}
break;
-
- case WorldTargetAction worldAction:
-
+ case WorldTargetActionComponent worldAction:
if (ev.EntityCoordinatesTarget is not { } entityCoordinatesTarget)
{
- Log.Error($"Attempted to perform a world-targeted action without a target! Action: {worldAction.DisplayName}");
+ Log.Error($"Attempted to perform a world-targeted action without a target! Action: {name}");
return;
}
if (!ValidateWorldTarget(user, entityCoordinatesTarget, worldAction))
return;
- if (act.Provider == null)
+ if (action.Provider == null)
{
_adminLogger.Add(LogType.Action,
$"{ToPrettyString(user):user} is performing the {name:action} action targeted at {entityCoordinatesTarget:target}.");
else
{
_adminLogger.Add(LogType.Action,
- $"{ToPrettyString(user):user} is performing the {name:action} action (provided by {ToPrettyString(act.Provider.Value):provider}) targeted at {entityCoordinatesTarget:target}.");
+ $"{ToPrettyString(user):user} is performing the {name:action} action (provided by {ToPrettyString(action.Provider.Value):provider}) targeted at {entityCoordinatesTarget:target}.");
}
if (worldAction.Event != null)
{
worldAction.Event.Target = entityCoordinatesTarget;
+ Dirty(ev.Action, worldAction);
performEvent = worldAction.Event;
}
break;
-
- case InstantAction instantAction:
-
- if (act.CheckCanInteract && !_actionBlockerSystem.CanInteract(user, null))
+ case InstantActionComponent instantAction:
+ if (action.CheckCanInteract && !_actionBlockerSystem.CanInteract(user, null))
return;
- if (act.Provider == null)
+ if (action.Provider == null)
{
_adminLogger.Add(LogType.Action,
$"{ToPrettyString(user):user} is performing the {name:action} action.");
else
{
_adminLogger.Add(LogType.Action,
- $"{ToPrettyString(user):user} is performing the {name:action} action provided by {ToPrettyString(act.Provider.Value):provider}.");
+ $"{ToPrettyString(user):user} is performing the {name:action} action provided by {ToPrettyString(action.Provider.Value):provider}.");
}
performEvent = instantAction.Event;
performEvent.Performer = user;
// All checks passed. Perform the action!
- PerformAction(user, component, act, performEvent, curTime);
+ PerformAction(user, component, ev.Action, action, performEvent, curTime);
}
- public bool ValidateEntityTarget(EntityUid user, EntityUid target, EntityTargetAction action)
+ public bool ValidateEntityTarget(EntityUid user, EntityUid target, EntityTargetActionComponent action)
{
if (!target.IsValid() || Deleted(target))
return false;
return _interactionSystem.CanAccessViaStorage(user, target);
}
- public bool ValidateWorldTarget(EntityUid user, EntityCoordinates coords, WorldTargetAction action)
+ public bool ValidateWorldTarget(EntityUid user, EntityCoordinates coords, WorldTargetActionComponent action)
{
if (action.CheckCanInteract && !_actionBlockerSystem.CanInteract(user, null))
return false;
return _interactionSystem.InRangeUnobstructed(user, coords, range: action.Range);
}
- public void PerformAction(EntityUid performer, ActionsComponent? component, ActionType action, BaseActionEvent? actionEvent, TimeSpan curTime, bool predicted = true)
+ public void PerformAction(EntityUid performer, ActionsComponent? component, EntityUid actionId, BaseActionComponent action, BaseActionEvent? actionEvent, TimeSpan curTime, bool predicted = true)
{
var handled = false;
action.Cooldown = (curTime, curTime + action.UseDelay.Value);
}
+ Dirty(actionId, action);
+
if (dirty && component != null)
- Dirty(component);
+ Dirty(performer, component);
}
#endregion
#region AddRemoveActions
/// <summary>
- /// Add an action to an action component. If the entity has no action component, this will give them one.
+ /// Add an action to an action holder.
+ /// If the holder has no actions component, this will give them one.
/// </summary>
- /// <param name="uid">Entity to receive the actions</param>
- /// <param name="action">The action to add</param>
+ public BaseActionComponent? AddAction(EntityUid holderId, ref EntityUid? actionId, string? actionPrototypeId, EntityUid? provider = null, ActionsComponent? holderComp = null)
+ {
+ if (Deleted(actionId))
+ {
+ if (_net.IsClient)
+ return null;
+
+ if (string.IsNullOrWhiteSpace(actionPrototypeId))
+ return null;
+
+ actionId = Spawn(actionPrototypeId);
+ }
+
+ AddAction(holderId, actionId.Value, provider, holderComp);
+ return GetActionData(actionId);
+ }
+
+ /// <summary>
+ /// Add an action to an action holder.
+ /// If the holder has no actions component, this will give them one.
+ /// </summary>
+ /// <param name="holderId">Entity to receive the actions</param>
+ /// <param name="actionId">Action entity to add</param>
/// <param name="provider">The entity that enables these actions (e.g., flashlight). May be null (innate actions).</param>
- public virtual void AddAction(EntityUid uid, ActionType action, EntityUid? provider, ActionsComponent? comp = null, bool dirty = true)
+ /// <param name="holder">Component of <see cref="holderId"/></param>
+ /// <param name="action">Component of <see cref="actionId"/></param>
+ /// <param name="actionContainer">Action container of <see cref="holderId"/></param>
+ public virtual void AddAction(EntityUid holderId, EntityUid actionId, EntityUid? provider, ActionsComponent? holder = null, BaseActionComponent? action = null, bool dirty = true, IContainer? actionContainer = null)
{
- // Because action classes have state data, e.g. cooldowns and uses-remaining, people should not be adding prototypes directly
- if (action is IPrototype)
+ action ??= GetActionData(actionId);
+ // TODO remove when action subscriptions are split up
+ if (action == null)
{
- Log.Error("Attempted to directly add a prototype action. You need to clone a prototype in order to use it.");
+ Log.Warning($"No {nameof(BaseActionComponent)} found on entity {actionId}");
return;
}
- comp ??= EnsureComp<ActionsComponent>(uid);
+ holder ??= EnsureComp<ActionsComponent>(holderId);
action.Provider = provider;
- action.AttachedEntity = uid;
- AddActionInternal(comp, action);
+ action.AttachedEntity = holderId;
+ Dirty(actionId, action);
+
+ actionContainer ??= EnsureContainer(holderId);
+ AddActionInternal(actionId, actionContainer);
if (dirty)
- Dirty(comp);
+ Dirty(holderId, holder);
}
- protected virtual void AddActionInternal(ActionsComponent comp, ActionType action)
+ protected virtual void AddActionInternal(EntityUid actionId, IContainer container)
{
- comp.Actions.Add(action);
+ container.Insert(actionId);
}
/// <summary>
/// Add actions to an action component. If the entity has no action component, this will give them one.
/// </summary>
- /// <param name="uid">Entity to receive the actions</param>
+ /// <param name="holderId">Entity to receive the actions</param>
/// <param name="actions">The actions to add</param>
/// <param name="provider">The entity that enables these actions (e.g., flashlight). May be null (innate actions).</param>
- public void AddActions(EntityUid uid, IEnumerable<ActionType> actions, EntityUid? provider, ActionsComponent? comp = null, bool dirty = true)
+ public void AddActions(EntityUid holderId, IEnumerable<EntityUid> actions, EntityUid? provider, ActionsComponent? comp = null, bool dirty = true)
{
- comp ??= EnsureComp<ActionsComponent>(uid);
+ comp ??= EnsureComp<ActionsComponent>(holderId);
var allClientExclusive = true;
+ var container = EnsureContainer(holderId);
- foreach (var action in actions)
+ foreach (var actionId in actions)
{
- AddAction(uid, action, provider, comp, false);
+ var action = GetActionData(actionId);
+ if (action == null)
+ continue;
+
+ AddAction(holderId, actionId, provider, comp, action, false, container);
allClientExclusive = allClientExclusive && action.ClientExclusive;
}
if (dirty && !allClientExclusive)
- Dirty(comp);
+ Dirty(holderId, comp);
+ }
+
+ public IEnumerable<(EntityUid Id, BaseActionComponent Comp)> GetActions(EntityUid holderId, IContainer? container = null)
+ {
+ if (container == null &&
+ !TryGetContainer(holderId, out container))
+ {
+ yield break;
+ }
+
+ foreach (var actionId in container.ContainedEntities)
+ {
+ if (!TryGetActionData(actionId, out var action))
+ continue;
+
+ yield return (actionId, action);
+ }
}
/// <summary>
/// Remove any actions that were enabled by some other entity. Useful when unequiping items that grant actions.
/// </summary>
- public void RemoveProvidedActions(EntityUid uid, EntityUid provider, ActionsComponent? comp = null)
+ public void RemoveProvidedActions(EntityUid holderId, EntityUid provider, ActionsComponent? comp = null, ContainerManagerComponent? actionContainer = null)
{
- if (!Resolve(uid, ref comp, false))
+ if (!Resolve(holderId, ref comp, ref actionContainer, false))
+ return;
+
+ if (!TryGetContainer(holderId, out var container, actionContainer))
return;
- foreach (var act in comp.Actions.ToArray())
+ foreach (var actionId in container.ContainedEntities.ToArray())
{
- if (act.Provider == provider)
- RemoveAction(uid, act, comp, dirty: false);
+ var action = GetActionData(actionId);
+ if (action?.Provider == provider)
+ RemoveAction(holderId, actionId, comp, dirty: false, actionContainer: actionContainer);
}
- Dirty(comp);
+
+ Dirty(holderId, comp);
}
- public virtual void RemoveAction(EntityUid uid, ActionType action, ActionsComponent? comp = null, bool dirty = true)
+ public virtual void RemoveAction(EntityUid holderId, EntityUid? actionId, ActionsComponent? comp = null, BaseActionComponent? action = null, bool dirty = true, ContainerManagerComponent? actionContainer = null)
{
- if (!Resolve(uid, ref comp, false))
+ if (actionId == null ||
+ !Resolve(holderId, ref comp, ref actionContainer, false) ||
+ !TryGetContainer(holderId, out var container, actionContainer) ||
+ !container.Contains(actionId.Value) ||
+ TerminatingOrDeleted(actionId.Value))
+ {
return;
+ }
- comp.Actions.Remove(action);
- action.AttachedEntity = null;
+ action ??= GetActionData(actionId);
+ container.Remove(actionId.Value);
+
+ if (action != null)
+ {
+ action.AttachedEntity = null;
+ Dirty(actionId.Value, action);
+ }
if (dirty)
- Dirty(comp);
+ Dirty(holderId, comp);
+ }
+
+ /// <summary>
+ /// Removes all actions with the given prototype id.
+ /// </summary>
+ public void RemoveAction(EntityUid holderId, string actionPrototypeId, ActionsComponent? holderComp = null, ContainerManagerComponent? actionContainer = null)
+ {
+ if (!Resolve(holderId, ref holderComp, ref actionContainer, false))
+ return;
+
+ var actions = new List<(EntityUid Id, BaseActionComponent Comp)>();
+ foreach (var (id, comp) in GetActions(holderId))
+ {
+ if (Prototype(id)?.ID == actionPrototypeId)
+ actions.Add((id, comp));
+ }
+
+ foreach (var action in actions)
+ {
+ RemoveAction(holderId, action.Id, holderComp, action.Comp, actionContainer: actionContainer);
+ }
}
#endregion
#region EquipHandlers
private void OnDidEquip(EntityUid uid, ActionsComponent component, DidEquipEvent args)
{
- var ev = new GetItemActionsEvent(args.Equipee, args.SlotFlags);
+ var ev = new GetItemActionsEvent(EntityManager, _net, args.Equipee, args.SlotFlags);
RaiseLocalEvent(args.Equipment, ev);
if (ev.Actions.Count == 0)
private void OnHandEquipped(EntityUid uid, ActionsComponent component, DidEquipHandEvent args)
{
- var ev = new GetItemActionsEvent(args.User);
+ var ev = new GetItemActionsEvent(EntityManager, _net, args.User);
RaiseLocalEvent(args.Equipped, ev);
if (ev.Actions.Count == 0)
--- /dev/null
+using Robust.Shared.GameStates;
+using Robust.Shared.Serialization;
+
+namespace Content.Shared.Actions;
+
+[RegisterComponent, NetworkedComponent]
+public sealed partial class WorldTargetActionComponent : BaseTargetActionComponent
+{
+ public override BaseActionEvent? BaseEvent => Event;
+
+ /// <summary>
+ /// The local-event to raise when this action is performed.
+ /// </summary>
+ [DataField("event")]
+ [NonSerialized]
+ public WorldTargetActionEvent? Event;
+}
+
+[Serializable, NetSerializable]
+public sealed class WorldTargetActionComponentState : BaseActionComponentState
+{
+ public WorldTargetActionComponentState(WorldTargetActionComponent component) : base(component)
+ {
+ }
+}
-using Content.Shared.Speech;
using Content.Shared.Actions;
using Content.Shared.Bed.Sleep;
using Content.Shared.Eye.Blinding.Systems;
+using Content.Shared.Speech;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Timing;
namespace Content.Server.Bed.Sleep
{
public abstract class SharedSleepingSystem : EntitySystem
{
+ [Dependency] private readonly IGameTiming _gameTiming = default!;
+ [Dependency] private readonly SharedActionsSystem _actionsSystem = default!;
[Dependency] private readonly BlindableSystem _blindableSystem = default!;
+ [ValidatePrototypeId<EntityPrototype>] private const string WakeActionId = "ActionWake";
+
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<SleepingComponent, ComponentStartup>(OnStartup);
+ SubscribeLocalEvent<SleepingComponent, MapInitEvent>(OnMapInit);
SubscribeLocalEvent<SleepingComponent, ComponentShutdown>(OnShutdown);
SubscribeLocalEvent<SleepingComponent, SpeakAttemptEvent>(OnSpeakAttempt);
SubscribeLocalEvent<SleepingComponent, CanSeeAttemptEvent>(OnSeeAttempt);
private void OnSleepUnpaused(EntityUid uid, SleepingComponent component, ref EntityUnpausedEvent args)
{
component.CoolDownEnd += args.PausedTime;
- Dirty(component);
+ Dirty(uid, component);
}
private void OnStartup(EntityUid uid, SleepingComponent component, ComponentStartup args)
_blindableSystem.UpdateIsBlind(uid);
}
+ private void OnMapInit(EntityUid uid, SleepingComponent component, MapInitEvent args)
+ {
+ component.WakeAction = Spawn(WakeActionId);
+ _actionsSystem.SetCooldown(component.WakeAction, _gameTiming.CurTime, _gameTiming.CurTime + TimeSpan.FromSeconds(15));
+ _actionsSystem.AddAction(uid, component.WakeAction.Value, null);
+ }
+
private void OnShutdown(EntityUid uid, SleepingComponent component, ComponentShutdown args)
{
+ _actionsSystem.RemoveAction(uid, component.WakeAction);
+
var ev = new SleepStateChangedEvent(false);
RaiseLocalEvent(uid, ev);
_blindableSystem.UpdateIsBlind(uid);
[DataField("cooldownEnd", customTypeSerializer:typeof(TimeOffsetSerializer))]
public TimeSpan CoolDownEnd;
+
+ [DataField("wakeAction")] public EntityUid? WakeAction;
}
--- /dev/null
+using Content.Shared.Actions;
+
+namespace Content.Shared.Bible;
+
+public sealed partial class SummonActionEvent : InstantActionEvent
+{
+
+}
\ No newline at end of file
using System.Linq;
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Damage;
-using Content.Shared.Damage.Prototypes;
using Content.Shared.Examine;
using Content.Shared.Hands;
using Content.Shared.Hands.Components;
private void OnGetActions(EntityUid uid, BlockingComponent component, GetItemActionsEvent args)
{
- if (component.BlockingToggleAction == null && _proto.TryIndex(component.BlockingToggleActionId, out InstantActionPrototype? act))
- component.BlockingToggleAction = new(act);
-
- if (component.BlockingToggleAction != null)
- args.Actions.Add(component.BlockingToggleAction);
+ args.AddAction(ref component.BlockingToggleActionEntity, component.BlockingToggleAction);
}
private void OnToggleAction(EntityUid uid, BlockingComponent component, ToggleActionEvent args)
CantBlockError(user);
return false;
}
- _actionsSystem.SetToggled(component.BlockingToggleAction, true);
+ _actionsSystem.SetToggled(component.BlockingToggleActionEntity, true);
_popupSystem.PopupEntity(msgUser, user, user);
_popupSystem.PopupEntity(msgOther, user, Filter.PvsExcept(user), true);
}
if (xform.Anchored)
_transformSystem.Unanchor(user, xform);
- _actionsSystem.SetToggled(component.BlockingToggleAction, false);
+ _actionsSystem.SetToggled(component.BlockingToggleActionEntity, false);
_fixtureSystem.DestroyFixture(user, BlockingComponent.BlockFixtureID, body: physicsComponent);
_physics.SetBodyType(user, blockingUserComponent.OriginalBodyType, body: physicsComponent);
_popupSystem.PopupEntity(msgUser, user, user);
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Damage;
using Robust.Shared.Audio;
using Robust.Shared.Physics.Collision.Shapes;
+using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Shared.Blocking;
[DataField("activeBlockModifier", required: true)]
public DamageModifierSet ActiveBlockDamageModifier = default!;
- [DataField("blockingToggleActionId", customTypeSerializer: typeof(PrototypeIdSerializer<InstantActionPrototype>))]
- public string BlockingToggleActionId = "ToggleBlock";
+ [DataField("blockingToggleAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string BlockingToggleAction = "ActionToggleBlock";
- [DataField("blockingToggleAction")]
- public InstantAction? BlockingToggleAction;
+ [DataField("blockingToggleActionEntity")]
+ public EntityUid? BlockingToggleActionEntity;
/// <summary>
/// The sound to be played when you get hit while actively blocking
using Content.Shared.Containers.ItemSlots;
using Robust.Shared.GameStates;
-using Robust.Shared.Serialization.TypeSerializers.Implementations;
namespace Content.Shared.CartridgeLoader;
[DataField("diskSpace")]
public int DiskSpace = 5;
- [DataField("uiKey", required: true, customTypeSerializer: typeof(EnumSerializer))]
+ [DataField("uiKey", required: true)]
public Enum UiKey = default!;
}
+using Content.Shared.Actions;
+
namespace Content.Shared.Clothing;
/// <summary>
RevealedLayers = revealedLayers;
}
}
+
+public sealed partial class ToggleMaskEvent : InstantActionEvent { }
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Clothing.EntitySystems;
using Robust.Shared.GameStates;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Shared.Clothing.Components;
[DataField("visibility"), ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
public float Visibility;
+ [DataField("toggleAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string ToggleAction = "ActionTogglePhaseCloak";
+
/// <summary>
/// The action for enabling and disabling stealth.
/// </summary>
- [DataField("toggleAction")]
- public InstantAction ToggleAction = new()
- {
- Event = new ToggleStealthEvent()
- };
+ [DataField("toggleActionEntity")] public EntityUid? ToggleActionEntity;
}
/// <summary>
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Clothing.EntitySystems;
using Content.Shared.Inventory;
using Robust.Shared.Containers;
/// <summary>
/// Action used to toggle the clothing on or off.
/// </summary>
- [DataField("actionId", customTypeSerializer: typeof(PrototypeIdSerializer<InstantActionPrototype>))]
- public string ActionId = "ToggleSuitPiece";
- public InstantAction? ToggleAction = null;
+ [DataField("action", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string Action = "ActionToggleSuitPiece";
+
+ [DataField("actionEntity")]
+ public EntityUid? ActionEntity;
/// <summary>
/// Default clothing entity prototype to spawn into the clothing container.
public TimeSpan? StripDelay = TimeSpan.FromSeconds(3);
/// <summary>
- /// Text shown in the toggle-clothing verb. Defaults to using the name of the <see cref="ToggleAction"/> action.
+ /// Text shown in the toggle-clothing verb. Defaults to using the name of the <see cref="ActionEntity"/> action.
/// </summary>
[DataField("verbText")]
public string? VerbText;
using Content.Shared.Inventory.Events;
using Content.Shared.Stealth;
using Content.Shared.Stealth.Components;
-using Robust.Shared.GameStates;
namespace Content.Shared.Clothing.EntitySystems;
if (ev.Cancelled)
return;
- args.Actions.Add(comp.ToggleAction);
+ args.AddAction(ref comp.ToggleActionEntity, comp.ToggleAction);
}
/// <summary>
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Clothing.Components;
using Content.Shared.DoAfter;
using Content.Shared.IdentityManagement;
using Content.Shared.Strip;
using Content.Shared.Verbs;
using Robust.Shared.Containers;
-using Robust.Shared.Network;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization;
using Robust.Shared.Utility;
if (!args.CanAccess || !args.CanInteract || component.ClothingUid == null || component.Container == null)
return;
- var text = component.VerbText ?? component.ToggleAction?.DisplayName;
+ var text = component.VerbText ?? (component.ActionEntity == null ? null : Name(component.ActionEntity.Value));
if (text == null)
return;
// automatically be deleted.
// remove action.
- if (component.ToggleAction?.AttachedEntity != null)
- _actionsSystem.RemoveAction(component.ToggleAction.AttachedEntity.Value, component.ToggleAction);
+ if (_actionsSystem.TryGetActionData(component.ActionEntity, out var action) &&
+ action.AttachedEntity != null)
+ {
+ _actionsSystem.RemoveAction(action.AttachedEntity.Value, component.ActionEntity);
+ }
if (component.ClothingUid != null)
QueueDel(component.ClothingUid.Value);
return;
// remove action.
- if (toggleComp.ToggleAction?.AttachedEntity != null)
- _actionsSystem.RemoveAction(toggleComp.ToggleAction.AttachedEntity.Value, toggleComp.ToggleAction);
+ if (_actionsSystem.TryGetActionData(toggleComp.ActionEntity, out var action) &&
+ action.AttachedEntity != null)
+ {
+ _actionsSystem.RemoveAction(action.AttachedEntity.Value, toggleComp.ActionEntity);
+ }
RemComp(component.AttachedUid, toggleComp);
}
if (component.ClothingUid == null || (args.SlotFlags & component.RequiredFlags) != component.RequiredFlags)
return;
- if (component.ToggleAction != null)
- args.Actions.Add(component.ToggleAction);
+ args.AddAction(ref component.ActionEntity, component.Action);
}
private void OnInit(EntityUid uid, ToggleableClothingComponent component, ComponentInit args)
return;
}
- if (component.ToggleAction == null
- && _proto.TryIndex(component.ActionId, out InstantActionPrototype? act))
- {
- component.ToggleAction = new(act);
- }
+ component.ActionEntity ??= Spawn(component.Action);
- if (component.ClothingUid != null && component.ToggleAction != null)
+ if (component.ClothingUid != null && component.ActionEntity != null)
{
DebugTools.Assert(Exists(component.ClothingUid), "Toggleable clothing is missing expected entity.");
DebugTools.Assert(TryComp(component.ClothingUid, out AttachedClothingComponent? comp), "Toggleable clothing is missing an attached component");
component.Container.Insert(component.ClothingUid.Value, EntityManager, ownerTransform: xform);
}
- if (component.ToggleAction != null)
+ if (_actionsSystem.TryGetActionData(component.ActionEntity, out var action))
{
- component.ToggleAction.EntityIcon = component.ClothingUid;
- _actionsSystem.Dirty(component.ToggleAction);
+ action.EntityIcon = component.ClothingUid;
+ _actionsSystem.Dirty(component.ActionEntity);
}
}
}
-using Content.Shared.Actions.ActionTypes;
using Robust.Shared.GameStates;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Shared.Clothing;
[Access(typeof(SharedMagbootsSystem))]
public sealed partial class MagbootsComponent : Component
{
- [DataField("toggleAction", required: true)]
- public InstantAction ToggleAction = new();
+ [DataField("toggleAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>), required: true)]
+ public string? ToggleAction;
+
+ [DataField("toggleActionEntity")]
+ public EntityUid? ToggleActionEntity;
[DataField("on"), AutoNetworkedField]
public bool On;
protected void OnChanged(EntityUid uid, MagbootsComponent component)
{
- _sharedActions.SetToggled(component.ToggleAction, component.On);
+ _sharedActions.SetToggled(component.ToggleActionEntity, component.On);
_clothingSpeedModifier.SetClothingSpeedModifierEnabled(uid, component.On);
}
private void OnGetActions(EntityUid uid, MagbootsComponent component, GetItemActionsEvent args)
{
- args.Actions.Add(component.ToggleAction);
+ args.AddAction(ref component.ToggleActionEntity, component.ToggleAction);
}
}
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Targeting;
using Robust.Shared.Audio;
using Robust.Shared.GameStates;
+using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Shared.CombatMode
#endregion
- [DataField("combatToggleActionId", customTypeSerializer: typeof(PrototypeIdSerializer<InstantActionPrototype>))]
- public string CombatToggleActionId = "CombatModeToggle";
+ [DataField("combatToggleAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string CombatToggleAction = "ActionCombatModeToggle";
- [DataField("combatToggleAction")]
- public InstantAction? CombatToggleAction;
+ [DataField("combatToggleActionEntity")]
+ public EntityUid? CombatToggleActionEntity;
[ViewVariables(VVAccess.ReadWrite), DataField("isInCombatMode"), AutoNetworkedField]
public bool IsInCombatMode;
using Content.Shared.Actions;
using Content.Shared.Alert;
using Content.Shared.Interaction.Events;
-using Content.Shared.Popups;
namespace Content.Shared.CombatMode.Pacification;
_combatSystem.SetCanDisarm(uid, false, combatMode);
_combatSystem.SetInCombatMode(uid, false, combatMode);
-
- if (combatMode.CombatToggleAction != null)
- _actionsSystem.SetEnabled(combatMode.CombatToggleAction, false);
-
+ _actionsSystem.SetEnabled(combatMode.CombatToggleActionEntity, false);
_alertsSystem.ShowAlert(uid, AlertType.Pacified);
}
if (combatMode.CanDisarm != null)
_combatSystem.SetCanDisarm(uid, true, combatMode);
- if (combatMode.CombatToggleAction != null)
- _actionsSystem.SetEnabled(combatMode.CombatToggleAction, true);
-
+ _actionsSystem.SetEnabled(combatMode.CombatToggleActionEntity, true);
_alertsSystem.ClearAlert(uid, AlertType.Pacified);
}
}
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Popups;
using Content.Shared.Targeting;
using Robust.Shared.Network;
-using Robust.Shared.Prototypes;
-using Robust.Shared.Serialization;
using Robust.Shared.Timing;
namespace Content.Shared.CombatMode;
{
[Dependency] protected readonly IGameTiming Timing = default!;
[Dependency] private readonly INetManager _netMan = default!;
- [Dependency] private readonly IPrototypeManager _protoMan = default!;
[Dependency] private readonly SharedActionsSystem _actionsSystem = default!;
[Dependency] private readonly SharedPopupSystem _popup = default!;
{
base.Initialize();
- SubscribeLocalEvent<CombatModeComponent, ComponentStartup>(OnStartup);
+ SubscribeLocalEvent<CombatModeComponent, MapInitEvent>(OnStartup);
SubscribeLocalEvent<CombatModeComponent, ComponentShutdown>(OnShutdown);
SubscribeLocalEvent<CombatModeComponent, ToggleCombatActionEvent>(OnActionPerform);
}
- private void OnStartup(EntityUid uid, CombatModeComponent component, ComponentStartup args)
+ private void OnStartup(EntityUid uid, CombatModeComponent component, MapInitEvent args)
{
- if (component.CombatToggleAction == null
- && _protoMan.TryIndex(component.CombatToggleActionId, out InstantActionPrototype? toggleProto))
- {
- component.CombatToggleAction = new(toggleProto);
- }
-
- if (component.CombatToggleAction != null)
- _actionsSystem.AddAction(uid, component.CombatToggleAction, null);
+ _actionsSystem.AddAction(uid, ref component.CombatToggleActionEntity, component.CombatToggleAction);
}
private void OnShutdown(EntityUid uid, CombatModeComponent component, ComponentShutdown args)
{
- if (component.CombatToggleAction != null)
- _actionsSystem.RemoveAction(uid, component.CombatToggleAction);
+ _actionsSystem.RemoveAction(uid, component.CombatToggleActionEntity);
}
private void OnActionPerform(EntityUid uid, CombatModeComponent component, ToggleCombatActionEvent args)
component.IsInCombatMode = value;
Dirty(entity, component);
- if (component.CombatToggleAction != null)
- _actionsSystem.SetToggled(component.CombatToggleAction, component.IsInCombatMode);
+ if (component.CombatToggleActionEntity != null)
+ _actionsSystem.SetToggled(component.CombatToggleActionEntity, component.IsInCombatMode);
}
public virtual void SetActiveZone(EntityUid entity, TargetingZone zone,
private void OnCuffsRemovedFromContainer(EntityUid uid, CuffableComponent component, EntRemovedFromContainerMessage args)
{
- if (args.Container.ID != component.Container.ID)
+ // ReSharper disable once ConditionalAccessQualifierIsNonNullableAccordingToAPIContract
+ if (args.Container.ID != component.Container?.ID)
return;
_handVirtualItem.DeleteInHandsMatching(uid, args.Entity);
--- /dev/null
+using Content.Shared.Actions;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
+
+namespace Content.Shared.Decals;
+
+public sealed partial class PlaceDecalActionEvent : WorldTargetActionEvent
+{
+ [DataField("decalId", customTypeSerializer:typeof(PrototypeIdSerializer<DecalPrototype>), required:true)]
+ public string DecalId = string.Empty;
+
+ [DataField("color")]
+ public Color Color;
+
+ [DataField("rotation")]
+ public double Rotation;
+
+ [DataField("snap")]
+ public bool Snap;
+
+ [DataField("zIndex")]
+ public int ZIndex;
+
+ [DataField("cleanable")]
+ public bool Cleanable;
+}
-using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Chemistry.Reagent;
-using Content.Shared.Devour;
using Content.Shared.Whitelist;
using Robust.Shared.Audio;
using Robust.Shared.Containers;
using Robust.Shared.GameStates;
+using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
-namespace Content.Server.Devour.Components;
+namespace Content.Shared.Devour.Components;
[RegisterComponent, NetworkedComponent]
[Access(typeof(SharedDevourSystem))]
public sealed partial class DevourerComponent : Component
{
- [DataField("devourAction")]
- public EntityTargetAction? DevourAction;
+ [DataField("devourAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string? DevourAction = "ActionDevour";
+
+ [DataField("devourActionEntity")]
+ public EntityUid? DevourActionEntity;
[ViewVariables(VVAccess.ReadWrite), DataField("soundDevour")]
public SoundSpecifier? SoundDevour = new SoundPathSpecifier("/Audio/Effects/demon_consume.ogg")
-using Content.Server.Devour.Components;
using Content.Shared.Actions;
+using Content.Shared.Devour.Components;
using Content.Shared.DoAfter;
using Content.Shared.Mobs;
using Content.Shared.Mobs.Components;
{
base.Initialize();
- SubscribeLocalEvent<DevourerComponent, ComponentStartup>(OnStartup);
+ SubscribeLocalEvent<DevourerComponent, MapInitEvent>(OnMapInit);
SubscribeLocalEvent<DevourerComponent, DevourActionEvent>(OnDevourAction);
}
- protected void OnStartup(EntityUid uid, DevourerComponent component, ComponentStartup args)
+ protected void OnMapInit(EntityUid uid, DevourerComponent component, MapInitEvent args)
{
//Devourer doesn't actually chew, since he sends targets right into his stomach.
//I did it mom, I added ERP content into upstream. Legally!
component.Stomach = _containerSystem.EnsureContainer<Container>(uid, "stomach");
- if (component.DevourAction != null)
- _actionsSystem.AddAction(uid, component.DevourAction, null);
+ _actionsSystem.AddAction(uid, ref component.DevourActionEntity, component.DevourAction);
}
/// <summary>
--- /dev/null
+using Content.Shared.Actions;
+
+namespace Content.Shared.Dragon;
+
+public sealed partial class DragonDevourActionEvent : EntityTargetActionEvent
+{
+}
+
+public sealed partial class DragonSpawnRiftActionEvent : InstantActionEvent
+{
+}
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Robust.Shared.GameStates;
-using Robust.Shared.Serialization;
+using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
-using Robust.Shared.Utility;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Shared.Ghost;
[ViewVariables]
public bool IsAttached;
- public InstantAction ToggleLightingAction = new()
- {
- Icon = new SpriteSpecifier.Texture(new ("Interface/VerbIcons/light.svg.192dpi.png")),
- DisplayName = "ghost-gui-toggle-lighting-manager-name",
- Description = "ghost-gui-toggle-lighting-manager-desc",
- ClientExclusive = true,
- CheckCanInteract = false,
- Event = new ToggleLightingActionEvent(),
- };
-
- public InstantAction ToggleFoVAction = new()
- {
- Icon = new SpriteSpecifier.Texture(new ("Interface/VerbIcons/vv.svg.192dpi.png")),
- DisplayName = "ghost-gui-toggle-fov-name",
- Description = "ghost-gui-toggle-fov-desc",
- ClientExclusive = true,
- CheckCanInteract = false,
- Event = new ToggleFoVActionEvent(),
- };
-
- public InstantAction ToggleGhostsAction = new()
- {
- Icon = new SpriteSpecifier.Rsi(new ("Mobs/Ghosts/ghost_human.rsi"), "icon"),
- DisplayName = "ghost-gui-toggle-ghost-visibility-name",
- Description = "ghost-gui-toggle-ghost-visibility-desc",
- ClientExclusive = true,
- CheckCanInteract = false,
- Event = new ToggleGhostsActionEvent(),
- };
+ [DataField("toggleLightingAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string ToggleLightingAction = "ActionToggleLighting";
+
+ [DataField("toggleLightingActionEntity")]
+ public EntityUid? ToggleLightingActionEntity;
+
+ [DataField("toggleFovAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string ToggleFoVAction = "ActionToggleFov";
+
+ [DataField("toggleFovActionEntity")]
+ public EntityUid? ToggleFoVActionEntity;
+
+ [DataField("toggleGhostsAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string ToggleGhostsAction = "ActionToggleGhosts";
+
+ [DataField("toggleGhostsActionEntity")]
+ public EntityUid? ToggleGhostsActionEntity;
[ViewVariables(VVAccess.ReadWrite), DataField("timeOfDeath", customTypeSerializer:typeof(TimeOffsetSerializer))]
public TimeSpan TimeOfDeath = TimeSpan.Zero;
[DataField("booMaxTargets")]
public int BooMaxTargets = 3;
- [DataField("action")]
- public InstantAction Action = new()
- {
- UseDelay = TimeSpan.FromSeconds(120),
- Icon = new SpriteSpecifier.Texture(new ("Interface/Actions/scream.png")),
- DisplayName = "action-name-boo",
- Description = "action-description-boo",
- CheckCanInteract = false,
- Event = new BooActionEvent(),
- };
+ [DataField("action", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string Action = "ActionGhostBoo";
+
+ [DataField("actionEntity")] public EntityUid? ActionEntity;
// TODO: instead of this funny stuff just give it access and update in system dirtying when needed
[ViewVariables(VVAccess.ReadWrite)]
--- /dev/null
+using Content.Shared.Actions;
+
+namespace Content.Shared.Guardian;
+
+public sealed partial class GuardianToggleActionEvent : InstantActionEvent
+{
+}
using System.Linq;
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Implants.Components;
using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
if (component.ImplantedEntity == null)
return;
- if (component.ImplantAction != null)
+ if (!string.IsNullOrWhiteSpace(component.ImplantAction))
{
- var action = new InstantAction(_prototypeManager.Index<InstantActionPrototype>(component.ImplantAction));
+ var action = Spawn(component.ImplantAction);
_actionsSystem.AddAction(component.ImplantedEntity.Value, action, uid);
}
-using Content.Shared.Actions.ActionTypes;
using Robust.Shared.Audio;
using Robust.Shared.GameStates;
+using Robust.Shared.Prototypes;
using Robust.Shared.Serialization;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
[DataField("addPrefix")]
public bool AddPrefix = false;
- [DataField("toggleActionId", customTypeSerializer: typeof(PrototypeIdSerializer<InstantActionPrototype>))]
- public string ToggleActionId = "ToggleLight";
+ [DataField("toggleAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string ToggleAction = "ActionToggleLight";
/// <summary>
/// Whether or not the light can be toggled via standard interactions
[DataField("toggleOnInteract")]
public bool ToggleOnInteract = true;
- [DataField("toggleAction")]
- public InstantAction? ToggleAction;
+ [DataField("toggleActionEntity")]
+ public EntityUid? ToggleActionEntity;
public const int StatusLevels = 6;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Decals;
using Robust.Shared.Audio;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Shared.Light.Components;
[ViewVariables] public bool LightOn = false;
- [DataField("toggleAction", required: true)]
- public InstantAction ToggleAction = new();
+ [DataField("toggleAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string? ToggleAction = "ActionToggleLight";
+
+ [DataField("toggleActionEntity")] public EntityUid? ToggleActionEntity;
/// <summary>
/// <see cref="ColorPalettePrototype"/> ID that determines the list
using Content.Shared.Item;
using Content.Shared.Light.Components;
using Content.Shared.Toggleable;
-using Robust.Shared.Audio;
using Robust.Shared.GameStates;
-using Robust.Shared.Player;
-using Robust.Shared.Utility;
namespace Content.Shared.Light;
_clothingSys.SetEquippedPrefix(uid, prefix);
}
- if (component.ToggleAction != null)
- _actionSystem.SetToggled(component.ToggleAction, component.Activated);
+ if (component.ToggleActionEntity != null)
+ _actionSystem.SetToggled(component.ToggleActionEntity, component.Activated);
_appearance.SetData(uid, ToggleableLightVisuals.Enabled, component.Activated, appearance);
}
-using Content.Shared.Actions;
+using Content.Shared.Actions;
using Robust.Shared.Prototypes;
-namespace Content.Server.Magic.Events;
+namespace Content.Shared.Magic.Events;
/// <summary>
/// Spell that uses the magic of ECS to add & remove components. Components are first removed, then added.
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
-namespace Content.Server.Magic.Events;
+namespace Content.Shared.Magic.Events;
public sealed partial class InstantSpawnSpellEvent : InstantActionEvent, ISpeakSpell
{
/// </summary>
[DataField("posData")] public MagicSpawnData Pos = new TargetCasterPos();
}
-
-[ImplicitDataDefinitionForInheritors]
-public abstract partial class MagicSpawnData
-{
-
-}
-
-/// <summary>
-/// Spawns 1 at the caster's feet.
-/// </summary>
-public sealed partial class TargetCasterPos : MagicSpawnData {}
-
-/// <summary>
-/// Targets the 3 tiles in front of the caster.
-/// </summary>
-public sealed partial class TargetInFront : MagicSpawnData
-{
- [DataField("width")]
- public int Width = 3;
-}
using Content.Shared.Actions;
using Robust.Shared.Audio;
-namespace Content.Server.Magic.Events;
+namespace Content.Shared.Magic.Events;
public sealed partial class KnockSpellEvent : InstantActionEvent, ISpeakSpell
{
-using Content.Shared.Actions;
-using Robust.Shared.Audio;
+using Content.Shared.Actions;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
-namespace Content.Server.Magic.Events;
+namespace Content.Shared.Magic.Events;
public sealed partial class ProjectileSpellEvent : WorldTargetActionEvent, ISpeakSpell
{
using Content.Shared.Actions;
-namespace Content.Server.Magic.Events;
+namespace Content.Shared.Magic.Events;
public sealed partial class SmiteSpellEvent : EntityTargetActionEvent, ISpeakSpell
{
using Content.Shared.Actions;
using Robust.Shared.Audio;
-namespace Content.Server.Magic.Events;
+namespace Content.Shared.Magic.Events;
public sealed partial class TeleportSpellEvent : WorldTargetActionEvent, ISpeakSpell
{
using Content.Shared.Actions;
using Content.Shared.Storage;
-namespace Content.Server.Magic.Events;
+namespace Content.Shared.Magic.Events;
public sealed partial class WorldSpawnSpellEvent : WorldTargetActionEvent, ISpeakSpell
{
[DataField("speech")]
public string? Speech { get; private set; }
}
-
-namespace Content.Server.Magic.Events;
+namespace Content.Shared.Magic;
public interface ISpeakSpell // The speak n spell interface
{
/// </summary>
public string? Speech { get; }
}
-
--- /dev/null
+namespace Content.Shared.Magic;
+
+[ImplicitDataDefinitionForInheritors]
+public abstract partial class MagicSpawnData
+{
+
+}
+
+/// <summary>
+/// Spawns 1 at the caster's feet.
+/// </summary>
+public sealed partial class TargetCasterPos : MagicSpawnData {}
+
+/// <summary>
+/// Targets the 3 tiles in front of the caster.
+/// </summary>
+public sealed partial class TargetInFront : MagicSpawnData
+{
+ [DataField("width")] public int Width = 3;
+}
--- /dev/null
+using Content.Shared.Actions;
+
+namespace Content.Shared.Mapping;
+
+public sealed partial class StartPlacementActionEvent : InstantActionEvent
+{
+ [DataField("entityType")]
+ public string? EntityType;
+
+ [DataField("tileId")]
+ public string? TileId;
+
+ [DataField("placementOption")]
+ public string? PlacementOption;
+
+ [DataField("eraser")]
+ public bool Eraser;
+}
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.FixedPoint;
using Content.Shared.Whitelist;
using Robust.Shared.Containers;
public List<string> StartingEquipment = new();
#region Action Prototypes
- [DataField("mechCycleAction", customTypeSerializer: typeof(PrototypeIdSerializer<InstantActionPrototype>))]
- public string MechCycleAction = "MechCycleEquipment";
- [DataField("mechUiAction", customTypeSerializer: typeof(PrototypeIdSerializer<InstantActionPrototype>))]
- public string MechUiAction = "MechOpenUI";
- [DataField("mechEjectAction", customTypeSerializer: typeof(PrototypeIdSerializer<InstantActionPrototype>))]
- public string MechEjectAction = "MechEject";
+ [DataField("mechCycleAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string MechCycleAction = "ActionMechCycleEquipment";
+ [DataField("mechUiAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string MechUiAction = "ActionMechOpenUI";
+ [DataField("mechEjectAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string MechEjectAction = "ActionMechEject";
#endregion
#region Visualizer States
using Content.Shared.Access.Systems;
using Content.Shared.ActionBlocker;
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Destructible;
using Content.Shared.DoAfter;
using Content.Shared.FixedPoint;
-using Content.Shared.Hands.Components;
using Content.Shared.Interaction;
using Content.Shared.Interaction.Components;
using Content.Shared.Interaction.Events;
_mover.SetRelay(pilot, mech);
_interaction.SetRelay(pilot, mech, irelay);
rider.Mech = mech;
- Dirty(rider);
+ Dirty(pilot, rider);
- _actions.AddAction(pilot,
- new InstantAction(_prototype.Index<InstantActionPrototype>(component.MechCycleAction)), mech);
- _actions.AddAction(pilot, new InstantAction(_prototype.Index<InstantActionPrototype>(component.MechUiAction)),
+ _actions.AddAction(pilot, Spawn(component.MechCycleAction), mech);
+ _actions.AddAction(pilot, Spawn(component.MechUiAction),
mech);
- _actions.AddAction(pilot,
- new InstantAction(_prototype.Index<InstantActionPrototype>(component.MechEjectAction)), mech);
+ _actions.AddAction(pilot, Spawn(component.MechEjectAction), mech);
}
private void RemoveUser(EntityUid mech, EntityUid pilot)
--- /dev/null
+using Content.Shared.Actions;
+
+namespace Content.Shared.Medical.Stethoscope;
+
+public sealed partial class StethoscopeActionEvent : EntityTargetActionEvent
+{
+}
/// <example>
/// actions:
/// Critical:
- /// - CritSuccumb
+ /// - ActionCritSuccumb
/// Alive:
- /// - AnimalLayEgg
+ /// - ActionAnimalLayEgg
/// </example>
[DataField("actions")]
public Dictionary<MobState, List<string>> Actions = new();
--- /dev/null
+using Content.Shared.Actions;
+
+namespace Content.Shared.Mobs;
+
+/// <summary>
+/// Only applies to mobs in crit capable of ghosting/succumbing
+/// </summary>
+public sealed partial class CritSuccumbEvent : InstantActionEvent
+{
+}
+
+/// <summary>
+/// Only applies/has functionality to mobs in crit that have <see cref="DeathgaspComponent"/>
+/// </summary>
+public sealed partial class CritFakeDeathEvent : InstantActionEvent
+{
+}
+
+/// <summary>
+/// Only applies to mobs capable of speaking, as a last resort in crit
+/// </summary>
+public sealed partial class CritLastWordsEvent : InstantActionEvent
+{
+}
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Content.Shared.Mobs.Components;
using Robust.Shared.Prototypes;
foreach (var item in acts)
{
- if (!_proto.TryIndex<InstantActionPrototype>(item, out var proto))
+ if (!_proto.TryIndex<EntityPrototype>(item, out var proto))
continue;
- var instance = new InstantAction(proto);
+ var instance = Spawn(item);
if (state == args.OldMobState)
{
// Don't remove actions that would be getting readded anyway
-using Content.Shared.Actions.ActionTypes;
using Robust.Shared.GameStates;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Shared.Movement.Components;
[ViewVariables(VVAccess.ReadWrite), DataField("moleUsage")]
public float MoleUsage = 0.012f;
- [DataField("toggleAction", required: true)]
- public InstantAction ToggleAction = new();
+ [DataField("toggleAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string? ToggleAction = "ActionToggleJetpack";
+
+ [DataField("toggleActionEntity")] public EntityUid? ToggleActionEntity;
[ViewVariables(VVAccess.ReadWrite), DataField("acceleration")]
public float Acceleration = 1f;
private void OnJetpackGetAction(EntityUid uid, JetpackComponent component, GetItemActionsEvent args)
{
- args.Actions.Add(component.ToggleAction);
+ args.AddAction(ref component.ToggleActionEntity, component.ToggleAction);
}
private bool IsEnabled(EntityUid uid)
}
Appearance.SetData(uid, JetpackVisuals.Enabled, enabled);
- Dirty(component);
+ Dirty(uid, component);
}
public bool IsUserFlying(EntityUid uid)
-using Content.Shared.Actions.ActionTypes;
using Robust.Shared.GameStates;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Shared.PAI
{
[DataField("lastUSer"), ViewVariables(VVAccess.ReadWrite)]
public EntityUid? LastUser;
- [DataField("midiAction", required: true, serverOnly: true)] // server only, as it uses a server-BUI event !type
- public InstantAction? MidiAction;
+ [DataField("midiActionId", serverOnly: true,
+ customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string? MidiActionId = "ActionPAIPlayMidi";
+
+ [DataField("midiAction", serverOnly: true)] // server only, as it uses a server-BUI event !type
+ public EntityUid? MidiAction;
}
}
-using Content.Shared.ActionBlocker;
using Content.Shared.Actions;
-using Content.Shared.Hands;
-using Content.Shared.Interaction.Events;
-using Content.Shared.Item;
-using Content.Shared.Movement.Events;
namespace Content.Shared.PAI
{
{
base.Initialize();
- SubscribeLocalEvent<PAIComponent, ComponentStartup>(OnStartup);
+ SubscribeLocalEvent<PAIComponent, MapInitEvent>(OnMapInit);
SubscribeLocalEvent<PAIComponent, ComponentShutdown>(OnShutdown);
}
- private void OnStartup(EntityUid uid, PAIComponent component, ComponentStartup args)
+ private void OnMapInit(EntityUid uid, PAIComponent component, MapInitEvent args)
{
- if (component.MidiAction != null)
- _actionsSystem.AddAction(uid, component.MidiAction, null);
+ _actionsSystem.AddAction(uid, ref component.MidiAction, component.MidiActionId);
}
private void OnShutdown(EntityUid uid, PAIComponent component, ComponentShutdown args)
{
- if (component.MidiAction != null)
- _actionsSystem.RemoveAction(uid, component.MidiAction);
+ _actionsSystem.RemoveAction(uid, component.MidiAction);
}
}
}
--- /dev/null
+using Content.Shared.Actions;
+
+namespace Content.Shared.Polymorph;
+
+public sealed partial class PolymorphActionEvent : InstantActionEvent
+{
+ /// <summary>
+ /// The polymorph prototype containing all the information about
+ /// the specific polymorph.
+ /// </summary>
+ public PolymorphPrototype Prototype = default!;
+}
+
+public sealed partial class RevertPolymorphActionEvent : InstantActionEvent
+{
+
+}
--- /dev/null
+using Content.Shared.Actions;
+
+namespace Content.Shared.RatKing;
+
+public sealed partial class RatKingRaiseArmyActionEvent : InstantActionEvent
+{
+
+}
+
+public sealed partial class RatKingDomainActionEvent : InstantActionEvent
+{
+
+}
+using Content.Shared.Actions;
using Content.Shared.DoAfter;
using Robust.Shared.Serialization;
[Serializable, NetSerializable]
public sealed partial class SericultureDoAfterEvent : SimpleDoAfterEvent { }
+
+public sealed partial class SericultureActionEvent : InstantActionEvent { }
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Robust.Shared.GameStates;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Shared.Silicons.Borgs.Components;
[RegisterComponent, NetworkedComponent, Access(typeof(SharedBorgSystem))]
public sealed partial class SelectableBorgModuleComponent : Component
{
+ [DataField("moduleSwapAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string? ModuleSwapActionId = "ActionBorgSwapModule";
+
/// <summary>
/// The sidebar action for swapping to this module.
/// </summary>
- [DataField("moduleSwapAction")]
- public InstantAction ModuleSwapAction = new()
- {
- DisplayName = "action-name-swap-module",
- Description = "action-desc-swap-module",
- ItemIconStyle = ItemActionIconStyle.BigItem,
- Event = new BorgModuleActionSelectedEvent(),
- UseDelay = TimeSpan.FromSeconds(0.5f)
- };
+ [DataField("moduleSwapActionEntity")] public EntityUid? ModuleSwapActionEntity;
}
public sealed partial class BorgModuleActionSelectedEvent : InstantActionEvent
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
+using Robust.Shared.Prototypes;
using Robust.Shared.Serialization;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
/// <summary>
/// The sidebar action that toggles the laws screen.
/// </summary>
- [DataField("viewLawsAction", customTypeSerializer: typeof(PrototypeIdSerializer<InstantActionPrototype>))]
- public string ViewLawsAction = "ViewLaws";
+ [DataField("viewLawsAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string ViewLawsAction = "ActionViewLaws";
/// <summary>
/// The action for toggling laws. Stored here so we can remove it later.
/// </summary>
- [DataField("providedAction")]
- public InstantAction? ProvidedAction;
+ [DataField("viewLawsActionEntity")]
+ public EntityUid? ViewLawsActionEntity;
/// <summary>
/// The last entity that provided laws to this entity.
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Robust.Shared.GameStates;
+using Robust.Shared.Prototypes;
using Robust.Shared.Serialization;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
+
namespace Content.Shared.Speech.Components;
[RegisterComponent, NetworkedComponent]
[AutoNetworkedField]
public int MaxBattlecryLength = 12;
+ [DataField("configureAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string? ConfigureAction = "ActionConfigureMeleeSpeech";
+
/// <summary>
/// The action to open the battlecry UI
/// </summary>
- [DataField("configureAction")]
- public InstantAction ConfigureAction = new()
- {
- UseDelay = TimeSpan.FromSeconds(1),
- ItemIconStyle = ItemActionIconStyle.BigItem,
- DisplayName = "melee-speech-config",
- Description = "melee-speech-config-desc",
- Priority = -20,
- Event = new MeleeSpeechConfigureActionEvent(),
- };
+ [DataField("configureActionEntity")] public EntityUid? ConfigureActionEntity;
}
/// <summary>
--- /dev/null
+using Content.Shared.Actions;
+
+namespace Content.Shared.Speech;
+
+public sealed partial class ScreamActionEvent : InstantActionEvent
+{
+}
-using System.Linq;
-using Content.Shared.Spider;
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
-using Robust.Shared.Prototypes;
using Robust.Shared.Random;
namespace Content.Shared.Spider;
public abstract class SharedSpiderSystem : EntitySystem
{
[Dependency] private readonly SharedActionsSystem _action = default!;
- [Dependency] private readonly IPrototypeManager _proto = default!;
[Dependency] private readonly IRobustRandom _robustRandom = default!;
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
{
base.Initialize();
+ SubscribeLocalEvent<SpiderComponent, MapInitEvent>(OnSpiderMapInit);
SubscribeLocalEvent<SpiderWebObjectComponent, ComponentStartup>(OnWebStartup);
- SubscribeLocalEvent<SpiderComponent, ComponentStartup>(OnSpiderStartup);
}
- private void OnSpiderStartup(EntityUid uid, SpiderComponent component, ComponentStartup args)
+ private void OnSpiderMapInit(EntityUid uid, SpiderComponent component, MapInitEvent args)
{
- var netAction = new InstantAction(_proto.Index<InstantActionPrototype>(component.WebActionName));
- _action.AddAction(uid, netAction, null);
+ _action.AddAction(uid, Spawn(component.WebAction), null);
}
private void OnWebStartup(EntityUid uid, SpiderWebObjectComponent component, ComponentStartup args)
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Robust.Shared.GameStates;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
public string WebPrototype = "SpiderWeb";
[ViewVariables(VVAccess.ReadWrite)]
- [DataField("webActionName", customTypeSerializer: typeof(PrototypeIdSerializer<InstantActionPrototype>))]
- public string WebActionName = "SpiderWebAction";
+ [DataField("webAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string WebAction = "ActionSpiderWeb";
}
public sealed partial class SpiderWebActionEvent : InstantActionEvent { }
+using System.Linq;
+using Content.Shared.FixedPoint;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization;
-using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List;
-using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List;
using Robust.Shared.Utility;
-using Content.Shared.Actions.ActionTypes;
-using Content.Shared.FixedPoint;
-using System.Linq;
namespace Content.Shared.Store;
/// <summary>
/// The action that is given when the listing is purchased.
/// </summary>
- [DataField("productAction", customTypeSerializer: typeof(PrototypeIdSerializer<InstantActionPrototype>))]
+ [DataField("productAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
public string? ProductAction;
/// <summary>
-using Content.Shared.Actions;
+using Content.Shared.Actions;
using Robust.Shared.Reflection;
using Robust.Shared.Serialization;
-namespace Content.Server.UserInterface;
+namespace Content.Shared.UserInterface;
public sealed partial class OpenUiActionEvent : InstantActionEvent, ISerializationHooks
{
--- /dev/null
+using Content.Shared.Actions;
+using JetBrains.Annotations;
+using Robust.Shared.Serialization.TypeSerializers.Implementations;
+
+namespace Content.Shared.UserInterface;
+
+[UsedImplicitly]
+public sealed partial class ToggleIntrinsicUIEvent : InstantActionEvent
+{
+ [DataField("key", customTypeSerializer: typeof(EnumSerializer), required: true)]
+ public Enum? Key { get; set; }
+}
using System.Numerics;
-using Content.Shared.Actions.ActionTypes;
using Robust.Shared.Audio;
using Robust.Shared.GameStates;
-using Robust.Shared.Utility;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Shared.Vehicle.Components;
/// Use ambient sound component for the idle sound.
+ [DataField("hornAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ public string? HornAction;
+
/// <summary>
/// The action for the horn (if any)
/// </summary>
- [DataField("hornAction")]
+ [DataField("hornActionEntity")]
[ViewVariables(VVAccess.ReadWrite)]
- public InstantAction HornAction = new()
- {
- UseDelay = TimeSpan.FromSeconds(3.4),
- Icon = new SpriteSpecifier.Texture(new("Objects/Fun/bikehorn.rsi/icon.png")),
- DisplayName = "action-name-honk",
- Description = "action-desc-honk",
- Event = new HonkActionEvent(),
- };
+ public EntityUid? HornActionEntity;
/// <summary>
/// Whether the vehicle has a key currently inside it or not.
using System.Numerics;
using Content.Shared.Access.Components;
using Content.Shared.Access.Systems;
-using Content.Shared.Vehicle.Components;
using Content.Shared.Actions;
-using Content.Shared.Buckle.Components;
-using Content.Shared.Item;
-using Content.Shared.Movement.Components;
-using Content.Shared.Movement.Systems;
-using Robust.Shared.Serialization;
-using Robust.Shared.Containers;
-using Content.Shared.Tag;
using Content.Shared.Audio;
using Content.Shared.Buckle;
+using Content.Shared.Buckle.Components;
using Content.Shared.Hands;
+using Content.Shared.Item;
using Content.Shared.Light.Components;
+using Content.Shared.Movement.Components;
+using Content.Shared.Movement.Systems;
using Content.Shared.Popups;
+using Content.Shared.Tag;
+using Content.Shared.Vehicle.Components;
+using Robust.Shared.Containers;
using Robust.Shared.Network;
using Robust.Shared.Physics.Systems;
+using Robust.Shared.Serialization;
namespace Content.Shared.Vehicle;
if (TryComp<ActionsComponent>(args.BuckledEntity, out var actions) && TryComp<UnpoweredFlashlightComponent>(uid, out var flashlight))
{
- _actionsSystem.AddAction(args.BuckledEntity, flashlight.ToggleAction, uid, actions);
+ _actionsSystem.AddAction(args.BuckledEntity, ref flashlight.ToggleActionEntity, flashlight.ToggleAction, uid, actions);
}
if (component.HornSound != null)
{
- _actionsSystem.AddAction(args.BuckledEntity, component.HornAction, uid, actions);
+ _actionsSystem.AddAction(args.BuckledEntity, ref component.HornActionEntity, component.HornAction, uid, actions);
}
_joints.ClearJoints(args.BuckledEntity);
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
using Robust.Shared.Audio;
using Robust.Shared.GameStates;
+using Robust.Shared.Prototypes;
using Robust.Shared.Serialization;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Shared.VendingMachines
{
- [RegisterComponent, NetworkedComponent]
+ [RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
public sealed partial class VendingMachineComponent : Component
{
/// <summary>
/// <summary>
/// The action available to the player controlling the vending machine
/// </summary>
- [DataField("action", customTypeSerializer: typeof(PrototypeIdSerializer<InstantActionPrototype>))]
- public string? Action = "VendingThrow";
+ [DataField("action", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
+ [AutoNetworkedField]
+ public string? Action = "ActionVendingThrow";
+
+ [DataField("actionEntity")]
+ [AutoNetworkedField]
+ public EntityUid? ActionEntity;
public float NonLimitedEjectForce = 7.5f;
--- /dev/null
+using Content.Shared.Actions;
+
+namespace Content.Shared.VoiceMask;
+
+public sealed partial class VoiceMaskSetNameEvent : InstantActionEvent
+{
+}
+
-using Content.Shared.Actions.ActionTypes;
using Robust.Shared.Audio;
using Robust.Shared.GameStates;
using Robust.Shared.Map;
[AutoNetworkedField]
public SelectiveFire SelectedMode = SelectiveFire.SemiAuto;
- [DataField("selectModeAction")]
- public InstantAction? SelectModeAction;
-
/// <summary>
/// Whether or not information about
/// the gun will be shown on examine.
using Content.Shared.Actions;
-using Content.Shared.Actions.ActionTypes;
-using Content.Shared.CombatMode;
using Content.Shared.Examine;
using Content.Shared.Verbs;
using Content.Shared.Weapons.Ranged.Components;
action-name-magboot-toggle = Toggle Magboots
-action-decription-magboot-toggle = Toggles the magboots on and off.
\ No newline at end of file
+action-description-magboot-toggle = Toggles the magboots on and off.
- pos: 3.5357494,-8.260544\r
parent: 289\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- proto: MaterialDiamond\r
entities:\r
- uid: 128\r
- pos: -4.476436,15.938278\r
parent: 670\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- proto: Lighter\r
entities:\r
- uid: 52\r
-meta:
- format: 6
- postmapinit: false
-tilemap:
- 0: Space
- 85: FloorSteel
- 97: FloorTechMaint
- 101: FloorWhite
- 113: Lattice
- 114: Plating
-entities:
-- proto: ""
- entities:
- - uid: 179
- components:
- - type: MetaData
- - parent: 962
- type: Transform
- - chunks:
- -1,0:
- ind: -1,0
- tiles: VQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAAAAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAYQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- version: 6
- -1,-1:
- ind: -1,-1
- tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAA
- version: 6
- 0,1:
- ind: 0,1
- tiles: cQAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAVQAAAAAAcQAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAZQAAAAAAAAAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAZQAAAAAAAAAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAYQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAAAAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAZQAAAAAAAAAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAAAAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAAAAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- version: 6
- 0,0:
- ind: 0,0
- tiles: cgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAYQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcQAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcQAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcQAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAA
- version: 6
- 0,-1:
- ind: 0,-1
- tiles: cgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYQAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAZQAAAAAA
- version: 6
- 1,-1:
- ind: 1,-1
- tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAA
- version: 6
- -2,0:
- ind: -2,0
- tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- version: 6
- -2,-1:
- ind: -2,-1
- tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAVQAAAAAA
- version: 6
- 1,0:
- ind: 1,0
- tiles: ZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAcgAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- version: 6
- 2,-1:
- ind: 2,-1
- tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- version: 6
- 1,1:
- ind: 1,1
- tiles: VQAAAAAAVQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- version: 6
- -1,1:
- ind: -1,1
- tiles: AAAAAAAAcQAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- version: 6
- 0,-2:
- ind: 0,-2
- tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- version: 6
- -1,-2:
- ind: -1,-2
- tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAA
- version: 6
- type: MapGrid
- - type: Broadphase
- - bodyStatus: InAir
- angularDamping: 0.05
- linearDamping: 0.05
- fixedRotation: False
- bodyType: Dynamic
- type: Physics
- - fixtures: {}
- type: Fixtures
- - gravityShakeSound: !type:SoundPathSpecifier
- path: /Audio/Effects/alert.ogg
- type: Gravity
- - chunkCollection:
- version: 2
- nodes: []
- type: DecalGrid
- - type: OccluderTree
- - type: Shuttle
- - type: RadiationGridResistance
- - shakeTimes: 10
- type: GravityShake
- - version: 2
- data:
- tiles:
- -4,0:
- 0: 65535
- -4,1:
- 0: 65535
- -3,0:
- 0: 65535
- -3,1:
- 0: 65535
- -2,0:
- 0: 65535
- -2,1:
- 0: 65535
- -2,2:
- 0: 65535
- -1,0:
- 0: 65535
- -1,1:
- 0: 65535
- -1,2:
- 0: 65535
- -4,-3:
- 0: 61440
- -4,-2:
- 0: 65535
- -4,-1:
- 0: 65535
- -3,-3:
- 0: 61440
- -3,-2:
- 0: 65535
- -3,-1:
- 0: 65535
- -2,-4:
- 0: 65520
- -2,-3:
- 0: 65535
- -2,-2:
- 0: 65535
- -2,-1:
- 0: 65535
- -1,-4:
- 0: 65520
- 1: 15
- -1,-3:
- 0: 65535
- -1,-2:
- 0: 65535
- -1,-1:
- 0: 65535
- 0,4:
- 0: 61183
- 0,5:
- 0: 61166
- 0,6:
- 0: 14
- 1,4:
- 0: 65535
- 1,5:
- 0: 65535
- 1,6:
- 0: 65535
- 1,7:
- 0: 15
- 2,4:
- 0: 65535
- 2,5:
- 0: 65535
- 2,6:
- 0: 4095
- 3,4:
- 0: 65535
- 3,5:
- 0: 65487
- 2: 48
- 3,6:
- 0: 53247
- 3,7:
- 0: 12
- 0,0:
- 0: 65535
- 0,1:
- 0: 65535
- 0,2:
- 0: 65535
- 0,3:
- 0: 65535
- 1,0:
- 0: 65535
- 1,1:
- 0: 65535
- 1,2:
- 0: 65535
- 1,3:
- 0: 65535
- 2,0:
- 0: 4369
- 2,2:
- 0: 65535
- 2,3:
- 0: 65535
- 3,0:
- 0: 65535
- 3,2:
- 0: 65535
- 3,3:
- 0: 65535
- 3,1:
- 0: 61166
- 0,-4:
- 0: 65520
- 1: 7
- 0,-3:
- 0: 65535
- 0,-2:
- 0: 65535
- 0,-1:
- 0: 65535
- 1,-4:
- 0: 30576
- 1,-3:
- 0: 65399
- 1,-2:
- 0: 63359
- 1,-1:
- 0: 65535
- 2,-2:
- 0: 4096
- 2,-1:
- 0: 4369
- 3,-1:
- 0: 65262
- 3,-2:
- 0: 61152
- 4,-2:
- 0: 65520
- 4,-1:
- 0: 65535
- 5,-2:
- 0: 65520
- 5,-1:
- 0: 65535
- 6,-2:
- 0: 65520
- 6,-1:
- 0: 65535
- 7,-2:
- 0: 65520
- 7,-1:
- 0: 65535
- -5,0:
- 0: 52428
- -5,-3:
- 0: 32768
- -5,-2:
- 0: 51336
- -5,-1:
- 0: 52428
- 4,0:
- 0: 65535
- 4,1:
- 0: 65535
- 4,2:
- 0: 65535
- 4,3:
- 0: 65535
- 5,0:
- 0: 65535
- 5,1:
- 0: 65535
- 5,2:
- 0: 65535
- 5,3:
- 0: 65535
- 6,0:
- 0: 65535
- 6,1:
- 0: 65535
- 6,2:
- 0: 65535
- 6,3:
- 0: 63351
- 7,0:
- 0: 30583
- 7,1:
- 0: 4375
- 7,2:
- 0: 4369
- 7,3:
- 0: 4096
- 8,-2:
- 0: 30576
- 8,-1:
- 0: 30583
- 4,4:
- 0: 30583
- 4,5:
- 0: 30583
- 4,6:
- 0: 30583
- 4,7:
- 0: 7
- -4,2:
- 0: 26367
- -1,3:
- 0: 15
- 2,1:
- 0: 4369
- -5,1:
- 0: 52428
- -4,3:
- 0: 26222
- -3,3:
- 0: 15
- -2,3:
- 0: 15
- -4,4:
- 0: 238
- -3,4:
- 0: 255
- -2,4:
- 0: 255
- -1,4:
- 0: 255
- -5,2:
- 0: 204
- -3,2:
- 0: 35071
- 0,-5:
- 1: 28672
- -1,-5:
- 1: 61440
- uniqueMixes:
- - volume: 2500
- temperature: 293.15
- moles:
- - 21.824879
- - 82.10312
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - volume: 2500
- temperature: 293.15
- moles:
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - volume: 2500
- temperature: 293.15
- moles:
- - 24.8172
- - 93.35994
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- chunkSize: 4
- type: GridAtmosphere
- - type: GasTileOverlay
- - id: Dev
- type: BecomesStation
- - type: SpreaderGrid
- - type: GridPathfinding
- - uid: 962
- components:
- - type: MetaData
- - type: Transform
- - type: Map
- - type: PhysicsMap
- - type: Broadphase
- - type: OccluderTree
- - type: LoadedMap
- - type: GridTree
- - type: MovedGrids
-- proto: AdvancedCapacitorStockPart
- entities:
- - uid: 700
- components:
- - pos: -3.8324947,8.786524
- parent: 179
- type: Transform
-- proto: AirAlarm
- entities:
- - uid: 800
- components:
- - rot: 3.141592653589793 rad
- pos: 1.5,-4.5
- parent: 179
- type: Transform
- - devices:
- - 801
- type: DeviceList
-- proto: AirCanister
- entities:
- - uid: 458
- components:
- - pos: 7.5,-0.5
- parent: 179
- type: Transform
-- proto: Airlock
- entities:
- - uid: 48
- components:
- - pos: 7.5,20.5
- parent: 179
- type: Transform
- - uid: 119
- components:
- - pos: 6.5,17.5
- parent: 179
- type: Transform
- - uid: 170
- components:
- - pos: 13.5,10.5
- parent: 179
- type: Transform
- - uid: 378
- components:
- - pos: -9.5,0.5
- parent: 179
- type: Transform
-- proto: AirlockCargo
- entities:
- - uid: 87
- components:
- - pos: 2.5,-4.5
- parent: 179
- type: Transform
-- proto: AirlockEngineering
- entities:
- - uid: 257
- components:
- - pos: -7.5,-6.5
- parent: 179
- type: Transform
- - uid: 258
- components:
- - pos: 3.5,-4.5
- parent: 179
- type: Transform
- - uid: 530
- components:
- - pos: -10.5,-6.5
- parent: 179
- type: Transform
- - uid: 563
- components:
- - pos: -13.5,0.5
- parent: 179
- type: Transform
- - uid: 867
- components:
- - pos: -12.5,0.5
- parent: 179
- type: Transform
-- proto: AirlockExternal
- entities:
- - uid: 155
- components:
- - pos: 26.5,13.5
- parent: 179
- type: Transform
- - uid: 203
- components:
- - pos: 0.5,-14.5
- parent: 179
- type: Transform
- - uid: 255
- components:
- - pos: 7.5,-8.5
- parent: 179
- type: Transform
- - uid: 256
- components:
- - pos: 5.5,-8.5
- parent: 179
- type: Transform
- - uid: 318
- components:
- - pos: 24.5,13.5
- parent: 179
- type: Transform
-- proto: AirlockExternalGlass
- entities:
- - uid: 216
- components:
- - pos: -1.5,-14.5
- parent: 179
- type: Transform
-- proto: AirlockGlassShuttle
- entities:
- - uid: 146
- components:
- - rot: -1.5707963267948966 rad
- pos: -17.5,9.5
- parent: 179
- type: Transform
- - uid: 204
- components:
- - pos: -1.5,-16.5
- parent: 179
- type: Transform
-- proto: AirlockMedicalGlass
- entities:
- - uid: 177
- components:
- - pos: 26.5,4.5
- parent: 179
- type: Transform
- - uid: 178
- components:
- - pos: 20.5,3.5
- parent: 179
- type: Transform
- - uid: 206
- components:
- - pos: 16.5,3.5
- parent: 179
- type: Transform
- - uid: 207
- components:
- - pos: 15.5,3.5
- parent: 179
- type: Transform
- - uid: 369
- components:
- - pos: 26.5,-3.5
- parent: 179
- type: Transform
- - uid: 370
- components:
- - pos: 28.5,-0.5
- parent: 179
- type: Transform
-- proto: AirlockScience
- entities:
- - uid: 24
- components:
- - pos: 14.5,24.5
- parent: 179
- type: Transform
- - uid: 47
- components:
- - pos: 16.5,18.5
- parent: 179
- type: Transform
- - uid: 102
- components:
- - pos: 16.5,15.5
- parent: 179
- type: Transform
- - uid: 306
- components:
- - pos: 12.5,15.5
- parent: 179
- type: Transform
-- proto: AirlockScienceGlass
- entities:
- - uid: 26
- components:
- - pos: 14.5,20.5
- parent: 179
- type: Transform
-- proto: AirlockShuttle
- entities:
- - uid: 116
- components:
- - pos: 0.5,-16.5
- parent: 179
- type: Transform
-- proto: AirSensor
- entities:
- - uid: 801
- components:
- - rot: 3.141592653589793 rad
- pos: 1.5,-3.5
- parent: 179
- type: Transform
-- proto: AlwaysPoweredLightLED
- entities:
- - uid: 59
- components:
- - pos: -14.5,-0.5
- parent: 179
- type: Transform
- - uid: 330
- components:
- - rot: -1.5707963267948966 rad
- pos: -8.5,8.5
- parent: 179
- type: Transform
- - uid: 398
- components:
- - pos: 4.5,-5.5
- parent: 179
- type: Transform
- - uid: 451
- components:
- - rot: -1.5707963267948966 rad
- pos: -8.5,9.5
- parent: 179
- type: Transform
- - uid: 512
- components:
- - rot: 3.141592653589793 rad
- pos: -14.5,6.5
- parent: 179
- type: Transform
- - uid: 662
- components:
- - pos: 11.5,14.5
- parent: 179
- type: Transform
- - uid: 664
- components:
- - rot: 3.141592653589793 rad
- pos: 22.5,12.5
- parent: 179
- type: Transform
- - uid: 667
- components:
- - rot: -1.5707963267948966 rad
- pos: 8.5,10.5
- parent: 179
- type: Transform
- - uid: 669
- components:
- - rot: -1.5707963267948966 rad
- pos: -17.5,4.5
- parent: 179
- type: Transform
- - uid: 852
- components:
- - rot: 1.5707963267948966 rad
- pos: -6.5,0.5
- parent: 179
- type: Transform
- - uid: 907
- components:
- - pos: -4.5,-5.5
- parent: 179
- type: Transform
- - uid: 910
- components:
- - rot: 3.141592653589793 rad
- pos: -2.5,-3.5
- parent: 179
- type: Transform
- - uid: 913
- components:
- - rot: 3.141592653589793 rad
- pos: 5.5,-3.5
- parent: 179
- type: Transform
- - uid: 914
- components:
- - pos: 4.5,3.5
- parent: 179
- type: Transform
- - uid: 915
- components:
- - pos: 6.5,7.5
- parent: 179
- type: Transform
- - uid: 916
- components:
- - rot: -1.5707963267948966 rad
- pos: 3.5,7.5
- parent: 179
- type: Transform
- - uid: 917
- components:
- - pos: -2.5,10.5
- parent: 179
- type: Transform
- - uid: 918
- components:
- - pos: 3.5,18.5
- parent: 179
- type: Transform
- - uid: 921
- components:
- - rot: 3.141592653589793 rad
- pos: -13.5,1.5
- parent: 179
- type: Transform
- - uid: 922
- components:
- - rot: -1.5707963267948966 rad
- pos: 0.5,16.5
- parent: 179
- type: Transform
- - uid: 923
- components:
- - rot: 3.141592653589793 rad
- pos: -7.5,12.5
- parent: 179
- type: Transform
- - uid: 924
- components:
- - rot: 1.5707963267948966 rad
- pos: 14.5,6.5
- parent: 179
- type: Transform
- - uid: 926
- components:
- - rot: 1.5707963267948966 rad
- pos: -13.5,17.5
- parent: 179
- type: Transform
- - uid: 953
- components:
- - pos: -14.5,16.5
- parent: 179
- type: Transform
- - uid: 957
- components:
- - rot: 3.141592653589793 rad
- pos: 11.5,16.5
- parent: 179
- type: Transform
-- proto: AlwaysPoweredWallLight
- entities:
- - uid: 1047
- components:
- - rot: 3.141592653589793 rad
- pos: -0.5,-13.5
- parent: 179
- type: Transform
-- proto: AnomalyLocator
- entities:
- - uid: 1086
- components:
- - pos: 17.237877,19.653782
- parent: 179
- type: Transform
-- proto: AnomalyScanner
- entities:
- - uid: 1085
- components:
- - pos: 17.539398,19.352007
- parent: 179
- type: Transform
-- proto: APCBasic
- entities:
- - uid: 753
- components:
- - pos: -2.5,11.5
- parent: 179
- type: Transform
- - startingCharge: 500000000
- maxCharge: 500000000
- type: Battery
- - supplyRampRate: 50000
- supplyRampTolerance: 100000
- maxSupply: 1000000
- maxChargeRate: 500000
- type: PowerNetworkBattery
- - uid: 1015
- components:
- - rot: 3.141592653589793 rad
- pos: -5.5,-14.5
- parent: 179
- type: Transform
-- proto: AtmosDeviceFanTiny
- entities:
- - uid: 992
- components:
- - pos: -1.5,-16.5
- parent: 179
- type: Transform
- - uid: 993
- components:
- - pos: 0.5,-16.5
- parent: 179
- type: Transform
-- proto: Autolathe
- entities:
- - uid: 1
- components:
- - pos: 12.5,21.5
- parent: 179
- type: Transform
- - uid: 94
- components:
- - pos: -4.5,-5.5
- parent: 179
- type: Transform
- - uid: 446
- components:
- - pos: -6.5,5.5
- parent: 179
- type: Transform
- - uid: 528
- components:
- - pos: -12.5,-7.5
- parent: 179
- type: Transform
- - uid: 531
- components:
- - pos: -13.5,-7.5
- parent: 179
- type: Transform
- - uid: 532
- components:
- - pos: -14.5,-7.5
- parent: 179
- type: Transform
-- proto: BaseUplinkRadioDebug
- entities:
- - uid: 732
- components:
- - pos: 0.6038008,7.5209107
- parent: 179
- type: Transform
-- proto: Basketball
- entities:
- - uid: 951
- components:
- - pos: -9.702013,9.68404
- parent: 179
- type: Transform
- - uid: 952
- components:
- - pos: -10.879096,9.579802
- parent: 179
- type: Transform
-- proto: Beaker
- entities:
- - uid: 174
- components:
- - pos: 25.291822,10.667244
- parent: 179
- type: Transform
- - uid: 175
- components:
- - pos: 24.541822,10.635994
- parent: 179
- type: Transform
- - uid: 176
- components:
- - pos: 26.416822,10.651619
- parent: 179
- type: Transform
- - uid: 324
- components:
- - pos: 4.718221,9.39097
- parent: 179
- type: Transform
- - uid: 735
- components:
- - pos: 4.739054,9.807927
- parent: 179
- type: Transform
- - uid: 920
- components:
- - pos: -4.293744,10.966518
- parent: 179
- type: Transform
- - uid: 950
- components:
- - pos: -4.293744,10.966518
- parent: 179
- type: Transform
-- proto: BikeHorn
- entities:
- - uid: 672
- components:
- - pos: 1.1246341,7.500063
- parent: 179
- type: Transform
-- proto: BlastDoor
- entities:
- - uid: 202
- components:
- - pos: -2.5,-14.5
- parent: 179
- type: Transform
- - links:
- - 1013
- type: DeviceLinkSink
- - uid: 697
- components:
- - pos: 1.5,-14.5
- parent: 179
- type: Transform
- - links:
- - 1014
- type: DeviceLinkSink
- - uid: 698
- components:
- - pos: 1.5,-16.5
- parent: 179
- type: Transform
- - links:
- - 1014
- type: DeviceLinkSink
- - uid: 984
- components:
- - pos: -2.5,-16.5
- parent: 179
- type: Transform
- - links:
- - 1013
- type: DeviceLinkSink
-- proto: BoozeDispenser
- entities:
- - uid: 752
- components:
- - pos: 7.5,12.5
- parent: 179
- type: Transform
-- proto: BoxBeaker
- entities:
- - uid: 280
- components:
- - pos: 5.163024,9.63072
- parent: 179
- type: Transform
-- proto: Brutepack
- entities:
- - uid: 150
- components:
- - pos: 18.601385,5.512907
- parent: 179
- type: Transform
- - uid: 151
- components:
- - pos: 18.476385,4.841032
- parent: 179
- type: Transform
-- proto: Bucket
- entities:
- - uid: 691
- components:
- - pos: 7.1447573,15.900927
- parent: 179
- type: Transform
-- proto: CableApcExtension
- entities:
- - uid: 15
- components:
- - pos: 5.5,15.5
- parent: 179
- type: Transform
- - uid: 23
- components:
- - pos: 3.5,15.5
- parent: 179
- type: Transform
- - uid: 58
- components:
- - pos: 8.5,15.5
- parent: 179
- type: Transform
- - uid: 90
- components:
- - pos: 4.5,15.5
- parent: 179
- type: Transform
- - uid: 281
- components:
- - pos: -13.5,4.5
- parent: 179
- type: Transform
- - uid: 389
- components:
- - pos: 7.5,15.5
- parent: 179
- type: Transform
- - uid: 453
- components:
- - pos: 6.5,15.5
- parent: 179
- type: Transform
- - uid: 736
- components:
- - pos: -2.5,9.5
- parent: 179
- type: Transform
- - uid: 760
- components:
- - pos: -2.5,10.5
- parent: 179
- type: Transform
- - uid: 761
- components:
- - pos: -15.5,5.5
- parent: 179
- type: Transform
- - uid: 763
- components:
- - pos: -2.5,11.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 764
- components:
- - pos: -1.5,11.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 765
- components:
- - pos: -7.5,0.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 766
- components:
- - pos: -0.5,11.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 767
- components:
- - pos: -3.5,10.5
- parent: 179
- type: Transform
- - uid: 768
- components:
- - pos: -4.5,10.5
- parent: 179
- type: Transform
- - uid: 769
- components:
- - pos: -5.5,10.5
- parent: 179
- type: Transform
- - uid: 770
- components:
- - pos: -6.5,10.5
- parent: 179
- type: Transform
- - uid: 771
- components:
- - pos: -2.5,8.5
- parent: 179
- type: Transform
- - uid: 772
- components:
- - pos: -2.5,7.5
- parent: 179
- type: Transform
- - uid: 773
- components:
- - pos: -2.5,6.5
- parent: 179
- type: Transform
- - uid: 774
- components:
- - pos: -2.5,5.5
- parent: 179
- type: Transform
- - uid: 775
- components:
- - pos: -3.5,5.5
- parent: 179
- type: Transform
- - uid: 776
- components:
- - pos: -4.5,5.5
- parent: 179
- type: Transform
- - uid: 777
- components:
- - pos: -5.5,5.5
- parent: 179
- type: Transform
- - uid: 778
- components:
- - pos: -6.5,5.5
- parent: 179
- type: Transform
- - uid: 779
- components:
- - pos: -6.5,4.5
- parent: 179
- type: Transform
- - uid: 780
- components:
- - pos: -7.5,4.5
- parent: 179
- type: Transform
- - uid: 781
- components:
- - pos: -8.5,4.5
- parent: 179
- type: Transform
- - uid: 782
- components:
- - pos: -9.5,4.5
- parent: 179
- type: Transform
- - uid: 783
- components:
- - pos: -10.5,4.5
- parent: 179
- type: Transform
- - uid: 784
- components:
- - pos: -11.5,4.5
- parent: 179
- type: Transform
- - uid: 785
- components:
- - pos: -12.5,4.5
- parent: 179
- type: Transform
- - uid: 786
- components:
- - pos: -12.5,3.5
- parent: 179
- type: Transform
- - uid: 787
- components:
- - pos: -12.5,2.5
- parent: 179
- type: Transform
- - uid: 788
- components:
- - pos: -12.5,1.5
- parent: 179
- type: Transform
- - uid: 789
- components:
- - pos: -12.5,0.5
- parent: 179
- type: Transform
- - uid: 790
- components:
- - pos: -12.5,-0.5
- parent: 179
- type: Transform
- - uid: 791
- components:
- - pos: -2.5,4.5
- parent: 179
- type: Transform
- - uid: 792
- components:
- - pos: -2.5,2.5
- parent: 179
- type: Transform
- - uid: 793
- components:
- - pos: -2.5,1.5
- parent: 179
- type: Transform
- - uid: 794
- components:
- - pos: -2.5,0.5
- parent: 179
- type: Transform
- - uid: 795
- components:
- - pos: -2.5,3.5
- parent: 179
- type: Transform
- - uid: 796
- components:
- - pos: -2.5,-0.5
- parent: 179
- type: Transform
- - uid: 797
- components:
- - pos: -2.5,-1.5
- parent: 179
- type: Transform
- - uid: 798
- components:
- - pos: -2.5,-2.5
- parent: 179
- type: Transform
- - uid: 799
- components:
- - pos: -2.5,-3.5
- parent: 179
- type: Transform
- - uid: 802
- components:
- - pos: -8.5,0.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 803
- components:
- - pos: 2.5,-2.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 804
- components:
- - pos: 2.5,-3.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 805
- components:
- - pos: -9.5,0.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 806
- components:
- - pos: -10.5,0.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 807
- components:
- - pos: -14.5,0.5
- parent: 179
- type: Transform
- - uid: 808
- components:
- - pos: -11.5,0.5
- parent: 179
- type: Transform
- - uid: 809
- components:
- - pos: -15.5,0.5
- parent: 179
- type: Transform
- - uid: 810
- components:
- - pos: -15.5,0.5
- parent: 179
- type: Transform
- - uid: 811
- components:
- - pos: -16.5,0.5
- parent: 179
- type: Transform
- - uid: 812
- components:
- - pos: -16.5,5.5
- parent: 179
- type: Transform
- - uid: 813
- components:
- - pos: -16.5,4.5
- parent: 179
- type: Transform
- - uid: 814
- components:
- - pos: -16.5,3.5
- parent: 179
- type: Transform
- - uid: 815
- components:
- - pos: -16.5,2.5
- parent: 179
- type: Transform
- - uid: 816
- components:
- - pos: -16.5,1.5
- parent: 179
- type: Transform
- - uid: 817
- components:
- - pos: 7.5,5.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 818
- components:
- - pos: 7.5,7.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 819
- components:
- - pos: 7.5,8.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 820
- components:
- - pos: 7.5,9.5
- parent: 179
- type: Transform
- - uid: 821
- components:
- - pos: 8.5,9.5
- parent: 179
- type: Transform
- - uid: 822
- components:
- - pos: 6.5,9.5
- parent: 179
- type: Transform
- - uid: 823
- components:
- - pos: 5.5,9.5
- parent: 179
- type: Transform
- - uid: 824
- components:
- - pos: 4.5,9.5
- parent: 179
- type: Transform
- - uid: 825
- components:
- - pos: 8.5,10.5
- parent: 179
- type: Transform
- - uid: 826
- components:
- - pos: 8.5,11.5
- parent: 179
- type: Transform
- - uid: 827
- components:
- - pos: 8.5,12.5
- parent: 179
- type: Transform
- - uid: 828
- components:
- - pos: 7.5,12.5
- parent: 179
- type: Transform
- - uid: 829
- components:
- - pos: 7.5,11.5
- parent: 179
- type: Transform
- - uid: 830
- components:
- - pos: 2.5,-5.5
- parent: 179
- type: Transform
- - uid: 831
- components:
- - pos: 2.5,-4.5
- parent: 179
- type: Transform
- - uid: 832
- components:
- - pos: 1.5,-5.5
- parent: 179
- type: Transform
- - uid: 833
- components:
- - pos: 0.5,-5.5
- parent: 179
- type: Transform
- - uid: 834
- components:
- - pos: -0.5,-5.5
- parent: 179
- type: Transform
- - uid: 835
- components:
- - pos: -1.5,-5.5
- parent: 179
- type: Transform
- - uid: 836
- components:
- - pos: -2.5,-5.5
- parent: 179
- type: Transform
- - uid: 837
- components:
- - pos: -3.5,-5.5
- parent: 179
- type: Transform
- - uid: 838
- components:
- - pos: -4.5,-5.5
- parent: 179
- type: Transform
- - uid: 839
- components:
- - pos: 1.5,11.5
- parent: 179
- type: Transform
- - uid: 840
- components:
- - pos: 2.5,11.5
- parent: 179
- type: Transform
- - uid: 841
- components:
- - pos: 0.5,11.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 842
- components:
- - pos: 2.5,12.5
- parent: 179
- type: Transform
- - uid: 843
- components:
- - pos: 2.5,13.5
- parent: 179
- type: Transform
- - uid: 844
- components:
- - pos: 2.5,14.5
- parent: 179
- type: Transform
- - uid: 845
- components:
- - pos: 2.5,15.5
- parent: 179
- type: Transform
- - uid: 853
- components:
- - pos: -3.5,-3.5
- parent: 179
- type: Transform
- - uid: 854
- components:
- - pos: -4.5,-3.5
- parent: 179
- type: Transform
- - uid: 855
- components:
- - pos: -5.5,-3.5
- parent: 179
- type: Transform
- - uid: 856
- components:
- - pos: -6.5,-3.5
- parent: 179
- type: Transform
- - uid: 857
- components:
- - pos: -6.5,-2.5
- parent: 179
- type: Transform
- - uid: 858
- components:
- - pos: -6.5,-1.5
- parent: 179
- type: Transform
- - uid: 859
- components:
- - pos: -6.5,-0.5
- parent: 179
- type: Transform
- - uid: 860
- components:
- - pos: -6.5,0.5
- parent: 179
- type: Transform
- - uid: 861
- components:
- - pos: -6.5,1.5
- parent: 179
- type: Transform
- - uid: 862
- components:
- - pos: -6.5,2.5
- parent: 179
- type: Transform
- - uid: 872
- components:
- - pos: 7.5,6.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 877
- components:
- - pos: -6.5,3.5
- parent: 179
- type: Transform
- - uid: 878
- components:
- - pos: -2.5,-4.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 879
- components:
- - pos: -1.5,-4.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 880
- components:
- - pos: -0.5,-4.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 881
- components:
- - pos: 0.5,-4.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 882
- components:
- - pos: 1.5,-4.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 883
- components:
- - pos: 2.5,-4.5
- parent: 179
- type: Transform
- - uid: 884
- components:
- - pos: 3.5,-4.5
- parent: 179
- type: Transform
- - uid: 885
- components:
- - pos: 4.5,-4.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 886
- components:
- - pos: 5.5,-4.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 887
- components:
- - pos: 6.5,-4.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 888
- components:
- - pos: 7.5,-4.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 889
- components:
- - pos: 8.5,-4.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 890
- components:
- - pos: 8.5,-3.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 891
- components:
- - pos: 8.5,-2.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 892
- components:
- - pos: 8.5,-1.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 893
- components:
- - pos: 8.5,-0.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 894
- components:
- - pos: 8.5,0.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 895
- components:
- - pos: 8.5,1.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 896
- components:
- - pos: 8.5,2.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 897
- components:
- - pos: 8.5,3.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 898
- components:
- - pos: 8.5,4.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 899
- components:
- - pos: 8.5,5.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 900
- components:
- - pos: -14.5,5.5
- parent: 179
- type: Transform
- - uid: 905
- components:
- - pos: -12.5,5.5
- parent: 179
- type: Transform
- - uid: 906
- components:
- - pos: -14.5,4.5
- parent: 179
- type: Transform
- - uid: 908
- components:
- - pos: -15.5,4.5
- parent: 179
- type: Transform
- - uid: 970
- components:
- - pos: 9.5,12.5
- parent: 179
- type: Transform
- - uid: 971
- components:
- - pos: 10.5,12.5
- parent: 179
- type: Transform
- - uid: 972
- components:
- - pos: 11.5,12.5
- parent: 179
- type: Transform
- - uid: 973
- components:
- - pos: 12.5,12.5
- parent: 179
- type: Transform
- - uid: 974
- components:
- - pos: 13.5,12.5
- parent: 179
- type: Transform
- - uid: 1026
- components:
- - pos: -5.5,-14.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 1027
- components:
- - pos: -5.5,-13.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 1028
- components:
- - pos: -5.5,-12.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 1029
- components:
- - pos: -4.5,-12.5
- parent: 179
- type: Transform
- - uid: 1030
- components:
- - pos: -3.5,-12.5
- parent: 179
- type: Transform
- - uid: 1031
- components:
- - pos: -2.5,-12.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 1032
- components:
- - pos: -1.5,-12.5
- parent: 179
- type: Transform
- - uid: 1033
- components:
- - pos: -0.5,-12.5
- parent: 179
- type: Transform
- - uid: 1034
- components:
- - pos: 0.5,-12.5
- parent: 179
- type: Transform
- - uid: 1035
- components:
- - pos: 1.5,-12.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 1036
- components:
- - pos: 2.5,-12.5
- parent: 179
- type: Transform
- - uid: 1037
- components:
- - pos: 3.5,-12.5
- parent: 179
- type: Transform
- - uid: 1038
- components:
- - pos: 0.5,-13.5
- parent: 179
- type: Transform
- - uid: 1039
- components:
- - pos: 0.5,-14.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 1040
- components:
- - pos: 0.5,-15.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 1041
- components:
- - pos: -1.5,-13.5
- parent: 179
- type: Transform
- - uid: 1042
- components:
- - pos: -1.5,-14.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 1043
- components:
- - pos: -1.5,-15.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 1044
- components:
- - pos: 4.5,-12.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 1045
- components:
- - pos: 4.5,-13.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 1051
- components:
- - pos: 9.5,15.5
- parent: 179
- type: Transform
- - uid: 1052
- components:
- - pos: 9.5,16.5
- parent: 179
- type: Transform
- - uid: 1053
- components:
- - pos: 9.5,17.5
- parent: 179
- type: Transform
- - uid: 1054
- components:
- - pos: 9.5,18.5
- parent: 179
- type: Transform
- - uid: 1055
- components:
- - pos: 9.5,19.5
- parent: 179
- type: Transform
- - uid: 1056
- components:
- - pos: 9.5,20.5
- parent: 179
- type: Transform
- - uid: 1057
- components:
- - pos: 10.5,20.5
- parent: 179
- type: Transform
- - uid: 1058
- components:
- - pos: 11.5,20.5
- parent: 179
- type: Transform
- - uid: 1059
- components:
- - pos: 12.5,20.5
- parent: 179
- type: Transform
- - uid: 1060
- components:
- - pos: 13.5,20.5
- parent: 179
- type: Transform
- - uid: 1061
- components:
- - pos: 14.5,20.5
- parent: 179
- type: Transform
- - uid: 1062
- components:
- - pos: 15.5,20.5
- parent: 179
- type: Transform
- - uid: 1063
- components:
- - pos: 16.5,20.5
- parent: 179
- type: Transform
- - uid: 1064
- components:
- - pos: 16.5,21.5
- parent: 179
- type: Transform
- - uid: 1065
- components:
- - pos: 16.5,22.5
- parent: 179
- type: Transform
- - uid: 1066
- components:
- - pos: 16.5,23.5
- parent: 179
- type: Transform
- - uid: 1067
- components:
- - pos: 16.5,24.5
- parent: 179
- type: Transform
- - uid: 1068
- components:
- - pos: 16.5,25.5
- parent: 179
- type: Transform
- - uid: 1069
- components:
- - pos: 16.5,26.5
- parent: 179
- type: Transform
- - uid: 1070
- components:
- - pos: 16.5,27.5
- parent: 179
- type: Transform
- - uid: 1079
- components:
- - pos: 15.5,24.5
- parent: 179
- type: Transform
- - uid: 1080
- components:
- - pos: 14.5,24.5
- parent: 179
- type: Transform
- - uid: 1081
- components:
- - pos: 13.5,24.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 1082
- components:
- - pos: 12.5,24.5
- parent: 179
- type: Transform
- - uid: 1097
- components:
- - pos: 8.5,14.5
- parent: 179
- type: Transform
- - uid: 1098
- components:
- - pos: 8.5,13.5
- parent: 179
- type: Transform
- - uid: 1099
- components:
- - pos: 9.5,13.5
- parent: 179
- type: Transform
- - uid: 1100
- components:
- - pos: 10.5,13.5
- parent: 179
- type: Transform
- - uid: 1101
- components:
- - pos: 11.5,13.5
- parent: 179
- type: Transform
- - uid: 1102
- components:
- - pos: 12.5,13.5
- parent: 179
- type: Transform
- - uid: 1103
- components:
- - pos: 13.5,13.5
- parent: 179
- type: Transform
- - uid: 1104
- components:
- - pos: 14.5,13.5
- parent: 179
- type: Transform
- - uid: 1105
- components:
- - pos: 15.5,13.5
- parent: 179
- type: Transform
- - uid: 1106
- components:
- - pos: 16.5,13.5
- parent: 179
- type: Transform
- - uid: 1107
- components:
- - pos: 17.5,13.5
- parent: 179
- type: Transform
- - uid: 1108
- components:
- - pos: 18.5,13.5
- parent: 179
- type: Transform
- - uid: 1109
- components:
- - pos: 19.5,13.5
- parent: 179
- type: Transform
- - uid: 1110
- components:
- - pos: 20.5,13.5
- parent: 179
- type: Transform
- - uid: 1111
- components:
- - pos: 21.5,13.5
- parent: 179
- type: Transform
- - uid: 1112
- components:
- - pos: 22.5,13.5
- parent: 179
- type: Transform
- - uid: 1113
- components:
- - pos: 23.5,13.5
- parent: 179
- type: Transform
- - uid: 1114
- components:
- - pos: 24.5,13.5
- parent: 179
- type: Transform
- - uid: 1115
- components:
- - pos: 25.5,13.5
- parent: 179
- type: Transform
- - uid: 1116
- components:
- - pos: 16.5,12.5
- parent: 179
- type: Transform
- - uid: 1117
- components:
- - pos: 16.5,11.5
- parent: 179
- type: Transform
- - uid: 1118
- components:
- - pos: 16.5,10.5
- parent: 179
- type: Transform
- - uid: 1119
- components:
- - pos: 16.5,9.5
- parent: 179
- type: Transform
- - uid: 1120
- components:
- - pos: 16.5,8.5
- parent: 179
- type: Transform
- - uid: 1121
- components:
- - pos: 16.5,7.5
- parent: 179
- type: Transform
- - uid: 1122
- components:
- - pos: 16.5,6.5
- parent: 179
- type: Transform
- - uid: 1123
- components:
- - pos: 16.5,5.5
- parent: 179
- type: Transform
- - uid: 1124
- components:
- - pos: 16.5,4.5
- parent: 179
- type: Transform
- - uid: 1125
- components:
- - pos: 16.5,3.5
- parent: 179
- type: Transform
- - uid: 1126
- components:
- - pos: 16.5,2.5
- parent: 179
- type: Transform
- - uid: 1127
- components:
- - pos: 16.5,1.5
- parent: 179
- type: Transform
- - uid: 1128
- components:
- - pos: 16.5,0.5
- parent: 179
- type: Transform
- - uid: 1129
- components:
- - pos: 16.5,-0.5
- parent: 179
- type: Transform
- - uid: 1130
- components:
- - pos: 16.5,-1.5
- parent: 179
- type: Transform
- - uid: 1131
- components:
- - pos: 16.5,-2.5
- parent: 179
- type: Transform
- - uid: 1132
- components:
- - pos: 16.5,-3.5
- parent: 179
- type: Transform
- - uid: 1133
- components:
- - pos: 17.5,-3.5
- parent: 179
- type: Transform
- - uid: 1134
- components:
- - pos: 18.5,-3.5
- parent: 179
- type: Transform
- - uid: 1135
- components:
- - pos: 19.5,-3.5
- parent: 179
- type: Transform
- - uid: 1136
- components:
- - pos: 20.5,-3.5
- parent: 179
- type: Transform
- - uid: 1137
- components:
- - pos: 21.5,-3.5
- parent: 179
- type: Transform
- - uid: 1138
- components:
- - pos: 22.5,-3.5
- parent: 179
- type: Transform
- - uid: 1139
- components:
- - pos: 23.5,-3.5
- parent: 179
- type: Transform
- - uid: 1140
- components:
- - pos: 24.5,-3.5
- parent: 179
- type: Transform
- - uid: 1141
- components:
- - pos: 25.5,-3.5
- parent: 179
- type: Transform
- - uid: 1142
- components:
- - pos: 26.5,-3.5
- parent: 179
- type: Transform
- - uid: 1143
- components:
- - pos: 27.5,-3.5
- parent: 179
- type: Transform
- - uid: 1144
- components:
- - pos: 28.5,-3.5
- parent: 179
- type: Transform
- - uid: 1145
- components:
- - pos: 17.5,2.5
- parent: 179
- type: Transform
- - uid: 1146
- components:
- - pos: 18.5,2.5
- parent: 179
- type: Transform
- - uid: 1147
- components:
- - pos: 19.5,2.5
- parent: 179
- type: Transform
- - uid: 1148
- components:
- - pos: 20.5,2.5
- parent: 179
- type: Transform
- - uid: 1149
- components:
- - pos: 21.5,2.5
- parent: 179
- type: Transform
- - uid: 1150
- components:
- - pos: 22.5,2.5
- parent: 179
- type: Transform
- - uid: 1151
- components:
- - pos: 23.5,2.5
- parent: 179
- type: Transform
- - uid: 1152
- components:
- - pos: 24.5,2.5
- parent: 179
- type: Transform
- - uid: 1153
- components:
- - pos: 25.5,2.5
- parent: 179
- type: Transform
- - uid: 1154
- components:
- - pos: 26.5,2.5
- parent: 179
- type: Transform
- - uid: 1155
- components:
- - pos: 27.5,2.5
- parent: 179
- type: Transform
- - uid: 1156
- components:
- - pos: 28.5,2.5
- parent: 179
- type: Transform
- - uid: 1157
- components:
- - pos: 26.5,3.5
- parent: 179
- type: Transform
- - uid: 1158
- components:
- - pos: 26.5,4.5
- parent: 179
- type: Transform
- - uid: 1159
- components:
- - pos: 26.5,5.5
- parent: 179
- type: Transform
- - uid: 1160
- components:
- - pos: 26.5,6.5
- parent: 179
- type: Transform
- - uid: 1161
- components:
- - pos: 26.5,7.5
- parent: 179
- type: Transform
- - uid: 1162
- components:
- - pos: 26.5,8.5
- parent: 179
- type: Transform
- - uid: 1163
- components:
- - pos: 26.5,9.5
- parent: 179
- type: Transform
- - uid: 1164
- components:
- - pos: 25.5,9.5
- parent: 179
- type: Transform
- - uid: 1165
- components:
- - pos: 24.5,9.5
- parent: 179
- type: Transform
- - uid: 1166
- components:
- - pos: 16.5,19.5
- parent: 179
- type: Transform
- - uid: 1167
- components:
- - pos: 16.5,18.5
- parent: 179
- type: Transform
- - uid: 1168
- components:
- - pos: 16.5,17.5
- parent: 179
- type: Transform
- - uid: 1169
- components:
- - pos: 16.5,16.5
- parent: 179
- type: Transform
- - uid: 1170
- components:
- - pos: 16.5,15.5
- parent: 179
- type: Transform
- - uid: 1171
- components:
- - pos: 16.5,14.5
- parent: 179
- type: Transform
-- proto: CableApcStack
- entities:
- - uid: 70
- components:
- - pos: 10.577456,21.424059
- parent: 179
- type: Transform
- - uid: 183
- components:
- - pos: -6.6863613,7.351646
- parent: 179
- type: Transform
- - uid: 351
- components:
- - pos: 10.561831,21.767809
- parent: 179
- type: Transform
- - uid: 537
- components:
- - pos: -15.5,-0.5
- parent: 179
- type: Transform
- - uid: 538
- components:
- - pos: -15.5,-0.5
- parent: 179
- type: Transform
-- proto: CableHV
- entities:
- - uid: 1019
- components:
- - pos: -6.5,-13.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 1020
- components:
- - pos: -6.5,-12.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 1021
- components:
- - pos: -6.5,-11.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
-- proto: CableHVStack
- entities:
- - uid: 184
- components:
- - pos: -6.665528,7.840053
- parent: 179
- type: Transform
-- proto: CableMV
- entities:
- - uid: 1023
- components:
- - pos: -6.5,-13.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 1024
- components:
- - pos: -5.5,-13.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
- - uid: 1025
- components:
- - pos: -5.5,-14.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
-- proto: CableMVStack
- entities:
- - uid: 325
- components:
- - pos: -6.665528,7.5601244
- parent: 179
- type: Transform
-- proto: CableTerminal
- entities:
- - uid: 1022
- components:
- - pos: -6.5,-11.5
- parent: 179
- type: Transform
-- proto: CapacitorStockPart
- entities:
- - uid: 701
- components:
- - pos: -3.2804112,8.786524
- parent: 179
- type: Transform
-- proto: CaptainIDCard
- entities:
- - uid: 726
- components:
- - pos: 1.0820513,8.752605
- parent: 179
- type: Transform
-- proto: CaptainSabre
- entities:
- - uid: 381
- components:
- - pos: -3.277628,-2.15838
- parent: 179
- type: Transform
-- proto: Catwalk
- entities:
- - uid: 2
- components:
- - pos: 13.5,24.5
- parent: 179
- type: Transform
- - uid: 7
- components:
- - pos: 6.5,24.5
- parent: 179
- type: Transform
- - uid: 20
- components:
- - pos: 6.5,20.5
- parent: 179
- type: Transform
- - uid: 120
- components:
- - rot: -1.5707963267948966 rad
- pos: 6.5,18.5
- parent: 179
- type: Transform
- - uid: 246
- components:
- - pos: -6.5,-6.5
- parent: 179
- type: Transform
- - uid: 247
- components:
- - pos: -8.5,-6.5
- parent: 179
- type: Transform
- - uid: 252
- components:
- - pos: 4.5,-8.5
- parent: 179
- type: Transform
- - uid: 269
- components:
- - pos: 12.5,10.5
- parent: 179
- type: Transform
- - uid: 286
- components:
- - pos: 2.5,-11.5
- parent: 179
- type: Transform
- - uid: 287
- components:
- - pos: -4.5,-11.5
- parent: 179
- type: Transform
- - uid: 308
- components:
- - pos: -2.5,-12.5
- parent: 179
- type: Transform
- - uid: 309
- components:
- - pos: 1.5,-12.5
- parent: 179
- type: Transform
- - uid: 333
- components:
- - pos: 4.5,-13.5
- parent: 179
- type: Transform
- - uid: 334
- components:
- - pos: -5.5,-13.5
- parent: 179
- type: Transform
- - uid: 345
- components:
- - anchored: False
- rot: -1.5707963267949 rad
- pos: 9.5,0.5
- parent: 179
- type: Transform
- - uid: 346
- components:
- - anchored: False
- rot: -1.5707963267949 rad
- pos: 9.5,1.5
- parent: 179
- type: Transform
- - uid: 347
- components:
- - anchored: False
- rot: -1.5707963267949 rad
- pos: 9.5,2.5
- parent: 179
- type: Transform
- - uid: 348
- components:
- - anchored: False
- rot: -1.5707963267949 rad
- pos: 9.5,3.5
- parent: 179
- type: Transform
- - uid: 349
- components:
- - anchored: False
- rot: -1.5707963267949 rad
- pos: 9.5,4.5
- parent: 179
- type: Transform
- - uid: 403
- components:
- - anchored: False
- rot: -1.5707963267949 rad
- pos: 9.5,-0.5
- parent: 179
- type: Transform
- - uid: 404
- components:
- - anchored: False
- rot: -1.5707963267949 rad
- pos: 9.5,-1.5
- parent: 179
- type: Transform
- - uid: 405
- components:
- - anchored: False
- rot: -1.5707963267949 rad
- pos: 9.5,-2.5
- parent: 179
- type: Transform
- - uid: 406
- components:
- - anchored: False
- rot: -1.5707963267949 rad
- pos: 9.5,-3.5
- parent: 179
- type: Transform
- - uid: 407
- components:
- - anchored: False
- rot: -1.5707963267949 rad
- pos: 9.5,-4.5
- parent: 179
- type: Transform
- - uid: 408
- components:
- - anchored: False
- rot: -1.5707963267949 rad
- pos: 9.5,-5.5
- parent: 179
- type: Transform
- - uid: 409
- components:
- - anchored: False
- rot: -1.5707963267949 rad
- pos: 9.5,-6.5
- parent: 179
- type: Transform
- - uid: 410
- components:
- - anchored: False
- rot: -1.5707963267949 rad
- pos: 9.5,-7.5
- parent: 179
- type: Transform
- - uid: 411
- components:
- - anchored: False
- rot: -1.5707963267949 rad
- pos: 9.5,-8.5
- parent: 179
- type: Transform
- - uid: 412
- components:
- - anchored: False
- rot: -1.5707963267949 rad
- pos: 9.5,-9.5
- parent: 179
- type: Transform
- - uid: 413
- components:
- - anchored: False
- rot: -1.5707963267949 rad
- pos: 9.5,-10.5
- parent: 179
- type: Transform
- - uid: 414
- components:
- - anchored: False
- rot: -1.5707963267949 rad
- pos: 9.5,-11.5
- parent: 179
- type: Transform
- - uid: 415
- components:
- - anchored: False
- rot: -1.5707963267949 rad
- pos: 8.5,-8.5
- parent: 179
- type: Transform
- - uid: 438
- components:
- - rot: 3.141592653589793 rad
- pos: -9.5,-0.5
- parent: 179
- type: Transform
- - uid: 442
- components:
- - pos: -9.5,8.5
- parent: 179
- type: Transform
- - uid: 514
- components:
- - pos: -10.5,8.5
- parent: 179
- type: Transform
- - uid: 541
- components:
- - pos: -11.5,-6.5
- parent: 179
- type: Transform
- - uid: 542
- components:
- - pos: -9.5,-6.5
- parent: 179
- type: Transform
- - uid: 695
- components:
- - rot: 3.141592653589793 rad
- pos: -8.5,8.5
- parent: 179
- type: Transform
-- proto: Chair
- entities:
- - uid: 580
- components:
- - rot: 1.5707963267948966 rad
- pos: 14.5,6.5
- parent: 179
- type: Transform
- - uid: 581
- components:
- - rot: 1.5707963267948966 rad
- pos: 14.5,8.5
- parent: 179
- type: Transform
- - uid: 582
- components:
- - rot: 1.5707963267948966 rad
- pos: 14.5,7.5
- parent: 179
- type: Transform
-- proto: ChairOfficeDark
- entities:
- - uid: 380
- components:
- - rot: 3.1415926535897967 rad
- pos: 0.5,-6.5
- parent: 179
- type: Transform
-- proto: ChairOfficeLight
- entities:
- - uid: 576
- components:
- - rot: 4.71238898038469 rad
- pos: 19.5,4.5
- parent: 179
- type: Transform
- - uid: 577
- components:
- - rot: 3.141592653589793 rad
- pos: 20.5,5.5
- parent: 179
- type: Transform
- - uid: 578
- components:
- - rot: 4.71238898038469 rad
- pos: 23.5,8.5
- parent: 179
- type: Transform
- - uid: 579
- components:
- - pos: 24.5,5.5
- parent: 179
- type: Transform
-- proto: chem_master
- entities:
- - uid: 311
- components:
- - pos: 8.5,11.5
- parent: 179
- type: Transform
-- proto: ChemDispenser
- entities:
- - uid: 583
- components:
- - pos: 23.5,9.5
- parent: 179
- type: Transform
- - containers:
- ReagentDispenser-beaker: !type:ContainerSlot
- showEnts: False
- occludes: True
- ent: null
- machine_board: !type:Container
- showEnts: False
- occludes: True
- ents: []
- machine_parts: !type:Container
- showEnts: False
- occludes: True
- ents: []
- beakerSlot: !type:ContainerSlot
- showEnts: False
- occludes: True
- ent: null
- type: ContainerContainer
- - uid: 750
- components:
- - pos: 7.5,11.5
- parent: 179
- type: Transform
-- proto: ChemicalPayload
- entities:
- - uid: 432
- components:
- - pos: 6.4651074,9.828774
- parent: 179
- type: Transform
-- proto: ChemMasterMachineCircuitboard
- entities:
- - uid: 718
- components:
- - pos: -4.5458,10.514079
- parent: 179
- type: Transform
-- proto: CircuitImprinter
- entities:
- - uid: 332
- components:
- - pos: -6.5,4.5
- parent: 179
- type: Transform
-- proto: ClosetEmergencyFilledRandom
- entities:
- - uid: 319
- components:
- - pos: 1.5,-10.5
- parent: 179
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
- - uid: 322
- components:
- - pos: 0.5,-10.5
- parent: 179
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
-- proto: ClosetToolFilled
- entities:
- - uid: 524
- components:
- - pos: -11.5,-5.5
- parent: 179
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
- - uid: 525
- components:
- - pos: -11.5,-4.5
- parent: 179
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
- - uid: 526
- components:
- - pos: -11.5,-3.5
- parent: 179
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
- - uid: 527
- components:
- - pos: -11.5,-2.5
- parent: 179
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
-- proto: ClothingBeltUtilityFilled
- entities:
- - uid: 427
- components:
- - pos: -1.895102,-10.33495
- parent: 179
- type: Transform
- - uid: 428
- components:
- - pos: -1.770102,-10.63182
- parent: 179
- type: Transform
-- proto: ClothingHandsGlovesColorYellow
- entities:
- - uid: 454
- components:
- - pos: -0.78741443,4.322194
- parent: 179
- type: Transform
-- proto: ClothingHeadHatWelding
- entities:
- - uid: 344
- components:
- - pos: 0.7198646,4.374314
- parent: 179
- type: Transform
-- proto: ClothingMaskBreath
- entities:
- - uid: 955
- components:
- - pos: -10.595239,6.1907988
- parent: 179
- type: Transform
-- proto: ClothingMaskGas
- entities:
- - uid: 425
- components:
- - pos: -0.2880585,-10.69432
- parent: 179
- type: Transform
-- proto: ClothingOuterHardsuitAtmos
- entities:
- - uid: 270
- components:
- - pos: -10.5426235,5.472399
- parent: 179
- type: Transform
-- proto: ClothingOuterVest
- entities:
- - uid: 426
- components:
- - pos: -0.9130585,-10.66307
- parent: 179
- type: Transform
-- proto: ClothingShoesBootsMag
- entities:
- - uid: 725
- components:
- - pos: 0.47880077,8.073378
- parent: 179
- type: Transform
-- proto: ClothingUniformJumpsuitEngineering
- entities:
- - uid: 424
- components:
- - pos: -0.6474335,-10.27245
- parent: 179
- type: Transform
-- proto: ClownPDA
- entities:
- - uid: 91
- components:
- - pos: -15.5,2.5
- parent: 179
- type: Transform
- - uid: 762
- components:
- - pos: -14.5,1.5
- parent: 179
- type: Transform
- - uid: 864
- components:
- - pos: -14.5,2.5
- parent: 179
- type: Transform
- - uid: 912
- components:
- - pos: -15.5,1.5
- parent: 179
- type: Transform
-- proto: ComputerAnalysisConsole
- entities:
- - uid: 1083
- components:
- - rot: 1.5707963267948966 rad
- pos: 15.5,23.5
- parent: 179
- type: Transform
- - linkedPorts:
- 1078:
- - ArtifactAnalyzerSender: ArtifactAnalyzerReceiver
- type: DeviceLinkSource
-- proto: ComputerCargoOrders
- entities:
- - uid: 326
- components:
- - pos: 0.5,-5.5
- parent: 179
- type: Transform
- - uid: 996
- components:
- - pos: -1.5,-11.5
- parent: 179
- type: Transform
-- proto: ComputerCargoShuttle
- entities:
- - uid: 995
- components:
- - pos: 0.5,-11.5
- parent: 179
- type: Transform
-- proto: ComputerMedicalRecords
- entities:
- - uid: 152
- components:
- - rot: 3.141592653589793 rad
- pos: 22.5,-5.5
- parent: 179
- type: Transform
- - uid: 591
- components:
- - pos: 21.5,5.5
- parent: 179
- type: Transform
-- proto: ComputerResearchAndDevelopment
- entities:
- - uid: 88
- components:
- - rot: 1.5707963267948966 rad
- pos: 8.5,19.5
- parent: 179
- type: Transform
-- proto: ComputerShuttleCargo
- entities:
- - uid: 994
- components:
- - pos: -0.5,-11.5
- parent: 179
- type: Transform
-- proto: ComputerTechnologyDiskTerminal
- entities:
- - uid: 1088
- components:
- - pos: 13.5,16.5
- parent: 179
- type: Transform
-- proto: ConveyorBelt
- entities:
- - uid: 195
- components:
- - pos: -2.5,-15.5
- parent: 179
- type: Transform
- - links:
- - 699
- type: DeviceLinkSink
- - uid: 259
- components:
- - rot: 3.141592653589793 rad
- pos: 1.5,-14.5
- parent: 179
- type: Transform
- - links:
- - 983
- type: DeviceLinkSink
- - uid: 463
- components:
- - rot: 3.141592653589793 rad
- pos: 1.5,-16.5
- parent: 179
- type: Transform
- - links:
- - 983
- type: DeviceLinkSink
- - uid: 677
- components:
- - pos: -2.5,-14.5
- parent: 179
- type: Transform
- - uid: 716
- components:
- - rot: -1.5707963267948966 rad
- pos: -1.5,11.5
- parent: 179
- type: Transform
- - links:
- - 722
- type: DeviceLinkSink
- - uid: 720
- components:
- - rot: -1.5707963267948966 rad
- pos: -0.5,11.5
- parent: 179
- type: Transform
- - links:
- - 722
- type: DeviceLinkSink
- - uid: 721
- components:
- - rot: -1.5707963267948966 rad
- pos: 0.5,11.5
- parent: 179
- type: Transform
- - links:
- - 722
- type: DeviceLinkSink
- - uid: 985
- components:
- - rot: 3.141592653589793 rad
- pos: 1.5,-13.5
- parent: 179
- type: Transform
- - links:
- - 983
- type: DeviceLinkSink
- - uid: 989
- components:
- - rot: 3.141592653589793 rad
- pos: 1.5,-15.5
- parent: 179
- type: Transform
- - links:
- - 983
- type: DeviceLinkSink
- - uid: 990
- components:
- - pos: -2.5,-13.5
- parent: 179
- type: Transform
- - links:
- - 699
- type: DeviceLinkSink
- - uid: 991
- components:
- - pos: -2.5,-16.5
- parent: 179
- type: Transform
- - links:
- - 699
- type: DeviceLinkSink
-- proto: CrateEngineeringToolbox
- entities:
- - uid: 692
- components:
- - pos: -0.5,3.5
- parent: 179
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
-- proto: CrateGeneric
- entities:
- - uid: 266
- components:
- - pos: 5.5,-6.5
- parent: 179
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
-- proto: CrateHydroponicsSeeds
- entities:
- - uid: 754
- components:
- - pos: 2.5,12.5
- parent: 179
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
-- proto: CrateHydroponicsTools
- entities:
- - uid: 755
- components:
- - pos: 2.5,13.5
- parent: 179
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
-- proto: CrateMedical
- entities:
- - uid: 131
- components:
- - pos: 31.5,-1.5
- parent: 179
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
- - uid: 132
- components:
- - pos: 32.5,-1.5
- parent: 179
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
-- proto: Crowbar
- entities:
- - uid: 147
- components:
- - pos: -2.172831,4.5306726
- parent: 179
- type: Transform
- - uid: 423
- components:
- - pos: -2.861032,-5.524786
- parent: 179
- type: Transform
-- proto: DebugBatteryDischarger
- entities:
- - uid: 711
- components:
- - pos: 0.5,-3.5
- parent: 179
- type: Transform
-- proto: DisposalPipe
- entities:
- - uid: 717
- components:
- - rot: 1.5707963267948966 rad
- pos: -0.5,10.5
- parent: 179
- type: Transform
-- proto: DisposalTrunk
- entities:
- - uid: 285
- components:
- - rot: -1.5707963267948966 rad
- pos: 0.5,10.5
- parent: 179
- type: Transform
- - uid: 715
- components:
- - rot: 1.5707963267948966 rad
- pos: -1.5,10.5
- parent: 179
- type: Transform
-- proto: DisposalUnit
- entities:
- - uid: 719
- components:
- - pos: -1.5,10.5
- parent: 179
- type: Transform
-- proto: DrinkBeerglass
- entities:
- - uid: 688
- components:
- - pos: 3.1981986,5.733985
- parent: 179
- type: Transform
-- proto: DrinkColaCan
- entities:
- - uid: 690
- components:
- - pos: 3.8231986,6.150942
- parent: 179
- type: Transform
-- proto: Dropper
- entities:
- - uid: 730
- components:
- - pos: 5.892191,9.4118185
- parent: 179
- type: Transform
-- proto: EmergencyOxygenTankFilled
- entities:
- - uid: 956
- components:
- - pos: -10.505015,6.711994
- parent: 179
- type: Transform
-- proto: ExGrenade
- entities:
- - uid: 433
- components:
- - pos: -3.7704864,-1.6163371
- parent: 179
- type: Transform
-- proto: ExplosivePayload
- entities:
- - uid: 668
- components:
- - pos: 6.829691,9.4118185
- parent: 179
- type: Transform
-- proto: FaxMachineCaptain
- entities:
- - uid: 967
- components:
- - pos: 9.5,12.5
- parent: 179
- type: Transform
-- proto: FaxMachineCentcom
- entities:
- - uid: 968
- components:
- - pos: 11.5,12.5
- parent: 179
- type: Transform
-- proto: FaxMachineSyndie
- entities:
- - uid: 969
- components:
- - pos: 13.5,12.5
- parent: 179
- type: Transform
-- proto: FemtoManipulatorStockPart
- entities:
- - uid: 712
- components:
- - pos: -6.7434506,8.817795
- parent: 179
- type: Transform
-- proto: FireExtinguisher
- entities:
- - uid: 323
- components:
- - pos: -1.297692,-5.396082
- parent: 179
- type: Transform
- - uid: 868
- components:
- - pos: -14.5,-1.5
- parent: 179
- type: Transform
-- proto: FlashlightLantern
- entities:
- - uid: 421
- components:
- - pos: -1.934832,-5.154238
- parent: 179
- type: Transform
- - uid: 422
- components:
- - pos: 1.1350493,8.198464
- parent: 179
- type: Transform
- - toggleAction:
- sound: null
- itemIconStyle: BigItem
- icon:
- sprite: Objects/Tools/flashlight.rsi
- state: flashlight
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png
- iconColor: '#FFFFFFFF'
- name: action-name-toggle-light
- description: action-description-toggle-light
- keywords: []
- enabled: True
- useDelay: null
- charges: null
- checkCanInteract: True
- clientExclusive: False
- priority: 0
- autoPopulate: True
- autoRemove: True
- temporary: False
- event: !type:ToggleActionEvent {}
- type: HandheldLight
-- proto: FloorLavaEntity
- entities:
- - uid: 134
- components:
- - pos: -13.5,-3.5
- parent: 179
- type: Transform
- - uid: 135
- components:
- - pos: -14.5,-3.5
- parent: 179
- type: Transform
- - uid: 141
- components:
- - pos: -13.5,-2.5
- parent: 179
- type: Transform
- - uid: 469
- components:
- - pos: -14.5,-2.5
- parent: 179
- type: Transform
-- proto: FloorWaterEntity
- entities:
- - uid: 136
- components:
- - pos: -12.5,-2.5
- parent: 179
- type: Transform
- - uid: 137
- components:
- - pos: -12.5,-3.5
- parent: 179
- type: Transform
-- proto: FoodApple
- entities:
- - uid: 16
- components:
- - pos: 3.9853282,16.430082
- parent: 179
- type: Transform
- - uid: 849
- components:
- - pos: 3.7249117,16.242453
- parent: 179
- type: Transform
- - uid: 866
- components:
- - pos: 3.651995,16.55517
- parent: 179
- type: Transform
-- proto: FoodBurgerBacon
- entities:
- - uid: 689
- components:
- - pos: 3.3844857,6.0702233
- parent: 179
- type: Transform
-- proto: FoodCarrot
- entities:
- - uid: 850
- components:
- - pos: 3.6023045,15.67151
- parent: 179
- type: Transform
- - uid: 851
- components:
- - pos: 3.620745,15.015423
- parent: 179
- type: Transform
- - uid: 863
- components:
- - pos: 3.620745,14.389988
- parent: 179
- type: Transform
-- proto: FoodPizzaPineapple
- entities:
- - uid: 687
- components:
- - pos: 3.5215416,6.799056
- parent: 179
- type: Transform
-- proto: GasAnalyzer
- entities:
- - uid: 876
- components:
- - pos: 4.4732866,-0.48882532
- parent: 179
- type: Transform
-- proto: GasFilter
- entities:
- - uid: 480
- components:
- - rot: -1.5707963267948966 rad
- pos: 3.5,-3.5
- parent: 179
- type: Transform
-- proto: GasMixer
- entities:
- - uid: 747
- components:
- - rot: -1.5707963267948966 rad
- pos: 3.5,-2.5
- parent: 179
- type: Transform
-- proto: GasOutletInjector
- entities:
- - uid: 429
- components:
- - rot: -1.5707963267948966 rad
- pos: 6.5,-1.5
- parent: 179
- type: Transform
-- proto: GasPipeBend
- entities:
- - uid: 727
- components:
- - rot: -1.5707963267948966 rad
- pos: 5.5,-0.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
-- proto: GasPipeFourway
- entities:
- - uid: 728
- components:
- - pos: 5.5,-1.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
-- proto: GasPipeStraight
- entities:
- - uid: 749
- components:
- - rot: -1.5707963267948966 rad
- pos: 5.5,-3.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
-- proto: GasPipeTJunction
- entities:
- - uid: 748
- components:
- - pos: 5.5,-2.5
- parent: 179
- type: Transform
- - enabled: True
- type: AmbientSound
-- proto: GasPort
- entities:
- - uid: 457
- components:
- - rot: -1.5707963267948966 rad
- pos: 6.5,-0.5
- parent: 179
- type: Transform
-- proto: GasPressurePump
- entities:
- - uid: 171
- components:
- - rot: -1.5707963267948966 rad
- pos: 4.5,-3.5
- parent: 179
- type: Transform
-- proto: GasValve
- entities:
- - uid: 168
- components:
- - rot: -1.5707963267948966 rad
- pos: 4.5,-2.5
- parent: 179
- type: Transform
-- proto: GasVentPump
- entities:
- - uid: 729
- components:
- - rot: -1.5707963267948966 rad
- pos: 6.5,-3.5
- parent: 179
- type: Transform
- - enabled: False
- type: AmbientSound
-- proto: GasVentScrubber
- entities:
- - uid: 452
- components:
- - rot: -1.5707963267948966 rad
- pos: 6.5,-2.5
- parent: 179
- type: Transform
- - enabled: False
- type: AmbientSound
-- proto: GasVolumePump
- entities:
- - uid: 160
- components:
- - rot: -1.5707963267948966 rad
- pos: 4.5,-1.5
- parent: 179
- type: Transform
-- proto: GeigerCounter
- entities:
- - uid: 759
- components:
- - pos: 1.760596,4.5697265
- parent: 179
- type: Transform
-- proto: GravityGenerator
- entities:
- - uid: 744
- components:
- - pos: 6.5,6.5
- parent: 179
- type: Transform
-- proto: Grille
- entities:
- - uid: 108
- components:
- - rot: 1.5707963267948966 rad
- pos: 14.5,23.5
- parent: 179
- type: Transform
- - uid: 986
- components:
- - pos: -0.5,-16.5
- parent: 179
- type: Transform
- - uid: 987
- components:
- - pos: -0.5,-15.5
- parent: 179
- type: Transform
- - uid: 988
- components:
- - pos: -0.5,-14.5
- parent: 179
- type: Transform
- - uid: 1007
- components:
- - pos: -3.5,-16.5
- parent: 179
- type: Transform
- - uid: 1008
- components:
- - pos: -3.5,-15.5
- parent: 179
- type: Transform
- - uid: 1009
- components:
- - pos: -3.5,-14.5
- parent: 179
- type: Transform
- - uid: 1010
- components:
- - pos: 2.5,-16.5
- parent: 179
- type: Transform
- - uid: 1011
- components:
- - pos: 2.5,-15.5
- parent: 179
- type: Transform
- - uid: 1012
- components:
- - pos: 2.5,-14.5
- parent: 179
- type: Transform
- - uid: 1089
- components:
- - pos: 8.5,17.5
- parent: 179
- type: Transform
- - uid: 1090
- components:
- - pos: 9.5,17.5
- parent: 179
- type: Transform
- - uid: 1091
- components:
- - pos: 10.5,17.5
- parent: 179
- type: Transform
- - uid: 1092
- components:
- - pos: 10.5,16.5
- parent: 179
- type: Transform
-- proto: Handcuffs
- entities:
- - uid: 331
- components:
- - pos: -3.5805476,0.74100244
- parent: 179
- type: Transform
-- proto: HandheldHealthAnalyzer
- entities:
- - uid: 513
- components:
- - pos: -5.9808183,-3.6614444
- parent: 179
- type: Transform
-- proto: HoloFan
- entities:
- - uid: 142
- components:
- - pos: -8.5,7.5
- parent: 179
- type: Transform
- missingComponents:
- - TimedDespawn
- - uid: 901
- components:
- - pos: -10.5,7.5
- parent: 179
- type: Transform
- missingComponents:
- - TimedDespawn
- - uid: 902
- components:
- - pos: -9.5,7.5
- parent: 179
- type: Transform
- missingComponents:
- - TimedDespawn
-- proto: HolosignWetFloor
- entities:
- - uid: 848
- components:
- - pos: -13.5,2.5
- parent: 179
- type: Transform
- - fixtures: {}
- type: Fixtures
- missingComponents:
- - TimedDespawn
- - uid: 911
- components:
- - pos: -13.5,1.5
- parent: 179
- type: Transform
- - fixtures: {}
- type: Fixtures
- missingComponents:
- - TimedDespawn
-- proto: hydroponicsTray
- entities:
- - uid: 756
- components:
- - pos: 2.5,14.5
- parent: 179
- type: Transform
- - uid: 757
- components:
- - pos: 2.5,15.5
- parent: 179
- type: Transform
-- proto: KitchenReagentGrinder
- entities:
- - uid: 731
- components:
- - pos: 8.5,9.5
- parent: 179
- type: Transform
-- proto: LargeBeaker
- entities:
- - uid: 210
- components:
- - pos: 4.3272614,9.338851
- parent: 179
- type: Transform
- - uid: 253
- components:
- - pos: 23.494947,7.0422435
- parent: 179
- type: Transform
- - uid: 402
- components:
- - pos: 23.510572,7.7141185
- parent: 179
- type: Transform
- - uid: 737
- components:
- - pos: 4.2969,9.828774
- parent: 179
- type: Transform
-- proto: LedLightTube
- entities:
- - uid: 481
- components:
- - pos: -3.511025,-10.35149
- parent: 179
- type: Transform
-- proto: LockerBotanistFilled
- entities:
- - uid: 869
- components:
- - pos: 2.5,16.5
- parent: 179
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
-- proto: LockerChemistry
- entities:
- - uid: 127
- components:
- - pos: 27.5,6.5
- parent: 179
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
-- proto: LockerChemistryFilled
- entities:
- - uid: 297
- components:
- - pos: 7.5,9.5
- parent: 179
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
-- proto: LockerChiefEngineerFilled
- entities:
- - uid: 447
- components:
- - pos: 7.5,2.5
- parent: 179
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
-- proto: LockerElectricalSuppliesFilled
- entities:
- - uid: 444
- components:
- - pos: 7.5,3.5
- parent: 179
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
-- proto: LockerEngineerFilled
- entities:
- - uid: 490
- components:
- - pos: 7.5,4.5
- parent: 179
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
-- proto: LockerMedical
- entities:
- - uid: 128
- components:
- - pos: 27.5,5.5
- parent: 179
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
- - uid: 129
- components:
- - pos: 29.5,-1.5
- parent: 179
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
- - uid: 130
- components:
- - pos: 30.5,-1.5
- parent: 179
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
-- proto: LockerMedicalFilled
- entities:
- - uid: 865
- components:
- - pos: -6.5,-3.5
- parent: 179
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
-- proto: LockerMedicineFilled
- entities:
- - uid: 562
- components:
- - pos: -5.5,-3.5
- parent: 179
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
-- proto: LockerSalvageSpecialistFilled
- entities:
- - uid: 493
- components:
- - pos: -10.5,4.5
- parent: 179
- type: Transform
- - locked: False
- type: Lock
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
-- proto: LockerSyndicatePersonalFilled
- entities:
- - uid: 909
- components:
- - pos: -7.5,1.5
- parent: 179
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
-- proto: LockerWardenFilled
- entities:
- - uid: 873
- components:
- - pos: -8.5,1.5
- parent: 179
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
-- proto: LockerWeldingSuppliesFilled
- entities:
- - uid: 871
- components:
- - pos: 7.5,1.5
- parent: 179
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.14957
- moles:
- - 2.9923203
- - 11.2568245
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
-- proto: MachineAnomalyGenerator
- entities:
- - uid: 1071
- components:
- - pos: 16.5,25.5
- parent: 179
- type: Transform
- - enabled: False
- type: AmbientSound
-- proto: MachineAnomalyVessel
- entities:
- - uid: 1087
- components:
- - pos: 15.5,19.5
- parent: 179
- type: Transform
-- proto: MachineArtifactAnalyzer
- entities:
- - uid: 1078
- components:
- - rot: 1.5707963267948966 rad
- pos: 12.5,24.5
- parent: 179
- type: Transform
- - links:
- - 1083
- type: DeviceLinkSink
-- proto: MachineFrame
- entities:
- - uid: 533
- components:
- - pos: -5.5,10.5
- parent: 179
- type: Transform
-- proto: MedicalScanner
- entities:
- - uid: 592
- components:
- - pos: 18.5,-1.5
- parent: 179
- type: Transform
- - containers:
- MedicalScanner-bodyContainer: !type:ContainerSlot
- showEnts: False
- occludes: True
- ent: null
- machine_board: !type:Container
- showEnts: False
- occludes: True
- ents: []
- machine_parts: !type:Container
- showEnts: False
- occludes: True
- ents: []
- scanner-bodyContainer: !type:ContainerSlot
- showEnts: False
- occludes: True
- ent: null
- type: ContainerContainer
- - uid: 593
- components:
- - pos: 18.5,-5.5
- parent: 179
- type: Transform
- - containers:
- MedicalScanner-bodyContainer: !type:ContainerSlot
- showEnts: False
- occludes: True
- ent: null
- machine_board: !type:Container
- showEnts: False
- occludes: True
- ents: []
- machine_parts: !type:Container
- showEnts: False
- occludes: True
- ents: []
- scanner-bodyContainer: !type:ContainerSlot
- showEnts: False
- occludes: True
- ent: null
- type: ContainerContainer
-- proto: MedkitFilled
- entities:
- - uid: 153
- components:
- - pos: 13.632214,1.5673001
- parent: 179
- type: Transform
- - uid: 154
- components:
- - pos: 13.460339,0.6141751
- parent: 179
- type: Transform
- - uid: 321
- components:
- - pos: 3.8440318,4.425983
- parent: 179
- type: Transform
-- proto: MicroManipulatorStockPart
- entities:
- - uid: 484
- components:
- - pos: -5.5039105,8.838643
- parent: 179
- type: Transform
- - uid: 959
- components:
- - pos: -4.752078,10.904018
- parent: 179
- type: Transform
-- proto: ModularGrenade
- entities:
- - uid: 435
- components:
- - pos: 6.829691,9.860046
- parent: 179
- type: Transform
-- proto: MopBucket
- entities:
- - uid: 696
- components:
- - pos: 7.5,16.5
- parent: 179
- type: Transform
-- proto: MopItem
- entities:
- - uid: 328
- components:
- - pos: 7.6382103,16.08618
- parent: 179
- type: Transform
- - solutions:
- absorbed:
- temperature: 293.15
- canMix: False
- canReact: True
- maxVol: 50
- reagents:
- - data: null
- ReagentId: Water
- Quantity: 25
- type: SolutionContainerManager
-- proto: Multitool
- entities:
- - uid: 307
- components:
- - pos: -1.249865,-10.43489
- parent: 179
- type: Transform
- - uid: 430
- components:
- - pos: -0.6298993,4.7431083
- parent: 179
- type: Transform
- - devices:
- 'UID: 31739': 801
- type: NetworkConfigurator
-- proto: NanoManipulatorStockPart
- entities:
- - uid: 456
- components:
- - pos: -5.920577,8.817795
- parent: 179
- type: Transform
-- proto: NitrogenCanister
- entities:
- - uid: 459
- components:
- - pos: 7.5,-1.5
- parent: 179
- type: Transform
-- proto: Ointment
- entities:
- - uid: 148
- components:
- - pos: 18.77326,6.653532
- parent: 179
- type: Transform
- - uid: 149
- components:
- - pos: 18.49201,6.059782
- parent: 179
- type: Transform
-- proto: OxygenCanister
- entities:
- - uid: 340
- components:
- - pos: 7.5,-3.5
- parent: 179
- type: Transform
-- proto: PaperBin10
- entities:
- - uid: 977
- components:
- - pos: 10.5,12.5
- parent: 179
- type: Transform
-- proto: PartRodMetal
- entities:
- - uid: 133
- components:
- - pos: -3.4717777,7.672426
- parent: 179
- type: Transform
-- proto: Pen
- entities:
- - uid: 978
- components:
- - pos: 10.893699,12.7794075
- parent: 179
- type: Transform
- - uid: 979
- components:
- - pos: 10.862433,12.602201
- parent: 179
- type: Transform
-- proto: PicoManipulatorStockPart
- entities:
- - uid: 455
- components:
- - pos: -6.337244,8.838643
- parent: 179
- type: Transform
-- proto: PlasmaCanister
- entities:
- - uid: 461
- components:
- - pos: 7.5,-2.5
- parent: 179
- type: Transform
-- proto: PlasticFlapsAirtightClear
- entities:
- - uid: 997
- components:
- - pos: -2.5,-16.5
- parent: 179
- type: Transform
- - uid: 998
- components:
- - pos: -2.5,-14.5
- parent: 179
- type: Transform
- - uid: 999
- components:
- - pos: 1.5,-16.5
- parent: 179
- type: Transform
- - uid: 1000
- components:
- - pos: 1.5,-14.5
- parent: 179
- type: Transform
-- proto: PortableGeneratorSuperPacman
- entities:
- - uid: 1016
- components:
- - pos: -6.5,-11.5
- parent: 179
- type: Transform
-- proto: PowerCellHigh
- entities:
- - uid: 567
- components:
- - pos: -4.76583,8.265328
- parent: 179
- type: Transform
-- proto: PowerCellHyper
- entities:
- - uid: 703
- components:
- - pos: -4.3179135,8.275752
- parent: 179
- type: Transform
-- proto: PowerCellMedium
- entities:
- - uid: 186
- components:
- - pos: -2.67511,-10.351
- parent: 179
- type: Transform
- - uid: 187
- components:
- - pos: -2.55011,-10.6635
- parent: 179
- type: Transform
- - uid: 360
- components:
- - pos: -3.7970803,8.275752
- parent: 179
- type: Transform
-- proto: PowerCellRecharger
- entities:
- - uid: 709
- components:
- - pos: -1.5,-3.5
- parent: 179
- type: Transform
-- proto: PowerCellSmall
- entities:
- - uid: 705
- components:
- - pos: -3.3182633,8.234056
- parent: 179
- type: Transform
-- proto: Poweredlight
- entities:
- - uid: 93
- components:
- - rot: 3.141592653589793 rad
- pos: 31.5,-5.5
- parent: 179
- type: Transform
- - powerLoad: 0
- type: ApcPowerReceiver
- - uid: 536
- components:
- - rot: -1.5707963267948966 rad
- pos: -11.5,-0.5
- parent: 179
- type: Transform
- - powerLoad: 0
- type: ApcPowerReceiver
- - uid: 660
- components:
- - rot: -1.5707963267948966 rad
- pos: 29.5,1.5
- parent: 179
- type: Transform
- - powerLoad: 0
- type: ApcPowerReceiver
- - uid: 661
- components:
- - rot: -1.5707963267948966 rad
- pos: 27.5,7.5
- parent: 179
- type: Transform
- - powerLoad: 0
- type: ApcPowerReceiver
- - uid: 663
- components:
- - pos: 22.5,2.5
- parent: 179
- type: Transform
- - powerLoad: 0
- type: ApcPowerReceiver
- - uid: 666
- components:
- - rot: 1.5707963267948966 rad
- pos: 2.5,23.5
- parent: 179
- type: Transform
- - powerLoad: 0
- type: ApcPowerReceiver
- - uid: 670
- components:
- - rot: -1.5707963267948966 rad
- pos: 13.5,18.5
- parent: 179
- type: Transform
- - powerLoad: 0
- type: ApcPowerReceiver
- - uid: 673
- components:
- - rot: -1.5707963267948966 rad
- pos: -11.5,-5.5
- parent: 179
- type: Transform
- - powerLoad: 0
- type: ApcPowerReceiver
- - uid: 674
- components:
- - rot: 1.5707963267948966 rad
- pos: -15.5,-5.5
- parent: 179
- type: Transform
- - powerLoad: 0
- type: ApcPowerReceiver
- - uid: 675
- components:
- - rot: 1.5707963267948966 rad
- pos: -15.5,-0.5
- parent: 179
- type: Transform
- - powerLoad: 0
- type: ApcPowerReceiver
- - uid: 676
- components:
- - rot: 1.5707963267948966 rad
- pos: -6.5,-10.5
- parent: 179
- type: Transform
- - powerLoad: 0
- type: ApcPowerReceiver
- - uid: 678
- components:
- - rot: -1.5707963267948966 rad
- pos: 7.5,-1.5
- parent: 179
- type: Transform
- - powerLoad: 0
- type: ApcPowerReceiver
- - uid: 680
- components:
- - rot: 3.141592653589793 rad
- pos: 16.5,-5.5
- parent: 179
- type: Transform
- - powerLoad: 0
- type: ApcPowerReceiver
- - uid: 681
- components:
- - rot: 3.141592653589793 rad
- pos: 23.5,-5.5
- parent: 179
- type: Transform
- - powerLoad: 0
- type: ApcPowerReceiver
- - uid: 682
- components:
- - pos: 13.5,2.5
- parent: 179
- type: Transform
- - powerLoad: 0
- type: ApcPowerReceiver
- - uid: 683
- components:
- - rot: 3.141592653589793 rad
- pos: 17.5,4.5
- parent: 179
- type: Transform
- - powerLoad: 0
- type: ApcPowerReceiver
- - uid: 1075
- components:
- - pos: 16.5,27.5
- parent: 179
- type: Transform
- - enabled: False
- type: AmbientSound
- - uid: 1076
- components:
- - rot: 1.5707963267948966 rad
- pos: 15.5,22.5
- parent: 179
- type: Transform
- - enabled: False
- type: AmbientSound
-- proto: PoweredSmallLight
- entities:
- - uid: 163
- components:
- - rot: -1.5707963267948966 rad
- pos: 6.5,26.5
- parent: 179
- type: Transform
- - powerLoad: 0
- type: ApcPowerReceiver
- - uid: 166
- components:
- - rot: 1.5707963267948966 rad
- pos: 11.5,24.5
- parent: 179
- type: Transform
- - powerLoad: 0
- type: ApcPowerReceiver
- - uid: 167
- components:
- - rot: -1.5707963267948966 rad
- pos: 17.5,17.5
- parent: 179
- type: Transform
- - powerLoad: 0
- type: ApcPowerReceiver
- - uid: 388
- components:
- - pos: 0.5,-5.5
- parent: 179
- type: Transform
- - powerLoad: 0
- type: ApcPowerReceiver
- - uid: 417
- components:
- - pos: -4.5,-5.5
- parent: 179
- type: Transform
- - powerLoad: 0
- type: ApcPowerReceiver
- - uid: 483
- components:
- - rot: -1.5707963267948966 rad
- pos: 4.5,-9.5
- parent: 179
- type: Transform
- - powerLoad: 0
- type: ApcPowerReceiver
- - uid: 534
- components:
- - rot: 1.5707963267948966 rad
- pos: -9.5,-5.5
- parent: 179
- type: Transform
- - powerLoad: 0
- type: ApcPowerReceiver
-- proto: Protolathe
- entities:
- - uid: 12
- components:
- - pos: 13.5,21.5
- parent: 179
- type: Transform
- - uid: 384
- components:
- - pos: -6.5,6.5
- parent: 179
- type: Transform
-- proto: QuadraticCapacitorStockPart
- entities:
- - uid: 704
- components:
- - pos: -4.8741612,8.817795
- parent: 179
- type: Transform
-- proto: Railing
- entities:
- - uid: 665
- components:
- - rot: 3.141592653589793 rad
- pos: -15.5,9.5
- parent: 179
- type: Transform
- - uid: 927
- components:
- - rot: -1.5707963267948966 rad
- pos: -14.5,10.5
- parent: 179
- type: Transform
- - uid: 928
- components:
- - rot: -1.5707963267948966 rad
- pos: -14.5,11.5
- parent: 179
- type: Transform
- - uid: 929
- components:
- - rot: -1.5707963267948966 rad
- pos: -14.5,12.5
- parent: 179
- type: Transform
- - uid: 930
- components:
- - rot: -1.5707963267948966 rad
- pos: -14.5,13.5
- parent: 179
- type: Transform
- - uid: 931
- components:
- - rot: -1.5707963267948966 rad
- pos: -14.5,14.5
- parent: 179
- type: Transform
- - uid: 932
- components:
- - rot: -1.5707963267948966 rad
- pos: -14.5,15.5
- parent: 179
- type: Transform
- - uid: 933
- components:
- - rot: -1.5707963267948966 rad
- pos: -14.5,16.5
- parent: 179
- type: Transform
- - uid: 934
- components:
- - rot: 3.141592653589793 rad
- pos: -13.5,17.5
- parent: 179
- type: Transform
- - uid: 935
- components:
- - rot: 3.141592653589793 rad
- pos: -12.5,17.5
- parent: 179
- type: Transform
- - uid: 936
- components:
- - rot: 3.141592653589793 rad
- pos: -11.5,17.5
- parent: 179
- type: Transform
- - uid: 937
- components:
- - rot: 3.141592653589793 rad
- pos: -10.5,17.5
- parent: 179
- type: Transform
- - uid: 938
- components:
- - rot: 3.141592653589793 rad
- pos: -9.5,17.5
- parent: 179
- type: Transform
- - uid: 939
- components:
- - rot: 3.141592653589793 rad
- pos: -8.5,17.5
- parent: 179
- type: Transform
- - uid: 940
- components:
- - rot: 3.141592653589793 rad
- pos: -7.5,17.5
- parent: 179
- type: Transform
- - uid: 941
- components:
- - rot: 3.141592653589793 rad
- pos: -6.5,17.5
- parent: 179
- type: Transform
- - uid: 942
- components:
- - rot: 3.141592653589793 rad
- pos: -5.5,17.5
- parent: 179
- type: Transform
- - uid: 943
- components:
- - rot: 3.141592653589793 rad
- pos: -4.5,17.5
- parent: 179
- type: Transform
- - uid: 944
- components:
- - rot: 3.141592653589793 rad
- pos: -3.5,17.5
- parent: 179
- type: Transform
- - uid: 945
- components:
- - rot: 3.141592653589793 rad
- pos: -2.5,17.5
- parent: 179
- type: Transform
- - uid: 946
- components:
- - rot: 3.141592653589793 rad
- pos: -1.5,17.5
- parent: 179
- type: Transform
- - uid: 947
- components:
- - rot: 3.141592653589793 rad
- pos: -0.5,17.5
- parent: 179
- type: Transform
- - uid: 948
- components:
- - rot: 3.141592653589793 rad
- pos: 0.5,17.5
- parent: 179
- type: Transform
-- proto: RailingCornerSmall
- entities:
- - uid: 919
- components:
- - pos: -14.5,9.5
- parent: 179
- type: Transform
-- proto: ReinforcedWindow
- entities:
- - uid: 1084
- components:
- - rot: 1.5707963267948966 rad
- pos: 14.5,23.5
- parent: 179
- type: Transform
- - uid: 1093
- components:
- - pos: 8.5,17.5
- parent: 179
- type: Transform
- - uid: 1094
- components:
- - pos: 9.5,17.5
- parent: 179
- type: Transform
- - uid: 1095
- components:
- - pos: 10.5,17.5
- parent: 179
- type: Transform
- - uid: 1096
- components:
- - pos: 10.5,16.5
- parent: 179
- type: Transform
-- proto: ResearchAndDevelopmentServer
- entities:
- - uid: 17
- components:
- - pos: 8.5,18.5
- parent: 179
- type: Transform
-- proto: ResearchDiskDebug
- entities:
- - uid: 54
- components:
- - pos: 9.532393,18.446417
- parent: 179
- type: Transform
-- proto: RubberStampCaptain
- entities:
- - uid: 982
- components:
- - pos: 12.800895,12.664745
- parent: 179
- type: Transform
-- proto: RubberStampCentcom
- entities:
- - uid: 980
- components:
- - pos: 12.186007,12.716865
- parent: 179
- type: Transform
-- proto: RubberStampSyndicate
- entities:
- - uid: 981
- components:
- - pos: 12.436131,12.550082
- parent: 179
- type: Transform
-- proto: Screwdriver
- entities:
- - uid: 431
- components:
- - pos: -1.235331,4.739151
- parent: 179
- type: Transform
-- proto: SeedExtractor
- entities:
- - uid: 65
- components:
- - pos: 2.5,17.5
- parent: 179
- type: Transform
-- proto: SheetGlass
- entities:
- - uid: 354
- components:
- - pos: 8.57603,21.566113
- parent: 179
- type: Transform
- - uid: 479
- components:
- - pos: -5.13758,7.5586076
- parent: 179
- type: Transform
- - uid: 529
- components:
- - pos: -15.5,-3.5
- parent: 179
- type: Transform
- - uid: 564
- components:
- - pos: -15.5,-1.5
- parent: 179
- type: Transform
- - uid: 565
- components:
- - pos: -15.5,-1.5
- parent: 179
- type: Transform
- - uid: 566
- components:
- - pos: -15.5,-3.5
- parent: 179
- type: Transform
-- proto: SheetGlass1
- entities:
- - uid: 960
- components:
- - pos: -3.981244,10.799851
- parent: 179
- type: Transform
-- proto: SheetPGlass
- entities:
- - uid: 416
- components:
- - pos: -0.5,8.5
- parent: 179
- type: Transform
-- proto: SheetPlasma
- entities:
- - uid: 1077
- components:
- - pos: 17.485096,24.503635
- parent: 179
- type: Transform
-- proto: SheetPlasteel
- entities:
- - uid: 478
- components:
- - pos: -4.0129576,7.6107273
- parent: 179
- type: Transform
-- proto: SheetPlastic
- entities:
- - uid: 79
- components:
- - pos: 8.951309,21.511908
- parent: 179
- type: Transform
- - uid: 181
- components:
- - pos: -4.54383,7.579455
- parent: 179
- type: Transform
-- proto: SheetRPGlass
- entities:
- - uid: 182
- components:
- - pos: -0.5,7.5
- parent: 179
- type: Transform
-- proto: SheetSteel
- entities:
- - uid: 205
- components:
- - pos: -15.5,-5.5
- parent: 179
- type: Transform
- - uid: 305
- components:
- - pos: 9.435405,21.503613
- parent: 179
- type: Transform
- - uid: 382
- components:
- - pos: -15.5,-5.5
- parent: 179
- type: Transform
- - uid: 473
- components:
- - pos: -5.6834707,7.529523
- parent: 179
- type: Transform
- - uid: 543
- components:
- - pos: -15.5,-4.5
- parent: 179
- type: Transform
- - uid: 544
- components:
- - pos: -15.5,-4.5
- parent: 179
- type: Transform
-- proto: SignalButton
- entities:
- - uid: 1013
- components:
- - pos: -4.5,-14.5
- parent: 179
- type: Transform
- - linkedPorts:
- 202:
- - Pressed: Toggle
- 984:
- - Pressed: Toggle
- type: DeviceLinkSource
- - uid: 1014
- components:
- - pos: 3.5,-14.5
- parent: 179
- type: Transform
- - linkedPorts:
- 697:
- - Pressed: Toggle
- 698:
- - Pressed: Toggle
- type: DeviceLinkSource
-- proto: SignCargoDock
- entities:
- - uid: 1046
- components:
- - pos: 4.5,-4.5
- parent: 179
- type: Transform
-- proto: SmallLight
- entities:
- - uid: 1048
- components:
- - rot: 1.5707963267948966 rad
- pos: -2.5,-15.5
- parent: 179
- type: Transform
- - uid: 1049
- components:
- - rot: -1.5707963267948966 rad
- pos: 1.5,-15.5
- parent: 179
- type: Transform
-- proto: SMESBasic
- entities:
- - uid: 1017
- components:
- - pos: -6.5,-12.5
- parent: 179
- type: Transform
-- proto: soda_dispenser
- entities:
- - uid: 751
- components:
- - pos: 8.5,12.5
- parent: 179
- type: Transform
-- proto: SpawnMobHuman
- entities:
- - uid: 138
- components:
- - pos: -6.5,-0.5
- parent: 179
- type: Transform
- - uid: 139
- components:
- - pos: -6.5,0.5
- parent: 179
- type: Transform
- - uid: 140
- components:
- - pos: 3.5,7.5
- parent: 179
- type: Transform
-- proto: SpawnMobMouse
- entities:
- - uid: 1050
- components:
- - pos: 3.5,8.5
- parent: 179
- type: Transform
-- proto: SpawnPointCaptain
- entities:
- - uid: 954
- components:
- - pos: -4.5,4.5
- parent: 179
- type: Transform
-- proto: SpawnPointLatejoin
- entities:
- - uid: 961
- components:
- - pos: -3.5,3.5
- parent: 179
- type: Transform
-- proto: SpawnPointObserver
- entities:
- - uid: 679
- components:
- - pos: -3.5,4.5
- parent: 179
- type: Transform
-- proto: SpawnVehicleJanicart
- entities:
- - uid: 904
- components:
- - pos: 5.5,16.5
- parent: 179
- type: Transform
-- proto: Spear
- entities:
- - uid: 185
- components:
- - pos: -3.4579864,-1.9811735
- parent: 179
- type: Transform
-- proto: SprayBottleWater
- entities:
- - uid: 903
- components:
- - pos: 6.985283,16.424004
- parent: 179
- type: Transform
-- proto: Stimpack
- entities:
- - uid: 462
- components:
- - pos: 3.6877818,5.312015
- parent: 179
- type: Transform
-- proto: Stool
- entities:
- - uid: 383
- components:
- - pos: -1.5,-9.5
- parent: 179
- type: Transform
- - uid: 387
- components:
- - rot: 3.141592653589793 rad
- pos: -2.5,-6.5
- parent: 179
- type: Transform
-- proto: Stunbaton
- entities:
- - uid: 434
- components:
- - pos: -3.1734612,-2.6066077
- parent: 179
- type: Transform
-- proto: SubstationBasic
- entities:
- - uid: 1018
- components:
- - pos: -6.5,-13.5
- parent: 179
- type: Transform
-- proto: SuperCapacitorStockPart
- entities:
- - uid: 296
- components:
- - pos: -4.3012447,8.817795
- parent: 179
- type: Transform
-- proto: Syringe
- entities:
- - uid: 460
- components:
- - pos: 3.2502818,4.5823417
- parent: 179
- type: Transform
- - uid: 738
- components:
- - pos: 5.767191,9.787079
- parent: 179
- type: Transform
-- proto: Table
- entities:
- - uid: 63
- components:
- - pos: 9.5,21.5
- parent: 179
- type: Transform
- - uid: 64
- components:
- - pos: 10.5,21.5
- parent: 179
- type: Transform
- - uid: 67
- components:
- - pos: 8.5,21.5
- parent: 179
- type: Transform
- - uid: 92
- components:
- - pos: 11.5,21.5
- parent: 179
- type: Transform
- - uid: 143
- components:
- - pos: 33.5,-3.5
- parent: 179
- type: Transform
- - uid: 144
- components:
- - pos: 33.5,-2.5
- parent: 179
- type: Transform
- - uid: 145
- components:
- - pos: 33.5,-1.5
- parent: 179
- type: Transform
- - uid: 161
- components:
- - pos: 24.5,-5.5
- parent: 179
- type: Transform
- - uid: 162
- components:
- - pos: 23.5,-5.5
- parent: 179
- type: Transform
- - uid: 172
- components:
- - rot: -1.5707963267948966 rad
- pos: 4.5,9.5
- parent: 179
- type: Transform
- - uid: 180
- components:
- - pos: -4.5,10.5
- parent: 179
- type: Transform
- - uid: 262
- components:
- - pos: -3.5,-5.5
- parent: 179
- type: Transform
- - uid: 263
- components:
- - pos: -2.5,-5.5
- parent: 179
- type: Transform
- - uid: 264
- components:
- - pos: -1.5,-5.5
- parent: 179
- type: Transform
- - uid: 265
- components:
- - pos: -0.5,-5.5
- parent: 179
- type: Transform
- - uid: 267
- components:
- - pos: 23.5,5.5
- parent: 179
- type: Transform
- - uid: 268
- components:
- - pos: 23.5,6.5
- parent: 179
- type: Transform
- - uid: 298
- components:
- - rot: -1.5707963267948966 rad
- pos: 6.5,9.5
- parent: 179
- type: Transform
- - uid: 299
- components:
- - rot: -1.5707963267948966 rad
- pos: 5.5,9.5
- parent: 179
- type: Transform
- - uid: 300
- components:
- - rot: -1.5707963267948966 rad
- pos: 8.5,9.5
- parent: 179
- type: Transform
- - uid: 312
- components:
- - pos: -3.5,-10.5
- parent: 179
- type: Transform
- - uid: 313
- components:
- - pos: -2.5,-10.5
- parent: 179
- type: Transform
- - uid: 314
- components:
- - pos: -1.5,-10.5
- parent: 179
- type: Transform
- - uid: 315
- components:
- - pos: -0.5,-10.5
- parent: 179
- type: Transform
- - uid: 355
- components:
- - pos: -6.5,7.5
- parent: 179
- type: Transform
- - uid: 356
- components:
- - pos: -5.5,7.5
- parent: 179
- type: Transform
- - uid: 357
- components:
- - pos: -4.5,7.5
- parent: 179
- type: Transform
- - uid: 358
- components:
- - pos: -3.5,7.5
- parent: 179
- type: Transform
- - uid: 361
- components:
- - pos: -0.5,7.5
- parent: 179
- type: Transform
- - uid: 362
- components:
- - pos: 0.5,7.5
- parent: 179
- type: Transform
- - uid: 363
- components:
- - pos: 1.5,7.5
- parent: 179
- type: Transform
- - uid: 366
- components:
- - pos: -2.5,4.5
- parent: 179
- type: Transform
- - uid: 367
- components:
- - pos: -1.5,4.5
- parent: 179
- type: Transform
- - uid: 368
- components:
- - pos: -0.5,4.5
- parent: 179
- type: Transform
- - uid: 371
- components:
- - pos: 1.5,4.5
- parent: 179
- type: Transform
- - uid: 385
- components:
- - pos: -3.5,-2.5
- parent: 179
- type: Transform
- - uid: 386
- components:
- - pos: -3.5,-1.5
- parent: 179
- type: Transform
- - uid: 440
- components:
- - pos: 0.5,4.5
- parent: 179
- type: Transform
- - uid: 445
- components:
- - pos: -3.5,-0.5
- parent: 179
- type: Transform
- - uid: 448
- components:
- - pos: 3.5,5.5
- parent: 179
- type: Transform
- - uid: 465
- components:
- - pos: 1.5,8.5
- parent: 179
- type: Transform
- - uid: 466
- components:
- - pos: 0.5,8.5
- parent: 179
- type: Transform
- - uid: 467
- components:
- - pos: -3.5,8.5
- parent: 179
- type: Transform
- - uid: 468
- components:
- - pos: -0.5,8.5
- parent: 179
- type: Transform
- - uid: 470
- components:
- - pos: -6.5,8.5
- parent: 179
- type: Transform
- - uid: 471
- components:
- - pos: -5.5,8.5
- parent: 179
- type: Transform
- - uid: 472
- components:
- - pos: -4.5,8.5
- parent: 179
- type: Transform
- - uid: 515
- components:
- - pos: -15.5,-5.5
- parent: 179
- type: Transform
- - uid: 516
- components:
- - pos: -15.5,-1.5
- parent: 179
- type: Transform
- - uid: 520
- components:
- - pos: -15.5,-0.5
- parent: 179
- type: Transform
- - uid: 559
- components:
- - pos: -15.5,-4.5
- parent: 179
- type: Transform
- - uid: 560
- components:
- - pos: -15.5,-3.5
- parent: 179
- type: Transform
- - uid: 568
- components:
- - pos: 18.5,4.5
- parent: 179
- type: Transform
- - uid: 569
- components:
- - pos: 21.5,6.5
- parent: 179
- type: Transform
- - uid: 570
- components:
- - pos: 20.5,6.5
- parent: 179
- type: Transform
- - uid: 571
- components:
- - pos: 18.5,6.5
- parent: 179
- type: Transform
- - uid: 572
- components:
- - pos: 19.5,6.5
- parent: 179
- type: Transform
- - uid: 573
- components:
- - pos: 18.5,5.5
- parent: 179
- type: Transform
- - uid: 574
- components:
- - pos: 22.5,8.5
- parent: 179
- type: Transform
- - uid: 575
- components:
- - pos: 24.5,4.5
- parent: 179
- type: Transform
- - uid: 584
- components:
- - pos: 23.5,7.5
- parent: 179
- type: Transform
- - uid: 586
- components:
- - pos: 25.5,10.5
- parent: 179
- type: Transform
- - uid: 587
- components:
- - pos: 23.5,10.5
- parent: 179
- type: Transform
- - uid: 588
- components:
- - pos: 24.5,10.5
- parent: 179
- type: Transform
- - uid: 589
- components:
- - pos: 26.5,10.5
- parent: 179
- type: Transform
- - uid: 590
- components:
- - pos: 27.5,10.5
- parent: 179
- type: Transform
- - uid: 594
- components:
- - pos: 13.5,2.5
- parent: 179
- type: Transform
- - uid: 595
- components:
- - pos: 13.5,0.5
- parent: 179
- type: Transform
- - uid: 596
- components:
- - pos: 13.5,1.5
- parent: 179
- type: Transform
- - uid: 684
- components:
- - pos: -3.5,0.5
- parent: 179
- type: Transform
- - uid: 685
- components:
- - pos: 3.5,4.5
- parent: 179
- type: Transform
- - uid: 686
- components:
- - pos: 3.5,6.5
- parent: 179
- type: Transform
- - uid: 706
- components:
- - pos: -1.5,-3.5
- parent: 179
- type: Transform
- - uid: 707
- components:
- - pos: -0.5,-3.5
- parent: 179
- type: Transform
- - uid: 710
- components:
- - pos: 0.5,-3.5
- parent: 179
- type: Transform
-- proto: TableGlass
- entities:
- - uid: 964
- components:
- - pos: 9.5,12.5
- parent: 179
- type: Transform
- - uid: 965
- components:
- - pos: 11.5,12.5
- parent: 179
- type: Transform
- - uid: 966
- components:
- - pos: 13.5,12.5
- parent: 179
- type: Transform
- - uid: 975
- components:
- - pos: 10.5,12.5
- parent: 179
- type: Transform
- - uid: 976
- components:
- - pos: 12.5,12.5
- parent: 179
- type: Transform
-- proto: TargetHuman
- entities:
- - uid: 159
- components:
- - pos: -6.5,-1.5
- parent: 179
- type: Transform
-- proto: TelecomServerFilled
- entities:
- - uid: 963
- components:
- - pos: -3.5,10.5
- parent: 179
- type: Transform
-- proto: TimerTrigger
- entities:
- - uid: 482
- components:
- - pos: 6.413024,9.39097
- parent: 179
- type: Transform
-- proto: ToolboxElectricalFilled
- entities:
- - uid: 365
- components:
- - pos: 0.4993378,3.429311
- parent: 179
- type: Transform
- - uid: 419
- components:
- - pos: -0.8099712,-5.21454
- parent: 179
- type: Transform
- - uid: 420
- components:
- - pos: -0.5597038,-5.679647
- parent: 179
- type: Transform
-- proto: ToolboxMechanicalFilled
- entities:
- - uid: 364
- components:
- - pos: 1.452203,3.4605832
- parent: 179
- type: Transform
-- proto: ToyRubberDuck
- entities:
- - uid: 723
- components:
- - pos: -1.6653601,11.616664
- parent: 179
- type: Transform
-- proto: trayScanner
- entities:
- - uid: 758
- components:
- - pos: 1.354346,4.548879
- parent: 179
- type: Transform
-- proto: TwoWayLever
- entities:
- - uid: 699
- components:
- - pos: -3.5,-13.5
- parent: 179
- type: Transform
- - linkedPorts:
- 990:
- - Left: Forward
- - Right: Reverse
- - Middle: Off
- 195:
- - Left: Forward
- - Right: Reverse
- - Middle: Off
- 991:
- - Left: Forward
- - Right: Reverse
- - Middle: Off
- type: DeviceLinkSource
- - uid: 722
- components:
- - pos: 1.5,11.5
- parent: 179
- type: Transform
- - linkedPorts:
- 721:
- - Left: Forward
- - Right: Reverse
- - Middle: Off
- 720:
- - Left: Forward
- - Right: Reverse
- - Middle: Off
- 716:
- - Left: Forward
- - Right: Reverse
- - Middle: Off
- type: DeviceLinkSource
- - uid: 983
- components:
- - pos: 2.5,-13.5
- parent: 179
- type: Transform
- - linkedPorts:
- 985:
- - Left: Forward
- - Right: Reverse
- - Middle: Off
- 259:
- - Left: Forward
- - Right: Reverse
- - Middle: Off
- 989:
- - Left: Forward
- - Right: Reverse
- - Middle: Off
- 463:
- - Left: Forward
- - Right: Reverse
- - Middle: Off
- type: DeviceLinkSource
-- proto: UnfinishedMachineFrame
- entities:
- - uid: 522
- components:
- - pos: -6.5,10.5
- parent: 179
- type: Transform
-- proto: UniformPrinter
- entities:
- - uid: 443
- components:
- - pos: -7.5,4.5
- parent: 179
- type: Transform
-- proto: VehicleKeyJanicart
- entities:
- - uid: 14
- components:
- - pos: 6.5,16.5
- parent: 179
- type: Transform
-- proto: VendingMachineCigs
- entities:
- - uid: 870
- components:
- - flags: SessionSpecific
- type: MetaData
- - pos: -14.5,4.5
- parent: 179
- type: Transform
-- proto: VendingMachineEngivend
- entities:
- - uid: 441
- components:
- - flags: SessionSpecific
- type: MetaData
- - pos: -11.5,4.5
- parent: 179
- type: Transform
- - uid: 523
- components:
- - flags: SessionSpecific
- type: MetaData
- - pos: -11.5,-1.5
- parent: 179
- type: Transform
-- proto: VendingMachineMedical
- entities:
- - uid: 156
- components:
- - flags: SessionSpecific
- type: MetaData
- - pos: 25.5,-5.5
- parent: 179
- type: Transform
- - uid: 157
- components:
- - flags: SessionSpecific
- type: MetaData
- - pos: 27.5,-5.5
- parent: 179
- type: Transform
- - uid: 158
- components:
- - flags: SessionSpecific
- type: MetaData
- - pos: 29.5,3.5
- parent: 179
- type: Transform
- - uid: 521
- components:
- - flags: SessionSpecific
- type: MetaData
- - pos: -12.5,4.5
- parent: 179
- type: Transform
-- proto: VendingMachineSalvage
- entities:
- - uid: 485
- components:
- - flags: SessionSpecific
- type: MetaData
- - pos: -15.5,4.5
- parent: 179
- type: Transform
-- proto: VendingMachineSec
- entities:
- - uid: 874
- components:
- - flags: SessionSpecific
- type: MetaData
- - pos: -13.5,4.5
- parent: 179
- type: Transform
-- proto: VendingMachineTankDispenserEVA
- entities:
- - uid: 875
- components:
- - flags: SessionSpecific
- type: MetaData
- - pos: 7.5,0.5
- parent: 179
- type: Transform
-- proto: VendingMachineYouTool
- entities:
- - uid: 350
- components:
- - flags: SessionSpecific
- type: MetaData
- - pos: -11.5,-0.5
- parent: 179
- type: Transform
-- proto: WallSolid
- entities:
- - uid: 3
- components:
- - pos: 1.5,18.5
- parent: 179
- type: Transform
- - uid: 4
- components:
- - pos: 11.5,26.5
- parent: 179
- type: Transform
- - uid: 5
- components:
- - pos: 18.5,24.5
- parent: 179
- type: Transform
- - uid: 6
- components:
- - pos: 20.5,15.5
- parent: 179
- type: Transform
- - uid: 8
- components:
- - pos: 14.5,19.5
- parent: 179
- type: Transform
- - uid: 9
- components:
- - pos: 1.5,19.5
- parent: 179
- type: Transform
- - uid: 10
- components:
- - pos: 18.5,26.5
- parent: 179
- type: Transform
- - uid: 11
- components:
- - pos: 13.5,26.5
- parent: 179
- type: Transform
- - uid: 13
- components:
- - pos: 25.5,15.5
- parent: 179
- type: Transform
- - uid: 18
- components:
- - pos: 4.5,26.5
- parent: 179
- type: Transform
- - uid: 19
- components:
- - pos: 18.5,25.5
- parent: 179
- type: Transform
- - uid: 21
- components:
- - pos: 10.5,26.5
- parent: 179
- type: Transform
- - uid: 22
- components:
- - pos: 26.5,15.5
- parent: 179
- type: Transform
- - uid: 25
- components:
- - pos: 1.5,21.5
- parent: 179
- type: Transform
- - uid: 27
- components:
- - pos: 8.5,-0.5
- parent: 179
- type: Transform
- - uid: 28
- components:
- - pos: 18.5,18.5
- parent: 179
- type: Transform
- - uid: 29
- components:
- - pos: 18.5,21.5
- parent: 179
- type: Transform
- - uid: 30
- components:
- - pos: 1.5,22.5
- parent: 179
- type: Transform
- - uid: 31
- components:
- - pos: 1.5,20.5
- parent: 179
- type: Transform
- - uid: 32
- components:
- - pos: 18.5,19.5
- parent: 179
- type: Transform
- - uid: 33
- components:
- - pos: 23.5,15.5
- parent: 179
- type: Transform
- - uid: 34
- components:
- - pos: 12.5,22.5
- parent: 179
- type: Transform
- - uid: 35
- components:
- - pos: 27.5,15.5
- parent: 179
- type: Transform
- - uid: 36
- components:
- - pos: 7.5,22.5
- parent: 179
- type: Transform
- - uid: 37
- components:
- - pos: 14.5,22.5
- parent: 179
- type: Transform
- - uid: 38
- components:
- - pos: 10.5,23.5
- parent: 179
- type: Transform
- - uid: 39
- components:
- - pos: 10.5,24.5
- parent: 179
- type: Transform
- - uid: 40
- components:
- - pos: 8.5,26.5
- parent: 179
- type: Transform
- - uid: 41
- components:
- - pos: 10.5,25.5
- parent: 179
- type: Transform
- - uid: 42
- components:
- - pos: 18.5,22.5
- parent: 179
- type: Transform
- - uid: 43
- components:
- - pos: 14.5,27.5
- parent: 179
- type: Transform
- - uid: 44
- components:
- - pos: 14.5,26.5
- parent: 179
- type: Transform
- - uid: 45
- components:
- - pos: 1.5,16.5
- parent: 179
- type: Transform
- - uid: 46
- components:
- - pos: 18.5,27.5
- parent: 179
- type: Transform
- - uid: 49
- components:
- - pos: 7.5,28.5
- parent: 179
- type: Transform
- - uid: 50
- components:
- - pos: 13.5,22.5
- parent: 179
- type: Transform
- - uid: 51
- components:
- - pos: 12.5,26.5
- parent: 179
- type: Transform
- - uid: 52
- components:
- - pos: 1.5,15.5
- parent: 179
- type: Transform
- - uid: 53
- components:
- - pos: 9.5,26.5
- parent: 179
- type: Transform
- - uid: 55
- components:
- - pos: 24.5,15.5
- parent: 179
- type: Transform
- - uid: 56
- components:
- - pos: 14.5,25.5
- parent: 179
- type: Transform
- - uid: 57
- components:
- - pos: 14.5,21.5
- parent: 179
- type: Transform
- - uid: 60
- components:
- - pos: 7.5,21.5
- parent: 179
- type: Transform
- - uid: 61
- components:
- - pos: 18.5,20.5
- parent: 179
- type: Transform
- - uid: 62
- components:
- - pos: 18.5,23.5
- parent: 179
- type: Transform
- - uid: 66
- components:
- - pos: 18.5,17.5
- parent: 179
- type: Transform
- - uid: 68
- components:
- - pos: 18.5,28.5
- parent: 179
- type: Transform
- - uid: 69
- components:
- - pos: 28.5,15.5
- parent: 179
- type: Transform
- - uid: 71
- components:
- - pos: 11.5,22.5
- parent: 179
- type: Transform
- - uid: 72
- components:
- - pos: 1.5,17.5
- parent: 179
- type: Transform
- - uid: 73
- components:
- - pos: 14.5,28.5
- parent: 179
- type: Transform
- - uid: 74
- components:
- - pos: 10.5,22.5
- parent: 179
- type: Transform
- - uid: 75
- components:
- - pos: 9.5,22.5
- parent: 179
- type: Transform
- - uid: 76
- components:
- - pos: 8.5,-1.5
- parent: 179
- type: Transform
- - uid: 77
- components:
- - pos: 8.5,-2.5
- parent: 179
- type: Transform
- - uid: 78
- components:
- - pos: 21.5,15.5
- parent: 179
- type: Transform
- - uid: 80
- components:
- - pos: 18.5,16.5
- parent: 179
- type: Transform
- - uid: 81
- components:
- - pos: 18.5,15.5
- parent: 179
- type: Transform
- - uid: 82
- components:
- - pos: 14.5,18.5
- parent: 179
- type: Transform
- - uid: 83
- components:
- - pos: 4.5,28.5
- parent: 179
- type: Transform
- - uid: 84
- components:
- - pos: 7.5,26.5
- parent: 179
- type: Transform
- - uid: 85
- components:
- - pos: 1.5,23.5
- parent: 179
- type: Transform
- - uid: 86
- components:
- - pos: 17.5,15.5
- parent: 179
- type: Transform
- - uid: 89
- components:
- - pos: 22.5,15.5
- parent: 179
- type: Transform
- - uid: 95
- components:
- - pos: 8.5,22.5
- parent: 179
- type: Transform
- - uid: 96
- components:
- - pos: 7.5,27.5
- parent: 179
- type: Transform
- - uid: 97
- components:
- - pos: 8.5,-3.5
- parent: 179
- type: Transform
- - uid: 98
- components:
- - pos: 4.5,25.5
- parent: 179
- type: Transform
- - uid: 99
- components:
- - pos: 17.5,18.5
- parent: 179
- type: Transform
- - uid: 100
- components:
- - pos: 19.5,15.5
- parent: 179
- type: Transform
- - uid: 101
- components:
- - pos: 4.5,27.5
- parent: 179
- type: Transform
- - uid: 103
- components:
- - pos: 14.5,17.5
- parent: 179
- type: Transform
- - uid: 104
- components:
- - pos: 14.5,16.5
- parent: 179
- type: Transform
- - uid: 105
- components:
- - pos: 15.5,15.5
- parent: 179
- type: Transform
- - uid: 106
- components:
- - pos: 14.5,15.5
- parent: 179
- type: Transform
- - uid: 107
- components:
- - pos: 13.5,15.5
- parent: 179
- type: Transform
- - uid: 109
- components:
- - pos: 11.5,15.5
- parent: 179
- type: Transform
- - uid: 110
- components:
- - pos: 10.5,15.5
- parent: 179
- type: Transform
- - uid: 112
- components:
- - pos: 7.5,19.5
- parent: 179
- type: Transform
- - uid: 113
- components:
- - pos: 7.5,18.5
- parent: 179
- type: Transform
- - uid: 114
- components:
- - pos: 7.5,17.5
- parent: 179
- type: Transform
- - uid: 117
- components:
- - pos: 5.5,18.5
- parent: 179
- type: Transform
- - uid: 118
- components:
- - pos: 5.5,19.5
- parent: 179
- type: Transform
- - uid: 121
- components:
- - pos: 4.5,19.5
- parent: 179
- type: Transform
- - uid: 122
- components:
- - pos: 4.5,20.5
- parent: 179
- type: Transform
- - uid: 123
- components:
- - pos: 4.5,21.5
- parent: 179
- type: Transform
- - uid: 124
- components:
- - pos: 4.5,22.5
- parent: 179
- type: Transform
- - uid: 125
- components:
- - pos: 4.5,23.5
- parent: 179
- type: Transform
- - uid: 126
- components:
- - pos: 4.5,24.5
- parent: 179
- type: Transform
- - uid: 164
- components:
- - rot: 1.5707963267948966 rad
- pos: 22.5,9.5
- parent: 179
- type: Transform
- - uid: 165
- components:
- - pos: 8.5,2.5
- parent: 179
- type: Transform
- - uid: 169
- components:
- - pos: 8.5,0.5
- parent: 179
- type: Transform
- - uid: 173
- components:
- - pos: 8.5,1.5
- parent: 179
- type: Transform
- - uid: 189
- components:
- - pos: -7.5,0.5
- parent: 179
- type: Transform
- - uid: 190
- components:
- - pos: -7.5,-0.5
- parent: 179
- type: Transform
- - uid: 191
- components:
- - pos: -7.5,-1.5
- parent: 179
- type: Transform
- - uid: 192
- components:
- - pos: -7.5,-2.5
- parent: 179
- type: Transform
- - uid: 193
- components:
- - pos: -7.5,-3.5
- parent: 179
- type: Transform
- - uid: 196
- components:
- - pos: 3.5,-14.5
- parent: 179
- type: Transform
- - uid: 197
- components:
- - pos: 4.5,-14.5
- parent: 179
- type: Transform
- - uid: 198
- components:
- - pos: -7.5,-10.5
- parent: 179
- type: Transform
- - uid: 199
- components:
- - pos: -7.5,-11.5
- parent: 179
- type: Transform
- - uid: 200
- components:
- - pos: -7.5,-12.5
- parent: 179
- type: Transform
- - uid: 201
- components:
- - pos: -7.5,-13.5
- parent: 179
- type: Transform
- - uid: 208
- components:
- - pos: -7.5,-9.5
- parent: 179
- type: Transform
- - uid: 209
- components:
- - pos: -10.5,-7.5
- parent: 179
- type: Transform
- - uid: 211
- components:
- - pos: -10.5,-5.5
- parent: 179
- type: Transform
- - uid: 212
- components:
- - pos: -10.5,-4.5
- parent: 179
- type: Transform
- - uid: 213
- components:
- - pos: -10.5,-3.5
- parent: 179
- type: Transform
- - uid: 214
- components:
- - pos: -10.5,-2.5
- parent: 179
- type: Transform
- - uid: 215
- components:
- - pos: -10.5,-1.5
- parent: 179
- type: Transform
- - uid: 217
- components:
- - pos: 1.5,-4.5
- parent: 179
- type: Transform
- - uid: 218
- components:
- - pos: 0.5,-4.5
- parent: 179
- type: Transform
- - uid: 219
- components:
- - pos: -0.5,-4.5
- parent: 179
- type: Transform
- - uid: 220
- components:
- - pos: -1.5,-4.5
- parent: 179
- type: Transform
- - uid: 221
- components:
- - pos: -2.5,-4.5
- parent: 179
- type: Transform
- - uid: 222
- components:
- - pos: -3.5,-4.5
- parent: 179
- type: Transform
- - uid: 223
- components:
- - pos: -4.5,-4.5
- parent: 179
- type: Transform
- - uid: 224
- components:
- - pos: -5.5,-4.5
- parent: 179
- type: Transform
- - uid: 225
- components:
- - pos: -6.5,-4.5
- parent: 179
- type: Transform
- - uid: 226
- components:
- - pos: 4.5,-4.5
- parent: 179
- type: Transform
- - uid: 227
- components:
- - pos: 5.5,-4.5
- parent: 179
- type: Transform
- - uid: 228
- components:
- - pos: 6.5,-4.5
- parent: 179
- type: Transform
- - uid: 229
- components:
- - pos: -7.5,-14.5
- parent: 179
- type: Transform
- - uid: 231
- components:
- - pos: -6.5,-14.5
- parent: 179
- type: Transform
- - uid: 232
- components:
- - pos: -5.5,-14.5
- parent: 179
- type: Transform
- - uid: 233
- components:
- - pos: -4.5,-14.5
- parent: 179
- type: Transform
- - uid: 234
- components:
- - pos: 6.5,-10.5
- parent: 179
- type: Transform
- - uid: 235
- components:
- - pos: 6.5,-11.5
- parent: 179
- type: Transform
- - uid: 236
- components:
- - pos: 6.5,-12.5
- parent: 179
- type: Transform
- - uid: 237
- components:
- - pos: 6.5,-13.5
- parent: 179
- type: Transform
- - uid: 238
- components:
- - pos: 6.5,-14.5
- parent: 179
- type: Transform
- - uid: 239
- components:
- - pos: 5.5,-14.5
- parent: 179
- type: Transform
- - uid: 240
- components:
- - pos: -7.5,-8.5
- parent: 179
- type: Transform
- - uid: 241
- components:
- - pos: -7.5,-7.5
- parent: 179
- type: Transform
- - uid: 242
- components:
- - pos: -8.5,-8.5
- parent: 179
- type: Transform
- - uid: 243
- components:
- - pos: -9.5,-8.5
- parent: 179
- type: Transform
- - uid: 244
- components:
- - pos: -10.5,-8.5
- parent: 179
- type: Transform
- - uid: 245
- components:
- - pos: -7.5,-5.5
- parent: 179
- type: Transform
- - uid: 248
- components:
- - pos: 5.5,-7.5
- parent: 179
- type: Transform
- - uid: 249
- components:
- - pos: 5.5,-9.5
- parent: 179
- type: Transform
- - uid: 250
- components:
- - pos: 6.5,-9.5
- parent: 179
- type: Transform
- - uid: 251
- components:
- - pos: 6.5,-7.5
- parent: 179
- type: Transform
- - uid: 254
- components:
- - pos: 7.5,-9.5
- parent: 179
- type: Transform
- - uid: 260
- components:
- - pos: 6.5,-6.5
- parent: 179
- type: Transform
- - uid: 261
- components:
- - pos: 6.5,-5.5
- parent: 179
- type: Transform
- - uid: 271
- components:
- - pos: 1.5,14.5
- parent: 179
- type: Transform
- - uid: 272
- components:
- - pos: 1.5,13.5
- parent: 179
- type: Transform
- - uid: 273
- components:
- - pos: 1.5,12.5
- parent: 179
- type: Transform
- - uid: 274
- components:
- - pos: -7.5,11.5
- parent: 179
- type: Transform
- - uid: 275
- components:
- - pos: -6.5,11.5
- parent: 179
- type: Transform
- - uid: 276
- components:
- - pos: -5.5,11.5
- parent: 179
- type: Transform
- - uid: 277
- components:
- - pos: -4.5,11.5
- parent: 179
- type: Transform
- - uid: 278
- components:
- - pos: -3.5,11.5
- parent: 179
- type: Transform
- - uid: 279
- components:
- - pos: -2.5,11.5
- parent: 179
- type: Transform
- - uid: 282
- components:
- - pos: -1.5,12.5
- parent: 179
- type: Transform
- - uid: 283
- components:
- - pos: -0.5,12.5
- parent: 179
- type: Transform
- - uid: 284
- components:
- - pos: 0.5,12.5
- parent: 179
- type: Transform
- - uid: 288
- components:
- - pos: 12.5,8.5
- parent: 179
- type: Transform
- - uid: 289
- components:
- - pos: 11.5,8.5
- parent: 179
- type: Transform
- - uid: 290
- components:
- - pos: 10.5,8.5
- parent: 179
- type: Transform
- - uid: 291
- components:
- - pos: 9.5,8.5
- parent: 179
- type: Transform
- - uid: 292
- components:
- - pos: 8.5,8.5
- parent: 179
- type: Transform
- - uid: 293
- components:
- - pos: 7.5,8.5
- parent: 179
- type: Transform
- - uid: 294
- components:
- - pos: 6.5,8.5
- parent: 179
- type: Transform
- - uid: 295
- components:
- - pos: 5.5,8.5
- parent: 179
- type: Transform
- - uid: 301
- components:
- - pos: 9.5,11.5
- parent: 179
- type: Transform
- - uid: 302
- components:
- - pos: 10.5,11.5
- parent: 179
- type: Transform
- - uid: 303
- components:
- - pos: 11.5,11.5
- parent: 179
- type: Transform
- - uid: 304
- components:
- - pos: 12.5,11.5
- parent: 179
- type: Transform
- - uid: 310
- components:
- - pos: 9.5,9.5
- parent: 179
- type: Transform
- - uid: 316
- components:
- - pos: -7.5,-4.5
- parent: 179
- type: Transform
- - uid: 317
- components:
- - pos: 26.5,14.5
- parent: 179
- type: Transform
- - uid: 320
- components:
- - pos: 24.5,14.5
- parent: 179
- type: Transform
- - uid: 329
- components:
- - pos: -11.5,5.5
- parent: 179
- type: Transform
- - uid: 335
- components:
- - pos: 13.5,11.5
- parent: 179
- type: Transform
- - uid: 336
- components:
- - pos: 14.5,11.5
- parent: 179
- type: Transform
- - uid: 337
- components:
- - pos: 13.5,9.5
- parent: 179
- type: Transform
- - uid: 338
- components:
- - pos: 13.5,8.5
- parent: 179
- type: Transform
- - uid: 339
- components:
- - pos: 13.5,7.5
- parent: 179
- type: Transform
- - uid: 341
- components:
- - pos: 24.5,12.5
- parent: 179
- type: Transform
- - uid: 342
- components:
- - pos: 26.5,12.5
- parent: 179
- type: Transform
- - uid: 352
- components:
- - pos: 13.5,6.5
- parent: 179
- type: Transform
- - uid: 353
- components:
- - pos: 13.5,5.5
- parent: 179
- type: Transform
- - uid: 372
- components:
- - pos: 13.5,4.5
- parent: 179
- type: Transform
- - uid: 373
- components:
- - pos: 25.5,4.5
- parent: 179
- type: Transform
- - uid: 374
- components:
- - pos: 23.5,4.5
- parent: 179
- type: Transform
- - uid: 375
- components:
- - pos: 17.5,3.5
- parent: 179
- type: Transform
- - uid: 376
- components:
- - pos: -10.5,-0.5
- parent: 179
- type: Transform
- - uid: 377
- components:
- - pos: -10.5,0.5
- parent: 179
- type: Transform
- - uid: 379
- components:
- - pos: -8.5,0.5
- parent: 179
- type: Transform
- - uid: 390
- components:
- - pos: 18.5,3.5
- parent: 179
- type: Transform
- - uid: 391
- components:
- - pos: 19.5,3.5
- parent: 179
- type: Transform
- - uid: 392
- components:
- - pos: 21.5,3.5
- parent: 179
- type: Transform
- - uid: 393
- components:
- - pos: 22.5,3.5
- parent: 179
- type: Transform
- - uid: 394
- components:
- - pos: 22.5,4.5
- parent: 179
- type: Transform
- - uid: 395
- components:
- - pos: 22.5,5.5
- parent: 179
- type: Transform
- - uid: 396
- components:
- - pos: 22.5,6.5
- parent: 179
- type: Transform
- - uid: 397
- components:
- - pos: 22.5,7.5
- parent: 179
- type: Transform
- - uid: 399
- components:
- - pos: 22.5,10.5
- parent: 179
- type: Transform
- - uid: 400
- components:
- - pos: 21.5,11.5
- parent: 179
- type: Transform
- - uid: 401
- components:
- - pos: 22.5,11.5
- parent: 179
- type: Transform
- - uid: 418
- components:
- - pos: 7.5,-7.5
- parent: 179
- type: Transform
- - uid: 439
- components:
- - pos: -13.5,5.5
- parent: 179
- type: Transform
- - uid: 449
- components:
- - pos: -16.5,2.5
- parent: 179
- type: Transform
- - uid: 450
- components:
- - pos: -16.5,3.5
- parent: 179
- type: Transform
- - uid: 464
- components:
- - pos: 4.5,8.5
- parent: 179
- type: Transform
- - uid: 474
- components:
- - pos: -7.5,8.5
- parent: 179
- type: Transform
- - uid: 475
- components:
- - pos: -7.5,7.5
- parent: 179
- type: Transform
- - uid: 476
- components:
- - pos: -7.5,6.5
- parent: 179
- type: Transform
- - uid: 477
- components:
- - pos: -7.5,5.5
- parent: 179
- type: Transform
- - uid: 486
- components:
- - pos: -15.5,5.5
- parent: 179
- type: Transform
- - uid: 487
- components:
- - pos: -16.5,4.5
- parent: 179
- type: Transform
- - uid: 488
- components:
- - pos: 5.5,17.5
- parent: 179
- type: Transform
- - uid: 489
- components:
- - pos: -11.5,0.5
- parent: 179
- type: Transform
- - uid: 491
- components:
- - pos: -16.5,5.5
- parent: 179
- type: Transform
- - uid: 492
- components:
- - pos: -14.5,5.5
- parent: 179
- type: Transform
- - uid: 494
- components:
- - rot: -1.5707963267948966 rad
- pos: -11.5,7.5
- parent: 179
- type: Transform
- - uid: 495
- components:
- - pos: -12.5,5.5
- parent: 179
- type: Transform
- - uid: 496
- components:
- - pos: -16.5,1.5
- parent: 179
- type: Transform
- - uid: 497
- components:
- - pos: -16.5,0.5
- parent: 179
- type: Transform
- - uid: 498
- components:
- - pos: -16.5,-0.5
- parent: 179
- type: Transform
- - uid: 499
- components:
- - pos: -16.5,-1.5
- parent: 179
- type: Transform
- - uid: 500
- components:
- - pos: -16.5,-2.5
- parent: 179
- type: Transform
- - uid: 501
- components:
- - pos: -16.5,-3.5
- parent: 179
- type: Transform
- - uid: 502
- components:
- - pos: -16.5,-4.5
- parent: 179
- type: Transform
- - uid: 503
- components:
- - pos: -16.5,-5.5
- parent: 179
- type: Transform
- - uid: 504
- components:
- - pos: -16.5,-6.5
- parent: 179
- type: Transform
- - uid: 505
- components:
- - pos: -16.5,-7.5
- parent: 179
- type: Transform
- - uid: 506
- components:
- - pos: -16.5,-8.5
- parent: 179
- type: Transform
- - uid: 507
- components:
- - pos: -15.5,-8.5
- parent: 179
- type: Transform
- - uid: 508
- components:
- - pos: -14.5,-8.5
- parent: 179
- type: Transform
- - uid: 509
- components:
- - pos: -13.5,-8.5
- parent: 179
- type: Transform
- - uid: 510
- components:
- - pos: -12.5,-8.5
- parent: 179
- type: Transform
- - uid: 511
- components:
- - pos: -11.5,-8.5
- parent: 179
- type: Transform
- - uid: 517
- components:
- - pos: 23.5,11.5
- parent: 179
- type: Transform
- - uid: 518
- components:
- - pos: 24.5,11.5
- parent: 179
- type: Transform
- - uid: 519
- components:
- - pos: 25.5,11.5
- parent: 179
- type: Transform
- - uid: 535
- components:
- - pos: -15.5,0.5
- parent: 179
- type: Transform
- - uid: 539
- components:
- - pos: 26.5,11.5
- parent: 179
- type: Transform
- - uid: 540
- components:
- - pos: 27.5,11.5
- parent: 179
- type: Transform
- - uid: 545
- components:
- - pos: 7.5,-4.5
- parent: 179
- type: Transform
- - uid: 546
- components:
- - pos: 8.5,-4.5
- parent: 179
- type: Transform
- - uid: 547
- components:
- - pos: 28.5,11.5
- parent: 179
- type: Transform
- - uid: 548
- components:
- - pos: 28.5,10.5
- parent: 179
- type: Transform
- - uid: 549
- components:
- - pos: 28.5,9.5
- parent: 179
- type: Transform
- - uid: 550
- components:
- - pos: 28.5,8.5
- parent: 179
- type: Transform
- - uid: 551
- components:
- - pos: 28.5,7.5
- parent: 179
- type: Transform
- - uid: 552
- components:
- - pos: 28.5,6.5
- parent: 179
- type: Transform
- - uid: 553
- components:
- - pos: 28.5,5.5
- parent: 179
- type: Transform
- - uid: 554
- components:
- - pos: 26.5,-2.5
- parent: 179
- type: Transform
- - uid: 555
- components:
- - pos: 26.5,-1.5
- parent: 179
- type: Transform
- - uid: 556
- components:
- - pos: 25.5,-0.5
- parent: 179
- type: Transform
- - uid: 557
- components:
- - pos: 26.5,-0.5
- parent: 179
- type: Transform
- - uid: 558
- components:
- - pos: 27.5,-0.5
- parent: 179
- type: Transform
- - uid: 561
- components:
- - pos: -14.5,0.5
- parent: 179
- type: Transform
- - uid: 585
- components:
- - pos: 9.5,10.5
- parent: 179
- type: Transform
- - uid: 597
- components:
- - pos: 22.5,-0.5
- parent: 179
- type: Transform
- - uid: 598
- components:
- - pos: 17.5,-0.5
- parent: 179
- type: Transform
- - uid: 599
- components:
- - pos: 18.5,-0.5
- parent: 179
- type: Transform
- - uid: 600
- components:
- - pos: 20.5,-0.5
- parent: 179
- type: Transform
- - uid: 601
- components:
- - pos: 21.5,-0.5
- parent: 179
- type: Transform
- - uid: 602
- components:
- - pos: 19.5,-0.5
- parent: 179
- type: Transform
- - uid: 603
- components:
- - pos: 14.5,3.5
- parent: 179
- type: Transform
- - uid: 604
- components:
- - pos: 13.5,3.5
- parent: 179
- type: Transform
- - uid: 605
- components:
- - pos: 12.5,3.5
- parent: 179
- type: Transform
- - uid: 606
- components:
- - pos: 12.5,2.5
- parent: 179
- type: Transform
- - uid: 607
- components:
- - pos: 12.5,1.5
- parent: 179
- type: Transform
- - uid: 608
- components:
- - pos: 12.5,0.5
- parent: 179
- type: Transform
- - uid: 609
- components:
- - pos: 12.5,-0.5
- parent: 179
- type: Transform
- - uid: 610
- components:
- - pos: 13.5,-0.5
- parent: 179
- type: Transform
- - uid: 611
- components:
- - pos: 14.5,-0.5
- parent: 179
- type: Transform
- - uid: 612
- components:
- - pos: 13.5,-1.5
- parent: 179
- type: Transform
- - uid: 613
- components:
- - pos: 13.5,-6.5
- parent: 179
- type: Transform
- - uid: 614
- components:
- - pos: 13.5,-5.5
- parent: 179
- type: Transform
- - uid: 615
- components:
- - pos: 13.5,-4.5
- parent: 179
- type: Transform
- - uid: 616
- components:
- - pos: 13.5,-3.5
- parent: 179
- type: Transform
- - uid: 617
- components:
- - pos: 13.5,-2.5
- parent: 179
- type: Transform
- - uid: 618
- components:
- - pos: 14.5,-6.5
- parent: 179
- type: Transform
- - uid: 619
- components:
- - pos: 15.5,-6.5
- parent: 179
- type: Transform
- - uid: 620
- components:
- - pos: 16.5,-6.5
- parent: 179
- type: Transform
- - uid: 621
- components:
- - pos: 17.5,-6.5
- parent: 179
- type: Transform
- - uid: 622
- components:
- - pos: 18.5,-6.5
- parent: 179
- type: Transform
- - uid: 623
- components:
- - pos: 19.5,-6.5
- parent: 179
- type: Transform
- - uid: 624
- components:
- - pos: 20.5,-6.5
- parent: 179
- type: Transform
- - uid: 625
- components:
- - pos: 21.5,-6.5
- parent: 179
- type: Transform
- - uid: 626
- components:
- - pos: 22.5,-6.5
- parent: 179
- type: Transform
- - uid: 627
- components:
- - pos: 23.5,-6.5
- parent: 179
- type: Transform
- - uid: 628
- components:
- - pos: 24.5,-6.5
- parent: 179
- type: Transform
- - uid: 629
- components:
- - pos: 25.5,-6.5
- parent: 179
- type: Transform
- - uid: 630
- components:
- - pos: 26.5,-6.5
- parent: 179
- type: Transform
- - uid: 631
- components:
- - pos: 26.5,-5.5
- parent: 179
- type: Transform
- - uid: 632
- components:
- - pos: 26.5,-4.5
- parent: 179
- type: Transform
- - uid: 633
- components:
- - pos: 27.5,-6.5
- parent: 179
- type: Transform
- - uid: 634
- components:
- - pos: 28.5,-6.5
- parent: 179
- type: Transform
- - uid: 635
- components:
- - pos: 29.5,-6.5
- parent: 179
- type: Transform
- - uid: 636
- components:
- - pos: 30.5,-6.5
- parent: 179
- type: Transform
- - uid: 637
- components:
- - pos: 31.5,-6.5
- parent: 179
- type: Transform
- - uid: 638
- components:
- - pos: 32.5,-6.5
- parent: 179
- type: Transform
- - uid: 639
- components:
- - pos: 33.5,-6.5
- parent: 179
- type: Transform
- - uid: 640
- components:
- - pos: 34.5,-6.5
- parent: 179
- type: Transform
- - uid: 641
- components:
- - pos: 34.5,-5.5
- parent: 179
- type: Transform
- - uid: 642
- components:
- - pos: 34.5,-4.5
- parent: 179
- type: Transform
- - uid: 643
- components:
- - pos: 34.5,-3.5
- parent: 179
- type: Transform
- - uid: 644
- components:
- - pos: 34.5,-2.5
- parent: 179
- type: Transform
- - uid: 645
- components:
- - pos: 34.5,-1.5
- parent: 179
- type: Transform
- - uid: 646
- components:
- - pos: 34.5,-0.5
- parent: 179
- type: Transform
- - uid: 647
- components:
- - pos: 33.5,-0.5
- parent: 179
- type: Transform
- - uid: 648
- components:
- - pos: 32.5,-0.5
- parent: 179
- type: Transform
- - uid: 649
- components:
- - pos: 31.5,-0.5
- parent: 179
- type: Transform
- - uid: 650
- components:
- - pos: 30.5,-0.5
- parent: 179
- type: Transform
- - uid: 651
- components:
- - pos: 29.5,-0.5
- parent: 179
- type: Transform
- - uid: 652
- components:
- - pos: 30.5,0.5
- parent: 179
- type: Transform
- - uid: 653
- components:
- - pos: 30.5,1.5
- parent: 179
- type: Transform
- - uid: 654
- components:
- - pos: 30.5,2.5
- parent: 179
- type: Transform
- - uid: 655
- components:
- - pos: 30.5,3.5
- parent: 179
- type: Transform
- - uid: 656
- components:
- - pos: 30.5,4.5
- parent: 179
- type: Transform
- - uid: 657
- components:
- - pos: 29.5,4.5
- parent: 179
- type: Transform
- - uid: 658
- components:
- - pos: 28.5,4.5
- parent: 179
- type: Transform
- - uid: 659
- components:
- - pos: 27.5,4.5
- parent: 179
- type: Transform
- - uid: 702
- components:
- - rot: -1.5707963267948966 rad
- pos: -11.5,6.5
- parent: 179
- type: Transform
- - uid: 713
- components:
- - pos: -7.5,9.5
- parent: 179
- type: Transform
- - uid: 714
- components:
- - pos: -7.5,10.5
- parent: 179
- type: Transform
- - uid: 724
- components:
- - pos: -2.5,12.5
- parent: 179
- type: Transform
- - uid: 733
- components:
- - pos: 4.5,5.5
- parent: 179
- type: Transform
- - uid: 734
- components:
- - pos: 4.5,4.5
- parent: 179
- type: Transform
- - uid: 739
- components:
- - pos: 8.5,7.5
- parent: 179
- type: Transform
- - uid: 740
- components:
- - pos: 8.5,6.5
- parent: 179
- type: Transform
- - uid: 741
- components:
- - pos: 8.5,5.5
- parent: 179
- type: Transform
- - uid: 742
- components:
- - pos: 8.5,4.5
- parent: 179
- type: Transform
- - uid: 743
- components:
- - pos: 8.5,3.5
- parent: 179
- type: Transform
- - uid: 745
- components:
- - pos: 4.5,7.5
- parent: 179
- type: Transform
- - uid: 746
- components:
- - pos: 4.5,6.5
- parent: 179
- type: Transform
- - uid: 846
- components:
- - pos: 2.5,19.5
- parent: 179
- type: Transform
- - uid: 847
- components:
- - pos: 3.5,19.5
- parent: 179
- type: Transform
- - uid: 925
- components:
- - rot: -1.5707963267948966 rad
- pos: -14.5,17.5
- parent: 179
- type: Transform
- - uid: 958
- components:
- - rot: 3.141592653589793 rad
- pos: 15.5,18.5
- parent: 179
- type: Transform
- - uid: 1072
- components:
- - pos: 15.5,28.5
- parent: 179
- type: Transform
- - uid: 1073
- components:
- - pos: 16.5,28.5
- parent: 179
- type: Transform
- - uid: 1074
- components:
- - pos: 17.5,28.5
- parent: 179
- type: Transform
-- proto: WaterTankFull
- entities:
- - uid: 115
- components:
- - pos: 4.5,18.5
- parent: 179
- type: Transform
- - uid: 694
- components:
- - pos: -2.5,3.5
- parent: 179
- type: Transform
-- proto: WeaponCapacitorRecharger
- entities:
- - uid: 708
- components:
- - pos: -0.5,-3.5
- parent: 179
- type: Transform
-- proto: WeaponLaserCarbine
- entities:
- - uid: 188
- components:
- - pos: -3.5226438,-0.45543313
- parent: 179
- type: Transform
-- proto: WeaponLauncherMultipleRocket
- entities:
- - uid: 671
- components:
- - pos: -13.195735,9.730438
- parent: 179
- type: Transform
-- proto: WeaponLauncherRocket
- entities:
- - uid: 436
- components:
- - pos: -3.478273,-1.1611286
- parent: 179
- type: Transform
-- proto: WeaponRifleAk
- entities:
- - uid: 437
- components:
- - pos: -3.5018106,0.24183923
- parent: 179
- type: Transform
- - uid: 949
- components:
- - pos: -12.238617,9.081488
- parent: 179
- type: Transform
-- proto: WelderExperimental
- entities:
- - uid: 343
- components:
- - pos: 0.6895334,4.7183027
- parent: 179
- type: Transform
-- proto: WeldingFuelTankFull
- entities:
- - uid: 693
- components:
- - pos: -1.5,3.5
- parent: 179
- type: Transform
-- proto: Window
- entities:
- - uid: 111
- components:
- - pos: -0.5,-15.5
- parent: 179
- type: Transform
- - uid: 194
- components:
- - pos: -0.5,-16.5
- parent: 179
- type: Transform
- - uid: 230
- components:
- - pos: -0.5,-14.5
- parent: 179
- type: Transform
- - uid: 1001
- components:
- - pos: -3.5,-16.5
- parent: 179
- type: Transform
- - uid: 1002
- components:
- - pos: -3.5,-15.5
- parent: 179
- type: Transform
- - uid: 1003
- components:
- - pos: -3.5,-14.5
- parent: 179
- type: Transform
- - uid: 1004
- components:
- - pos: 2.5,-16.5
- parent: 179
- type: Transform
- - uid: 1005
- components:
- - pos: 2.5,-15.5
- parent: 179
- type: Transform
- - uid: 1006
- components:
- - pos: 2.5,-14.5
- parent: 179
- type: Transform
-- proto: Wirecutter
- entities:
- - uid: 359
- components:
- - pos: -1.6207478,4.3951616
- parent: 179
- type: Transform
-- proto: Wrench
- entities:
- - uid: 327
- components:
- - pos: -0.11783123,4.753312
- parent: 179
- type: Transform
-...
+meta:\r
+ format: 6\r
+ postmapinit: false\r
+tilemap:\r
+ 0: Space\r
+ 85: FloorSteel\r
+ 97: FloorTechMaint\r
+ 101: FloorWhite\r
+ 113: Lattice\r
+ 114: Plating\r
+entities:\r
+- proto: ""\r
+ entities:\r
+ - uid: 179\r
+ components:\r
+ - type: MetaData\r
+ - parent: 962\r
+ type: Transform\r
+ - chunks:\r
+ -1,0:\r
+ ind: -1,0\r
+ tiles: VQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAAAAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAYQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
+ version: 6\r
+ -1,-1:\r
+ ind: -1,-1\r
+ tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAA\r
+ version: 6\r
+ 0,1:\r
+ ind: 0,1\r
+ tiles: cQAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAVQAAAAAAcQAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAZQAAAAAAAAAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAZQAAAAAAAAAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAYQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAAAAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAZQAAAAAAAAAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAAAAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAAAAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
+ version: 6\r
+ 0,0:\r
+ ind: 0,0\r
+ tiles: cgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAYQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcQAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcQAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcQAAAAAAcgAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAA\r
+ version: 6\r
+ 0,-1:\r
+ ind: 0,-1\r
+ tiles: cgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYQAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAYQAAAAAAYQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAZQAAAAAA\r
+ version: 6\r
+ 1,-1:\r
+ ind: 1,-1\r
+ tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAA\r
+ version: 6\r
+ -2,0:\r
+ ind: -2,0\r
+ tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
+ version: 6\r
+ -2,-1:\r
+ ind: -2,-1\r
+ tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAVQAAAAAA\r
+ version: 6\r
+ 1,0:\r
+ ind: 1,0\r
+ tiles: ZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAZQAAAAAAcgAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVQAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
+ version: 6\r
+ 2,-1:\r
+ ind: 2,-1\r
+ tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
+ version: 6\r
+ 1,1:\r
+ ind: 1,1\r
+ tiles: VQAAAAAAVQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQAAAAAAZQAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
+ version: 6\r
+ -1,1:\r
+ ind: -1,1\r
+ tiles: AAAAAAAAcQAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
+ version: 6\r
+ 0,-2:\r
+ ind: 0,-2\r
+ tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
+ version: 6\r
+ -1,-2:\r
+ ind: -1,-2\r
+ tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAAAAAcgAAAAAAcgAAAAAAcgAAAAAA\r
+ version: 6\r
+ type: MapGrid\r
+ - type: Broadphase\r
+ - bodyStatus: InAir\r
+ angularDamping: 0.05\r
+ linearDamping: 0.05\r
+ fixedRotation: False\r
+ bodyType: Dynamic\r
+ type: Physics\r
+ - fixtures: {}\r
+ type: Fixtures\r
+ - gravityShakeSound: !type:SoundPathSpecifier\r
+ path: /Audio/Effects/alert.ogg\r
+ type: Gravity\r
+ - chunkCollection:\r
+ version: 2\r
+ nodes: []\r
+ type: DecalGrid\r
+ - type: OccluderTree\r
+ - type: Shuttle\r
+ - type: RadiationGridResistance\r
+ - shakeTimes: 10\r
+ type: GravityShake\r
+ - version: 2\r
+ data:\r
+ tiles:\r
+ -4,0:\r
+ 0: 65535\r
+ -4,1:\r
+ 0: 65535\r
+ -3,0:\r
+ 0: 65535\r
+ -3,1:\r
+ 0: 65535\r
+ -2,0:\r
+ 0: 65535\r
+ -2,1:\r
+ 0: 65535\r
+ -2,2:\r
+ 0: 65535\r
+ -1,0:\r
+ 0: 65535\r
+ -1,1:\r
+ 0: 65535\r
+ -1,2:\r
+ 0: 65535\r
+ -4,-3:\r
+ 0: 61440\r
+ -4,-2:\r
+ 0: 65535\r
+ -4,-1:\r
+ 0: 65535\r
+ -3,-3:\r
+ 0: 61440\r
+ -3,-2:\r
+ 0: 65535\r
+ -3,-1:\r
+ 0: 65535\r
+ -2,-4:\r
+ 0: 65520\r
+ -2,-3:\r
+ 0: 65535\r
+ -2,-2:\r
+ 0: 65535\r
+ -2,-1:\r
+ 0: 65535\r
+ -1,-4:\r
+ 0: 65520\r
+ 1: 15\r
+ -1,-3:\r
+ 0: 65535\r
+ -1,-2:\r
+ 0: 65535\r
+ -1,-1:\r
+ 0: 65535\r
+ 0,4:\r
+ 0: 61183\r
+ 0,5:\r
+ 0: 61166\r
+ 0,6:\r
+ 0: 14\r
+ 1,4:\r
+ 0: 65535\r
+ 1,5:\r
+ 0: 65535\r
+ 1,6:\r
+ 0: 65535\r
+ 1,7:\r
+ 0: 15\r
+ 2,4:\r
+ 0: 65535\r
+ 2,5:\r
+ 0: 65535\r
+ 2,6:\r
+ 0: 4095\r
+ 3,4:\r
+ 0: 65535\r
+ 3,5:\r
+ 0: 65487\r
+ 2: 48\r
+ 3,6:\r
+ 0: 53247\r
+ 3,7:\r
+ 0: 12\r
+ 0,0:\r
+ 0: 65535\r
+ 0,1:\r
+ 0: 65535\r
+ 0,2:\r
+ 0: 65535\r
+ 0,3:\r
+ 0: 65535\r
+ 1,0:\r
+ 0: 65535\r
+ 1,1:\r
+ 0: 65535\r
+ 1,2:\r
+ 0: 65535\r
+ 1,3:\r
+ 0: 65535\r
+ 2,0:\r
+ 0: 4369\r
+ 2,2:\r
+ 0: 65535\r
+ 2,3:\r
+ 0: 65535\r
+ 3,0:\r
+ 0: 65535\r
+ 3,2:\r
+ 0: 65535\r
+ 3,3:\r
+ 0: 65535\r
+ 3,1:\r
+ 0: 61166\r
+ 0,-4:\r
+ 0: 65520\r
+ 1: 7\r
+ 0,-3:\r
+ 0: 65535\r
+ 0,-2:\r
+ 0: 65535\r
+ 0,-1:\r
+ 0: 65535\r
+ 1,-4:\r
+ 0: 30576\r
+ 1,-3:\r
+ 0: 65399\r
+ 1,-2:\r
+ 0: 63359\r
+ 1,-1:\r
+ 0: 65535\r
+ 2,-2:\r
+ 0: 4096\r
+ 2,-1:\r
+ 0: 4369\r
+ 3,-1:\r
+ 0: 65262\r
+ 3,-2:\r
+ 0: 61152\r
+ 4,-2:\r
+ 0: 65520\r
+ 4,-1:\r
+ 0: 65535\r
+ 5,-2:\r
+ 0: 65520\r
+ 5,-1:\r
+ 0: 65535\r
+ 6,-2:\r
+ 0: 65520\r
+ 6,-1:\r
+ 0: 65535\r
+ 7,-2:\r
+ 0: 65520\r
+ 7,-1:\r
+ 0: 65535\r
+ -5,0:\r
+ 0: 52428\r
+ -5,-3:\r
+ 0: 32768\r
+ -5,-2:\r
+ 0: 51336\r
+ -5,-1:\r
+ 0: 52428\r
+ 4,0:\r
+ 0: 65535\r
+ 4,1:\r
+ 0: 65535\r
+ 4,2:\r
+ 0: 65535\r
+ 4,3:\r
+ 0: 65535\r
+ 5,0:\r
+ 0: 65535\r
+ 5,1:\r
+ 0: 65535\r
+ 5,2:\r
+ 0: 65535\r
+ 5,3:\r
+ 0: 65535\r
+ 6,0:\r
+ 0: 65535\r
+ 6,1:\r
+ 0: 65535\r
+ 6,2:\r
+ 0: 65535\r
+ 6,3:\r
+ 0: 63351\r
+ 7,0:\r
+ 0: 30583\r
+ 7,1:\r
+ 0: 4375\r
+ 7,2:\r
+ 0: 4369\r
+ 7,3:\r
+ 0: 4096\r
+ 8,-2:\r
+ 0: 30576\r
+ 8,-1:\r
+ 0: 30583\r
+ 4,4:\r
+ 0: 30583\r
+ 4,5:\r
+ 0: 30583\r
+ 4,6:\r
+ 0: 30583\r
+ 4,7:\r
+ 0: 7\r
+ -4,2:\r
+ 0: 26367\r
+ -1,3:\r
+ 0: 15\r
+ 2,1:\r
+ 0: 4369\r
+ -5,1:\r
+ 0: 52428\r
+ -4,3:\r
+ 0: 26222\r
+ -3,3:\r
+ 0: 15\r
+ -2,3:\r
+ 0: 15\r
+ -4,4:\r
+ 0: 238\r
+ -3,4:\r
+ 0: 255\r
+ -2,4:\r
+ 0: 255\r
+ -1,4:\r
+ 0: 255\r
+ -5,2:\r
+ 0: 204\r
+ -3,2:\r
+ 0: 35071\r
+ 0,-5:\r
+ 1: 28672\r
+ -1,-5:\r
+ 1: 61440\r
+ uniqueMixes:\r
+ - volume: 2500\r
+ temperature: 293.15\r
+ moles:\r
+ - 21.824879\r
+ - 82.10312\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - volume: 2500\r
+ temperature: 293.15\r
+ moles:\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - volume: 2500\r
+ temperature: 293.15\r
+ moles:\r
+ - 24.8172\r
+ - 93.35994\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ chunkSize: 4\r
+ type: GridAtmosphere\r
+ - type: GasTileOverlay\r
+ - id: Dev\r
+ type: BecomesStation\r
+ - type: SpreaderGrid\r
+ - type: GridPathfinding\r
+ - uid: 962\r
+ components:\r
+ - type: MetaData\r
+ - type: Transform\r
+ - type: Map\r
+ - type: PhysicsMap\r
+ - type: Broadphase\r
+ - type: OccluderTree\r
+ - type: LoadedMap\r
+ - type: GridTree\r
+ - type: MovedGrids\r
+- proto: AdvancedCapacitorStockPart\r
+ entities:\r
+ - uid: 700\r
+ components:\r
+ - pos: -3.8324947,8.786524\r
+ parent: 179\r
+ type: Transform\r
+- proto: AirAlarm\r
+ entities:\r
+ - uid: 800\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: 1.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - devices:\r
+ - 801\r
+ type: DeviceList\r
+- proto: AirCanister\r
+ entities:\r
+ - uid: 458\r
+ components:\r
+ - pos: 7.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: Airlock\r
+ entities:\r
+ - uid: 48\r
+ components:\r
+ - pos: 7.5,20.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 119\r
+ components:\r
+ - pos: 6.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 170\r
+ components:\r
+ - pos: 13.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 378\r
+ components:\r
+ - pos: -9.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: AirlockCargo\r
+ entities:\r
+ - uid: 87\r
+ components:\r
+ - pos: 2.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: AirlockEngineering\r
+ entities:\r
+ - uid: 257\r
+ components:\r
+ - pos: -7.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 258\r
+ components:\r
+ - pos: 3.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 530\r
+ components:\r
+ - pos: -10.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 563\r
+ components:\r
+ - pos: -13.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 867\r
+ components:\r
+ - pos: -12.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: AirlockExternal\r
+ entities:\r
+ - uid: 155\r
+ components:\r
+ - pos: 26.5,13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 203\r
+ components:\r
+ - pos: 0.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 255\r
+ components:\r
+ - pos: 7.5,-8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 256\r
+ components:\r
+ - pos: 5.5,-8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 318\r
+ components:\r
+ - pos: 24.5,13.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: AirlockExternalGlass\r
+ entities:\r
+ - uid: 216\r
+ components:\r
+ - pos: -1.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: AirlockGlassShuttle\r
+ entities:\r
+ - uid: 146\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: -17.5,9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 204\r
+ components:\r
+ - pos: -1.5,-16.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: AirlockMedicalGlass\r
+ entities:\r
+ - uid: 177\r
+ components:\r
+ - pos: 26.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 178\r
+ components:\r
+ - pos: 20.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 206\r
+ components:\r
+ - pos: 16.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 207\r
+ components:\r
+ - pos: 15.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 369\r
+ components:\r
+ - pos: 26.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 370\r
+ components:\r
+ - pos: 28.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: AirlockScience\r
+ entities:\r
+ - uid: 24\r
+ components:\r
+ - pos: 14.5,24.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 47\r
+ components:\r
+ - pos: 16.5,18.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 102\r
+ components:\r
+ - pos: 16.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 306\r
+ components:\r
+ - pos: 12.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: AirlockScienceGlass\r
+ entities:\r
+ - uid: 26\r
+ components:\r
+ - pos: 14.5,20.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: AirlockShuttle\r
+ entities:\r
+ - uid: 116\r
+ components:\r
+ - pos: 0.5,-16.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: AirSensor\r
+ entities:\r
+ - uid: 801\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: 1.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: AlwaysPoweredLightLED\r
+ entities:\r
+ - uid: 59\r
+ components:\r
+ - pos: -14.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 330\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: -8.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 398\r
+ components:\r
+ - pos: 4.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 451\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: -8.5,9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 512\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: -14.5,6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 662\r
+ components:\r
+ - pos: 11.5,14.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 664\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: 22.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 667\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 8.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 669\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: -17.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 852\r
+ components:\r
+ - rot: 1.5707963267948966 rad\r
+ pos: -6.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 907\r
+ components:\r
+ - pos: -4.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 910\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: -2.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 913\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: 5.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 914\r
+ components:\r
+ - pos: 4.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 915\r
+ components:\r
+ - pos: 6.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 916\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 3.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 917\r
+ components:\r
+ - pos: -2.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 918\r
+ components:\r
+ - pos: 3.5,18.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 921\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: -13.5,1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 922\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 0.5,16.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 923\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: -7.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 924\r
+ components:\r
+ - rot: 1.5707963267948966 rad\r
+ pos: 14.5,6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 926\r
+ components:\r
+ - rot: 1.5707963267948966 rad\r
+ pos: -13.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 953\r
+ components:\r
+ - pos: -14.5,16.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 957\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: 11.5,16.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: AlwaysPoweredWallLight\r
+ entities:\r
+ - uid: 1047\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: -0.5,-13.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: AnomalyLocator\r
+ entities:\r
+ - uid: 1086\r
+ components:\r
+ - pos: 17.237877,19.653782\r
+ parent: 179\r
+ type: Transform\r
+- proto: AnomalyScanner\r
+ entities:\r
+ - uid: 1085\r
+ components:\r
+ - pos: 17.539398,19.352007\r
+ parent: 179\r
+ type: Transform\r
+- proto: APCBasic\r
+ entities:\r
+ - uid: 753\r
+ components:\r
+ - pos: -2.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - startingCharge: 500000000\r
+ maxCharge: 500000000\r
+ type: Battery\r
+ - supplyRampRate: 50000\r
+ supplyRampTolerance: 100000\r
+ maxSupply: 1000000\r
+ maxChargeRate: 500000\r
+ type: PowerNetworkBattery\r
+ - uid: 1015\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: -5.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: AtmosDeviceFanTiny\r
+ entities:\r
+ - uid: 992\r
+ components:\r
+ - pos: -1.5,-16.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 993\r
+ components:\r
+ - pos: 0.5,-16.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: Autolathe\r
+ entities:\r
+ - uid: 1\r
+ components:\r
+ - pos: 12.5,21.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 94\r
+ components:\r
+ - pos: -4.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 446\r
+ components:\r
+ - pos: -6.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 528\r
+ components:\r
+ - pos: -12.5,-7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 531\r
+ components:\r
+ - pos: -13.5,-7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 532\r
+ components:\r
+ - pos: -14.5,-7.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: BaseUplinkRadioDebug\r
+ entities:\r
+ - uid: 732\r
+ components:\r
+ - pos: 0.6038008,7.5209107\r
+ parent: 179\r
+ type: Transform\r
+- proto: Basketball\r
+ entities:\r
+ - uid: 951\r
+ components:\r
+ - pos: -9.702013,9.68404\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 952\r
+ components:\r
+ - pos: -10.879096,9.579802\r
+ parent: 179\r
+ type: Transform\r
+- proto: Beaker\r
+ entities:\r
+ - uid: 174\r
+ components:\r
+ - pos: 25.291822,10.667244\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 175\r
+ components:\r
+ - pos: 24.541822,10.635994\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 176\r
+ components:\r
+ - pos: 26.416822,10.651619\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 324\r
+ components:\r
+ - pos: 4.718221,9.39097\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 735\r
+ components:\r
+ - pos: 4.739054,9.807927\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 920\r
+ components:\r
+ - pos: -4.293744,10.966518\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 950\r
+ components:\r
+ - pos: -4.293744,10.966518\r
+ parent: 179\r
+ type: Transform\r
+- proto: BikeHorn\r
+ entities:\r
+ - uid: 672\r
+ components:\r
+ - pos: 1.1246341,7.500063\r
+ parent: 179\r
+ type: Transform\r
+- proto: BlastDoor\r
+ entities:\r
+ - uid: 202\r
+ components:\r
+ - pos: -2.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+ - links:\r
+ - 1013\r
+ type: DeviceLinkSink\r
+ - uid: 697\r
+ components:\r
+ - pos: 1.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+ - links:\r
+ - 1014\r
+ type: DeviceLinkSink\r
+ - uid: 698\r
+ components:\r
+ - pos: 1.5,-16.5\r
+ parent: 179\r
+ type: Transform\r
+ - links:\r
+ - 1014\r
+ type: DeviceLinkSink\r
+ - uid: 984\r
+ components:\r
+ - pos: -2.5,-16.5\r
+ parent: 179\r
+ type: Transform\r
+ - links:\r
+ - 1013\r
+ type: DeviceLinkSink\r
+- proto: BoozeDispenser\r
+ entities:\r
+ - uid: 752\r
+ components:\r
+ - pos: 7.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: BoxBeaker\r
+ entities:\r
+ - uid: 280\r
+ components:\r
+ - pos: 5.163024,9.63072\r
+ parent: 179\r
+ type: Transform\r
+- proto: Brutepack\r
+ entities:\r
+ - uid: 150\r
+ components:\r
+ - pos: 18.601385,5.512907\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 151\r
+ components:\r
+ - pos: 18.476385,4.841032\r
+ parent: 179\r
+ type: Transform\r
+- proto: Bucket\r
+ entities:\r
+ - uid: 691\r
+ components:\r
+ - pos: 7.1447573,15.900927\r
+ parent: 179\r
+ type: Transform\r
+- proto: CableApcExtension\r
+ entities:\r
+ - uid: 15\r
+ components:\r
+ - pos: 5.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 23\r
+ components:\r
+ - pos: 3.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 58\r
+ components:\r
+ - pos: 8.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 90\r
+ components:\r
+ - pos: 4.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 281\r
+ components:\r
+ - pos: -13.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 389\r
+ components:\r
+ - pos: 7.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 453\r
+ components:\r
+ - pos: 6.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 736\r
+ components:\r
+ - pos: -2.5,9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 760\r
+ components:\r
+ - pos: -2.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 761\r
+ components:\r
+ - pos: -15.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 763\r
+ components:\r
+ - pos: -2.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 764\r
+ components:\r
+ - pos: -1.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 765\r
+ components:\r
+ - pos: -7.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 766\r
+ components:\r
+ - pos: -0.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 767\r
+ components:\r
+ - pos: -3.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 768\r
+ components:\r
+ - pos: -4.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 769\r
+ components:\r
+ - pos: -5.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 770\r
+ components:\r
+ - pos: -6.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 771\r
+ components:\r
+ - pos: -2.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 772\r
+ components:\r
+ - pos: -2.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 773\r
+ components:\r
+ - pos: -2.5,6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 774\r
+ components:\r
+ - pos: -2.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 775\r
+ components:\r
+ - pos: -3.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 776\r
+ components:\r
+ - pos: -4.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 777\r
+ components:\r
+ - pos: -5.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 778\r
+ components:\r
+ - pos: -6.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 779\r
+ components:\r
+ - pos: -6.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 780\r
+ components:\r
+ - pos: -7.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 781\r
+ components:\r
+ - pos: -8.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 782\r
+ components:\r
+ - pos: -9.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 783\r
+ components:\r
+ - pos: -10.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 784\r
+ components:\r
+ - pos: -11.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 785\r
+ components:\r
+ - pos: -12.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 786\r
+ components:\r
+ - pos: -12.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 787\r
+ components:\r
+ - pos: -12.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 788\r
+ components:\r
+ - pos: -12.5,1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 789\r
+ components:\r
+ - pos: -12.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 790\r
+ components:\r
+ - pos: -12.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 791\r
+ components:\r
+ - pos: -2.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 792\r
+ components:\r
+ - pos: -2.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 793\r
+ components:\r
+ - pos: -2.5,1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 794\r
+ components:\r
+ - pos: -2.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 795\r
+ components:\r
+ - pos: -2.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 796\r
+ components:\r
+ - pos: -2.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 797\r
+ components:\r
+ - pos: -2.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 798\r
+ components:\r
+ - pos: -2.5,-2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 799\r
+ components:\r
+ - pos: -2.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 802\r
+ components:\r
+ - pos: -8.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 803\r
+ components:\r
+ - pos: 2.5,-2.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 804\r
+ components:\r
+ - pos: 2.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 805\r
+ components:\r
+ - pos: -9.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 806\r
+ components:\r
+ - pos: -10.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 807\r
+ components:\r
+ - pos: -14.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 808\r
+ components:\r
+ - pos: -11.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 809\r
+ components:\r
+ - pos: -15.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 810\r
+ components:\r
+ - pos: -15.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 811\r
+ components:\r
+ - pos: -16.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 812\r
+ components:\r
+ - pos: -16.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 813\r
+ components:\r
+ - pos: -16.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 814\r
+ components:\r
+ - pos: -16.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 815\r
+ components:\r
+ - pos: -16.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 816\r
+ components:\r
+ - pos: -16.5,1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 817\r
+ components:\r
+ - pos: 7.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 818\r
+ components:\r
+ - pos: 7.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 819\r
+ components:\r
+ - pos: 7.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 820\r
+ components:\r
+ - pos: 7.5,9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 821\r
+ components:\r
+ - pos: 8.5,9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 822\r
+ components:\r
+ - pos: 6.5,9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 823\r
+ components:\r
+ - pos: 5.5,9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 824\r
+ components:\r
+ - pos: 4.5,9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 825\r
+ components:\r
+ - pos: 8.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 826\r
+ components:\r
+ - pos: 8.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 827\r
+ components:\r
+ - pos: 8.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 828\r
+ components:\r
+ - pos: 7.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 829\r
+ components:\r
+ - pos: 7.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 830\r
+ components:\r
+ - pos: 2.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 831\r
+ components:\r
+ - pos: 2.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 832\r
+ components:\r
+ - pos: 1.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 833\r
+ components:\r
+ - pos: 0.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 834\r
+ components:\r
+ - pos: -0.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 835\r
+ components:\r
+ - pos: -1.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 836\r
+ components:\r
+ - pos: -2.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 837\r
+ components:\r
+ - pos: -3.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 838\r
+ components:\r
+ - pos: -4.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 839\r
+ components:\r
+ - pos: 1.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 840\r
+ components:\r
+ - pos: 2.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 841\r
+ components:\r
+ - pos: 0.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 842\r
+ components:\r
+ - pos: 2.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 843\r
+ components:\r
+ - pos: 2.5,13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 844\r
+ components:\r
+ - pos: 2.5,14.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 845\r
+ components:\r
+ - pos: 2.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 853\r
+ components:\r
+ - pos: -3.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 854\r
+ components:\r
+ - pos: -4.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 855\r
+ components:\r
+ - pos: -5.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 856\r
+ components:\r
+ - pos: -6.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 857\r
+ components:\r
+ - pos: -6.5,-2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 858\r
+ components:\r
+ - pos: -6.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 859\r
+ components:\r
+ - pos: -6.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 860\r
+ components:\r
+ - pos: -6.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 861\r
+ components:\r
+ - pos: -6.5,1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 862\r
+ components:\r
+ - pos: -6.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 872\r
+ components:\r
+ - pos: 7.5,6.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 877\r
+ components:\r
+ - pos: -6.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 878\r
+ components:\r
+ - pos: -2.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 879\r
+ components:\r
+ - pos: -1.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 880\r
+ components:\r
+ - pos: -0.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 881\r
+ components:\r
+ - pos: 0.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 882\r
+ components:\r
+ - pos: 1.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 883\r
+ components:\r
+ - pos: 2.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 884\r
+ components:\r
+ - pos: 3.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 885\r
+ components:\r
+ - pos: 4.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 886\r
+ components:\r
+ - pos: 5.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 887\r
+ components:\r
+ - pos: 6.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 888\r
+ components:\r
+ - pos: 7.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 889\r
+ components:\r
+ - pos: 8.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 890\r
+ components:\r
+ - pos: 8.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 891\r
+ components:\r
+ - pos: 8.5,-2.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 892\r
+ components:\r
+ - pos: 8.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 893\r
+ components:\r
+ - pos: 8.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 894\r
+ components:\r
+ - pos: 8.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 895\r
+ components:\r
+ - pos: 8.5,1.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 896\r
+ components:\r
+ - pos: 8.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 897\r
+ components:\r
+ - pos: 8.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 898\r
+ components:\r
+ - pos: 8.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 899\r
+ components:\r
+ - pos: 8.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 900\r
+ components:\r
+ - pos: -14.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 905\r
+ components:\r
+ - pos: -12.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 906\r
+ components:\r
+ - pos: -14.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 908\r
+ components:\r
+ - pos: -15.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 970\r
+ components:\r
+ - pos: 9.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 971\r
+ components:\r
+ - pos: 10.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 972\r
+ components:\r
+ - pos: 11.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 973\r
+ components:\r
+ - pos: 12.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 974\r
+ components:\r
+ - pos: 13.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1026\r
+ components:\r
+ - pos: -5.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 1027\r
+ components:\r
+ - pos: -5.5,-13.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 1028\r
+ components:\r
+ - pos: -5.5,-12.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 1029\r
+ components:\r
+ - pos: -4.5,-12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1030\r
+ components:\r
+ - pos: -3.5,-12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1031\r
+ components:\r
+ - pos: -2.5,-12.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 1032\r
+ components:\r
+ - pos: -1.5,-12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1033\r
+ components:\r
+ - pos: -0.5,-12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1034\r
+ components:\r
+ - pos: 0.5,-12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1035\r
+ components:\r
+ - pos: 1.5,-12.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 1036\r
+ components:\r
+ - pos: 2.5,-12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1037\r
+ components:\r
+ - pos: 3.5,-12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1038\r
+ components:\r
+ - pos: 0.5,-13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1039\r
+ components:\r
+ - pos: 0.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 1040\r
+ components:\r
+ - pos: 0.5,-15.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 1041\r
+ components:\r
+ - pos: -1.5,-13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1042\r
+ components:\r
+ - pos: -1.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 1043\r
+ components:\r
+ - pos: -1.5,-15.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 1044\r
+ components:\r
+ - pos: 4.5,-12.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 1045\r
+ components:\r
+ - pos: 4.5,-13.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 1051\r
+ components:\r
+ - pos: 9.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1052\r
+ components:\r
+ - pos: 9.5,16.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1053\r
+ components:\r
+ - pos: 9.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1054\r
+ components:\r
+ - pos: 9.5,18.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1055\r
+ components:\r
+ - pos: 9.5,19.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1056\r
+ components:\r
+ - pos: 9.5,20.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1057\r
+ components:\r
+ - pos: 10.5,20.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1058\r
+ components:\r
+ - pos: 11.5,20.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1059\r
+ components:\r
+ - pos: 12.5,20.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1060\r
+ components:\r
+ - pos: 13.5,20.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1061\r
+ components:\r
+ - pos: 14.5,20.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1062\r
+ components:\r
+ - pos: 15.5,20.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1063\r
+ components:\r
+ - pos: 16.5,20.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1064\r
+ components:\r
+ - pos: 16.5,21.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1065\r
+ components:\r
+ - pos: 16.5,22.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1066\r
+ components:\r
+ - pos: 16.5,23.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1067\r
+ components:\r
+ - pos: 16.5,24.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1068\r
+ components:\r
+ - pos: 16.5,25.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1069\r
+ components:\r
+ - pos: 16.5,26.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1070\r
+ components:\r
+ - pos: 16.5,27.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1079\r
+ components:\r
+ - pos: 15.5,24.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1080\r
+ components:\r
+ - pos: 14.5,24.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1081\r
+ components:\r
+ - pos: 13.5,24.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 1082\r
+ components:\r
+ - pos: 12.5,24.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1097\r
+ components:\r
+ - pos: 8.5,14.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1098\r
+ components:\r
+ - pos: 8.5,13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1099\r
+ components:\r
+ - pos: 9.5,13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1100\r
+ components:\r
+ - pos: 10.5,13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1101\r
+ components:\r
+ - pos: 11.5,13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1102\r
+ components:\r
+ - pos: 12.5,13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1103\r
+ components:\r
+ - pos: 13.5,13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1104\r
+ components:\r
+ - pos: 14.5,13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1105\r
+ components:\r
+ - pos: 15.5,13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1106\r
+ components:\r
+ - pos: 16.5,13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1107\r
+ components:\r
+ - pos: 17.5,13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1108\r
+ components:\r
+ - pos: 18.5,13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1109\r
+ components:\r
+ - pos: 19.5,13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1110\r
+ components:\r
+ - pos: 20.5,13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1111\r
+ components:\r
+ - pos: 21.5,13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1112\r
+ components:\r
+ - pos: 22.5,13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1113\r
+ components:\r
+ - pos: 23.5,13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1114\r
+ components:\r
+ - pos: 24.5,13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1115\r
+ components:\r
+ - pos: 25.5,13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1116\r
+ components:\r
+ - pos: 16.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1117\r
+ components:\r
+ - pos: 16.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1118\r
+ components:\r
+ - pos: 16.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1119\r
+ components:\r
+ - pos: 16.5,9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1120\r
+ components:\r
+ - pos: 16.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1121\r
+ components:\r
+ - pos: 16.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1122\r
+ components:\r
+ - pos: 16.5,6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1123\r
+ components:\r
+ - pos: 16.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1124\r
+ components:\r
+ - pos: 16.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1125\r
+ components:\r
+ - pos: 16.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1126\r
+ components:\r
+ - pos: 16.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1127\r
+ components:\r
+ - pos: 16.5,1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1128\r
+ components:\r
+ - pos: 16.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1129\r
+ components:\r
+ - pos: 16.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1130\r
+ components:\r
+ - pos: 16.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1131\r
+ components:\r
+ - pos: 16.5,-2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1132\r
+ components:\r
+ - pos: 16.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1133\r
+ components:\r
+ - pos: 17.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1134\r
+ components:\r
+ - pos: 18.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1135\r
+ components:\r
+ - pos: 19.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1136\r
+ components:\r
+ - pos: 20.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1137\r
+ components:\r
+ - pos: 21.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1138\r
+ components:\r
+ - pos: 22.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1139\r
+ components:\r
+ - pos: 23.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1140\r
+ components:\r
+ - pos: 24.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1141\r
+ components:\r
+ - pos: 25.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1142\r
+ components:\r
+ - pos: 26.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1143\r
+ components:\r
+ - pos: 27.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1144\r
+ components:\r
+ - pos: 28.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1145\r
+ components:\r
+ - pos: 17.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1146\r
+ components:\r
+ - pos: 18.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1147\r
+ components:\r
+ - pos: 19.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1148\r
+ components:\r
+ - pos: 20.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1149\r
+ components:\r
+ - pos: 21.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1150\r
+ components:\r
+ - pos: 22.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1151\r
+ components:\r
+ - pos: 23.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1152\r
+ components:\r
+ - pos: 24.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1153\r
+ components:\r
+ - pos: 25.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1154\r
+ components:\r
+ - pos: 26.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1155\r
+ components:\r
+ - pos: 27.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1156\r
+ components:\r
+ - pos: 28.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1157\r
+ components:\r
+ - pos: 26.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1158\r
+ components:\r
+ - pos: 26.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1159\r
+ components:\r
+ - pos: 26.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1160\r
+ components:\r
+ - pos: 26.5,6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1161\r
+ components:\r
+ - pos: 26.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1162\r
+ components:\r
+ - pos: 26.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1163\r
+ components:\r
+ - pos: 26.5,9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1164\r
+ components:\r
+ - pos: 25.5,9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1165\r
+ components:\r
+ - pos: 24.5,9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1166\r
+ components:\r
+ - pos: 16.5,19.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1167\r
+ components:\r
+ - pos: 16.5,18.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1168\r
+ components:\r
+ - pos: 16.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1169\r
+ components:\r
+ - pos: 16.5,16.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1170\r
+ components:\r
+ - pos: 16.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1171\r
+ components:\r
+ - pos: 16.5,14.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: CableApcStack\r
+ entities:\r
+ - uid: 70\r
+ components:\r
+ - pos: 10.577456,21.424059\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 183\r
+ components:\r
+ - pos: -6.6863613,7.351646\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 351\r
+ components:\r
+ - pos: 10.561831,21.767809\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 537\r
+ components:\r
+ - pos: -15.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 538\r
+ components:\r
+ - pos: -15.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: CableHV\r
+ entities:\r
+ - uid: 1019\r
+ components:\r
+ - pos: -6.5,-13.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 1020\r
+ components:\r
+ - pos: -6.5,-12.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 1021\r
+ components:\r
+ - pos: -6.5,-11.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+- proto: CableHVStack\r
+ entities:\r
+ - uid: 184\r
+ components:\r
+ - pos: -6.665528,7.840053\r
+ parent: 179\r
+ type: Transform\r
+- proto: CableMV\r
+ entities:\r
+ - uid: 1023\r
+ components:\r
+ - pos: -6.5,-13.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 1024\r
+ components:\r
+ - pos: -5.5,-13.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+ - uid: 1025\r
+ components:\r
+ - pos: -5.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+- proto: CableMVStack\r
+ entities:\r
+ - uid: 325\r
+ components:\r
+ - pos: -6.665528,7.5601244\r
+ parent: 179\r
+ type: Transform\r
+- proto: CableTerminal\r
+ entities:\r
+ - uid: 1022\r
+ components:\r
+ - pos: -6.5,-11.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: CapacitorStockPart\r
+ entities:\r
+ - uid: 701\r
+ components:\r
+ - pos: -3.2804112,8.786524\r
+ parent: 179\r
+ type: Transform\r
+- proto: CaptainIDCard\r
+ entities:\r
+ - uid: 726\r
+ components:\r
+ - pos: 1.0820513,8.752605\r
+ parent: 179\r
+ type: Transform\r
+- proto: CaptainSabre\r
+ entities:\r
+ - uid: 381\r
+ components:\r
+ - pos: -3.277628,-2.15838\r
+ parent: 179\r
+ type: Transform\r
+- proto: Catwalk\r
+ entities:\r
+ - uid: 2\r
+ components:\r
+ - pos: 13.5,24.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 7\r
+ components:\r
+ - pos: 6.5,24.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 20\r
+ components:\r
+ - pos: 6.5,20.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 120\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 6.5,18.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 246\r
+ components:\r
+ - pos: -6.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 247\r
+ components:\r
+ - pos: -8.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 252\r
+ components:\r
+ - pos: 4.5,-8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 269\r
+ components:\r
+ - pos: 12.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 286\r
+ components:\r
+ - pos: 2.5,-11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 287\r
+ components:\r
+ - pos: -4.5,-11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 308\r
+ components:\r
+ - pos: -2.5,-12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 309\r
+ components:\r
+ - pos: 1.5,-12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 333\r
+ components:\r
+ - pos: 4.5,-13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 334\r
+ components:\r
+ - pos: -5.5,-13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 345\r
+ components:\r
+ - anchored: False\r
+ rot: -1.5707963267949 rad\r
+ pos: 9.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 346\r
+ components:\r
+ - anchored: False\r
+ rot: -1.5707963267949 rad\r
+ pos: 9.5,1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 347\r
+ components:\r
+ - anchored: False\r
+ rot: -1.5707963267949 rad\r
+ pos: 9.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 348\r
+ components:\r
+ - anchored: False\r
+ rot: -1.5707963267949 rad\r
+ pos: 9.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 349\r
+ components:\r
+ - anchored: False\r
+ rot: -1.5707963267949 rad\r
+ pos: 9.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 403\r
+ components:\r
+ - anchored: False\r
+ rot: -1.5707963267949 rad\r
+ pos: 9.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 404\r
+ components:\r
+ - anchored: False\r
+ rot: -1.5707963267949 rad\r
+ pos: 9.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 405\r
+ components:\r
+ - anchored: False\r
+ rot: -1.5707963267949 rad\r
+ pos: 9.5,-2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 406\r
+ components:\r
+ - anchored: False\r
+ rot: -1.5707963267949 rad\r
+ pos: 9.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 407\r
+ components:\r
+ - anchored: False\r
+ rot: -1.5707963267949 rad\r
+ pos: 9.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 408\r
+ components:\r
+ - anchored: False\r
+ rot: -1.5707963267949 rad\r
+ pos: 9.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 409\r
+ components:\r
+ - anchored: False\r
+ rot: -1.5707963267949 rad\r
+ pos: 9.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 410\r
+ components:\r
+ - anchored: False\r
+ rot: -1.5707963267949 rad\r
+ pos: 9.5,-7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 411\r
+ components:\r
+ - anchored: False\r
+ rot: -1.5707963267949 rad\r
+ pos: 9.5,-8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 412\r
+ components:\r
+ - anchored: False\r
+ rot: -1.5707963267949 rad\r
+ pos: 9.5,-9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 413\r
+ components:\r
+ - anchored: False\r
+ rot: -1.5707963267949 rad\r
+ pos: 9.5,-10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 414\r
+ components:\r
+ - anchored: False\r
+ rot: -1.5707963267949 rad\r
+ pos: 9.5,-11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 415\r
+ components:\r
+ - anchored: False\r
+ rot: -1.5707963267949 rad\r
+ pos: 8.5,-8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 438\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: -9.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 442\r
+ components:\r
+ - pos: -9.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 514\r
+ components:\r
+ - pos: -10.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 541\r
+ components:\r
+ - pos: -11.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 542\r
+ components:\r
+ - pos: -9.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 695\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: -8.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: Chair\r
+ entities:\r
+ - uid: 580\r
+ components:\r
+ - rot: 1.5707963267948966 rad\r
+ pos: 14.5,6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 581\r
+ components:\r
+ - rot: 1.5707963267948966 rad\r
+ pos: 14.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 582\r
+ components:\r
+ - rot: 1.5707963267948966 rad\r
+ pos: 14.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: ChairOfficeDark\r
+ entities:\r
+ - uid: 380\r
+ components:\r
+ - rot: 3.1415926535897967 rad\r
+ pos: 0.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: ChairOfficeLight\r
+ entities:\r
+ - uid: 576\r
+ components:\r
+ - rot: 4.71238898038469 rad\r
+ pos: 19.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 577\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: 20.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 578\r
+ components:\r
+ - rot: 4.71238898038469 rad\r
+ pos: 23.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 579\r
+ components:\r
+ - pos: 24.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: chem_master\r
+ entities:\r
+ - uid: 311\r
+ components:\r
+ - pos: 8.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: ChemDispenser\r
+ entities:\r
+ - uid: 583\r
+ components:\r
+ - pos: 23.5,9.5\r
+ parent: 179\r
+ type: Transform\r
+ - containers:\r
+ ReagentDispenser-beaker: !type:ContainerSlot\r
+ showEnts: False\r
+ occludes: True\r
+ ent: null\r
+ machine_board: !type:Container\r
+ showEnts: False\r
+ occludes: True\r
+ ents: []\r
+ machine_parts: !type:Container\r
+ showEnts: False\r
+ occludes: True\r
+ ents: []\r
+ beakerSlot: !type:ContainerSlot\r
+ showEnts: False\r
+ occludes: True\r
+ ent: null\r
+ type: ContainerContainer\r
+ - uid: 750\r
+ components:\r
+ - pos: 7.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: ChemicalPayload\r
+ entities:\r
+ - uid: 432\r
+ components:\r
+ - pos: 6.4651074,9.828774\r
+ parent: 179\r
+ type: Transform\r
+- proto: ChemMasterMachineCircuitboard\r
+ entities:\r
+ - uid: 718\r
+ components:\r
+ - pos: -4.5458,10.514079\r
+ parent: 179\r
+ type: Transform\r
+- proto: CircuitImprinter\r
+ entities:\r
+ - uid: 332\r
+ components:\r
+ - pos: -6.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: ClosetEmergencyFilledRandom\r
+ entities:\r
+ - uid: 319\r
+ components:\r
+ - pos: 1.5,-10.5\r
+ parent: 179\r
+ type: Transform\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+ - uid: 322\r
+ components:\r
+ - pos: 0.5,-10.5\r
+ parent: 179\r
+ type: Transform\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+- proto: ClosetToolFilled\r
+ entities:\r
+ - uid: 524\r
+ components:\r
+ - pos: -11.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+ - uid: 525\r
+ components:\r
+ - pos: -11.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+ - uid: 526\r
+ components:\r
+ - pos: -11.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+ - uid: 527\r
+ components:\r
+ - pos: -11.5,-2.5\r
+ parent: 179\r
+ type: Transform\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+- proto: ClothingBeltUtilityFilled\r
+ entities:\r
+ - uid: 427\r
+ components:\r
+ - pos: -1.895102,-10.33495\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 428\r
+ components:\r
+ - pos: -1.770102,-10.63182\r
+ parent: 179\r
+ type: Transform\r
+- proto: ClothingHandsGlovesColorYellow\r
+ entities:\r
+ - uid: 454\r
+ components:\r
+ - pos: -0.78741443,4.322194\r
+ parent: 179\r
+ type: Transform\r
+- proto: ClothingHeadHatWelding\r
+ entities:\r
+ - uid: 344\r
+ components:\r
+ - pos: 0.7198646,4.374314\r
+ parent: 179\r
+ type: Transform\r
+- proto: ClothingMaskBreath\r
+ entities:\r
+ - uid: 955\r
+ components:\r
+ - pos: -10.595239,6.1907988\r
+ parent: 179\r
+ type: Transform\r
+- proto: ClothingMaskGas\r
+ entities:\r
+ - uid: 425\r
+ components:\r
+ - pos: -0.2880585,-10.69432\r
+ parent: 179\r
+ type: Transform\r
+- proto: ClothingOuterHardsuitAtmos\r
+ entities:\r
+ - uid: 270\r
+ components:\r
+ - pos: -10.5426235,5.472399\r
+ parent: 179\r
+ type: Transform\r
+- proto: ClothingOuterVest\r
+ entities:\r
+ - uid: 426\r
+ components:\r
+ - pos: -0.9130585,-10.66307\r
+ parent: 179\r
+ type: Transform\r
+- proto: ClothingShoesBootsMag\r
+ entities:\r
+ - uid: 725\r
+ components:\r
+ - pos: 0.47880077,8.073378\r
+ parent: 179\r
+ type: Transform\r
+- proto: ClothingUniformJumpsuitEngineering\r
+ entities:\r
+ - uid: 424\r
+ components:\r
+ - pos: -0.6474335,-10.27245\r
+ parent: 179\r
+ type: Transform\r
+- proto: ClownPDA\r
+ entities:\r
+ - uid: 91\r
+ components:\r
+ - pos: -15.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 762\r
+ components:\r
+ - pos: -14.5,1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 864\r
+ components:\r
+ - pos: -14.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 912\r
+ components:\r
+ - pos: -15.5,1.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: ComputerAnalysisConsole\r
+ entities:\r
+ - uid: 1083\r
+ components:\r
+ - rot: 1.5707963267948966 rad\r
+ pos: 15.5,23.5\r
+ parent: 179\r
+ type: Transform\r
+ - linkedPorts:\r
+ 1078:\r
+ - ArtifactAnalyzerSender: ArtifactAnalyzerReceiver\r
+ type: DeviceLinkSource\r
+- proto: ComputerCargoOrders\r
+ entities:\r
+ - uid: 326\r
+ components:\r
+ - pos: 0.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 996\r
+ components:\r
+ - pos: -1.5,-11.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: ComputerCargoShuttle\r
+ entities:\r
+ - uid: 995\r
+ components:\r
+ - pos: 0.5,-11.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: ComputerMedicalRecords\r
+ entities:\r
+ - uid: 152\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: 22.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 591\r
+ components:\r
+ - pos: 21.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: ComputerResearchAndDevelopment\r
+ entities:\r
+ - uid: 88\r
+ components:\r
+ - rot: 1.5707963267948966 rad\r
+ pos: 8.5,19.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: ComputerShuttleCargo\r
+ entities:\r
+ - uid: 994\r
+ components:\r
+ - pos: -0.5,-11.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: ComputerTechnologyDiskTerminal\r
+ entities:\r
+ - uid: 1088\r
+ components:\r
+ - pos: 13.5,16.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: ConveyorBelt\r
+ entities:\r
+ - uid: 195\r
+ components:\r
+ - pos: -2.5,-15.5\r
+ parent: 179\r
+ type: Transform\r
+ - links:\r
+ - 699\r
+ type: DeviceLinkSink\r
+ - uid: 259\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: 1.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+ - links:\r
+ - 983\r
+ type: DeviceLinkSink\r
+ - uid: 463\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: 1.5,-16.5\r
+ parent: 179\r
+ type: Transform\r
+ - links:\r
+ - 983\r
+ type: DeviceLinkSink\r
+ - uid: 677\r
+ components:\r
+ - pos: -2.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 716\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: -1.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - links:\r
+ - 722\r
+ type: DeviceLinkSink\r
+ - uid: 720\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: -0.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - links:\r
+ - 722\r
+ type: DeviceLinkSink\r
+ - uid: 721\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 0.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - links:\r
+ - 722\r
+ type: DeviceLinkSink\r
+ - uid: 985\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: 1.5,-13.5\r
+ parent: 179\r
+ type: Transform\r
+ - links:\r
+ - 983\r
+ type: DeviceLinkSink\r
+ - uid: 989\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: 1.5,-15.5\r
+ parent: 179\r
+ type: Transform\r
+ - links:\r
+ - 983\r
+ type: DeviceLinkSink\r
+ - uid: 990\r
+ components:\r
+ - pos: -2.5,-13.5\r
+ parent: 179\r
+ type: Transform\r
+ - links:\r
+ - 699\r
+ type: DeviceLinkSink\r
+ - uid: 991\r
+ components:\r
+ - pos: -2.5,-16.5\r
+ parent: 179\r
+ type: Transform\r
+ - links:\r
+ - 699\r
+ type: DeviceLinkSink\r
+- proto: CrateEngineeringToolbox\r
+ entities:\r
+ - uid: 692\r
+ components:\r
+ - pos: -0.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+- proto: CrateGeneric\r
+ entities:\r
+ - uid: 266\r
+ components:\r
+ - pos: 5.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+- proto: CrateHydroponicsSeeds\r
+ entities:\r
+ - uid: 754\r
+ components:\r
+ - pos: 2.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+- proto: CrateHydroponicsTools\r
+ entities:\r
+ - uid: 755\r
+ components:\r
+ - pos: 2.5,13.5\r
+ parent: 179\r
+ type: Transform\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+- proto: CrateMedical\r
+ entities:\r
+ - uid: 131\r
+ components:\r
+ - pos: 31.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+ - uid: 132\r
+ components:\r
+ - pos: 32.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+- proto: Crowbar\r
+ entities:\r
+ - uid: 147\r
+ components:\r
+ - pos: -2.172831,4.5306726\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 423\r
+ components:\r
+ - pos: -2.861032,-5.524786\r
+ parent: 179\r
+ type: Transform\r
+- proto: DebugBatteryDischarger\r
+ entities:\r
+ - uid: 711\r
+ components:\r
+ - pos: 0.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: DisposalPipe\r
+ entities:\r
+ - uid: 717\r
+ components:\r
+ - rot: 1.5707963267948966 rad\r
+ pos: -0.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: DisposalTrunk\r
+ entities:\r
+ - uid: 285\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 0.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 715\r
+ components:\r
+ - rot: 1.5707963267948966 rad\r
+ pos: -1.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: DisposalUnit\r
+ entities:\r
+ - uid: 719\r
+ components:\r
+ - pos: -1.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: DrinkBeerglass\r
+ entities:\r
+ - uid: 688\r
+ components:\r
+ - pos: 3.1981986,5.733985\r
+ parent: 179\r
+ type: Transform\r
+- proto: DrinkColaCan\r
+ entities:\r
+ - uid: 690\r
+ components:\r
+ - pos: 3.8231986,6.150942\r
+ parent: 179\r
+ type: Transform\r
+- proto: Dropper\r
+ entities:\r
+ - uid: 730\r
+ components:\r
+ - pos: 5.892191,9.4118185\r
+ parent: 179\r
+ type: Transform\r
+- proto: EmergencyOxygenTankFilled\r
+ entities:\r
+ - uid: 956\r
+ components:\r
+ - pos: -10.505015,6.711994\r
+ parent: 179\r
+ type: Transform\r
+- proto: ExGrenade\r
+ entities:\r
+ - uid: 433\r
+ components:\r
+ - pos: -3.7704864,-1.6163371\r
+ parent: 179\r
+ type: Transform\r
+- proto: ExplosivePayload\r
+ entities:\r
+ - uid: 668\r
+ components:\r
+ - pos: 6.829691,9.4118185\r
+ parent: 179\r
+ type: Transform\r
+- proto: FaxMachineCaptain\r
+ entities:\r
+ - uid: 967\r
+ components:\r
+ - pos: 9.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: FaxMachineCentcom\r
+ entities:\r
+ - uid: 968\r
+ components:\r
+ - pos: 11.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: FaxMachineSyndie\r
+ entities:\r
+ - uid: 969\r
+ components:\r
+ - pos: 13.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: FemtoManipulatorStockPart\r
+ entities:\r
+ - uid: 712\r
+ components:\r
+ - pos: -6.7434506,8.817795\r
+ parent: 179\r
+ type: Transform\r
+- proto: FireExtinguisher\r
+ entities:\r
+ - uid: 323\r
+ components:\r
+ - pos: -1.297692,-5.396082\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 868\r
+ components:\r
+ - pos: -14.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: FlashlightLantern\r
+ entities:\r
+ - uid: 421\r
+ components:\r
+ - pos: -1.934832,-5.154238\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 422\r
+ components:\r
+ - pos: 1.1350493,8.198464\r
+ parent: 179\r
+ type: Transform\r
+- proto: FloorLavaEntity\r
+ entities:\r
+ - uid: 134\r
+ components:\r
+ - pos: -13.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 135\r
+ components:\r
+ - pos: -14.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 141\r
+ components:\r
+ - pos: -13.5,-2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 469\r
+ components:\r
+ - pos: -14.5,-2.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: FloorWaterEntity\r
+ entities:\r
+ - uid: 136\r
+ components:\r
+ - pos: -12.5,-2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 137\r
+ components:\r
+ - pos: -12.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: FoodApple\r
+ entities:\r
+ - uid: 16\r
+ components:\r
+ - pos: 3.9853282,16.430082\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 849\r
+ components:\r
+ - pos: 3.7249117,16.242453\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 866\r
+ components:\r
+ - pos: 3.651995,16.55517\r
+ parent: 179\r
+ type: Transform\r
+- proto: FoodBurgerBacon\r
+ entities:\r
+ - uid: 689\r
+ components:\r
+ - pos: 3.3844857,6.0702233\r
+ parent: 179\r
+ type: Transform\r
+- proto: FoodCarrot\r
+ entities:\r
+ - uid: 850\r
+ components:\r
+ - pos: 3.6023045,15.67151\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 851\r
+ components:\r
+ - pos: 3.620745,15.015423\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 863\r
+ components:\r
+ - pos: 3.620745,14.389988\r
+ parent: 179\r
+ type: Transform\r
+- proto: FoodPizzaPineapple\r
+ entities:\r
+ - uid: 687\r
+ components:\r
+ - pos: 3.5215416,6.799056\r
+ parent: 179\r
+ type: Transform\r
+- proto: GasAnalyzer\r
+ entities:\r
+ - uid: 876\r
+ components:\r
+ - pos: 4.4732866,-0.48882532\r
+ parent: 179\r
+ type: Transform\r
+- proto: GasFilter\r
+ entities:\r
+ - uid: 480\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 3.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: GasMixer\r
+ entities:\r
+ - uid: 747\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 3.5,-2.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: GasOutletInjector\r
+ entities:\r
+ - uid: 429\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 6.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: GasPipeBend\r
+ entities:\r
+ - uid: 727\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 5.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+- proto: GasPipeFourway\r
+ entities:\r
+ - uid: 728\r
+ components:\r
+ - pos: 5.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+- proto: GasPipeStraight\r
+ entities:\r
+ - uid: 749\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 5.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+- proto: GasPipeTJunction\r
+ entities:\r
+ - uid: 748\r
+ components:\r
+ - pos: 5.5,-2.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: True\r
+ type: AmbientSound\r
+- proto: GasPort\r
+ entities:\r
+ - uid: 457\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 6.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: GasPressurePump\r
+ entities:\r
+ - uid: 171\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 4.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: GasValve\r
+ entities:\r
+ - uid: 168\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 4.5,-2.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: GasVentPump\r
+ entities:\r
+ - uid: 729\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 6.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: False\r
+ type: AmbientSound\r
+- proto: GasVentScrubber\r
+ entities:\r
+ - uid: 452\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 6.5,-2.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: False\r
+ type: AmbientSound\r
+- proto: GasVolumePump\r
+ entities:\r
+ - uid: 160\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 4.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: GeigerCounter\r
+ entities:\r
+ - uid: 759\r
+ components:\r
+ - pos: 1.760596,4.5697265\r
+ parent: 179\r
+ type: Transform\r
+- proto: GravityGenerator\r
+ entities:\r
+ - uid: 744\r
+ components:\r
+ - pos: 6.5,6.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: Grille\r
+ entities:\r
+ - uid: 108\r
+ components:\r
+ - rot: 1.5707963267948966 rad\r
+ pos: 14.5,23.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 986\r
+ components:\r
+ - pos: -0.5,-16.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 987\r
+ components:\r
+ - pos: -0.5,-15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 988\r
+ components:\r
+ - pos: -0.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1007\r
+ components:\r
+ - pos: -3.5,-16.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1008\r
+ components:\r
+ - pos: -3.5,-15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1009\r
+ components:\r
+ - pos: -3.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1010\r
+ components:\r
+ - pos: 2.5,-16.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1011\r
+ components:\r
+ - pos: 2.5,-15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1012\r
+ components:\r
+ - pos: 2.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1089\r
+ components:\r
+ - pos: 8.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1090\r
+ components:\r
+ - pos: 9.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1091\r
+ components:\r
+ - pos: 10.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1092\r
+ components:\r
+ - pos: 10.5,16.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: Handcuffs\r
+ entities:\r
+ - uid: 331\r
+ components:\r
+ - pos: -3.5805476,0.74100244\r
+ parent: 179\r
+ type: Transform\r
+- proto: HandheldHealthAnalyzer\r
+ entities:\r
+ - uid: 513\r
+ components:\r
+ - pos: -5.9808183,-3.6614444\r
+ parent: 179\r
+ type: Transform\r
+- proto: HoloFan\r
+ entities:\r
+ - uid: 142\r
+ components:\r
+ - pos: -8.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+ missingComponents:\r
+ - TimedDespawn\r
+ - uid: 901\r
+ components:\r
+ - pos: -10.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+ missingComponents:\r
+ - TimedDespawn\r
+ - uid: 902\r
+ components:\r
+ - pos: -9.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+ missingComponents:\r
+ - TimedDespawn\r
+- proto: HolosignWetFloor\r
+ entities:\r
+ - uid: 848\r
+ components:\r
+ - pos: -13.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - fixtures: {}\r
+ type: Fixtures\r
+ missingComponents:\r
+ - TimedDespawn\r
+ - uid: 911\r
+ components:\r
+ - pos: -13.5,1.5\r
+ parent: 179\r
+ type: Transform\r
+ - fixtures: {}\r
+ type: Fixtures\r
+ missingComponents:\r
+ - TimedDespawn\r
+- proto: hydroponicsTray\r
+ entities:\r
+ - uid: 756\r
+ components:\r
+ - pos: 2.5,14.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 757\r
+ components:\r
+ - pos: 2.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: KitchenReagentGrinder\r
+ entities:\r
+ - uid: 731\r
+ components:\r
+ - pos: 8.5,9.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: LargeBeaker\r
+ entities:\r
+ - uid: 210\r
+ components:\r
+ - pos: 4.3272614,9.338851\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 253\r
+ components:\r
+ - pos: 23.494947,7.0422435\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 402\r
+ components:\r
+ - pos: 23.510572,7.7141185\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 737\r
+ components:\r
+ - pos: 4.2969,9.828774\r
+ parent: 179\r
+ type: Transform\r
+- proto: LedLightTube\r
+ entities:\r
+ - uid: 481\r
+ components:\r
+ - pos: -3.511025,-10.35149\r
+ parent: 179\r
+ type: Transform\r
+- proto: LockerBotanistFilled\r
+ entities:\r
+ - uid: 869\r
+ components:\r
+ - pos: 2.5,16.5\r
+ parent: 179\r
+ type: Transform\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+- proto: LockerChemistry\r
+ entities:\r
+ - uid: 127\r
+ components:\r
+ - pos: 27.5,6.5\r
+ parent: 179\r
+ type: Transform\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+- proto: LockerChemistryFilled\r
+ entities:\r
+ - uid: 297\r
+ components:\r
+ - pos: 7.5,9.5\r
+ parent: 179\r
+ type: Transform\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+- proto: LockerChiefEngineerFilled\r
+ entities:\r
+ - uid: 447\r
+ components:\r
+ - pos: 7.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+- proto: LockerElectricalSuppliesFilled\r
+ entities:\r
+ - uid: 444\r
+ components:\r
+ - pos: 7.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+- proto: LockerEngineerFilled\r
+ entities:\r
+ - uid: 490\r
+ components:\r
+ - pos: 7.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+- proto: LockerMedical\r
+ entities:\r
+ - uid: 128\r
+ components:\r
+ - pos: 27.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+ - uid: 129\r
+ components:\r
+ - pos: 29.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+ - uid: 130\r
+ components:\r
+ - pos: 30.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+- proto: LockerMedicalFilled\r
+ entities:\r
+ - uid: 865\r
+ components:\r
+ - pos: -6.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+- proto: LockerMedicineFilled\r
+ entities:\r
+ - uid: 562\r
+ components:\r
+ - pos: -5.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+- proto: LockerSalvageSpecialistFilled\r
+ entities:\r
+ - uid: 493\r
+ components:\r
+ - pos: -10.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - locked: False\r
+ type: Lock\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+- proto: LockerSyndicatePersonalFilled\r
+ entities:\r
+ - uid: 909\r
+ components:\r
+ - pos: -7.5,1.5\r
+ parent: 179\r
+ type: Transform\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+- proto: LockerWardenFilled\r
+ entities:\r
+ - uid: 873\r
+ components:\r
+ - pos: -8.5,1.5\r
+ parent: 179\r
+ type: Transform\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+- proto: LockerWeldingSuppliesFilled\r
+ entities:\r
+ - uid: 871\r
+ components:\r
+ - pos: 7.5,1.5\r
+ parent: 179\r
+ type: Transform\r
+ - air:\r
+ volume: 200\r
+ immutable: False\r
+ temperature: 293.14957\r
+ moles:\r
+ - 2.9923203\r
+ - 11.2568245\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ - 0\r
+ type: EntityStorage\r
+- proto: MachineAnomalyGenerator\r
+ entities:\r
+ - uid: 1071\r
+ components:\r
+ - pos: 16.5,25.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: False\r
+ type: AmbientSound\r
+- proto: MachineAnomalyVessel\r
+ entities:\r
+ - uid: 1087\r
+ components:\r
+ - pos: 15.5,19.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: MachineArtifactAnalyzer\r
+ entities:\r
+ - uid: 1078\r
+ components:\r
+ - rot: 1.5707963267948966 rad\r
+ pos: 12.5,24.5\r
+ parent: 179\r
+ type: Transform\r
+ - links:\r
+ - 1083\r
+ type: DeviceLinkSink\r
+- proto: MachineFrame\r
+ entities:\r
+ - uid: 533\r
+ components:\r
+ - pos: -5.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: MedicalScanner\r
+ entities:\r
+ - uid: 592\r
+ components:\r
+ - pos: 18.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+ - containers:\r
+ MedicalScanner-bodyContainer: !type:ContainerSlot\r
+ showEnts: False\r
+ occludes: True\r
+ ent: null\r
+ machine_board: !type:Container\r
+ showEnts: False\r
+ occludes: True\r
+ ents: []\r
+ machine_parts: !type:Container\r
+ showEnts: False\r
+ occludes: True\r
+ ents: []\r
+ scanner-bodyContainer: !type:ContainerSlot\r
+ showEnts: False\r
+ occludes: True\r
+ ent: null\r
+ type: ContainerContainer\r
+ - uid: 593\r
+ components:\r
+ - pos: 18.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - containers:\r
+ MedicalScanner-bodyContainer: !type:ContainerSlot\r
+ showEnts: False\r
+ occludes: True\r
+ ent: null\r
+ machine_board: !type:Container\r
+ showEnts: False\r
+ occludes: True\r
+ ents: []\r
+ machine_parts: !type:Container\r
+ showEnts: False\r
+ occludes: True\r
+ ents: []\r
+ scanner-bodyContainer: !type:ContainerSlot\r
+ showEnts: False\r
+ occludes: True\r
+ ent: null\r
+ type: ContainerContainer\r
+- proto: MedkitFilled\r
+ entities:\r
+ - uid: 153\r
+ components:\r
+ - pos: 13.632214,1.5673001\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 154\r
+ components:\r
+ - pos: 13.460339,0.6141751\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 321\r
+ components:\r
+ - pos: 3.8440318,4.425983\r
+ parent: 179\r
+ type: Transform\r
+- proto: MicroManipulatorStockPart\r
+ entities:\r
+ - uid: 484\r
+ components:\r
+ - pos: -5.5039105,8.838643\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 959\r
+ components:\r
+ - pos: -4.752078,10.904018\r
+ parent: 179\r
+ type: Transform\r
+- proto: ModularGrenade\r
+ entities:\r
+ - uid: 435\r
+ components:\r
+ - pos: 6.829691,9.860046\r
+ parent: 179\r
+ type: Transform\r
+- proto: MopBucket\r
+ entities:\r
+ - uid: 696\r
+ components:\r
+ - pos: 7.5,16.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: MopItem\r
+ entities:\r
+ - uid: 328\r
+ components:\r
+ - pos: 7.6382103,16.08618\r
+ parent: 179\r
+ type: Transform\r
+ - solutions:\r
+ absorbed:\r
+ temperature: 293.15\r
+ canMix: False\r
+ canReact: True\r
+ maxVol: 50\r
+ reagents:\r
+ - data: null\r
+ ReagentId: Water\r
+ Quantity: 25\r
+ type: SolutionContainerManager\r
+- proto: Multitool\r
+ entities:\r
+ - uid: 307\r
+ components:\r
+ - pos: -1.249865,-10.43489\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 430\r
+ components:\r
+ - pos: -0.6298993,4.7431083\r
+ parent: 179\r
+ type: Transform\r
+ - devices:\r
+ 'UID: 31739': 801\r
+ type: NetworkConfigurator\r
+- proto: NanoManipulatorStockPart\r
+ entities:\r
+ - uid: 456\r
+ components:\r
+ - pos: -5.920577,8.817795\r
+ parent: 179\r
+ type: Transform\r
+- proto: NitrogenCanister\r
+ entities:\r
+ - uid: 459\r
+ components:\r
+ - pos: 7.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: Ointment\r
+ entities:\r
+ - uid: 148\r
+ components:\r
+ - pos: 18.77326,6.653532\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 149\r
+ components:\r
+ - pos: 18.49201,6.059782\r
+ parent: 179\r
+ type: Transform\r
+- proto: OxygenCanister\r
+ entities:\r
+ - uid: 340\r
+ components:\r
+ - pos: 7.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: PaperBin10\r
+ entities:\r
+ - uid: 977\r
+ components:\r
+ - pos: 10.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: PartRodMetal\r
+ entities:\r
+ - uid: 133\r
+ components:\r
+ - pos: -3.4717777,7.672426\r
+ parent: 179\r
+ type: Transform\r
+- proto: Pen\r
+ entities:\r
+ - uid: 978\r
+ components:\r
+ - pos: 10.893699,12.7794075\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 979\r
+ components:\r
+ - pos: 10.862433,12.602201\r
+ parent: 179\r
+ type: Transform\r
+- proto: PicoManipulatorStockPart\r
+ entities:\r
+ - uid: 455\r
+ components:\r
+ - pos: -6.337244,8.838643\r
+ parent: 179\r
+ type: Transform\r
+- proto: PlasmaCanister\r
+ entities:\r
+ - uid: 461\r
+ components:\r
+ - pos: 7.5,-2.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: PlasticFlapsAirtightClear\r
+ entities:\r
+ - uid: 997\r
+ components:\r
+ - pos: -2.5,-16.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 998\r
+ components:\r
+ - pos: -2.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 999\r
+ components:\r
+ - pos: 1.5,-16.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1000\r
+ components:\r
+ - pos: 1.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: PortableGeneratorSuperPacman\r
+ entities:\r
+ - uid: 1016\r
+ components:\r
+ - pos: -6.5,-11.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: PowerCellHigh\r
+ entities:\r
+ - uid: 567\r
+ components:\r
+ - pos: -4.76583,8.265328\r
+ parent: 179\r
+ type: Transform\r
+- proto: PowerCellHyper\r
+ entities:\r
+ - uid: 703\r
+ components:\r
+ - pos: -4.3179135,8.275752\r
+ parent: 179\r
+ type: Transform\r
+- proto: PowerCellMedium\r
+ entities:\r
+ - uid: 186\r
+ components:\r
+ - pos: -2.67511,-10.351\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 187\r
+ components:\r
+ - pos: -2.55011,-10.6635\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 360\r
+ components:\r
+ - pos: -3.7970803,8.275752\r
+ parent: 179\r
+ type: Transform\r
+- proto: PowerCellRecharger\r
+ entities:\r
+ - uid: 709\r
+ components:\r
+ - pos: -1.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: PowerCellSmall\r
+ entities:\r
+ - uid: 705\r
+ components:\r
+ - pos: -3.3182633,8.234056\r
+ parent: 179\r
+ type: Transform\r
+- proto: Poweredlight\r
+ entities:\r
+ - uid: 93\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: 31.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - powerLoad: 0\r
+ type: ApcPowerReceiver\r
+ - uid: 536\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: -11.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - powerLoad: 0\r
+ type: ApcPowerReceiver\r
+ - uid: 660\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 29.5,1.5\r
+ parent: 179\r
+ type: Transform\r
+ - powerLoad: 0\r
+ type: ApcPowerReceiver\r
+ - uid: 661\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 27.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+ - powerLoad: 0\r
+ type: ApcPowerReceiver\r
+ - uid: 663\r
+ components:\r
+ - pos: 22.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - powerLoad: 0\r
+ type: ApcPowerReceiver\r
+ - uid: 666\r
+ components:\r
+ - rot: 1.5707963267948966 rad\r
+ pos: 2.5,23.5\r
+ parent: 179\r
+ type: Transform\r
+ - powerLoad: 0\r
+ type: ApcPowerReceiver\r
+ - uid: 670\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 13.5,18.5\r
+ parent: 179\r
+ type: Transform\r
+ - powerLoad: 0\r
+ type: ApcPowerReceiver\r
+ - uid: 673\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: -11.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - powerLoad: 0\r
+ type: ApcPowerReceiver\r
+ - uid: 674\r
+ components:\r
+ - rot: 1.5707963267948966 rad\r
+ pos: -15.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - powerLoad: 0\r
+ type: ApcPowerReceiver\r
+ - uid: 675\r
+ components:\r
+ - rot: 1.5707963267948966 rad\r
+ pos: -15.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - powerLoad: 0\r
+ type: ApcPowerReceiver\r
+ - uid: 676\r
+ components:\r
+ - rot: 1.5707963267948966 rad\r
+ pos: -6.5,-10.5\r
+ parent: 179\r
+ type: Transform\r
+ - powerLoad: 0\r
+ type: ApcPowerReceiver\r
+ - uid: 678\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 7.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+ - powerLoad: 0\r
+ type: ApcPowerReceiver\r
+ - uid: 680\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: 16.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - powerLoad: 0\r
+ type: ApcPowerReceiver\r
+ - uid: 681\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: 23.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - powerLoad: 0\r
+ type: ApcPowerReceiver\r
+ - uid: 682\r
+ components:\r
+ - pos: 13.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - powerLoad: 0\r
+ type: ApcPowerReceiver\r
+ - uid: 683\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: 17.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - powerLoad: 0\r
+ type: ApcPowerReceiver\r
+ - uid: 1075\r
+ components:\r
+ - pos: 16.5,27.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: False\r
+ type: AmbientSound\r
+ - uid: 1076\r
+ components:\r
+ - rot: 1.5707963267948966 rad\r
+ pos: 15.5,22.5\r
+ parent: 179\r
+ type: Transform\r
+ - enabled: False\r
+ type: AmbientSound\r
+- proto: PoweredSmallLight\r
+ entities:\r
+ - uid: 163\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 6.5,26.5\r
+ parent: 179\r
+ type: Transform\r
+ - powerLoad: 0\r
+ type: ApcPowerReceiver\r
+ - uid: 166\r
+ components:\r
+ - rot: 1.5707963267948966 rad\r
+ pos: 11.5,24.5\r
+ parent: 179\r
+ type: Transform\r
+ - powerLoad: 0\r
+ type: ApcPowerReceiver\r
+ - uid: 167\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 17.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - powerLoad: 0\r
+ type: ApcPowerReceiver\r
+ - uid: 388\r
+ components:\r
+ - pos: 0.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - powerLoad: 0\r
+ type: ApcPowerReceiver\r
+ - uid: 417\r
+ components:\r
+ - pos: -4.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - powerLoad: 0\r
+ type: ApcPowerReceiver\r
+ - uid: 483\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 4.5,-9.5\r
+ parent: 179\r
+ type: Transform\r
+ - powerLoad: 0\r
+ type: ApcPowerReceiver\r
+ - uid: 534\r
+ components:\r
+ - rot: 1.5707963267948966 rad\r
+ pos: -9.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - powerLoad: 0\r
+ type: ApcPowerReceiver\r
+- proto: Protolathe\r
+ entities:\r
+ - uid: 12\r
+ components:\r
+ - pos: 13.5,21.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 384\r
+ components:\r
+ - pos: -6.5,6.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: QuadraticCapacitorStockPart\r
+ entities:\r
+ - uid: 704\r
+ components:\r
+ - pos: -4.8741612,8.817795\r
+ parent: 179\r
+ type: Transform\r
+- proto: Railing\r
+ entities:\r
+ - uid: 665\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: -15.5,9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 927\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: -14.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 928\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: -14.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 929\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: -14.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 930\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: -14.5,13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 931\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: -14.5,14.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 932\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: -14.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 933\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: -14.5,16.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 934\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: -13.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 935\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: -12.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 936\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: -11.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 937\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: -10.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 938\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: -9.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 939\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: -8.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 940\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: -7.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 941\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: -6.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 942\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: -5.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 943\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: -4.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 944\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: -3.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 945\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: -2.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 946\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: -1.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 947\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: -0.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 948\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: 0.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: RailingCornerSmall\r
+ entities:\r
+ - uid: 919\r
+ components:\r
+ - pos: -14.5,9.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: ReinforcedWindow\r
+ entities:\r
+ - uid: 1084\r
+ components:\r
+ - rot: 1.5707963267948966 rad\r
+ pos: 14.5,23.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1093\r
+ components:\r
+ - pos: 8.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1094\r
+ components:\r
+ - pos: 9.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1095\r
+ components:\r
+ - pos: 10.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1096\r
+ components:\r
+ - pos: 10.5,16.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: ResearchAndDevelopmentServer\r
+ entities:\r
+ - uid: 17\r
+ components:\r
+ - pos: 8.5,18.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: ResearchDiskDebug\r
+ entities:\r
+ - uid: 54\r
+ components:\r
+ - pos: 9.532393,18.446417\r
+ parent: 179\r
+ type: Transform\r
+- proto: RubberStampCaptain\r
+ entities:\r
+ - uid: 982\r
+ components:\r
+ - pos: 12.800895,12.664745\r
+ parent: 179\r
+ type: Transform\r
+- proto: RubberStampCentcom\r
+ entities:\r
+ - uid: 980\r
+ components:\r
+ - pos: 12.186007,12.716865\r
+ parent: 179\r
+ type: Transform\r
+- proto: RubberStampSyndicate\r
+ entities:\r
+ - uid: 981\r
+ components:\r
+ - pos: 12.436131,12.550082\r
+ parent: 179\r
+ type: Transform\r
+- proto: Screwdriver\r
+ entities:\r
+ - uid: 431\r
+ components:\r
+ - pos: -1.235331,4.739151\r
+ parent: 179\r
+ type: Transform\r
+- proto: SeedExtractor\r
+ entities:\r
+ - uid: 65\r
+ components:\r
+ - pos: 2.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: SheetGlass\r
+ entities:\r
+ - uid: 354\r
+ components:\r
+ - pos: 8.57603,21.566113\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 479\r
+ components:\r
+ - pos: -5.13758,7.5586076\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 529\r
+ components:\r
+ - pos: -15.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 564\r
+ components:\r
+ - pos: -15.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 565\r
+ components:\r
+ - pos: -15.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 566\r
+ components:\r
+ - pos: -15.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: SheetGlass1\r
+ entities:\r
+ - uid: 960\r
+ components:\r
+ - pos: -3.981244,10.799851\r
+ parent: 179\r
+ type: Transform\r
+- proto: SheetPGlass\r
+ entities:\r
+ - uid: 416\r
+ components:\r
+ - pos: -0.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: SheetPlasma\r
+ entities:\r
+ - uid: 1077\r
+ components:\r
+ - pos: 17.485096,24.503635\r
+ parent: 179\r
+ type: Transform\r
+- proto: SheetPlasteel\r
+ entities:\r
+ - uid: 478\r
+ components:\r
+ - pos: -4.0129576,7.6107273\r
+ parent: 179\r
+ type: Transform\r
+- proto: SheetPlastic\r
+ entities:\r
+ - uid: 79\r
+ components:\r
+ - pos: 8.951309,21.511908\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 181\r
+ components:\r
+ - pos: -4.54383,7.579455\r
+ parent: 179\r
+ type: Transform\r
+- proto: SheetRPGlass\r
+ entities:\r
+ - uid: 182\r
+ components:\r
+ - pos: -0.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: SheetSteel\r
+ entities:\r
+ - uid: 205\r
+ components:\r
+ - pos: -15.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 305\r
+ components:\r
+ - pos: 9.435405,21.503613\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 382\r
+ components:\r
+ - pos: -15.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 473\r
+ components:\r
+ - pos: -5.6834707,7.529523\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 543\r
+ components:\r
+ - pos: -15.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 544\r
+ components:\r
+ - pos: -15.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: SignalButton\r
+ entities:\r
+ - uid: 1013\r
+ components:\r
+ - pos: -4.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+ - linkedPorts:\r
+ 202:\r
+ - Pressed: Toggle\r
+ 984:\r
+ - Pressed: Toggle\r
+ type: DeviceLinkSource\r
+ - uid: 1014\r
+ components:\r
+ - pos: 3.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+ - linkedPorts:\r
+ 697:\r
+ - Pressed: Toggle\r
+ 698:\r
+ - Pressed: Toggle\r
+ type: DeviceLinkSource\r
+- proto: SignCargoDock\r
+ entities:\r
+ - uid: 1046\r
+ components:\r
+ - pos: 4.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: SmallLight\r
+ entities:\r
+ - uid: 1048\r
+ components:\r
+ - rot: 1.5707963267948966 rad\r
+ pos: -2.5,-15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1049\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 1.5,-15.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: SMESBasic\r
+ entities:\r
+ - uid: 1017\r
+ components:\r
+ - pos: -6.5,-12.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: soda_dispenser\r
+ entities:\r
+ - uid: 751\r
+ components:\r
+ - pos: 8.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: SpawnMobHuman\r
+ entities:\r
+ - uid: 138\r
+ components:\r
+ - pos: -6.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 139\r
+ components:\r
+ - pos: -6.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 140\r
+ components:\r
+ - pos: 3.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: SpawnMobMouse\r
+ entities:\r
+ - uid: 1050\r
+ components:\r
+ - pos: 3.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: SpawnPointCaptain\r
+ entities:\r
+ - uid: 954\r
+ components:\r
+ - pos: -4.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: SpawnPointLatejoin\r
+ entities:\r
+ - uid: 961\r
+ components:\r
+ - pos: -3.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: SpawnPointObserver\r
+ entities:\r
+ - uid: 679\r
+ components:\r
+ - pos: -3.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: SpawnVehicleJanicart\r
+ entities:\r
+ - uid: 904\r
+ components:\r
+ - pos: 5.5,16.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: Spear\r
+ entities:\r
+ - uid: 185\r
+ components:\r
+ - pos: -3.4579864,-1.9811735\r
+ parent: 179\r
+ type: Transform\r
+- proto: SprayBottleWater\r
+ entities:\r
+ - uid: 903\r
+ components:\r
+ - pos: 6.985283,16.424004\r
+ parent: 179\r
+ type: Transform\r
+- proto: Stimpack\r
+ entities:\r
+ - uid: 462\r
+ components:\r
+ - pos: 3.6877818,5.312015\r
+ parent: 179\r
+ type: Transform\r
+- proto: Stool\r
+ entities:\r
+ - uid: 383\r
+ components:\r
+ - pos: -1.5,-9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 387\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: -2.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: Stunbaton\r
+ entities:\r
+ - uid: 434\r
+ components:\r
+ - pos: -3.1734612,-2.6066077\r
+ parent: 179\r
+ type: Transform\r
+- proto: SubstationBasic\r
+ entities:\r
+ - uid: 1018\r
+ components:\r
+ - pos: -6.5,-13.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: SuperCapacitorStockPart\r
+ entities:\r
+ - uid: 296\r
+ components:\r
+ - pos: -4.3012447,8.817795\r
+ parent: 179\r
+ type: Transform\r
+- proto: Syringe\r
+ entities:\r
+ - uid: 460\r
+ components:\r
+ - pos: 3.2502818,4.5823417\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 738\r
+ components:\r
+ - pos: 5.767191,9.787079\r
+ parent: 179\r
+ type: Transform\r
+- proto: Table\r
+ entities:\r
+ - uid: 63\r
+ components:\r
+ - pos: 9.5,21.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 64\r
+ components:\r
+ - pos: 10.5,21.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 67\r
+ components:\r
+ - pos: 8.5,21.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 92\r
+ components:\r
+ - pos: 11.5,21.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 143\r
+ components:\r
+ - pos: 33.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 144\r
+ components:\r
+ - pos: 33.5,-2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 145\r
+ components:\r
+ - pos: 33.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 161\r
+ components:\r
+ - pos: 24.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 162\r
+ components:\r
+ - pos: 23.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 172\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 4.5,9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 180\r
+ components:\r
+ - pos: -4.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 262\r
+ components:\r
+ - pos: -3.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 263\r
+ components:\r
+ - pos: -2.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 264\r
+ components:\r
+ - pos: -1.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 265\r
+ components:\r
+ - pos: -0.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 267\r
+ components:\r
+ - pos: 23.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 268\r
+ components:\r
+ - pos: 23.5,6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 298\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 6.5,9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 299\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 5.5,9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 300\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: 8.5,9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 312\r
+ components:\r
+ - pos: -3.5,-10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 313\r
+ components:\r
+ - pos: -2.5,-10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 314\r
+ components:\r
+ - pos: -1.5,-10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 315\r
+ components:\r
+ - pos: -0.5,-10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 355\r
+ components:\r
+ - pos: -6.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 356\r
+ components:\r
+ - pos: -5.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 357\r
+ components:\r
+ - pos: -4.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 358\r
+ components:\r
+ - pos: -3.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 361\r
+ components:\r
+ - pos: -0.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 362\r
+ components:\r
+ - pos: 0.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 363\r
+ components:\r
+ - pos: 1.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 366\r
+ components:\r
+ - pos: -2.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 367\r
+ components:\r
+ - pos: -1.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 368\r
+ components:\r
+ - pos: -0.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 371\r
+ components:\r
+ - pos: 1.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 385\r
+ components:\r
+ - pos: -3.5,-2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 386\r
+ components:\r
+ - pos: -3.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 440\r
+ components:\r
+ - pos: 0.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 445\r
+ components:\r
+ - pos: -3.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 448\r
+ components:\r
+ - pos: 3.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 465\r
+ components:\r
+ - pos: 1.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 466\r
+ components:\r
+ - pos: 0.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 467\r
+ components:\r
+ - pos: -3.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 468\r
+ components:\r
+ - pos: -0.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 470\r
+ components:\r
+ - pos: -6.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 471\r
+ components:\r
+ - pos: -5.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 472\r
+ components:\r
+ - pos: -4.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 515\r
+ components:\r
+ - pos: -15.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 516\r
+ components:\r
+ - pos: -15.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 520\r
+ components:\r
+ - pos: -15.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 559\r
+ components:\r
+ - pos: -15.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 560\r
+ components:\r
+ - pos: -15.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 568\r
+ components:\r
+ - pos: 18.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 569\r
+ components:\r
+ - pos: 21.5,6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 570\r
+ components:\r
+ - pos: 20.5,6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 571\r
+ components:\r
+ - pos: 18.5,6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 572\r
+ components:\r
+ - pos: 19.5,6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 573\r
+ components:\r
+ - pos: 18.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 574\r
+ components:\r
+ - pos: 22.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 575\r
+ components:\r
+ - pos: 24.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 584\r
+ components:\r
+ - pos: 23.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 586\r
+ components:\r
+ - pos: 25.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 587\r
+ components:\r
+ - pos: 23.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 588\r
+ components:\r
+ - pos: 24.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 589\r
+ components:\r
+ - pos: 26.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 590\r
+ components:\r
+ - pos: 27.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 594\r
+ components:\r
+ - pos: 13.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 595\r
+ components:\r
+ - pos: 13.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 596\r
+ components:\r
+ - pos: 13.5,1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 684\r
+ components:\r
+ - pos: -3.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 685\r
+ components:\r
+ - pos: 3.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 686\r
+ components:\r
+ - pos: 3.5,6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 706\r
+ components:\r
+ - pos: -1.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 707\r
+ components:\r
+ - pos: -0.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 710\r
+ components:\r
+ - pos: 0.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: TableGlass\r
+ entities:\r
+ - uid: 964\r
+ components:\r
+ - pos: 9.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 965\r
+ components:\r
+ - pos: 11.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 966\r
+ components:\r
+ - pos: 13.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 975\r
+ components:\r
+ - pos: 10.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 976\r
+ components:\r
+ - pos: 12.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: TargetHuman\r
+ entities:\r
+ - uid: 159\r
+ components:\r
+ - pos: -6.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: TelecomServerFilled\r
+ entities:\r
+ - uid: 963\r
+ components:\r
+ - pos: -3.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: TimerTrigger\r
+ entities:\r
+ - uid: 482\r
+ components:\r
+ - pos: 6.413024,9.39097\r
+ parent: 179\r
+ type: Transform\r
+- proto: ToolboxElectricalFilled\r
+ entities:\r
+ - uid: 365\r
+ components:\r
+ - pos: 0.4993378,3.429311\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 419\r
+ components:\r
+ - pos: -0.8099712,-5.21454\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 420\r
+ components:\r
+ - pos: -0.5597038,-5.679647\r
+ parent: 179\r
+ type: Transform\r
+- proto: ToolboxMechanicalFilled\r
+ entities:\r
+ - uid: 364\r
+ components:\r
+ - pos: 1.452203,3.4605832\r
+ parent: 179\r
+ type: Transform\r
+- proto: ToyRubberDuck\r
+ entities:\r
+ - uid: 723\r
+ components:\r
+ - pos: -1.6653601,11.616664\r
+ parent: 179\r
+ type: Transform\r
+- proto: trayScanner\r
+ entities:\r
+ - uid: 758\r
+ components:\r
+ - pos: 1.354346,4.548879\r
+ parent: 179\r
+ type: Transform\r
+- proto: TwoWayLever\r
+ entities:\r
+ - uid: 699\r
+ components:\r
+ - pos: -3.5,-13.5\r
+ parent: 179\r
+ type: Transform\r
+ - linkedPorts:\r
+ 990:\r
+ - Left: Forward\r
+ - Right: Reverse\r
+ - Middle: Off\r
+ 195:\r
+ - Left: Forward\r
+ - Right: Reverse\r
+ - Middle: Off\r
+ 991:\r
+ - Left: Forward\r
+ - Right: Reverse\r
+ - Middle: Off\r
+ type: DeviceLinkSource\r
+ - uid: 722\r
+ components:\r
+ - pos: 1.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - linkedPorts:\r
+ 721:\r
+ - Left: Forward\r
+ - Right: Reverse\r
+ - Middle: Off\r
+ 720:\r
+ - Left: Forward\r
+ - Right: Reverse\r
+ - Middle: Off\r
+ 716:\r
+ - Left: Forward\r
+ - Right: Reverse\r
+ - Middle: Off\r
+ type: DeviceLinkSource\r
+ - uid: 983\r
+ components:\r
+ - pos: 2.5,-13.5\r
+ parent: 179\r
+ type: Transform\r
+ - linkedPorts:\r
+ 985:\r
+ - Left: Forward\r
+ - Right: Reverse\r
+ - Middle: Off\r
+ 259:\r
+ - Left: Forward\r
+ - Right: Reverse\r
+ - Middle: Off\r
+ 989:\r
+ - Left: Forward\r
+ - Right: Reverse\r
+ - Middle: Off\r
+ 463:\r
+ - Left: Forward\r
+ - Right: Reverse\r
+ - Middle: Off\r
+ type: DeviceLinkSource\r
+- proto: UnfinishedMachineFrame\r
+ entities:\r
+ - uid: 522\r
+ components:\r
+ - pos: -6.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: UniformPrinter\r
+ entities:\r
+ - uid: 443\r
+ components:\r
+ - pos: -7.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: VehicleKeyJanicart\r
+ entities:\r
+ - uid: 14\r
+ components:\r
+ - pos: 6.5,16.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: VendingMachineCigs\r
+ entities:\r
+ - uid: 870\r
+ components:\r
+ - flags: SessionSpecific\r
+ type: MetaData\r
+ - pos: -14.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: VendingMachineEngivend\r
+ entities:\r
+ - uid: 441\r
+ components:\r
+ - flags: SessionSpecific\r
+ type: MetaData\r
+ - pos: -11.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 523\r
+ components:\r
+ - flags: SessionSpecific\r
+ type: MetaData\r
+ - pos: -11.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: VendingMachineMedical\r
+ entities:\r
+ - uid: 156\r
+ components:\r
+ - flags: SessionSpecific\r
+ type: MetaData\r
+ - pos: 25.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 157\r
+ components:\r
+ - flags: SessionSpecific\r
+ type: MetaData\r
+ - pos: 27.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 158\r
+ components:\r
+ - flags: SessionSpecific\r
+ type: MetaData\r
+ - pos: 29.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 521\r
+ components:\r
+ - flags: SessionSpecific\r
+ type: MetaData\r
+ - pos: -12.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: VendingMachineSalvage\r
+ entities:\r
+ - uid: 485\r
+ components:\r
+ - flags: SessionSpecific\r
+ type: MetaData\r
+ - pos: -15.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: VendingMachineSec\r
+ entities:\r
+ - uid: 874\r
+ components:\r
+ - flags: SessionSpecific\r
+ type: MetaData\r
+ - pos: -13.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: VendingMachineTankDispenserEVA\r
+ entities:\r
+ - uid: 875\r
+ components:\r
+ - flags: SessionSpecific\r
+ type: MetaData\r
+ - pos: 7.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: VendingMachineYouTool\r
+ entities:\r
+ - uid: 350\r
+ components:\r
+ - flags: SessionSpecific\r
+ type: MetaData\r
+ - pos: -11.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: WallSolid\r
+ entities:\r
+ - uid: 3\r
+ components:\r
+ - pos: 1.5,18.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 4\r
+ components:\r
+ - pos: 11.5,26.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 5\r
+ components:\r
+ - pos: 18.5,24.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 6\r
+ components:\r
+ - pos: 20.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 8\r
+ components:\r
+ - pos: 14.5,19.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 9\r
+ components:\r
+ - pos: 1.5,19.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 10\r
+ components:\r
+ - pos: 18.5,26.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 11\r
+ components:\r
+ - pos: 13.5,26.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 13\r
+ components:\r
+ - pos: 25.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 18\r
+ components:\r
+ - pos: 4.5,26.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 19\r
+ components:\r
+ - pos: 18.5,25.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 21\r
+ components:\r
+ - pos: 10.5,26.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 22\r
+ components:\r
+ - pos: 26.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 25\r
+ components:\r
+ - pos: 1.5,21.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 27\r
+ components:\r
+ - pos: 8.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 28\r
+ components:\r
+ - pos: 18.5,18.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 29\r
+ components:\r
+ - pos: 18.5,21.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 30\r
+ components:\r
+ - pos: 1.5,22.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 31\r
+ components:\r
+ - pos: 1.5,20.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 32\r
+ components:\r
+ - pos: 18.5,19.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 33\r
+ components:\r
+ - pos: 23.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 34\r
+ components:\r
+ - pos: 12.5,22.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 35\r
+ components:\r
+ - pos: 27.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 36\r
+ components:\r
+ - pos: 7.5,22.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 37\r
+ components:\r
+ - pos: 14.5,22.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 38\r
+ components:\r
+ - pos: 10.5,23.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 39\r
+ components:\r
+ - pos: 10.5,24.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 40\r
+ components:\r
+ - pos: 8.5,26.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 41\r
+ components:\r
+ - pos: 10.5,25.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 42\r
+ components:\r
+ - pos: 18.5,22.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 43\r
+ components:\r
+ - pos: 14.5,27.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 44\r
+ components:\r
+ - pos: 14.5,26.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 45\r
+ components:\r
+ - pos: 1.5,16.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 46\r
+ components:\r
+ - pos: 18.5,27.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 49\r
+ components:\r
+ - pos: 7.5,28.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 50\r
+ components:\r
+ - pos: 13.5,22.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 51\r
+ components:\r
+ - pos: 12.5,26.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 52\r
+ components:\r
+ - pos: 1.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 53\r
+ components:\r
+ - pos: 9.5,26.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 55\r
+ components:\r
+ - pos: 24.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 56\r
+ components:\r
+ - pos: 14.5,25.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 57\r
+ components:\r
+ - pos: 14.5,21.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 60\r
+ components:\r
+ - pos: 7.5,21.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 61\r
+ components:\r
+ - pos: 18.5,20.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 62\r
+ components:\r
+ - pos: 18.5,23.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 66\r
+ components:\r
+ - pos: 18.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 68\r
+ components:\r
+ - pos: 18.5,28.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 69\r
+ components:\r
+ - pos: 28.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 71\r
+ components:\r
+ - pos: 11.5,22.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 72\r
+ components:\r
+ - pos: 1.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 73\r
+ components:\r
+ - pos: 14.5,28.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 74\r
+ components:\r
+ - pos: 10.5,22.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 75\r
+ components:\r
+ - pos: 9.5,22.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 76\r
+ components:\r
+ - pos: 8.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 77\r
+ components:\r
+ - pos: 8.5,-2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 78\r
+ components:\r
+ - pos: 21.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 80\r
+ components:\r
+ - pos: 18.5,16.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 81\r
+ components:\r
+ - pos: 18.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 82\r
+ components:\r
+ - pos: 14.5,18.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 83\r
+ components:\r
+ - pos: 4.5,28.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 84\r
+ components:\r
+ - pos: 7.5,26.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 85\r
+ components:\r
+ - pos: 1.5,23.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 86\r
+ components:\r
+ - pos: 17.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 89\r
+ components:\r
+ - pos: 22.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 95\r
+ components:\r
+ - pos: 8.5,22.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 96\r
+ components:\r
+ - pos: 7.5,27.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 97\r
+ components:\r
+ - pos: 8.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 98\r
+ components:\r
+ - pos: 4.5,25.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 99\r
+ components:\r
+ - pos: 17.5,18.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 100\r
+ components:\r
+ - pos: 19.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 101\r
+ components:\r
+ - pos: 4.5,27.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 103\r
+ components:\r
+ - pos: 14.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 104\r
+ components:\r
+ - pos: 14.5,16.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 105\r
+ components:\r
+ - pos: 15.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 106\r
+ components:\r
+ - pos: 14.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 107\r
+ components:\r
+ - pos: 13.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 109\r
+ components:\r
+ - pos: 11.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 110\r
+ components:\r
+ - pos: 10.5,15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 112\r
+ components:\r
+ - pos: 7.5,19.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 113\r
+ components:\r
+ - pos: 7.5,18.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 114\r
+ components:\r
+ - pos: 7.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 117\r
+ components:\r
+ - pos: 5.5,18.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 118\r
+ components:\r
+ - pos: 5.5,19.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 121\r
+ components:\r
+ - pos: 4.5,19.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 122\r
+ components:\r
+ - pos: 4.5,20.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 123\r
+ components:\r
+ - pos: 4.5,21.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 124\r
+ components:\r
+ - pos: 4.5,22.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 125\r
+ components:\r
+ - pos: 4.5,23.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 126\r
+ components:\r
+ - pos: 4.5,24.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 164\r
+ components:\r
+ - rot: 1.5707963267948966 rad\r
+ pos: 22.5,9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 165\r
+ components:\r
+ - pos: 8.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 169\r
+ components:\r
+ - pos: 8.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 173\r
+ components:\r
+ - pos: 8.5,1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 189\r
+ components:\r
+ - pos: -7.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 190\r
+ components:\r
+ - pos: -7.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 191\r
+ components:\r
+ - pos: -7.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 192\r
+ components:\r
+ - pos: -7.5,-2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 193\r
+ components:\r
+ - pos: -7.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 196\r
+ components:\r
+ - pos: 3.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 197\r
+ components:\r
+ - pos: 4.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 198\r
+ components:\r
+ - pos: -7.5,-10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 199\r
+ components:\r
+ - pos: -7.5,-11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 200\r
+ components:\r
+ - pos: -7.5,-12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 201\r
+ components:\r
+ - pos: -7.5,-13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 208\r
+ components:\r
+ - pos: -7.5,-9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 209\r
+ components:\r
+ - pos: -10.5,-7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 211\r
+ components:\r
+ - pos: -10.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 212\r
+ components:\r
+ - pos: -10.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 213\r
+ components:\r
+ - pos: -10.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 214\r
+ components:\r
+ - pos: -10.5,-2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 215\r
+ components:\r
+ - pos: -10.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 217\r
+ components:\r
+ - pos: 1.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 218\r
+ components:\r
+ - pos: 0.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 219\r
+ components:\r
+ - pos: -0.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 220\r
+ components:\r
+ - pos: -1.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 221\r
+ components:\r
+ - pos: -2.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 222\r
+ components:\r
+ - pos: -3.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 223\r
+ components:\r
+ - pos: -4.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 224\r
+ components:\r
+ - pos: -5.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 225\r
+ components:\r
+ - pos: -6.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 226\r
+ components:\r
+ - pos: 4.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 227\r
+ components:\r
+ - pos: 5.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 228\r
+ components:\r
+ - pos: 6.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 229\r
+ components:\r
+ - pos: -7.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 231\r
+ components:\r
+ - pos: -6.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 232\r
+ components:\r
+ - pos: -5.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 233\r
+ components:\r
+ - pos: -4.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 234\r
+ components:\r
+ - pos: 6.5,-10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 235\r
+ components:\r
+ - pos: 6.5,-11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 236\r
+ components:\r
+ - pos: 6.5,-12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 237\r
+ components:\r
+ - pos: 6.5,-13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 238\r
+ components:\r
+ - pos: 6.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 239\r
+ components:\r
+ - pos: 5.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 240\r
+ components:\r
+ - pos: -7.5,-8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 241\r
+ components:\r
+ - pos: -7.5,-7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 242\r
+ components:\r
+ - pos: -8.5,-8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 243\r
+ components:\r
+ - pos: -9.5,-8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 244\r
+ components:\r
+ - pos: -10.5,-8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 245\r
+ components:\r
+ - pos: -7.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 248\r
+ components:\r
+ - pos: 5.5,-7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 249\r
+ components:\r
+ - pos: 5.5,-9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 250\r
+ components:\r
+ - pos: 6.5,-9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 251\r
+ components:\r
+ - pos: 6.5,-7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 254\r
+ components:\r
+ - pos: 7.5,-9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 260\r
+ components:\r
+ - pos: 6.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 261\r
+ components:\r
+ - pos: 6.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 271\r
+ components:\r
+ - pos: 1.5,14.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 272\r
+ components:\r
+ - pos: 1.5,13.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 273\r
+ components:\r
+ - pos: 1.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 274\r
+ components:\r
+ - pos: -7.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 275\r
+ components:\r
+ - pos: -6.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 276\r
+ components:\r
+ - pos: -5.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 277\r
+ components:\r
+ - pos: -4.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 278\r
+ components:\r
+ - pos: -3.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 279\r
+ components:\r
+ - pos: -2.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 282\r
+ components:\r
+ - pos: -1.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 283\r
+ components:\r
+ - pos: -0.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 284\r
+ components:\r
+ - pos: 0.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 288\r
+ components:\r
+ - pos: 12.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 289\r
+ components:\r
+ - pos: 11.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 290\r
+ components:\r
+ - pos: 10.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 291\r
+ components:\r
+ - pos: 9.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 292\r
+ components:\r
+ - pos: 8.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 293\r
+ components:\r
+ - pos: 7.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 294\r
+ components:\r
+ - pos: 6.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 295\r
+ components:\r
+ - pos: 5.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 301\r
+ components:\r
+ - pos: 9.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 302\r
+ components:\r
+ - pos: 10.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 303\r
+ components:\r
+ - pos: 11.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 304\r
+ components:\r
+ - pos: 12.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 310\r
+ components:\r
+ - pos: 9.5,9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 316\r
+ components:\r
+ - pos: -7.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 317\r
+ components:\r
+ - pos: 26.5,14.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 320\r
+ components:\r
+ - pos: 24.5,14.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 329\r
+ components:\r
+ - pos: -11.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 335\r
+ components:\r
+ - pos: 13.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 336\r
+ components:\r
+ - pos: 14.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 337\r
+ components:\r
+ - pos: 13.5,9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 338\r
+ components:\r
+ - pos: 13.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 339\r
+ components:\r
+ - pos: 13.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 341\r
+ components:\r
+ - pos: 24.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 342\r
+ components:\r
+ - pos: 26.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 352\r
+ components:\r
+ - pos: 13.5,6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 353\r
+ components:\r
+ - pos: 13.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 372\r
+ components:\r
+ - pos: 13.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 373\r
+ components:\r
+ - pos: 25.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 374\r
+ components:\r
+ - pos: 23.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 375\r
+ components:\r
+ - pos: 17.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 376\r
+ components:\r
+ - pos: -10.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 377\r
+ components:\r
+ - pos: -10.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 379\r
+ components:\r
+ - pos: -8.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 390\r
+ components:\r
+ - pos: 18.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 391\r
+ components:\r
+ - pos: 19.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 392\r
+ components:\r
+ - pos: 21.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 393\r
+ components:\r
+ - pos: 22.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 394\r
+ components:\r
+ - pos: 22.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 395\r
+ components:\r
+ - pos: 22.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 396\r
+ components:\r
+ - pos: 22.5,6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 397\r
+ components:\r
+ - pos: 22.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 399\r
+ components:\r
+ - pos: 22.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 400\r
+ components:\r
+ - pos: 21.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 401\r
+ components:\r
+ - pos: 22.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 418\r
+ components:\r
+ - pos: 7.5,-7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 439\r
+ components:\r
+ - pos: -13.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 449\r
+ components:\r
+ - pos: -16.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 450\r
+ components:\r
+ - pos: -16.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 464\r
+ components:\r
+ - pos: 4.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 474\r
+ components:\r
+ - pos: -7.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 475\r
+ components:\r
+ - pos: -7.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 476\r
+ components:\r
+ - pos: -7.5,6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 477\r
+ components:\r
+ - pos: -7.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 486\r
+ components:\r
+ - pos: -15.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 487\r
+ components:\r
+ - pos: -16.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 488\r
+ components:\r
+ - pos: 5.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 489\r
+ components:\r
+ - pos: -11.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 491\r
+ components:\r
+ - pos: -16.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 492\r
+ components:\r
+ - pos: -14.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 494\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: -11.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 495\r
+ components:\r
+ - pos: -12.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 496\r
+ components:\r
+ - pos: -16.5,1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 497\r
+ components:\r
+ - pos: -16.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 498\r
+ components:\r
+ - pos: -16.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 499\r
+ components:\r
+ - pos: -16.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 500\r
+ components:\r
+ - pos: -16.5,-2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 501\r
+ components:\r
+ - pos: -16.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 502\r
+ components:\r
+ - pos: -16.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 503\r
+ components:\r
+ - pos: -16.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 504\r
+ components:\r
+ - pos: -16.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 505\r
+ components:\r
+ - pos: -16.5,-7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 506\r
+ components:\r
+ - pos: -16.5,-8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 507\r
+ components:\r
+ - pos: -15.5,-8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 508\r
+ components:\r
+ - pos: -14.5,-8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 509\r
+ components:\r
+ - pos: -13.5,-8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 510\r
+ components:\r
+ - pos: -12.5,-8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 511\r
+ components:\r
+ - pos: -11.5,-8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 517\r
+ components:\r
+ - pos: 23.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 518\r
+ components:\r
+ - pos: 24.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 519\r
+ components:\r
+ - pos: 25.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 535\r
+ components:\r
+ - pos: -15.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 539\r
+ components:\r
+ - pos: 26.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 540\r
+ components:\r
+ - pos: 27.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 545\r
+ components:\r
+ - pos: 7.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 546\r
+ components:\r
+ - pos: 8.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 547\r
+ components:\r
+ - pos: 28.5,11.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 548\r
+ components:\r
+ - pos: 28.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 549\r
+ components:\r
+ - pos: 28.5,9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 550\r
+ components:\r
+ - pos: 28.5,8.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 551\r
+ components:\r
+ - pos: 28.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 552\r
+ components:\r
+ - pos: 28.5,6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 553\r
+ components:\r
+ - pos: 28.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 554\r
+ components:\r
+ - pos: 26.5,-2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 555\r
+ components:\r
+ - pos: 26.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 556\r
+ components:\r
+ - pos: 25.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 557\r
+ components:\r
+ - pos: 26.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 558\r
+ components:\r
+ - pos: 27.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 561\r
+ components:\r
+ - pos: -14.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 585\r
+ components:\r
+ - pos: 9.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 597\r
+ components:\r
+ - pos: 22.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 598\r
+ components:\r
+ - pos: 17.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 599\r
+ components:\r
+ - pos: 18.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 600\r
+ components:\r
+ - pos: 20.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 601\r
+ components:\r
+ - pos: 21.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 602\r
+ components:\r
+ - pos: 19.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 603\r
+ components:\r
+ - pos: 14.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 604\r
+ components:\r
+ - pos: 13.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 605\r
+ components:\r
+ - pos: 12.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 606\r
+ components:\r
+ - pos: 12.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 607\r
+ components:\r
+ - pos: 12.5,1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 608\r
+ components:\r
+ - pos: 12.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 609\r
+ components:\r
+ - pos: 12.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 610\r
+ components:\r
+ - pos: 13.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 611\r
+ components:\r
+ - pos: 14.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 612\r
+ components:\r
+ - pos: 13.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 613\r
+ components:\r
+ - pos: 13.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 614\r
+ components:\r
+ - pos: 13.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 615\r
+ components:\r
+ - pos: 13.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 616\r
+ components:\r
+ - pos: 13.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 617\r
+ components:\r
+ - pos: 13.5,-2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 618\r
+ components:\r
+ - pos: 14.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 619\r
+ components:\r
+ - pos: 15.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 620\r
+ components:\r
+ - pos: 16.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 621\r
+ components:\r
+ - pos: 17.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 622\r
+ components:\r
+ - pos: 18.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 623\r
+ components:\r
+ - pos: 19.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 624\r
+ components:\r
+ - pos: 20.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 625\r
+ components:\r
+ - pos: 21.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 626\r
+ components:\r
+ - pos: 22.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 627\r
+ components:\r
+ - pos: 23.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 628\r
+ components:\r
+ - pos: 24.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 629\r
+ components:\r
+ - pos: 25.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 630\r
+ components:\r
+ - pos: 26.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 631\r
+ components:\r
+ - pos: 26.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 632\r
+ components:\r
+ - pos: 26.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 633\r
+ components:\r
+ - pos: 27.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 634\r
+ components:\r
+ - pos: 28.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 635\r
+ components:\r
+ - pos: 29.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 636\r
+ components:\r
+ - pos: 30.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 637\r
+ components:\r
+ - pos: 31.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 638\r
+ components:\r
+ - pos: 32.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 639\r
+ components:\r
+ - pos: 33.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 640\r
+ components:\r
+ - pos: 34.5,-6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 641\r
+ components:\r
+ - pos: 34.5,-5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 642\r
+ components:\r
+ - pos: 34.5,-4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 643\r
+ components:\r
+ - pos: 34.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 644\r
+ components:\r
+ - pos: 34.5,-2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 645\r
+ components:\r
+ - pos: 34.5,-1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 646\r
+ components:\r
+ - pos: 34.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 647\r
+ components:\r
+ - pos: 33.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 648\r
+ components:\r
+ - pos: 32.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 649\r
+ components:\r
+ - pos: 31.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 650\r
+ components:\r
+ - pos: 30.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 651\r
+ components:\r
+ - pos: 29.5,-0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 652\r
+ components:\r
+ - pos: 30.5,0.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 653\r
+ components:\r
+ - pos: 30.5,1.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 654\r
+ components:\r
+ - pos: 30.5,2.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 655\r
+ components:\r
+ - pos: 30.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 656\r
+ components:\r
+ - pos: 30.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 657\r
+ components:\r
+ - pos: 29.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 658\r
+ components:\r
+ - pos: 28.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 659\r
+ components:\r
+ - pos: 27.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 702\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: -11.5,6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 713\r
+ components:\r
+ - pos: -7.5,9.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 714\r
+ components:\r
+ - pos: -7.5,10.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 724\r
+ components:\r
+ - pos: -2.5,12.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 733\r
+ components:\r
+ - pos: 4.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 734\r
+ components:\r
+ - pos: 4.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 739\r
+ components:\r
+ - pos: 8.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 740\r
+ components:\r
+ - pos: 8.5,6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 741\r
+ components:\r
+ - pos: 8.5,5.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 742\r
+ components:\r
+ - pos: 8.5,4.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 743\r
+ components:\r
+ - pos: 8.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 745\r
+ components:\r
+ - pos: 4.5,7.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 746\r
+ components:\r
+ - pos: 4.5,6.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 846\r
+ components:\r
+ - pos: 2.5,19.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 847\r
+ components:\r
+ - pos: 3.5,19.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 925\r
+ components:\r
+ - rot: -1.5707963267948966 rad\r
+ pos: -14.5,17.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 958\r
+ components:\r
+ - rot: 3.141592653589793 rad\r
+ pos: 15.5,18.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1072\r
+ components:\r
+ - pos: 15.5,28.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1073\r
+ components:\r
+ - pos: 16.5,28.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1074\r
+ components:\r
+ - pos: 17.5,28.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: WaterTankFull\r
+ entities:\r
+ - uid: 115\r
+ components:\r
+ - pos: 4.5,18.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 694\r
+ components:\r
+ - pos: -2.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: WeaponCapacitorRecharger\r
+ entities:\r
+ - uid: 708\r
+ components:\r
+ - pos: -0.5,-3.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: WeaponLaserCarbine\r
+ entities:\r
+ - uid: 188\r
+ components:\r
+ - pos: -3.5226438,-0.45543313\r
+ parent: 179\r
+ type: Transform\r
+- proto: WeaponLauncherMultipleRocket\r
+ entities:\r
+ - uid: 671\r
+ components:\r
+ - pos: -13.195735,9.730438\r
+ parent: 179\r
+ type: Transform\r
+- proto: WeaponLauncherRocket\r
+ entities:\r
+ - uid: 436\r
+ components:\r
+ - pos: -3.478273,-1.1611286\r
+ parent: 179\r
+ type: Transform\r
+- proto: WeaponRifleAk\r
+ entities:\r
+ - uid: 437\r
+ components:\r
+ - pos: -3.5018106,0.24183923\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 949\r
+ components:\r
+ - pos: -12.238617,9.081488\r
+ parent: 179\r
+ type: Transform\r
+- proto: WelderExperimental\r
+ entities:\r
+ - uid: 343\r
+ components:\r
+ - pos: 0.6895334,4.7183027\r
+ parent: 179\r
+ type: Transform\r
+- proto: WeldingFuelTankFull\r
+ entities:\r
+ - uid: 693\r
+ components:\r
+ - pos: -1.5,3.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: Window\r
+ entities:\r
+ - uid: 111\r
+ components:\r
+ - pos: -0.5,-15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 194\r
+ components:\r
+ - pos: -0.5,-16.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 230\r
+ components:\r
+ - pos: -0.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1001\r
+ components:\r
+ - pos: -3.5,-16.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1002\r
+ components:\r
+ - pos: -3.5,-15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1003\r
+ components:\r
+ - pos: -3.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1004\r
+ components:\r
+ - pos: 2.5,-16.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1005\r
+ components:\r
+ - pos: 2.5,-15.5\r
+ parent: 179\r
+ type: Transform\r
+ - uid: 1006\r
+ components:\r
+ - pos: 2.5,-14.5\r
+ parent: 179\r
+ type: Transform\r
+- proto: Wirecutter\r
+ entities:\r
+ - uid: 359\r
+ components:\r
+ - pos: -1.6207478,4.3951616\r
+ parent: 179\r
+ type: Transform\r
+- proto: Wrench\r
+ entities:\r
+ - uid: 327\r
+ components:\r
+ - pos: -0.11783123,4.753312\r
+ parent: 179\r
+ type: Transform\r
+...\r
- pos: 8.554562,-71.45013\r
parent: 60\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- uid: 12600\r
components:\r
- pos: -59.580887,2.6484475\r
- pos: -45.607418,-4.0834746\r
parent: 60\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- uid: 19193\r
components:\r
- pos: 24.478937,19.47598\r
- pos: 8.429562,-71.29388\r
parent: 60\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- proto: FloorDrain\r
entities:\r
- uid: 2376\r
- pos: -11.4531975,-27.495203\r
parent: 60\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- uid: 2042\r
components:\r
- pos: -22.39201,0.9298079\r
- pos: 34.77564,-13.074253\r
parent: 60\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- uid: 5326\r
components:\r
- pos: -24.428305,-28.144638\r
parent: 60\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- uid: 5611\r
components:\r
- pos: -43.443226,9.814736\r
parent: 60\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- uid: 6609\r
components:\r
- pos: 13.404068,20.941233\r
- pos: -53.539146,19.787207\r
parent: 60\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- uid: 18528\r
components:\r
- pos: -4.422296,-6.0514507\r
parent: 60\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- uid: 18888\r
components:\r
- rot: 1.5707963267948966 rad\r
- pos: -46.455166,-17.122845\r
parent: 60\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- uid: 4235\r
components:\r
- pos: -41.508133,-17.091595\r
parent: 60\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- uid: 6446\r
components:\r
- pos: 16.535465,-49.13737\r
parent: 60\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- uid: 7855\r
components:\r
- pos: 47.535595,-44.54304\r
- pos: 43.509346,13.968993\r
parent: 60\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- uid: 14128\r
components:\r
- pos: -8.397732,20.931147\r
parent: 60\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- uid: 14437\r
components:\r
- pos: -10.617271,13.996219\r
parent: 60\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- uid: 17683\r
components:\r
- pos: -47.45724,23.765757\r
parent: 60\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- uid: 17821\r
components:\r
- pos: -36.53212,19.792776\r
parent: 60\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- uid: 18475\r
components:\r
- pos: -8.643374,-5.091722\r
parent: 60\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- uid: 23464\r
components:\r
- pos: -64.53201,45.976482\r
- pos: 7.5332904,-17.502348
parent: 1
type: Transform
- - toggleAction:
- sound: null
- itemIconStyle: BigItem
- icon:
- sprite: Objects/Tools/flashlight.rsi
- state: flashlight
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png
- iconColor: '#FFFFFFFF'
- name: action-name-toggle-light
- description: action-description-toggle-light
- keywords: []
- enabled: True
- useDelay: null
- charges: null
- checkCanInteract: True
- clientExclusive: False
- priority: 0
- autoPopulate: True
- autoRemove: True
- temporary: False
- event: !type:ToggleActionEvent {}
- type: HandheldLight
- proto: FloorDrain
entities:
- uid: 1981
- pos: 63.59359,1.9265842\r
parent: 8364\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- containers:\r
cellslot_cell_container: !type:ContainerSlot\r
showEnts: False\r
- pos: 20.577366,3.8552704\r
parent: 8364\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- containers:\r
cellslot_cell_container: !type:ContainerSlot\r
showEnts: False\r
- pos: 27.55192,-19.472286\r
parent: 8364\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- containers:\r
cellslot_cell_container: !type:ContainerSlot\r
showEnts: False\r
- pos: 8.514107,-15.335099\r
parent: 8364\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- containers:\r
cellslot_cell_container: !type:ContainerSlot\r
showEnts: False\r
- pos: 12.51148,39.935867\r
parent: 8364\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- containers:\r
cellslot_cell_container: !type:ContainerSlot\r
showEnts: False\r
- pos: -5.4745197,14.875931\r
parent: 8364\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- containers:\r
cellslot_cell_container: !type:ContainerSlot\r
showEnts: False\r
- pos: -11.396871,17.955116\r
parent: 8364\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- containers:\r
cellslot_cell_container: !type:ContainerSlot\r
showEnts: False\r
- pos: 61.465347,-10.029866\r
parent: 8364\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- containers:\r
cellslot_cell_container: !type:ContainerSlot\r
showEnts: False\r
- pos: 57.47965,-10.061116\r
parent: 8364\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- containers:\r
cellslot_cell_container: !type:ContainerSlot\r
showEnts: False\r
- pos: -57.50557,-0.1837722\r
parent: 8364\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- containers:\r
cellslot_cell_container: !type:ContainerSlot\r
showEnts: False\r
- pos: -57.52329,-8.160038\r
parent: 8364\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- containers:\r
cellslot_cell_container: !type:ContainerSlot\r
showEnts: False\r
- pos: 56.48937,-16.046814\r
parent: 13329\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- uid: 15528\r
components:\r
- pos: 56.55187,-16.249939\r
parent: 13329\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- uid: 19986\r
components:\r
- pos: 41.480545,-35.30919\r
- pos: -42.514347,2.6634603\r
parent: 13329\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- uid: 32400\r
components:\r
- pos: 35.394306,-5.3188667\r
- pos: 132.84602,3.5240808\r
parent: 13329\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- proto: FloodlightBroken\r
entities:\r
- uid: 5413\r
- pos: -11.291338,10.87907\r
parent: 13329\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- proto: LampGold\r
entities:\r
- uid: 1144\r
- pos: -21.410488,56.800785\r
parent: 13329\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- uid: 10550\r
components:\r
- pos: 37.57843,20.954947\r
- pos: -1.483297,-2.2444057\r
parent: 73\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- proto: LockerSyndicatePersonal\r
entities:\r
- uid: 692\r
- pos: -36.478657,44.624092
parent: 82
type: Transform
- - toggleAction:
- sound: null
- itemIconStyle: BigItem
- icon: Objects/Tools/flashlight.rsi/flashlight.png
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png
- iconColor: '#FFFFFFFF'
- name: action-name-toggle-light
- description: action-description-toggle-light
- keywords: []
- enabled: True
- useDelay: null
- charges: null
- checkCanInteract: True
- clientExclusive: False
- priority: 0
- autoPopulate: True
- autoRemove: True
- temporary: False
- event: !type:ToggleActionEvent {}
- type: HandheldLight
- uid: 6809
components:
- pos: -35.57489,40.472855
- pos: -43.612717,31.902554\r
parent: 30\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- uid: 4953\r
components:\r
- pos: -22.461006,36.440132\r
- pos: 4.5292673,10.977108\r
parent: 30\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- uid: 4994\r
components:\r
- pos: -21.514103,31.706543\r
parent: 30\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- uid: 5023\r
components:\r
- pos: -19.477777,35.681534\r
- pos: -57.92594,-62.49692\r
parent: 30\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- uid: 21670\r
components:\r
- pos: -57.51036,-43.24328\r
- pos: 9.543957,-1.1447365\r
parent: 5350\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon: Objects/Tools/flashlight.rsi/flashlight.png\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- containers:\r
cellslot_cell_container: !type:ContainerSlot\r
showEnts: False\r
- pos: -6.544301,-3.1708417\r
parent: 5350\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon: Objects/Tools/flashlight.rsi/flashlight.png\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- containers:\r
cellslot_cell_container: !type:ContainerSlot\r
showEnts: False\r
- pos: -29.551394,17.78557\r
parent: 5350\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- containers:\r
cellslot_cell_container: !type:ContainerSlot\r
showEnts: False\r
- pos: -57.509872,-28.24864\r
parent: 5350\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon: Objects/Tools/flashlight.rsi/flashlight.png\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- uid: 17463\r
components:\r
- pos: -42.417267,-30.139824\r
- pos: 25.524637,-37.41671\r
parent: 5350\r
type: Transform\r
- - toggleAction:\r
- sound: null\r
- itemIconStyle: BigItem\r
- icon:\r
- sprite: Objects/Tools/flashlight.rsi\r
- state: flashlight\r
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png\r
- iconColor: '#FFFFFFFF'\r
- name: action-name-toggle-light\r
- description: action-description-toggle-light\r
- keywords: []\r
- enabled: True\r
- useDelay: null\r
- charges: null\r
- checkCanInteract: True\r
- clientExclusive: False\r
- priority: 0\r
- autoPopulate: True\r
- autoRemove: True\r
- temporary: False\r
- event: !type:ToggleActionEvent {}\r
- type: HandheldLight\r
- canCollide: True\r
type: Physics\r
- proto: LampInterrogator\r
- pos: 5.335086,29.824064
parent: 4812
type: Transform
- - toggleAction:
- sound: null
- itemIconStyle: BigItem
- icon:
- sprite: Objects/Tools/flashlight.rsi
- state: flashlight
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png
- iconColor: '#FFFFFFFF'
- name: action-name-toggle-light
- description: action-description-toggle-light
- keywords: []
- enabled: True
- useDelay: null
- charges: null
- checkCanInteract: True
- clientExclusive: False
- priority: 0
- autoPopulate: True
- autoRemove: True
- temporary: False
- event: !type:ToggleActionEvent {}
- type: HandheldLight
- containers:
cellslot_cell_container: !type:ContainerSlot
showEnts: False
- pos: 8.536261,24.755358
parent: 4812
type: Transform
- - toggleAction:
- sound: null
- itemIconStyle: BigItem
- icon:
- sprite: Objects/Tools/flashlight.rsi
- state: flashlight
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png
- iconColor: '#FFFFFFFF'
- name: action-name-toggle-light
- description: action-description-toggle-light
- keywords: []
- enabled: True
- useDelay: null
- charges: null
- checkCanInteract: True
- clientExclusive: False
- priority: 0
- autoPopulate: True
- autoRemove: True
- temporary: False
- event: !type:ToggleActionEvent {}
- type: HandheldLight
- containers:
cellslot_cell_container: !type:ContainerSlot
showEnts: False
- pos: -3.451921,24.866032
parent: 4812
type: Transform
- - toggleAction:
- sound: null
- itemIconStyle: BigItem
- icon:
- sprite: Objects/Tools/flashlight.rsi
- state: flashlight
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png
- iconColor: '#FFFFFFFF'
- name: action-name-toggle-light
- description: action-description-toggle-light
- keywords: []
- enabled: True
- useDelay: null
- charges: null
- checkCanInteract: True
- clientExclusive: False
- priority: 0
- autoPopulate: True
- autoRemove: True
- temporary: False
- event: !type:ToggleActionEvent {}
- type: HandheldLight
- containers:
cellslot_cell_container: !type:ContainerSlot
showEnts: False
- pos: 25.537617,-17.441427
parent: 4812
type: Transform
- - toggleAction:
- sound: null
- itemIconStyle: BigItem
- icon:
- sprite: Objects/Tools/flashlight.rsi
- state: flashlight
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png
- iconColor: '#FFFFFFFF'
- name: action-name-toggle-light
- description: action-description-toggle-light
- keywords: []
- enabled: True
- useDelay: null
- charges: null
- checkCanInteract: True
- clientExclusive: False
- priority: 0
- autoPopulate: True
- autoRemove: True
- temporary: False
- event: !type:ToggleActionEvent {}
- type: HandheldLight
- containers:
cellslot_cell_container: !type:ContainerSlot
showEnts: False
- pos: -21.463991,24.553658
parent: 4812
type: Transform
- - toggleAction:
- sound: null
- itemIconStyle: BigItem
- icon:
- sprite: Objects/Tools/flashlight.rsi
- state: flashlight
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png
- iconColor: '#FFFFFFFF'
- name: action-name-toggle-light
- description: action-description-toggle-light
- keywords: []
- enabled: True
- useDelay: null
- charges: null
- checkCanInteract: True
- clientExclusive: False
- priority: 0
- autoPopulate: True
- autoRemove: True
- temporary: False
- event: !type:ToggleActionEvent {}
- type: HandheldLight
- containers:
cellslot_cell_container: !type:ContainerSlot
showEnts: False
- pos: -18.349216,-33.27696
parent: 4812
type: Transform
- - toggleAction:
- sound: null
- itemIconStyle: BigItem
- icon:
- sprite: Objects/Tools/flashlight.rsi
- state: flashlight
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png
- iconColor: '#FFFFFFFF'
- name: action-name-toggle-light
- description: action-description-toggle-light
- keywords: []
- enabled: True
- useDelay: null
- charges: null
- checkCanInteract: True
- clientExclusive: False
- priority: 0
- autoPopulate: True
- autoRemove: True
- temporary: False
- event: !type:ToggleActionEvent {}
- type: HandheldLight
- containers:
cellslot_cell_container: !type:ContainerSlot
showEnts: False
- pos: -31.078482,-23.278105
parent: 4812
type: Transform
- - toggleAction:
- sound: null
- itemIconStyle: BigItem
- icon:
- sprite: Objects/Tools/flashlight.rsi
- state: flashlight
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png
- iconColor: '#FFFFFFFF'
- name: action-name-toggle-light
- description: action-description-toggle-light
- keywords: []
- enabled: True
- useDelay: null
- charges: null
- checkCanInteract: True
- clientExclusive: False
- priority: 0
- autoPopulate: True
- autoRemove: True
- temporary: False
- event: !type:ToggleActionEvent {}
- type: HandheldLight
- containers:
cellslot_cell_container: !type:ContainerSlot
showEnts: False
- pos: 21.425192,-12.111239
parent: 2
type: Transform
- - toggleAction:
- sound: null
- itemIconStyle: BigItem
- icon: Objects/Tools/flashlight.rsi/flashlight.png
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png
- iconColor: '#FFFFFFFF'
- name: action-name-toggle-light
- description: action-description-toggle-light
- keywords: []
- enabled: True
- useDelay: null
- charges: null
- checkCanInteract: True
- clientExclusive: False
- priority: 0
- autoPopulate: True
- autoRemove: True
- temporary: False
- event: !type:ToggleActionEvent {}
- type: HandheldLight
- uid: 21066
components:
- rot: -1.5707963267948966 rad
- pos: -18.78946,-56.159798
parent: 2
type: Transform
- - toggleAction:
- sound: null
- itemIconStyle: BigItem
- icon: Objects/Tools/flashlight.rsi/flashlight.png
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png
- iconColor: '#FFFFFFFF'
- name: action-name-toggle-light
- description: action-description-toggle-light
- keywords: []
- enabled: True
- useDelay: null
- charges: null
- checkCanInteract: True
- clientExclusive: False
- priority: 0
- autoPopulate: True
- autoRemove: True
- temporary: False
- event: !type:ToggleActionEvent {}
- type: HandheldLight
- uid: 21078
components:
- pos: -10.485052,-3.11381
- pos: 10.438802,4.97286
parent: 2
type: Transform
- - toggleAction:
- sound: null
- itemIconStyle: BigItem
- icon: Objects/Tools/flashlight.rsi/flashlight.png
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png
- iconColor: '#FFFFFFFF'
- name: action-name-toggle-light
- description: action-description-toggle-light
- keywords: []
- enabled: True
- useDelay: null
- charges: null
- checkCanInteract: True
- clientExclusive: False
- priority: 0
- autoPopulate: True
- autoRemove: True
- temporary: False
- event: !type:ToggleActionEvent {}
- type: HandheldLight
- uid: 2722
components:
- pos: 20.544691,33.624443
- pos: 32.49905,41.93212
parent: 2
type: Transform
- - toggleAction:
- sound: null
- itemIconStyle: BigItem
- icon: Objects/Tools/flashlight.rsi/flashlight.png
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png
- iconColor: '#FFFFFFFF'
- name: action-name-toggle-light
- description: action-description-toggle-light
- keywords: []
- enabled: True
- useDelay: null
- charges: null
- checkCanInteract: True
- clientExclusive: False
- priority: 0
- autoPopulate: True
- autoRemove: True
- temporary: False
- event: !type:ToggleActionEvent {}
- type: HandheldLight
- uid: 5474
components:
- pos: 67.5,37.5
-- type: instantAction
- id: ViewLaws
+- type: entity
+ id: ActionViewLaws
name: action-name-view-laws
description: action-description-view-laws
- itemIconStyle: NoItem
- icon:
- sprite: Interface/Actions/actions_borg.rsi
- state: state-laws
- event: !type:ToggleLawsScreenEvent
- useDelay: 0.5
+ noSpawn: true
+ components:
+ - type: InstantAction
+ itemIconStyle: NoItem
+ icon:
+ sprite: Interface/Actions/actions_borg.rsi
+ state: state-laws
+ event: !type:ToggleLawsScreenEvent
+ useDelay: 0.5
# Actions added to mobs in crit.
-- type: instantAction
- id: CritSuccumb
+- type: entity
+ id: ActionCritSuccumb
name: action-name-crit-succumb
description: action-description-crit-succumb
- itemIconStyle: NoItem
- checkCanInteract: false
- icon:
- sprite: Mobs/Ghosts/ghost_human.rsi
- state: icon
- serverEvent: !type:CritSuccumbEvent
+ noSpawn: true
+ components:
+ - type: InstantAction
+ itemIconStyle: NoItem
+ checkCanInteract: false
+ icon:
+ sprite: Mobs/Ghosts/ghost_human.rsi
+ state: icon
+ event: !type:CritSuccumbEvent
-- type: instantAction
- id: CritFakeDeath
+- type: entity
+ id: ActionCritFakeDeath
name: action-name-crit-fake-death
description: action-description-crit-fake-death
- itemIconStyle: NoItem
- checkCanInteract: false
- icon:
- sprite: Interface/Actions/actions_crit.rsi
- state: fakedeath
- serverEvent: !type:CritFakeDeathEvent
- useDelay: 30
+ noSpawn: true
+ components:
+ - type: InstantAction
+ itemIconStyle: NoItem
+ checkCanInteract: false
+ icon:
+ sprite: Interface/Actions/actions_crit.rsi
+ state: fakedeath
+ event: !type:CritFakeDeathEvent
+ useDelay: 30
-- type: instantAction
- id: CritLastWords
+- type: entity
+ id: ActionCritLastWords
name: action-name-crit-last-words
description: action-description-crit-last-words
- itemIconStyle: NoItem
- checkCanInteract: false
- icon:
- sprite: Interface/Actions/actions_crit.rsi
- state: lastwords
- serverEvent: !type:CritLastWordsEvent
+ noSpawn: true
+ components:
+ - type: InstantAction
+ itemIconStyle: NoItem
+ checkCanInteract: false
+ icon:
+ sprite: Interface/Actions/actions_crit.rsi
+ state: lastwords
+ event: !type:CritLastWordsEvent
--- /dev/null
+- type: entity
+ id: ActionToggleInternals
+ name: action-name-internals-toggle
+ description: action-description-internals-toggle
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon:
+ sprite: Interface/Alerts/internals.rsi
+ state: internal2
+ iconOn:
+ sprite: Interface/Alerts/internals.rsi
+ state: internal1
+ event: !type:ToggleActionEvent
+ useDelay: 1
-- type: instantAction
- id: MechCycleEquipment
+- type: entity
+ id: ActionMechCycleEquipment
name: action-name-mech-cycle
description: action-description-mech-cycle
- itemIconStyle: NoItem
- icon:
- sprite: Interface/Actions/actions_mecha.rsi
- state: mech_cycle_equip_on
- event: !type:MechToggleEquipmentEvent
- useDelay: 0.5
+ noSpawn: true
+ components:
+ - type: InstantAction
+ itemIconStyle: NoItem
+ icon:
+ sprite: Interface/Actions/actions_mecha.rsi
+ state: mech_cycle_equip_on
+ event: !type:MechToggleEquipmentEvent
+ useDelay: 0.5
-- type: instantAction
- id: MechOpenUI
+- type: entity
+ id: ActionMechOpenUI
name: action-name-mech-control-panel
description: action-description-mech-control-panel
- itemIconStyle: NoItem
- icon:
- sprite: Interface/Actions/actions_mecha.rsi
- state: mech_view_stats
- event: !type:MechOpenUiEvent
- useDelay: 1
+ noSpawn: true
+ components:
+ - type: InstantAction
+ itemIconStyle: NoItem
+ icon:
+ sprite: Interface/Actions/actions_mecha.rsi
+ state: mech_view_stats
+ event: !type:MechOpenUiEvent
+ useDelay: 1
-- type: instantAction
- id: MechEject
+- type: entity
+ id: ActionMechEject
name: action-name-mech-eject
description: action-description-mech-eject
- itemIconStyle: NoItem
- icon:
- sprite: Interface/Actions/actions_mecha.rsi
- state: mech_eject
- event: !type:MechEjectPilotEvent
\ No newline at end of file
+ noSpawn: true
+ components:
+ - type: InstantAction
+ itemIconStyle: NoItem
+ icon:
+ sprite: Interface/Actions/actions_mecha.rsi
+ state: mech_eject
+ event: !type:MechEjectPilotEvent
--- /dev/null
+- type: entity
+ id: ActionRevertPolymorph
+ name: polymorph-revert-action-name
+ description: polymorph-revert-action-description
+ noSpawn: true
+ components:
+ - type: InstantAction
+ event: !type:RevertPolymorphActionEvent
+
+- type: entity
+ id: ActionPolymorph
+ noSpawn: true
+ components:
+ - type: InstantAction
+ event: !type:PolymorphActionEvent
+ itemIconStyle: NoItem
-- type: instantAction
- id: RevenantShop
- icon: Interface/Actions/shop.png
+- type: entity
+ id: ActionRevenantShop
name: Shop
description: Opens the ability shop.
- serverEvent: !type:RevenantShopActionEvent
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: Interface/Actions/shop.png
+ event: !type:RevenantShopActionEvent
-- type: instantAction
- id: RevenantDefile
- icon: Interface/Actions/defile.png
+- type: entity
+ id: ActionRevenantDefile
name: Defile
description: Costs 30 Essence.
- serverEvent: !type:RevenantDefileActionEvent
- useDelay: 15
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: Interface/Actions/defile.png
+ event: !type:RevenantDefileActionEvent
+ useDelay: 15
-- type: instantAction
- id: RevenantOverloadLights
- icon: Interface/Actions/overloadlight.png
+- type: entity
+ id: ActionRevenantOverloadLights
name: Overload Lights
description: Costs 40 Essence.
- serverEvent: !type:RevenantOverloadLightsActionEvent
- useDelay: 20
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: Interface/Actions/overloadlight.png
+ event: !type:RevenantOverloadLightsActionEvent
+ useDelay: 20
-#- type: instantAction
-# id: RevenantBlight
-# icon: Interface/Actions/blight.png
+#- type: entity
+# id: ActionRevenantBlight
# name: Blight
# description: Costs 50 Essence.
-# serverEvent: !type:RevenantBlightActionEvent
-# useDelay: 20
+# noSpawn: true
+# components:
+# - type: InstantAction
+# icon: Interface/Actions/blight.png
+# event: !type:RevenantBlightActionEvent
+# useDelay: 20
-- type: instantAction
- id: RevenantMalfunction
- icon: Interface/Actions/malfunction.png
+- type: entity
+ id: ActionRevenantMalfunction
name: Malfunction
description: Costs 60 Essence.
- serverEvent: !type:RevenantMalfunctionActionEvent
- useDelay: 20
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: Interface/Actions/malfunction.png
+ event: !type:RevenantMalfunctionActionEvent
+ useDelay: 20
--- /dev/null
+- type: entity
+ id: ActionConfigureMeleeSpeech
+ name: melee-speech-config
+ description: melee-speech-config-desc
+ noSpawn: true
+ components:
+ - type: InstantAction
+ itemIconStyle: BigItem
+ priority: -20
+ useDelay: 1
+ event: !type:MeleeSpeechConfigureActionEvent
-- type: instantAction
- id: SpiderWebAction
- icon: Interface/Actions/web.png
+- type: entity
+ id: ActionSpiderWeb
name: spider-web-action-name
description: spider-web-action-description
- serverEvent: !type:SpiderWebActionEvent
- useDelay: 25
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: Interface/Actions/web.png
+ event: !type:SpiderWebActionEvent
+ useDelay: 25
-- type: instantAction
- id: SericultureAction
- icon: Interface/Actions/web.png
+- type: entity
+ id: ActionSericulture
name: sericulture-action-name
description: sericulture-action-description
- serverEvent: !type:SericultureActionEvent
- useDelay: 1
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: Interface/Actions/web.png
+ event: !type:SericultureActionEvent
+ useDelay: 1
-- type: instantAction
- id: Scream
- useDelay: 10
- icon: Interface/Actions/scream.png
+- type: entity
+ id: ActionScream
name: action-name-scream
description: action-description-scream
- serverEvent: !type:ScreamActionEvent
- checkCanInteract: false
-
-- type: instantAction
- id: TurnUndead
+ noSpawn: true
+ components:
+ - type: InstantAction
+ useDelay: 10
+ icon: Interface/Actions/scream.png
+ event: !type:ScreamActionEvent
+ checkCanInteract: false
+
+- type: entity
+ id: ActionTurnUndead
name: turn-undead-action-name
description: turn-undead-action-description
- checkCanInteract: false
- icon: Interface/Actions/zombie-turn.png
- event: !type:ZombifySelfActionEvent
-
-- type: instantAction
- id: ToggleLight
+ noSpawn: true
+ components:
+ - type: InstantAction
+ checkCanInteract: false
+ icon: Interface/Actions/zombie-turn.png
+ event: !type:ZombifySelfActionEvent
+
+- type: entity
+ id: ActionToggleLight
name: action-name-toggle-light
description: action-description-toggle-light
- icon: { sprite: Objects/Tools/flashlight.rsi, state: flashlight }
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png
- event: !type:ToggleActionEvent
-
-- type: instantAction
- id: OpenStorageImplant
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: { sprite: Objects/Tools/flashlight.rsi, state: flashlight }
+ iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png
+ event: !type:ToggleActionEvent
+
+- type: entity
+ id: ActionOpenStorageImplant
name: open-storage-implant-action-name
description: open-storage-implant-action-description
- itemIconStyle: BigAction
- priority: -20
- icon:
- sprite: Clothing/Back/Backpacks/backpack.rsi
- state: icon
- event: !type:OpenStorageImplantEvent
-
-- type: instantAction
- id: ActivateMicroBomb
+ noSpawn: true
+ components:
+ - type: InstantAction
+ itemIconStyle: BigAction
+ priority: -20
+ icon:
+ sprite: Clothing/Back/Backpacks/backpack.rsi
+ state: icon
+ event: !type:OpenStorageImplantEvent
+
+- type: entity
+ id: ActionActivateMicroBomb
name: activate-micro-bomb-action-name
description: activate-micro-bomb-action-description
- checkCanInteract: false
- itemIconStyle: BigAction
- priority: -20
- icon:
- sprite: Actions/Implants/implants.rsi
- state: explosive
- event: !type:ActivateImplantEvent
-
-- type: instantAction
- id: ActivateFreedomImplant
+ noSpawn: true
+ components:
+ - type: InstantAction
+ checkCanInteract: false
+ itemIconStyle: BigAction
+ priority: -20
+ icon:
+ sprite: Actions/Implants/implants.rsi
+ state: explosive
+ event: !type:ActivateImplantEvent
+
+- type: entity
+ id: ActionActivateFreedomImplant
name: use-freedom-implant-action-name
description: use-freedom-implant-action-description
- charges: 3
- checkCanInteract: false
- itemIconStyle: BigAction
- priority: -20
- icon:
- sprite: Actions/Implants/implants.rsi
- state: freedom
- event: !type:UseFreedomImplantEvent
-
-- type: instantAction
- id: OpenUplinkImplant
+ noSpawn: true
+ components:
+ - type: InstantAction
+ charges: 3
+ checkCanInteract: false
+ itemIconStyle: BigAction
+ priority: -20
+ icon:
+ sprite: Actions/Implants/implants.rsi
+ state: freedom
+ event: !type:UseFreedomImplantEvent
+
+- type: entity
+ id: ActionOpenUplinkImplant
name: open-uplink-implant-action-name
description: open-uplink-implant-action-description
- itemIconStyle: BigAction
- priority: -20
- icon:
- sprite: Objects/Devices/communication.rsi
- state: old-radio
- event: !type:OpenUplinkImplantEvent
-
-- type: instantAction
- id: ActivateEmpImplant
+ noSpawn: true
+ components:
+ - type: InstantAction
+ itemIconStyle: BigAction
+ priority: -20
+ icon:
+ sprite: Objects/Devices/communication.rsi
+ state: old-radio
+ event: !type:OpenUplinkImplantEvent
+
+- type: entity
+ id: ActionActivateEmpImplant
name: use-emp-implant-action-name
description: use-emp-implant-action-description
- charges: 3
- useDelay: 5
- itemIconStyle: BigAction
- priority: -20
- icon:
- sprite: Objects/Weapons/Grenades/empgrenade.rsi
- state: icon
- event: !type:ActivateImplantEvent
-
-- type: instantAction
- id: ActivateDnaScramblerImplant
+ noSpawn: true
+ components:
+ - type: InstantAction
+ charges: 3
+ useDelay: 5
+ itemIconStyle: BigAction
+ priority: -20
+ icon:
+ sprite: Objects/Weapons/Grenades/empgrenade.rsi
+ state: icon
+ event: !type:ActivateImplantEvent
+
+- type: entity
+ id: ActionActivateDnaScramblerImplant
name: use-dna-scrambler-implant-action-name
description: use-dna-scrambler-implant-action-description
- charges: 1
- itemIconStyle: BigAction
- priority: -20
- icon:
- sprite: Clothing/OuterClothing/Hardsuits/lingspacesuit.rsi
- state: icon
- event: !type:UseDnaScramblerImplantEvent
-
-- type: instantAction
- id: ToggleSuitPiece
+ noSpawn: true
+ components:
+ - type: InstantAction
+ charges: 1
+ itemIconStyle: BigAction
+ priority: -20
+ icon:
+ sprite: Clothing/OuterClothing/Hardsuits/lingspacesuit.rsi
+ state: icon
+ event: !type:UseDnaScramblerImplantEvent
+
+- type: entity
+ id: ActionToggleSuitPiece
name: action-name-hardsuit
description: action-description-hardsuit
- itemIconStyle: BigItem
- useDelay: 1 # equip noise spam.
- event: !type:ToggleClothingEvent
-
-- type: instantAction
- id: CombatModeToggle
+ noSpawn: true
+ components:
+ - type: InstantAction
+ itemIconStyle: BigItem
+ useDelay: 1 # equip noise spam.
+ event: !type:ToggleClothingEvent
+
+- type: entity
+ id: ActionCombatModeToggle
name: action-name-combat
description: action-description-combat
- checkCanInteract: false
- icon: Interface/Actions/harmOff.png
- iconOn: Interface/Actions/harm.png
- event: !type:ToggleCombatActionEvent
-
-- type: instantAction
- id: ChangeVoiceMask
+ noSpawn: true
+ components:
+ - type: InstantAction
+ checkCanInteract: false
+ icon: Interface/Actions/harmOff.png
+ iconOn: Interface/Actions/harm.png
+ event: !type:ToggleCombatActionEvent
+
+- type: entity
+ id: ActionCombatModeToggleOff
+ parent: ActionCombatModeToggle
+ name: action-name-combat
+ description: action-description-combat
+ noSpawn: true
+ components:
+ - type: InstantAction
+ enabled: false
+ autoPopulate: false
+
+- type: entity
+ id: ActionChangeVoiceMask
name: voice-mask-name-change-set
- icon: Interface/Actions/scream.png # somebody else can figure out a better icon for this
description: voice-mask-name-change-set-description
- serverEvent: !type:VoiceMaskSetNameEvent
+ components:
+ - type: InstantAction
+ icon: Interface/Actions/scream.png # somebody else can figure out a better icon for this
+ event: !type:VoiceMaskSetNameEvent
-- type: instantAction
- id: VendingThrow
+- type: entity
+ id: ActionVendingThrow
name: vending-machine-action-name
description: vending-machine-action-description
- useDelay: 30
- event: !type:VendingMachineSelfDispenseEvent
-
-- type: instantAction
- id: ArtifactActivate
+ noSpawn: true
+ components:
+ - type: InstantAction
+ useDelay: 30
+ event: !type:VendingMachineSelfDispenseEvent
+
+- type: entity
+ id: ActionArtifactActivate
name: activate-artifact-action-name
description: activate-artifact-action-desc
- icon:
- sprite: Objects/Specific/Xenoarchaeology/xeno_artifacts.rsi
- state: ano01
- useDelay: 60
- event: !type:ArtifactSelfActivateEvent
-
-- type: instantAction
- id: ToggleBlock
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon:
+ sprite: Objects/Specific/Xenoarchaeology/xeno_artifacts.rsi
+ state: ano01
+ useDelay: 60
+ event: !type:ArtifactSelfActivateEvent
+
+- type: entity
+ id: ActionToggleBlock
name: action-name-blocking
description: action-description-blocking
- icon: { sprite: Objects/Weapons/Melee/shields.rsi, state: teleriot-icon }
- iconOn: Objects/Weapons/Melee/shields.rsi/teleriot-on.png
- event: !type:ToggleActionEvent
-
-- type: instantAction
- id: ClearNetworkLinkOverlays
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: { sprite: Objects/Weapons/Melee/shields.rsi, state: teleriot-icon }
+ iconOn: Objects/Weapons/Melee/shields.rsi/teleriot-on.png
+ event: !type:ToggleActionEvent
+
+- type: entity
+ id: ActionClearNetworkLinkOverlays
name: network-configurator-clear-network-link-overlays
description: network-configurator-clear-network-link-overlays-desc
- icon: { sprite: Objects/Tools/multitool.rsi, state: icon }
- event: !type:ClearAllOverlaysEvent
-
-- type: instantAction
- id: AnimalLayEgg
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: { sprite: Objects/Tools/multitool.rsi, state: icon }
+ event: !type:ClearAllOverlaysEvent
+
+- type: entity
+ id: ActionAnimalLayEgg
name: action-name-lay-egg
description: action-description-lay-egg
- icon: { sprite: Objects/Consumable/Food/egg.rsi, state: icon }
- useDelay: 60
- serverEvent: !type:EggLayInstantActionEvent
-
-- type: instantAction
- id: Sleep
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: { sprite: Objects/Consumable/Food/egg.rsi, state: icon }
+ useDelay: 60
+ event: !type:EggLayInstantActionEvent
+
+- type: entity
+ id: ActionSleep
name: action-name-sleep
description: action-desc-sleep
- checkCanInteract: false
- icon: { sprite: Clothing/Head/Hats/pyjamasyndicatered.rsi, state: icon }
- event: !type:SleepActionEvent
-
-- type: instantAction
- id: Wake
+ noSpawn: true
+ components:
+ - type: InstantAction
+ checkCanInteract: false
+ icon: { sprite: Clothing/Head/Hats/pyjamasyndicatered.rsi, state: icon }
+ event: !type:SleepActionEvent
+
+- type: entity
+ id: ActionWake
name: action-name-wake
description: action-desc-wake
- icon: { sprite: Clothing/Head/Hats/pyjamasyndicatered.rsi, state: icon }
- checkCanInteract: false
- event: !type:WakeActionEvent
-
-- type: instantAction
- id: ActivateHonkImplant
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: { sprite: Clothing/Head/Hats/pyjamasyndicatered.rsi, state: icon }
+ checkCanInteract: false
+ event: !type:WakeActionEvent
+
+- type: entity
+ id: ActionActivateHonkImplant
name: action-name-honk
description: action-desc-honk
- icon: { sprite: Objects/Fun/bikehorn.rsi, state: icon }
- event: !type:ActivateImplantEvent
- useDelay: 1
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: { sprite: Objects/Fun/bikehorn.rsi, state: icon }
+ event: !type:ActivateImplantEvent
+ useDelay: 1
id: DebugListing
name: debug name
description: debug desc
- categories:
+ categories:
- Debug
- cost:
+ cost:
DebugDollar: 10
Telecrystal: 10
id: DebugListing3
name: debug name 3
description: debug desc 3
- categories:
+ categories:
- Debug
- cost:
+ cost:
DebugDollar: 10
- type: listing
id: DebugListing5
name: debug name 5
description: debug desc 5
- categories:
+ categories:
- Debug
- type: listing
id: DebugListing4
name: debug name 4
description: debug desc 4
- productAction: Scream
- categories:
+ productAction: ActionScream
+ categories:
- Debug
- cost:
+ cost:
DebugDollar: 1
- type: listing
id: DebugListing2
name: debug name 2
description: debug desc 2
- categories:
+ categories:
- Debug2
- cost:
- DebugDollar: 10
\ No newline at end of file
+ cost:
+ DebugDollar: 10
id: RevenantDefile
name: Defile
description: Defiles the surrounding area, ripping up floors, damaging windows, opening containers, and throwing items. Using it leaves you vulnerable to attacks for a short period of time.
- productAction: RevenantDefile
+ productAction: ActionRevenantDefile
cost:
StolenEssence: 10
categories:
id: RevenantOverloadLights
name: Overload Lights
description: Overloads all nearby lights, causing lights to pulse and sending out dangerous lightning. Using it leaves you vulnerable to attacks for a long period of time.
- productAction: RevenantOverloadLights
+ productAction: ActionRevenantOverloadLights
cost:
StolenEssence: 25
categories:
# id: RevenantBlight
# name: Blight
# description: Infects all nearby organisms with an infectious disease that causes toxic buildup and tiredness. Using it leaves you vulnerable to attacks for a medium period of time.
-# productAction: RevenantBlight
+# productAction: ActionRevenantBlight
# cost:
# StolenEssence: 75
# categories:
id: RevenantMalfunction
name: Malfunction
description: Makes nearby electronics stop working properly. Using it leaves you vulnerable to attacks for a long period of time.
- productAction: RevenantMalfunction
+ productAction: ActionRevenantMalfunction
cost:
StolenEssence: 125
categories:
id: ClothingMaskPullableBase
components:
- type: Mask
- toggleAction:
- name: action-name-mask
- description: action-description-mask-toggle
- icon: { sprite: Clothing/Mask/gas.rsi, state: icon }
- iconOn: Interface/Default/blocked.png
- event: !type:ToggleMaskEvent
+
+- type: entity
+ id: ActionToggleMask
+ name: action-name-mask
+ description: action-description-mask-toggle
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: { sprite: Clothing/Mask/gas.rsi, state: icon }
+ iconOn: Interface/Default/blocked.png
+ event: !type:ToggleMaskEvent
sprite: Clothing/Neck/Misc/lawyerbadge.rsi
- type: TypingIndicatorClothing
proto: lawyer
+
+- type: entity
+ id: ActionStethoscope
+ name: stethoscope-verb
+ noSpawn: true
+ components:
+ - type: EntityTargetAction
+ icon: Clothing/Neck/Misc/stethoscope.rsi/icon.png
+ event: !type:StethoscopeActionEvent
+ checkCanInteract: false
+ priority: -1
sprite: Clothing/OuterClothing/Suits/spaceninja.rsi
- type: StealthClothing
visibility: 0.3
- toggleAction:
- # have to plan (un)cloaking ahead of time
- useDelay: 5
- name: action-name-toggle-phase-cloak
- description: action-desc-toggle-phase-cloak
- priority: -9
- event: !type:ToggleStealthEvent
- type: PressureProtection
highPressureMultiplier: 0.6
lowPressureMultiplier: 1000
Piercing: 0.6
Heat: 0.6
+- type: entity
+ id: ActionTogglePhaseCloak
+ name: action-name-toggle-phase-cloak
+ description: action-desc-toggle-phase-cloak
+ noSpawn: true
+ components:
+ - type: InstantAction
+ # have to plan (un)cloaking ahead of time
+ useDelay: 5
+ priority: -9
+ event: !type:ToggleStealthEvent
+
- type: entity
parent: ClothingOuterBase
id: ClothingOuterSuitChicken
- type: Clothing
sprite: Clothing/Shoes/Boots/magboots.rsi
- type: Magboots
- toggleAction:
- icon: { sprite: Clothing/Shoes/Boots/magboots.rsi, state: icon }
- iconOn: { sprite : Clothing/Shoes/Boots/magboots.rsi, state: icon-on }
- name: action-name-magboot-toggle
- description: action-decription-magboot-toggle
- itemIconStyle: NoItem
- event: !type:ToggleMagbootsEvent
+ toggleAction: ActionToggleMagboots
- type: ClothingSpeedModifier
walkModifier: 0.85
sprintModifier: 0.8
- type: Clothing
sprite: Clothing/Shoes/Boots/magboots-advanced.rsi
- type: Magboots
- toggleAction:
- icon: { sprite: Clothing/Shoes/Boots/magboots-advanced.rsi, state: icon }
- iconOn: Clothing/Shoes/Boots/magboots-advanced.rsi/icon-on.png
- name: action-name-magboot-toggle
- description: action-decription-magboot-toggle
- itemIconStyle: NoItem
- event: !type:ToggleMagbootsEvent
+ toggleAction: ActionToggleMagbootsAdvanced
- type: ClothingSpeedModifier
walkModifier: 1
sprintModifier: 1
- type: Clothing
sprite: Clothing/Shoes/Boots/magboots-syndicate.rsi
- type: Magboots
- toggleAction:
- icon: { sprite: Clothing/Shoes/Boots/magboots-syndicate.rsi, state: icon }
- iconOn: Clothing/Shoes/Boots/magboots-syndicate.rsi/icon-on.png
- name: action-name-magboot-toggle
- description: action-decription-magboot-toggle
- itemIconStyle: NoItem
- event: !type:ToggleMagbootsEvent
+ toggleAction: ActionToggleMagbootsSyndie
- type: ClothingSpeedModifier
walkModifier: 0.95
sprintModifier: 0.9
enabled: false
- type: GasTank
- toggleAction:
- name: action-name-internals-toggle
- description: action-description-internals-toggle
- icon:
- sprite: Interface/Alerts/internals.rsi
- state: internal2
- iconOn:
- sprite: Interface/Alerts/internals.rsi
- state: internal1
- event: !type:ToggleActionEvent
- useDelay: 1
outputPressure: 42.6
air:
# 2 minutes of thrust
maxIntensity: 20
- type: Jetpack
moleUsage: 0.00085
- toggleAction:
- icon:
- sprite: Objects/Tanks/Jetpacks/blue.rsi
- state: icon
- iconOn:
- sprite: Objects/Tanks/Jetpacks/blue.rsi
- state: icon-on
- name: action-name-jetpack-toggle
- description: action-description-jetpack-toggle
- useDelay: 1.0
- event: !type:ToggleJetpackEvent
- type: InputMover
toParent: true
- type: MovementSpeedModifier
- type: Tag
tags:
- WhitelistChameleon
+
+- type: entity
+ id: ActionBaseToggleMagboots
+ name: action-name-magboot-toggle
+ description: action-description-magboot-toggle
+ noSpawn: true
+ components:
+ - type: InstantAction
+ itemIconStyle: NoItem
+ event: !type:ToggleMagbootsEvent
+
+- type: entity
+ id: ActionToggleMagboots
+ parent: ActionBaseToggleMagboots
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: { sprite: Clothing/Shoes/Boots/magboots.rsi, state: icon }
+ iconOn: { sprite : Clothing/Shoes/Boots/magboots.rsi, state: icon-on }
+
+- type: entity
+ id: ActionToggleMagbootsAdvanced
+ parent: ActionBaseToggleMagboots
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: { sprite: Clothing/Shoes/Boots/magboots-advanced.rsi, state: icon }
+ iconOn: Clothing/Shoes/Boots/magboots-advanced.rsi/icon-on.png
+
+- type: entity
+ id: ActionToggleMagbootsSyndie
+ parent: ActionBaseToggleMagboots
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: { sprite: Clothing/Shoes/Boots/magboots-syndicate.rsi, state: icon }
+ iconOn: Clothing/Shoes/Boots/magboots-syndicate.rsi/icon-on.png
- type: MobStateActions
actions:
Critical:
- - CritSuccumb
- - CritFakeDeath
- - CritLastWords
+ - ActionCritSuccumb
+ - ActionCritFakeDeath
+ - ActionCritLastWords
- type: MobThresholds
thresholds:
0: Alive
wilhelmProbability: 0.001
# TODO: Remove CombatMode when Prototype Composition is added
- type: CombatMode
- combatToggleAction:
- enabled: false
- autoPopulate: false
- name: action-name-combat
+ combatToggleAction: ActionCombatModeToggleOff
- type: Bloodstream
bloodMaxVolume: 50
- type: CanEscapeInventory
- type: MobStateActions
actions:
Critical:
- - CritSuccumb
- - CritFakeDeath
- - CritLastWords
+ - ActionCritSuccumb
+ - ActionCritFakeDeath
+ - ActionCritLastWords
- type: MobThresholds
thresholds:
0: Alive
- FootstepSound
- type: NoSlip
- type: RatKing
- actionRaiseArmy:
- useDelay: 4
- icon: Interface/Actions/ratKingArmy.png
- name: rat-king-raise-army-name
- description: rat-king-raise-army-description
- itemIconStyle: NoItem
- event: !type:RatKingRaiseArmyActionEvent
hungerPerArmyUse: 25
- actionDomain:
- useDelay: 10
- icon: Interface/Actions/ratKingDomain.png
- name: rat-king-domain-name
- description: rat-king-domain-description
- itemIconStyle: NoItem
- event: !type:RatKingDomainActionEvent
hungerPerDomainUse: 50
- type: MobsterAccent
- type: Speech
- type: GuideHelp
guides:
- MinorAntagonists
+
+- type: entity
+ id: ActionRatKingRaiseArmy
+ name: rat-king-raise-army-name
+ description: rat-king-raise-army-description
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: Interface/Actions/ratKingArmy.png
+ itemIconStyle: NoItem
+ event: !type:RatKingRaiseArmyActionEvent
+ useDelay: 4
+
+- type: entity
+ id: ActionRatKingDomain
+ name: rat-king-domain-name
+ description: rat-king-domain-description
+ noSpawn: true
+ components:
+ - type: InstantAction
+ useDelay: 10
+ icon: Interface/Actions/ratKingDomain.png
+ itemIconStyle: NoItem
+ event: !type:RatKingDomainActionEvent
speechVerb: Robotic
- type: TypingIndicator
proto: robot
-
+
- type: entity
parent: [ MobSiliconBase, BaseVehicle]
id: MobSiliconBaseVehicle # for vehicles
- type: GhostRole
makeSentient: true
- type: UnpoweredFlashlight
- toggleAction:
- name: action-name-toggle-light
- description: action-description-toggle-light
- icon: { sprite: Objects/Tools/flashlight.rsi, state: flashlight }
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png
- event: !type:ToggleActionEvent
- type: PointLight
enabled: false
radius: 3.5
softness: 2
mask: /Textures/Effects/LightMasks/cone.png
autoRot: true
-
+
- type: entity
parent: MobSiliconBaseVehicle
id: MobTaxiBot
- type: MobStateActions
actions:
Critical:
- - CritSuccumb
- - CritFakeDeath
- - CritLastWords
+ - ActionCritSuccumb
+ - ActionCritFakeDeath
+ - ActionCritLastWords
- type: MobThresholds
thresholds:
0: Alive
- type: IntrinsicUI
uis:
- key: enum.SolarControlConsoleUiKey.Key
- toggleAction:
- name: action-name-show-solar-console
- description: action-description-show-solar-console
- icon: { sprite: Structures/Machines/parts.rsi, state: box_0 }
- iconOn: Structures/Machines/parts.rsi/box_2.png
- keywords: [ "AI", "console", "interface" ]
- priority: -10
- event: !type:ToggleIntrinsicUIEvent
+ toggleAction: ActionAGhostShowSolar
- key: enum.CommunicationsConsoleUiKey.Key
- toggleAction:
- name: action-name-show-communications-console
- description: action-description-show-communications-console
- icon: { sprite: Structures/Machines/parts.rsi, state: box_0 }
- iconOn: Structures/Machines/parts.rsi/box_2.png
- keywords: [ "AI", "console", "interface" ]
- priority: -10
- event: !type:ToggleIntrinsicUIEvent
+ toggleAction: ActionAGhostShowCommunications
- key: enum.RadarConsoleUiKey.Key
- toggleAction:
- name: action-name-show-radar-console
- description: action-description-show-radar-console
- icon: { sprite: Structures/Machines/parts.rsi, state: box_0 }
- iconOn: Structures/Machines/parts.rsi/box_2.png
- keywords: [ "AI", "console", "interface" ]
- priority: -10
- event: !type:ToggleIntrinsicUIEvent
+ toggleAction: ActionAGhostShowRadar
- key: enum.CargoConsoleUiKey.Orders
- toggleAction:
- name: action-name-show-cargo-console
- description: action-description-show-cargo-console
- icon: { sprite: Structures/Machines/parts.rsi, state: box_0 }
- iconOn: Structures/Machines/parts.rsi/box_2.png
- keywords: [ "AI", "console", "interface" ]
- priority: -10
- event: !type:ToggleIntrinsicUIEvent
+ toggleAction: ActionAGhostShowCargo
- key: enum.CrewMonitoringUIKey.Key
- toggleAction:
- name: action-name-show-crew-monitoring-console
- description: action-description-crew-monitoring-console
- icon: { sprite: Structures/Machines/parts.rsi, state: box_0 }
- iconOn: Structures/Machines/parts.rsi/box_2.png
- keywords: [ "AI", "console", "interface" ]
- priority: -10
- event: !type:ToggleIntrinsicUIEvent
+ toggleAction: ActionAGhostShowCrewMonitoring
- key: enum.GeneralStationRecordConsoleKey.Key
- toggleAction:
- name: action-name-show-station-records-console
- description: action-description-station-records-console
- icon: { sprite: Structures/Machines/parts.rsi, state: box_0 }
- iconOn: Structures/Machines/parts.rsi/box_2.png
- keywords: [ "AI", "console", "interface" ]
- priority: -10
- event: !type:ToggleIntrinsicUIEvent
+ toggleAction: ActionAGhostShowStationRecords
- type: SolarControlConsole # look ma i AM the computer!
- type: CommunicationsConsole
title: communicationsconsole-announcement-title-centcom
- type: Stripping
- type: SolutionScanner
- type: IgnoreUIRange
+
+- type: entity
+ id: ActionAGhostShowSolar
+ name: action-name-show-solar-console
+ description: action-description-show-solar-console
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: { sprite: Structures/Machines/parts.rsi, state: box_0 }
+ iconOn: Structures/Machines/parts.rsi/box_2.png
+ keywords: [ "AI", "console", "interface" ]
+ priority: -10
+ event: !type:ToggleIntrinsicUIEvent { key: enum.SolarControlConsoleUiKey.Key }
+
+- type: entity
+ id: ActionAGhostShowCommunications
+ name: action-name-show-communications-console
+ description: action-description-show-communications-console
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: { sprite: Structures/Machines/parts.rsi, state: box_0 }
+ iconOn: Structures/Machines/parts.rsi/box_2.png
+ keywords: [ "AI", "console", "interface" ]
+ priority: -10
+ event: !type:ToggleIntrinsicUIEvent { key: enum.CommunicationsConsoleUiKey.Key }
+
+- type: entity
+ id: ActionAGhostShowRadar
+ name: action-name-show-radar-console
+ description: action-description-show-radar-console
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: { sprite: Structures/Machines/parts.rsi, state: box_0 }
+ iconOn: Structures/Machines/parts.rsi/box_2.png
+ keywords: [ "AI", "console", "interface" ]
+ priority: -10
+ event: !type:ToggleIntrinsicUIEvent { key: enum.RadarConsoleUiKey.Key }
+
+- type: entity
+ id: ActionAGhostShowCargo
+ name: action-name-show-cargo-console
+ description: action-description-show-cargo-console
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: { sprite: Structures/Machines/parts.rsi, state: box_0 }
+ iconOn: Structures/Machines/parts.rsi/box_2.png
+ keywords: [ "AI", "console", "interface" ]
+ priority: -10
+ event: !type:ToggleIntrinsicUIEvent { key: enum.CargoConsoleUiKey.Orders }
+
+- type: entity
+ id: ActionAGhostShowCrewMonitoring
+ name: action-name-show-crew-monitoring-console
+ description: action-description-crew-monitoring-console
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: { sprite: Structures/Machines/parts.rsi, state: box_0 }
+ iconOn: Structures/Machines/parts.rsi/box_2.png
+ keywords: [ "AI", "console", "interface" ]
+ priority: -10
+ event: !type:ToggleIntrinsicUIEvent { key: enum.CrewMonitoringUIKey.Key }
+
+- type: entity
+ id: ActionAGhostShowStationRecords
+ name: action-name-show-station-records-console
+ description: action-description-station-records-console
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: { sprite: Structures/Machines/parts.rsi, state: box_0 }
+ iconOn: Structures/Machines/parts.rsi/box_2.png
+ keywords: [ "AI", "console", "interface" ]
+ priority: -10
+ event: !type:ToggleIntrinsicUIEvent { key: enum.GeneralStationRecordConsoleKey.Key }
- type: MobStateActions
actions:
Critical:
- - CritSuccumb
- - CritLastWords
+ - ActionCritSuccumb
+ - ActionCritLastWords
- type: MobThresholds
thresholds:
0: Alive
- Door
tags:
- Wall
- devourAction:
- event: !type:DevourActionEvent
- icon: Interface/Actions/devour.png
- name: action-name-devour
- description: action-description-devour
- type: Tag
tags:
- CannotSuicide
- type: Dragon
spawnsLeft: 2
spawnsProto: MobCarpDragon
- spawnRiftAction:
- event: !type:DragonSpawnRiftActionEvent
- icon:
- sprite: Interface/Actions/carp_rift.rsi
- state: icon
- name: action-name-carp-rift
- description: action-description-carp-rift
- useDelay: 1
+ spawnRiftAction: ActionSpawnRift
- type: GuideHelp
guides:
- MinorAntagonists
damage:
groups:
Brute: 15
+
+- type: entity
+ id: ActionSpawnRift
+ name: action-name-carp-rift
+ description: action-description-carp-rift
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon:
+ sprite: Interface/Actions/carp_rift.rsi
+ state: icon
+ event: !type:DragonSpawnRiftActionEvent
+ useDelay: 1
+
+- type: entity
+ id: ActionDevour
+ name: action-name-devour
+ description: action-description-devour
+ noSpawn: true
+ components:
+ - type: EntityTargetAction
+ icon: Interface/Actions/devour.png
+ event: !type:DevourActionEvent
- type: RandomMetadata
nameSegments:
- names_clown
+
+- type: entity
+ id: ActionToggleGuardian
+ name: action-name-guardian
+ description: action-description-guardian
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: Interface/Actions/manifest.png
+ event: !type:GuardianToggleActionEvent
+ useDelay: 2
+ checkCanInteract: false
- type: Tag
tags:
- BypassInteractionRangeChecks
+
+- type: entity
+ id: ActionGhostBoo
+ name: action-name-boo
+ description: action-description-boo
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: Interface/Actions/scream.png
+ checkCanInteract: false
+ event: !type:BooActionEvent
+ useDelay: 120
+
+- type: entity
+ id: ActionToggleLighting
+ name: ghost-gui-toggle-lighting-manager-name
+ description: ghost-gui-toggle-lighting-manager-desc
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: Interface/VerbIcons/light.svg.192dpi.png
+ clientExclusive: true
+ checkCanInteract: false
+ event: !type:ToggleLightingActionEvent
+
+- type: entity
+ id: ActionToggleFov
+ name: ghost-gui-toggle-fov-name
+ description: ghost-gui-toggle-fov-desc
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: Interface/VerbIcons/vv.svg.192dpi.png
+ clientExclusive: true
+ checkCanInteract: false
+ event: !type:ToggleFoVActionEvent
+
+- type: entity
+ id: ActionToggleGhosts
+ name: ghost-gui-toggle-ghost-visibility-name
+ description: ghost-gui-toggle-ghost-visibility-desc
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: { sprite: Mobs/Ghosts/ghost_human.rsi, state: icon }
+ clientExclusive: true
+ checkCanInteract: false
+ event: !type:ToggleGhostsActionEvent
doAfterDelay: 8
- type: Actions
- type: UnpoweredFlashlight
- toggleAction:
- name: action-name-toggle-light
- description: action-description-toggle-light
- icon: { sprite: Objects/Tools/flashlight.rsi, state: flashlight }
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png
- event: !type:ToggleActionEvent
- type: PointLight
enabled: false
radius: 3.5
Slash: 4
# Fun
- type: Sericulture
- actionProto: SericultureAction
+ action: ActionSericulture
productionLength: 3
entityProduced: MaterialWebSilk1
hungerCost: 9 # Should total to 12 total silk on full hunger
- type: MobStateActions
actions:
Critical:
- - CritSuccumb
- - CritFakeDeath
- - CritLastWords
+ - ActionCritSuccumb
+ - ActionCritFakeDeath
+ - ActionCritLastWords
- type: MobThresholds
thresholds:
0: Alive
- idcard
- Belt
- type: UnpoweredFlashlight
- toggleAction:
- name: action-name-toggle-light
- description: action-description-toggle-light
- icon: { sprite: Objects/Tools/flashlight.rsi, state: flashlight }
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png
- event: !type:ToggleActionEvent
- type: PointLight
enabled: false
radius: 1.5
- type: Input
context: "human"
- type: PAI
- midiAction:
- name: action-name-pai-play-midi
- checkCanInteract: false
- icon: Interface/Actions/pai-midi.png
- description: action-description-pai-play-midi
- event: !type:OpenUiActionEvent
- key: enum.InstrumentUiKey.Key
- type: BlockMovement
- type: ToggleableGhostRole
examineTextMindPresent: pai-system-pai-installed
Off: { state: syndicate-pai-off-overlay }
Searching: { state: syndicate-pai-searching-overlay }
On: { state: syndicate-pai-on-overlay }
+
+- type: entity
+ id: ActionPAIPlayMidi
+ name: action-name-pai-play-midi
+ description: action-description-pai-play-midi
+ noSpawn: true
+ components:
+ - type: InstantAction
+ checkCanInteract: false
+ icon: Interface/Actions/pai-midi.png
+ event: !type:OpenUiActionEvent
+ key: enum.InstrumentUiKey.Key
parent: BaseSpellbook
components:
- type: Spellbook
- instantSpells:
+ spells:
FlashRune: -1
- worldSpells:
- SpawnMagicarpSpell: -1
+ ActionSpawnMagicarpSpell: -1
- type: entity
id: ForceWallSpellbook
layers:
- state: bookforcewall
- type: Spellbook
- instantSpells:
- ForceWall: -1
+ spells:
+ ActionForceWall: -1
- type: entity
id: BlinkBook
layers:
- state: spellbook
- type: Spellbook
- worldSpells:
- Blink: -1
+ spells:
+ ActionBlink: -1
- type: entity
id: SmiteBook
layers:
- state: spellbook
- type: Spellbook
- entitySpells:
- Smite: -1
+ spells:
+ ActionSmite: -1
- type: entity
id: KnockSpellbook
layers:
- state: bookknock
- type: Spellbook
- instantSpells:
- Knock: -1
+ spells:
+ ActionKnock: -1
- type: entity
id: FireballSpellbook
layers:
- state: bookfireball
- type: Spellbook
- worldSpells:
- Fireball: -1
+ spells:
+ ActionFireball: -1
- type: entity
id: ScrollRunes
layers:
- state: spell_default
- type: Spellbook
- instantSpells:
+ spells:
FlashRune: -1
ExplosionRune: -1
IgniteRune: -1
noSpawn: true
components:
- type: SubdermalImplant
- implantAction: ToggleLight
+ implantAction: ActionToggleLight
- type: PointLight
enabled: false
radius: 2.5
- HideContextMenu
- Flashlight
- type: UnpoweredFlashlight
- toggleAction:
- name: action-name-toggle-light
- description: action-description-toggle-light
- icon: { sprite: Objects/Tools/flashlight.rsi, state: flashlight }
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png
- event: !type:ToggleActionEvent
- type: entity
parent: BaseSubdermalImplant
noSpawn: true
components:
- type: SubdermalImplant
- implantAction: ActivateHonkImplant
+ implantAction: ActionActivateHonkImplant
- type: TriggerImplantAction
- type: EmitSoundOnTrigger
sound:
noSpawn: true
components:
- type: SubdermalImplant
- implantAction: OpenStorageImplant
+ implantAction: ActionOpenStorageImplant
- type: Item
size: 9999
- type: Storage
noSpawn: true
components:
- type: SubdermalImplant
- implantAction: ActivateFreedomImplant
+ implantAction: ActionActivateFreedomImplant
- type: entity
parent: BaseSubdermalImplant
noSpawn: true
components:
- type: SubdermalImplant
- implantAction: OpenUplinkImplant
+ implantAction: ActionOpenUplinkImplant
- type: Store
preset: StorePresetUplink
balance:
noSpawn: true
components:
- type: SubdermalImplant
- implantAction: ActivateEmpImplant
+ implantAction: ActionActivateEmpImplant
- type: TriggerImplantAction
- type: EmpOnTrigger
range: 1.75
noSpawn: true
components:
- type: SubdermalImplant
- implantAction: ActivateDnaScramblerImplant
+ implantAction: ActionActivateDnaScramblerImplant
#Nuclear Operative/Special Exclusive implants
components:
- type: SubdermalImplant
permanent: true
- implantAction: ActivateMicroBomb
+ implantAction: ActionActivateMicroBomb
- type: TriggerOnMobstateChange
mobState:
- Dead
Slash: 1
Piercing: 1
Heat: 1
- blockingToggleAction:
- name: action-name-blocking
- description: action-description-blocking
- icon: { sprite: Objects/Weapons/Melee/shields.rsi, state: teleriot-icon }
- iconOn: Objects/Weapons/Melee/shields.rsi/teleriot-on.png
- event: !type:ToggleActionEvent
- type: Damageable
damageContainer: Shield
- type: Destructible
- type: Clothing
slots:
- Belt
+
+- type: entity
+ id: ActionBibleSummon
+ name: bible-summon-verb
+ description: bible-summon-verb-desc
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: { sprite: Clothing/Head/Hats/witch.rsi, state: icon }
+ event: !type:SummonActionEvent
+ useDelay: 1
containers:
provided_container: !type:Container { }
+- type: entity
+ id: ActionBorgSwapModule
+ name: action-name-swap-module
+ description: action-desc-swap-module
+ noSpawn: true
+ components:
+ - type: InstantAction
+ itemIconStyle: BigItem
+ useDelay: 0.5
+ event: !type:BorgModuleActionSelectedEvent
+
- type: entity
id: BaseBorgModuleCargo
parent: BaseBorgModule
- key: enum.SharedGasTankUiKey.Key
type: GasTankBoundUserInterface
- type: GasTank
- toggleAction:
- name: action-name-internals-toggle
- description: action-description-internals-toggle
- icon:
- sprite: Interface/Alerts/internals.rsi
- state: internal2
- iconOn:
- sprite: Interface/Alerts/internals.rsi
- state: internal1
- event: !type:ToggleActionEvent
- useDelay: 1
outputPressure: 21.3
air:
# If gas tank volume is changed, adjust MinimumTritiumOxyburnEnergy in Atmospherics.cs by the same proportions
temperature: 293.15
- type: Jetpack
moleUsage: 0.00085
- toggleAction:
- icon:
- sprite: Objects/Tanks/Jetpacks/blue.rsi
- state: icon
- iconOn:
- sprite: Objects/Tanks/Jetpacks/blue.rsi
- state: icon-on
- name: action-name-jetpack-toggle
- description: action-description-jetpack-toggle
- useDelay: 1.0
- event: !type:ToggleJetpackEvent
- type: Appearance
- type: StaticPrice
price: 100
+- type: entity
+ id: ActionToggleJetpack
+ name: action-name-jetpack-toggle
+ description: action-description-jetpack-toggle
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon:
+ sprite: Objects/Tanks/Jetpacks/blue.rsi
+ state: icon
+ iconOn:
+ sprite: Objects/Tanks/Jetpacks/blue.rsi
+ state: icon-on
+ useDelay: 1.0
+ event: !type:ToggleJetpackEvent
+
#Empty blue
- type: entity
id: JetpackBlue
--- /dev/null
+- type: entity
+ id: ActionVehicleHorn
+ name: action-name-honk
+ description: action-desc-honk
+ noSpawn: true
+ components:
+ - type: InstantAction
+ useDelay: 3.4
+ icon: Objects/Fun/bikehorn.rsi/icon.png
+ event: !type:HonkActionEvent
map: ["enum.VehicleVisualLayers.AutoAnimate"]
noRot: true
- type: UnpoweredFlashlight
- toggleAction:
- name: action-name-toggle-light
- description: action-description-toggle-light
- icon: { sprite: Objects/Tools/flashlight.rsi, state: flashlight }
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png
- event: !type:ToggleActionEvent
- type: PointLight
enabled: false
radius: 3.5
buckleOffset: "0.1, -0.05"
maxBuckleDistance: 1
- type: UnpoweredFlashlight
- toggleAction:
- name: action-name-toggle-light
- description: action-description-toggle-light
- icon: { sprite: Objects/Tools/flashlight.rsi, state: flashlight }
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png
- event: !type:ToggleActionEvent
- type: PointLight
enabled: false
radius: 3.5
baseWalkSpeed: 4.5
baseSprintSpeed: 7
- type: UnpoweredFlashlight
- toggleAction:
- name: action-name-toggle-light
- description: action-description-toggle-light
- icon: { sprite: Objects/Tools/flashlight.rsi, state: flashlight }
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png
- event: !type:ToggleActionEvent
- type: PointLight
enabled: false
radius: 3.5
interactSuccessSound:
path: /Audio/Effects/double_beep.ogg
- type: CombatMode
- combatToggleAction:
- enabled: false
- autoPopulate: false
- name: action-name-combat
+ combatToggleAction: ActionCombatModeToggleOff
- type: Damageable
damageContainer: Inorganic
- type: Destructible
components:
- type: Sharp
- type: UnpoweredFlashlight
- toggleAction:
- name: action-name-toggle-light
- description: action-description-toggle-light
- icon: { sprite: Objects/Tools/flashlight.rsi, state: flashlight }
- iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png
- event: !type:ToggleActionEvent
- type: PointLight
color: "#ffeead"
enabled: false
-- type: instantAction
- id: ForceWall
+- type: entity
+ id: ActionForceWall
name: action-name-spell-forcewall
description: action-description-spell-forcewall
- useDelay: 10
- itemIconStyle: BigAction
- sound: !type:SoundPathSpecifier
- path: /Audio/Magic/forcewall.ogg
- icon:
- sprite: Objects/Magic/magicactions.rsi
- state: shield
- serverEvent: !type:InstantSpawnSpellEvent
- prototype: WallForce
- posData: !type:TargetInFront
- speech: action-speech-spell-forcewall
+ noSpawn: true
+ components:
+ - type: InstantAction
+ useDelay: 10
+ itemIconStyle: BigAction
+ sound: !type:SoundPathSpecifier
+ path: /Audio/Magic/forcewall.ogg
+ icon:
+ sprite: Objects/Magic/magicactions.rsi
+ state: shield
+ event: !type:InstantSpawnSpellEvent
+ prototype: WallForce
+ posData: !type:TargetInFront
+ speech: action-speech-spell-forcewall
-- type: instantAction
- id: Knock
+- type: entity
+ id: ActionKnock
name: action-name-spell-knock
description: action-description-spell-knock
- useDelay: 10
- itemIconStyle: BigAction
- icon:
- sprite: Objects/Magic/magicactions.rsi
- state: knock
- serverEvent: !type:KnockSpellEvent
- speech: action-speech-spell-knock
+ noSpawn: true
+ components:
+ - type: InstantAction
+ useDelay: 10
+ itemIconStyle: BigAction
+ icon:
+ sprite: Objects/Magic/magicactions.rsi
+ state: knock
+ event: !type:KnockSpellEvent
+ speech: action-speech-spell-knock
-- type: worldTargetAction
- id: Fireball
+- type: entity
+ id: ActionFireball
name: action-name-spell-fireball
description: action-description-spell-fireball
- useDelay: 30
- itemIconStyle: BigAction
- checkCanAccess: false
- range: 60
- sound: !type:SoundPathSpecifier
- path: /Audio/Magic/fireball.ogg
- icon:
- sprite: Objects/Magic/magicactions.rsi
- state: fireball
- serverEvent: !type:ProjectileSpellEvent
- prototype: ProjectileFireball
- posData: !type:TargetCasterPos
- speech: action-speech-spell-fireball
+ noSpawn: true
+ components:
+ - type: WorldTargetAction
+ useDelay: 30
+ itemIconStyle: BigAction
+ checkCanAccess: false
+ range: 60
+ sound: !type:SoundPathSpecifier
+ path: /Audio/Magic/fireball.ogg
+ icon:
+ sprite: Objects/Magic/magicactions.rsi
+ state: fireball
+ event: !type:ProjectileSpellEvent
+ prototype: ProjectileFireball
+ posData: !type:TargetCasterPos
+ speech: action-speech-spell-fireball
-- type: instantAction
- id: FlashRune
+- type: entity
+ id: ActionFlashRune
name: action-name-spell-rune-flash
description: action-description-spell-rune-flash
- useDelay: 10
- itemIconStyle: BigAction
- icon:
- sprite: Objects/Magic/magicactions.rsi
- state: spell_default
- serverEvent: !type:InstantSpawnSpellEvent
- prototype: FlashRune
+ noSpawn: true
+ components:
+ - type: InstantAction
+ useDelay: 10
+ itemIconStyle: BigAction
+ icon:
+ sprite: Objects/Magic/magicactions.rsi
+ state: spell_default
+ event: !type:InstantSpawnSpellEvent
+ prototype: FlashRune
-- type: instantAction
- id: ExplosionRune
+- type: entity
+ id: ActionExplosionRune
name: action-name-spell-rune-explosion
description: action-description-spell-rune-explosion
- useDelay: 20
- itemIconStyle: BigAction
- icon:
- sprite: Objects/Magic/magicactions.rsi
- state: spell_default
- serverEvent: !type:InstantSpawnSpellEvent
- prototype: ExplosionRune
+ noSpawn: true
+ components:
+ - type: InstantAction
+ useDelay: 20
+ itemIconStyle: BigAction
+ icon:
+ sprite: Objects/Magic/magicactions.rsi
+ state: spell_default
+ event: !type:InstantSpawnSpellEvent
+ prototype: ExplosionRune
-- type: instantAction
- id: IgniteRune
+- type: entity
+ id: ActionIgniteRune
name: action-name-spell-rune-ignite
description: action-description-spell-rune-ignite
- useDelay: 15
- itemIconStyle: BigAction
- icon:
- sprite: Objects/Magic/magicactions.rsi
- state: spell_default
- serverEvent: !type:InstantSpawnSpellEvent
- prototype: IgniteRune
+ noSpawn: true
+ components:
+ - type: InstantAction
+ useDelay: 15
+ itemIconStyle: BigAction
+ icon:
+ sprite: Objects/Magic/magicactions.rsi
+ state: spell_default
+ event: !type:InstantSpawnSpellEvent
+ prototype: IgniteRune
-- type: instantAction
- id: StunRune
+- type: entity
+ id: ActionStunRune
name: action-name-spell-rune-stun
description: action-description-spell-rune-stun
- useDelay: 10
- itemIconStyle: BigAction
- icon:
- sprite: Objects/Magic/magicactions.rsi
- state: spell_default
- serverEvent: !type:InstantSpawnSpellEvent
- prototype: StunRune
+ noSpawn: true
+ components:
+ - type: InstantAction
+ useDelay: 10
+ itemIconStyle: BigAction
+ icon:
+ sprite: Objects/Magic/magicactions.rsi
+ state: spell_default
+ event: !type:InstantSpawnSpellEvent
+ prototype: StunRune
-- type: entityTargetAction
- id: Smite
+- type: entity
+ id: ActionSmite
name: action-name-spell-smite
description: action-description-spell-smite
- useDelay: 60
- itemIconStyle: BigAction
- whitelist:
- components:
- - Body
- canTargetSelf: false
- interactOnMiss: false
- sound: !type:SoundPathSpecifier
- path: /Audio/Magic/disintegrate.ogg
- icon:
- sprite: Objects/Magic/magicactions.rsi
- state: gib
- serverEvent: !type:SmiteSpellEvent
- speech: action-speech-spell-smite
+ noSpawn: true
+ components:
+ - type: EntityTargetAction
+ useDelay: 60
+ itemIconStyle: BigAction
+ whitelist:
+ components:
+ - Body
+ canTargetSelf: false
+ interactOnMiss: false
+ sound: !type:SoundPathSpecifier
+ path: /Audio/Magic/disintegrate.ogg
+ icon:
+ sprite: Objects/Magic/magicactions.rsi
+ state: gib
+ event: !type:SmiteSpellEvent
+ speech: action-speech-spell-smite
-- type: worldTargetAction
- id: SpawnMagicarpSpell
+- type: entity
+ id: ActionSpawnMagicarpSpell
name: action-name-spell-summon-magicarp
description: action-description-spell-summon-magicarp
- useDelay: 10
- range: 4
- itemIconStyle: BigAction
- icon:
- sprite: Objects/Magic/magicactions.rsi
- state: spell_default
- serverEvent: !type:WorldSpawnSpellEvent
- prototypes:
+ noSpawn: true
+ components:
+ - type: WorldTargetAction
+ useDelay: 10
+ range: 4
+ itemIconStyle: BigAction
+ icon:
+ sprite: Objects/Magic/magicactions.rsi
+ state: spell_default
+ event: !type:WorldSpawnSpellEvent
+ prototypes:
- id: MobCarpMagic
amount: 3
- offsetVector2: 0, 1
- speech: action-speech-spell-summon-magicarp
+ offset: 0, 1
+ speech: action-speech-spell-summon-magicarp
- state: nothing-unshaded
shader: unshaded
- type: ActionOnInteract
- entityActions:
- - whitelist: { components: [ PointLight ] }
- charges: 25
- sound: /Audio/Magic/blink.ogg
- event: !type:ChangeComponentsSpellEvent
- toAdd:
- - type: RgbLightController
+ actions:
+ - ActionRgbLight
- type: Item
inhandVisuals:
left:
- type: RgbLightController
- type: PointLight
enabled: true
- radius: 2
\ No newline at end of file
+ radius: 2
+
+- type: entity
+ id: ActionRgbLight
+ noSpawn: true
+ components:
+ - type: EntityTargetAction
+ whitelist: { components: [ PointLight ] }
+ charges: 25
+ sound: /Audio/Magic/blink.ogg
+ event: !type:ChangeComponentsSpellEvent
+ toAdd:
+ - type: RgbLightController
-- type: worldTargetAction
- id: Blink
+- type: entity
+ id: ActionBlink
name: action-name-spell-blink
description: action-description-spell-blink
- useDelay: 10
- range: 16 # default examine-range.
- # ^ should probably add better validation that the clicked location is on the users screen somewhere,
- itemIconStyle: BigAction
- checkCanAccess: false
- repeat: true
- icon:
- sprite: Objects/Magic/magicactions.rsi
- state: blink
- serverEvent: !type:TeleportSpellEvent
+ noSpawn: true
+ components:
+ - type: WorldTargetAction
+ useDelay: 10
+ range: 16 # default examine-range.
+ # ^ should probably add better validation that the clicked location is on the users screen somewhere,
+ itemIconStyle: BigAction
+ checkCanAccess: false
+ repeat: true
+ icon:
+ sprite: Objects/Magic/magicactions.rsi
+ state: blink
+ event: !type:TeleportSpellEvent
innerclothingskirt: ClothingUniformJumpskirtMime
satchel: ClothingBackpackSatchelMimeFilled
duffelbag: ClothingBackpackDuffelMimeFilled
+
+- type: entity
+ id: ActionMimeInvisibleWall
+ name: mime-invisible-wall
+ description: mime-invisible-wall-desc
+ noSpawn: true
+ components:
+ - type: InstantAction
+ priority: -1
+ useDelay: 30
+ icon: Structures/Walls/solid.rsi/full.png
+ event: !type:InvisibleWallActionEvent
-- action: !type:InstantAction
- checkCanInteract: False
+- action: !type:InstantActionComponent
icon:
entity: ReinforcedWindow
- name: ReinforcedWindow
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: ReinforcedWindow
assignments:
- 0: 3
-- action: !type:InstantAction
- checkCanInteract: False
+ name: ReinforcedWindow
+- action: !type:InstantActionComponent
icon:
entity: WallSolid
- name: WallSolid
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: WallSolid
assignments:
- 0: 0
-- action: !type:InstantAction
- checkCanInteract: False
+ name: WallSolid
+- action: !type:InstantActionComponent
icon:
entity: WallReinforced
- name: WallReinforced
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: WallReinforced
assignments:
- 0: 1
-- action: !type:InstantAction
- checkCanInteract: False
+ name: WallReinforced
+- action: !type:InstantActionComponent
icon:
entity: Window
- name: Window
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: Window
assignments:
- 0: 2
-- action: !type:InstantAction
- checkCanInteract: False
+ name: Window
+- action: !type:InstantActionComponent
icon:
entity: Firelock
- name: Firelock
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: Firelock
assignments:
- 0: 5
-- action: !type:InstantAction
- checkCanInteract: False
+ name: Firelock
+- action: !type:InstantActionComponent
icon:
entity: Grille
- name: Grille
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: Grille
assignments:
- 0: 4
-- action: !type:InstantAction
- checkCanInteract: False
+ name: Grille
+- action: !type:InstantActionComponent
icon: Interface/VerbIcons/delete.svg.192dpi.png
- name: action-name-mapping-erase
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
- 4: 9
- 5: 9
- 6: 9
-- action: !type:InstantAction
- checkCanInteract: False
+ name: action-name-mapping-erase
+- action: !type:InstantActionComponent
icon:
entity: GasPipeStraight
- name: GasPipeStraight
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: GasPipeStraight
assignments:
- 1: 0
-- action: !type:InstantAction
- checkCanInteract: False
+ name: GasPipeStraight
+- action: !type:InstantActionComponent
icon:
entity: GasPipeBend
- name: GasPipeBend
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: GasPipeBend
assignments:
- 1: 1
-- action: !type:InstantAction
- checkCanInteract: False
+ name: GasPipeBend
+- action: !type:InstantActionComponent
icon:
entity: GasPipeTJunction
- name: GasPipeTJunction
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: GasPipeTJunction
assignments:
- 1: 2
-- action: !type:InstantAction
- checkCanInteract: False
+ name: GasPipeTJunction
+- action: !type:InstantActionComponent
icon:
entity: GasPipeFourway
- name: GasPipeFourway
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: GasPipeFourway
assignments:
- 1: 3
-- action: !type:InstantAction
- checkCanInteract: False
+ name: GasPipeFourway
+- action: !type:InstantActionComponent
icon:
entity: GasVentScrubber
- name: GasVentScrubber
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: GasVentScrubber
assignments:
- 1: 4
-- action: !type:InstantAction
- checkCanInteract: False
+ name: GasVentScrubber
+- action: !type:InstantActionComponent
icon:
entity: GasVentPump
- name: GasVentPump
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: GasVentPump
assignments:
- 1: 5
-- action: !type:InstantAction
- checkCanInteract: False
+ name: GasVentPump
+- action: !type:InstantActionComponent
icon:
entity: AirAlarm
- name: AirAlarm
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: AirAlarm
assignments:
- 1: 6
-- action: !type:InstantAction
- checkCanInteract: False
+ name: AirAlarm
+- action: !type:InstantActionComponent
icon:
entity: FireAlarm
- name: FireAlarm
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: FireAlarm
assignments:
- 1: 7
-- action: !type:InstantAction
- checkCanInteract: False
+ name: FireAlarm
+- action: !type:InstantActionComponent
icon:
entity: APCBasic
- name: APCBasic
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: APCBasic
assignments:
- 2: 3
-- action: !type:InstantAction
- checkCanInteract: False
+ name: APCBasic
+- action: !type:InstantActionComponent
icon:
entity: CableApcExtension
- name: CableApcExtension
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: CableApcExtension
assignments:
- 2: 0
-- action: !type:InstantAction
- checkCanInteract: False
+ name: CableApcExtension
+- action: !type:InstantActionComponent
icon:
entity: CableMV
- name: CableMV
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: CableMV
assignments:
- 2: 1
-- action: !type:InstantAction
- checkCanInteract: False
+ name: CableMV
+- action: !type:InstantActionComponent
icon:
entity: CableHV
- name: CableHV
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: CableHV
assignments:
- 2: 2
-- action: !type:InstantAction
- checkCanInteract: False
+ name: CableHV
+- action: !type:InstantActionComponent
icon:
entity: SubstationBasic
- name: SubstationBasic
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: SubstationBasic
assignments:
- 2: 4
-- action: !type:InstantAction
- checkCanInteract: False
+ name: SubstationBasic
+- action: !type:InstantActionComponent
icon:
entity: Poweredlight
- name: Poweredlight
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: Poweredlight
assignments:
- 2: 6
-- action: !type:InstantAction
- checkCanInteract: False
+ name: Poweredlight
+- action: !type:InstantActionComponent
icon:
entity: EmergencyLight
- name: EmergencyLight
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: EmergencyLight
assignments:
- 2: 7
-- action: !type:InstantAction
- checkCanInteract: False
+ name: EmergencyLight
+- action: !type:InstantActionComponent
icon:
entity: SMESBasic
- name: SMESBasic
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: SMESBasic
assignments:
- 2: 5
-- action: !type:InstantAction
- checkCanInteract: False
+ name: SMESBasic
+- action: !type:InstantActionComponent
icon:
entity: TableWood
- name: TableWood
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: TableWood
assignments:
- 3: 0
-- action: !type:InstantAction
- checkCanInteract: False
+ name: TableWood
+- action: !type:InstantActionComponent
icon:
entity: Table
- name: Table
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: Table
assignments:
- 3: 1
-- action: !type:InstantAction
- checkCanInteract: False
+ name: Table
+- action: !type:InstantActionComponent
icon:
entity: ChairWood
- name: ChairWood
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: ChairWood
assignments:
- 3: 2
-- action: !type:InstantAction
- checkCanInteract: False
+ name: ChairWood
+- action: !type:InstantActionComponent
icon:
entity: Chair
- name: Chair
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: Chair
assignments:
- 3: 3
-- action: !type:InstantAction
- checkCanInteract: False
+ name: Chair
+- action: !type:InstantActionComponent
icon:
entity: ChairOfficeLight
- name: ChairOfficeLight
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: ChairOfficeLight
assignments:
- 3: 4
-- action: !type:InstantAction
- checkCanInteract: False
+ name: ChairOfficeLight
+- action: !type:InstantActionComponent
icon:
entity: StoolBar
- name: StoolBar
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: StoolBar
assignments:
- 3: 6
-- action: !type:InstantAction
- checkCanInteract: False
+ name: StoolBar
+- action: !type:InstantActionComponent
icon:
entity: Stool
- name: Stool
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: Stool
assignments:
- 3: 7
-- action: !type:InstantAction
- checkCanInteract: False
+ name: Stool
+- action: !type:InstantActionComponent
icon:
entity: Rack
- name: Rack
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: Rack
assignments:
- 3: 8
-- action: !type:InstantAction
- checkCanInteract: False
+ name: Rack
+- action: !type:InstantActionComponent
icon:
entity: ChairOfficeDark
- name: ChairOfficeDark
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: ChairOfficeDark
assignments:
- 3: 5
-- action: !type:InstantAction
- checkCanInteract: False
+ name: ChairOfficeDark
+- action: !type:InstantActionComponent
icon:
entity: LampGold
- name: LampGold
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: LampGold
assignments:
- 3: 9
-- action: !type:InstantAction
- checkCanInteract: False
+ name: LampGold
+- action: !type:InstantActionComponent
icon:
entity: DisposalPipe
- name: DisposalPipe
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: DisposalPipe
assignments:
- 4: 0
-- action: !type:InstantAction
- checkCanInteract: False
+ name: DisposalPipe
+- action: !type:InstantActionComponent
icon:
entity: DisposalBend
- name: DisposalBend
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: DisposalBend
assignments:
- 4: 1
-- action: !type:InstantAction
- checkCanInteract: False
+ name: DisposalBend
+- action: !type:InstantActionComponent
icon:
entity: DisposalJunction
- name: DisposalJunction
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: DisposalJunction
assignments:
- 4: 2
-- action: !type:InstantAction
- checkCanInteract: False
+ name: DisposalJunction
+- action: !type:InstantActionComponent
icon:
entity: DisposalJunctionFlipped
- name: DisposalJunctionFlipped
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: DisposalJunctionFlipped
assignments:
- 4: 3
-- action: !type:InstantAction
- checkCanInteract: False
+ name: DisposalJunctionFlipped
+- action: !type:InstantActionComponent
icon:
entity: DisposalRouter
- name: DisposalRouter
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: DisposalRouter
assignments:
- 4: 4
-- action: !type:InstantAction
- checkCanInteract: False
+ name: DisposalRouter
+- action: !type:InstantActionComponent
icon:
entity: DisposalRouterFlipped
- name: DisposalRouterFlipped
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: DisposalRouterFlipped
assignments:
- 4: 5
-- action: !type:InstantAction
- checkCanInteract: False
+ name: DisposalRouterFlipped
+- action: !type:InstantActionComponent
icon:
entity: DisposalUnit
- name: DisposalUnit
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: DisposalUnit
assignments:
- 4: 6
-- action: !type:InstantAction
- checkCanInteract: False
+ name: DisposalUnit
+- action: !type:InstantActionComponent
icon:
entity: DisposalTrunk
- name: DisposalTrunk
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: DisposalTrunk
assignments:
- 4: 7
-- action: !type:InstantAction
- checkCanInteract: False
+ name: DisposalTrunk
+- action: !type:InstantActionComponent
icon:
entity: SignDisposalSpace
- name: SignDisposalSpace
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: SignDisposalSpace
assignments:
- 4: 8
-- action: !type:InstantAction
- checkCanInteract: False
+ name: SignDisposalSpace
+- action: !type:InstantActionComponent
icon:
entity: Windoor
- name: Windoor
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: Windoor
assignments:
- 5: 0
-- action: !type:InstantAction
- checkCanInteract: False
+ name: Windoor
+- action: !type:InstantActionComponent
icon:
entity: WindowDirectional
- name: WindowDirectional
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: WindowDirectional
assignments:
- 5: 1
-- action: !type:InstantAction
- checkCanInteract: False
+ name: WindowDirectional
+- action: !type:InstantActionComponent
icon:
entity: WindowReinforcedDirectional
- name: WindowReinforcedDirectional
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: WindowReinforcedDirectional
assignments:
- 5: 2
-- action: !type:InstantAction
- checkCanInteract: False
+ name: WindowReinforcedDirectional
+- action: !type:InstantActionComponent
icon:
entity: PlasmaWindowDirectional
- name: PlasmaWindowDirectional
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: PlasmaWindowDirectional
assignments:
- 5: 3
-- action: !type:InstantAction
- checkCanInteract: False
+ name: PlasmaWindowDirectional
+- action: !type:InstantActionComponent
icon:
entity: Railing
- name: Railing
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: Railing
assignments:
- 5: 6
-- action: !type:InstantAction
- checkCanInteract: False
+ name: Railing
+- action: !type:InstantActionComponent
icon:
entity: RailingCorner
- name: RailingCorner
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: RailingCorner
assignments:
- 5: 7
-- action: !type:InstantAction
- checkCanInteract: False
+ name: RailingCorner
+- action: !type:InstantActionComponent
icon:
entity: RailingCornerSmall
- name: RailingCornerSmall
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: RailingCornerSmall
assignments:
- 5: 8
-- action: !type:InstantAction
- checkCanInteract: False
+ name: RailingCornerSmall
+- action: !type:InstantActionComponent
icon:
entity: AirlockMaintLocked
- name: AirlockMaintLocked
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: AirlockMaintLocked
assignments:
- 6: 0
-- action: !type:InstantAction
- checkCanInteract: False
+ name: AirlockMaintLocked
+- action: !type:InstantActionComponent
icon:
entity: AirlockGlass
- name: AirlockGlass
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: AirlockGlass
assignments:
- 6: 1
-- action: !type:InstantAction
- checkCanInteract: False
+ name: AirlockGlass
+- action: !type:InstantActionComponent
icon:
entity: AirlockServiceLocked
- name: AirlockServiceLocked
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: AirlockServiceLocked
assignments:
- 6: 2
-- action: !type:InstantAction
- checkCanInteract: False
+ name: AirlockServiceLocked
+- action: !type:InstantActionComponent
icon:
entity: AirlockSecurityLocked
- name: AirlockSecurityLocked
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: AirlockSecurityLocked
assignments:
- 6: 3
-- action: !type:InstantAction
- checkCanInteract: False
+ name: AirlockSecurityLocked
+- action: !type:InstantActionComponent
icon:
entity: AirlockCommand
- name: AirlockCommand
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: AirlockCommand
assignments:
- 6: 4
-- action: !type:InstantAction
- checkCanInteract: False
+ name: AirlockCommand
+- action: !type:InstantActionComponent
icon:
entity: AirlockScience
- name: AirlockScience
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: AirlockScience
assignments:
- 6: 5
-- action: !type:InstantAction
- checkCanInteract: False
+ name: AirlockScience
+- action: !type:InstantActionComponent
icon:
entity: AirlockMedical
- name: AirlockMedical
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: AirlockMedical
assignments:
- 6: 6
-- action: !type:InstantAction
- checkCanInteract: False
+ name: AirlockMedical
+- action: !type:InstantActionComponent
icon:
entity: AirlockEngineering
- name: AirlockEngineering
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: AirlockEngineering
assignments:
- 6: 7
-- action: !type:InstantAction
- checkCanInteract: False
+ name: AirlockEngineering
+- action: !type:InstantActionComponent
icon:
entity: AirlockCargo
- name: AirlockCargo
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
entityType: AirlockCargo
assignments:
- 6: 8
-- action: !type:WorldTargetAction
+ name: AirlockCargo
+- action: !type:WorldTargetActionComponent
+ keywords: []
repeat: True
checkCanAccess: False
range: -1
sprite: Decals/markings.rsi
state: bot_left
iconColor: '#EFB34196'
- name: BotLeft
- keywords: []
checkCanInteract: False
clientExclusive: True
autoPopulate: False
decalId: BotLeft
assignments:
- 7: 0
-- action: !type:WorldTargetAction
+ name: BotLeft
+- action: !type:WorldTargetActionComponent
+ keywords: []
repeat: True
checkCanAccess: False
range: -1
sprite: Decals/markings.rsi
state: delivery
iconColor: '#EFB34196'
- name: Delivery
- keywords: []
checkCanInteract: False
clientExclusive: True
autoPopulate: False
decalId: Delivery
assignments:
- 7: 1
-- action: !type:WorldTargetAction
+ name: Delivery
+- action: !type:WorldTargetActionComponent
+ keywords: []
repeat: True
checkCanAccess: False
range: -1
sprite: Decals/markings.rsi
state: warn_full
iconColor: '#EFB34196'
- name: WarnFull
- keywords: []
checkCanInteract: False
clientExclusive: True
autoPopulate: False
decalId: WarnFull
assignments:
- 7: 2
-- action: !type:WorldTargetAction
+ name: WarnFull
+- action: !type:WorldTargetActionComponent
+ keywords: []
repeat: True
checkCanAccess: False
range: -1
sprite: Decals/Overlays/greyscale.rsi
state: halftile_overlay
iconColor: '#EFB34196'
- name: HalfTileOverlayGreyscale
- keywords: []
checkCanInteract: False
clientExclusive: True
autoPopulate: False
decalId: HalfTileOverlayGreyscale
assignments:
- 7: 3
-- action: !type:WorldTargetAction
+ name: HalfTileOverlayGreyscale
+- action: !type:WorldTargetActionComponent
+ keywords: []
repeat: True
checkCanAccess: False
range: -1
sprite: Decals/Overlays/greyscale.rsi
state: halftile_overlay
iconColor: '#334E6DC8'
- name: HalfTileOverlayGreyscale (#334E6DC8, 0)
- keywords: []
checkCanInteract: False
clientExclusive: True
autoPopulate: False
decalId: HalfTileOverlayGreyscale
assignments:
- 7: 4
-- action: !type:WorldTargetAction
+ name: HalfTileOverlayGreyscale (#334E6DC8, 0)
+- action: !type:WorldTargetActionComponent
+ keywords: []
repeat: True
checkCanAccess: False
range: -1
sprite: Decals/Overlays/greyscale.rsi
state: halftile_overlay
iconColor: '#52B4E996'
- name: HalfTileOverlayGreyscale (#52B4E996, 0)
- keywords: []
checkCanInteract: False
clientExclusive: True
autoPopulate: False
decalId: HalfTileOverlayGreyscale
assignments:
- 7: 5
-- action: !type:WorldTargetAction
+ name: HalfTileOverlayGreyscale (#52B4E996, 0)
+- action: !type:WorldTargetActionComponent
+ keywords: []
repeat: True
checkCanAccess: False
range: -1
sprite: Decals/Overlays/greyscale.rsi
state: halftile_overlay
iconColor: '#9FED5896'
- name: HalfTileOverlayGreyscale (#9FED5896, 0)
- keywords: []
checkCanInteract: False
clientExclusive: True
autoPopulate: False
decalId: HalfTileOverlayGreyscale
assignments:
- 7: 6
-- action: !type:WorldTargetAction
+ name: HalfTileOverlayGreyscale (#9FED5896, 0)
+- action: !type:WorldTargetActionComponent
+ keywords: []
repeat: True
checkCanAccess: False
range: -1
sprite: Decals/Overlays/greyscale.rsi
state: halftile_overlay
iconColor: '#DE3A3A96'
- name: HalfTileOverlayGreyscale (#DE3A3A96, 0)
- keywords: []
checkCanInteract: False
clientExclusive: True
autoPopulate: False
decalId: HalfTileOverlayGreyscale
assignments:
- 7: 7
-- action: !type:WorldTargetAction
+ name: HalfTileOverlayGreyscale (#DE3A3A96, 0)
+- action: !type:WorldTargetActionComponent
+ keywords: []
repeat: True
checkCanAccess: False
range: -1
sprite: Decals/Overlays/greyscale.rsi
state: halftile_overlay
iconColor: '#D381C996'
- name: HalfTileOverlayGreyscale (#D381C996, 0)
- keywords: []
checkCanInteract: False
clientExclusive: True
autoPopulate: False
decalId: HalfTileOverlayGreyscale
assignments:
- 7: 8
-- action: !type:WorldTargetAction
+ name: HalfTileOverlayGreyscale (#D381C996, 0)
+- action: !type:WorldTargetActionComponent
+ keywords: []
repeat: True
checkCanAccess: False
range: -1
sprite: Decals/Overlays/greyscale.rsi
state: halftile_overlay
iconColor: '#A4610696'
- name: HalfTileOverlayGreyscale (#A4610696, 0)
- keywords: []
checkCanInteract: False
clientExclusive: True
autoPopulate: False
decalId: HalfTileOverlayGreyscale
assignments:
- 7: 9
-- action: !type:InstantAction
- checkCanInteract: False
+ name: HalfTileOverlayGreyscale (#A4610696, 0)
+- action: !type:InstantActionComponent
icon: /Textures/Tiles/steel.png
- name: steel floor
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
tileId: FloorSteel
assignments:
- 0: 6
-- action: !type:InstantAction
- checkCanInteract: False
+ name: steel floor
+- action: !type:InstantActionComponent
icon: /Textures/Tiles/plating.png
- name: plating
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
- 0: 7
- 1: 8
- 2: 8
-- action: !type:InstantAction
- checkCanInteract: False
+ name: plating
+- action: !type:InstantActionComponent
icon: /Textures/Tiles/cropped_parallax.png
- name: space
keywords: []
+ checkCanInteract: False
clientExclusive: True
autoPopulate: False
temporary: True
tileId: Space
assignments:
- 0: 8
+ name: space
...