diff --git a/Content.Client/Arcade/SpaceVillainArcadeMenu.cs b/Content.Client/Arcade/SpaceVillainArcadeMenu.cs index a6463019f1..529d4b6fa7 100644 --- a/Content.Client/Arcade/SpaceVillainArcadeMenu.cs +++ b/Content.Client/Arcade/SpaceVillainArcadeMenu.cs @@ -1,7 +1,9 @@ -using Content.Client.GameObjects.Components.Arcade; +using System.Linq; +using Content.Client.GameObjects.Components.Arcade; using Content.Shared.GameObjects.Components.Arcade; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; +using Robust.Shared.Localization; using Vector2 = Robust.Shared.Maths.Vector2; namespace Content.Client.Arcade @@ -16,17 +18,17 @@ namespace Content.Client.Arcade private Label _enemyInfoLabel; private Label _playerActionLabel; private Label _enemyActionLabel; + + private Button[] _gameButtons = new Button[3]; //used to disable/enable all game buttons public SpaceVillainArcadeMenu(SpaceVillainArcadeBoundUserInterface owner) { - Title = "Space Villain"; + Title = Loc.GetString("Space Villain"); Owner = owner; - GridContainer grid = new GridContainer(); - grid.Columns = 1; + var grid = new GridContainer {Columns = 1}; - GridContainer infoGrid = new GridContainer(); - infoGrid.Columns = 3; - infoGrid.AddChild(new Label{ Text = "Player", Align = Label.AlignMode.Center }); + var infoGrid = new GridContainer {Columns = 3}; + infoGrid.AddChild(new Label{ Text = Loc.GetString("Player"), Align = Label.AlignMode.Center }); infoGrid.AddChild(new Label{ Text = "|", Align = Label.AlignMode.Center }); _enemyNameLabel = new Label{ Align = Label.AlignMode.Center}; infoGrid.AddChild(_enemyNameLabel); @@ -36,38 +38,35 @@ namespace Content.Client.Arcade infoGrid.AddChild(new Label{ Text = "|", Align = Label.AlignMode.Center }); _enemyInfoLabel = new Label {Align = Label.AlignMode.Center}; infoGrid.AddChild(_enemyInfoLabel); - CenterContainer centerContainer = new CenterContainer(); + var centerContainer = new CenterContainer(); centerContainer.AddChild(infoGrid); grid.AddChild(centerContainer); - _playerActionLabel = new Label(); - _playerActionLabel.Align = Label.AlignMode.Center; + _playerActionLabel = new Label {Align = Label.AlignMode.Center}; grid.AddChild(_playerActionLabel); - _enemyActionLabel = new Label(); - _enemyActionLabel.Align = Label.AlignMode.Center; + _enemyActionLabel = new Label {Align = Label.AlignMode.Center}; grid.AddChild(_enemyActionLabel); - GridContainer buttonGrid = new GridContainer(); - buttonGrid.Columns = 3; - Button attack = new ActionButton(Owner, SharedSpaceVillainArcadeComponent.PlayerAction.Attack); - attack.Text = "ATTACK"; - buttonGrid.AddChild(attack); + var buttonGrid = new GridContainer {Columns = 3}; + _gameButtons[0] = new ActionButton(Owner, SharedSpaceVillainArcadeComponent.PlayerAction.Attack) + {Text = Loc.GetString("ATTACK")}; + buttonGrid.AddChild(_gameButtons[0]); - Button heal = new ActionButton(Owner, SharedSpaceVillainArcadeComponent.PlayerAction.Heal); - heal.Text = "HEAL"; - buttonGrid.AddChild(heal); + _gameButtons[1] = new ActionButton(Owner, SharedSpaceVillainArcadeComponent.PlayerAction.Heal) + {Text = Loc.GetString("HEAL")}; + buttonGrid.AddChild(_gameButtons[1]); - Button recharge = new ActionButton(Owner, SharedSpaceVillainArcadeComponent.PlayerAction.Recharge); - recharge.Text = "RECHARGE"; - buttonGrid.AddChild(recharge); + _gameButtons[2] = new ActionButton(Owner, SharedSpaceVillainArcadeComponent.PlayerAction.Recharge) + {Text = Loc.GetString("RECHARGE")}; + buttonGrid.AddChild(_gameButtons[2]); centerContainer = new CenterContainer(); centerContainer.AddChild(buttonGrid); grid.AddChild(centerContainer); - Button newGame = new ActionButton(Owner, SharedSpaceVillainArcadeComponent.PlayerAction.NewGame); - newGame.Text = "New Game"; + var newGame = new ActionButton(Owner, SharedSpaceVillainArcadeComponent.PlayerAction.NewGame) + {Text = Loc.GetString("New Game")}; grid.AddChild(newGame); centerContainer = new CenterContainer(); @@ -79,6 +78,11 @@ namespace Content.Client.Arcade { Title = message.GameTitle; _enemyNameLabel.Text = message.EnemyName; + + foreach (var gameButton in _gameButtons) + { + gameButton.Disabled = message.ButtonsDisabled; + } } public void UpdateInfo(SharedSpaceVillainArcadeComponent.SpaceVillainArcadeDataUpdateMessage message) diff --git a/Content.Client/ClientNotifyManager.cs b/Content.Client/ClientNotifyManager.cs index ccb4ae3a03..aabeadf003 100644 --- a/Content.Client/ClientNotifyManager.cs +++ b/Content.Client/ClientNotifyManager.cs @@ -1,3 +1,4 @@ +#nullable enable using System; using System.Collections.Generic; using Content.Client.Interfaces; @@ -54,27 +55,23 @@ namespace Content.Client private void DoNotifyEntity(MsgDoNotifyEntity message) { - if (!_entityManager.TryGetEntity(message.Entity, out var entity)) + if (_playerManager.LocalPlayer?.ControlledEntity == null || + !_entityManager.TryGetEntity(message.Entity, out var entity)) { return; } - PopupMessage(_eyeManager.CoordinatesToScreen(entity.Transform.Coordinates), message.Message); + PopupMessage(entity, _playerManager.LocalPlayer.ControlledEntity, message.Message); } public override void PopupMessage(IEntity source, IEntity viewer, string message) { - if (viewer != _playerManager.LocalPlayer?.ControlledEntity) - { - return; - } - - PopupMessage(_eyeManager.CoordinatesToScreen(source.Transform.Coordinates), message); + PopupMessage(_eyeManager.CoordinatesToScreen(source.Transform.Coordinates), message, source); } public override void PopupMessage(EntityCoordinates coordinates, IEntity viewer, string message) { - if (viewer != _playerManager.LocalPlayer.ControlledEntity) + if (viewer != _playerManager.LocalPlayer?.ControlledEntity) { return; } @@ -84,7 +81,7 @@ namespace Content.Client public override void PopupMessageCursor(IEntity viewer, string message) { - if (viewer != _playerManager.LocalPlayer.ControlledEntity) + if (viewer != _playerManager.LocalPlayer?.ControlledEntity) { return; } @@ -94,13 +91,21 @@ namespace Content.Client public void PopupMessage(ScreenCoordinates coordinates, string message) { - var label = new PopupLabel + PopupMessage(coordinates, message, null); + } + + public void PopupMessage(ScreenCoordinates coordinates, string message, IEntity? entity) + { + var label = new PopupLabel(_eyeManager) { + Entity = entity, Text = message, StyleClasses = { StyleNano.StyleClassPopupMessage }, }; + _userInterfaceManager.PopupRoot.AddChild(label); var minimumSize = label.CombinedMinimumSize; + LayoutContainer.SetPosition(label, label.InitialPos = coordinates.Position - minimumSize / 2); _aliveLabels.Add(label); } @@ -125,20 +130,30 @@ namespace Content.Client private class PopupLabel : Label { + private readonly IEyeManager _eyeManager; + public float TimeLeft { get; private set; } public Vector2 InitialPos { get; set; } + public IEntity? Entity { get; set; } - public PopupLabel() + public PopupLabel(IEyeManager eyeManager) { + _eyeManager = eyeManager; ShadowOffsetXOverride = 1; ShadowOffsetYOverride = 1; FontColorShadowOverride = Color.Black; } - protected override void Update(FrameEventArgs eventArgs) + protected override void FrameUpdate(FrameEventArgs eventArgs) { TimeLeft += eventArgs.DeltaSeconds; - LayoutContainer.SetPosition(this, InitialPos - (0, 20 * (TimeLeft * TimeLeft + TimeLeft))); + + var position = Entity == null + ? InitialPos + : _eyeManager.CoordinatesToScreen(Entity.Transform.Coordinates).Position - CombinedMinimumSize / 2; + + LayoutContainer.SetPosition(this, position - (0, 20 * (TimeLeft * TimeLeft + TimeLeft))); + if (TimeLeft > 0.5f) { Modulate = Color.White.WithAlpha(1f - 0.2f * (float)Math.Pow(TimeLeft - 0.5f, 3f)); diff --git a/Content.Client/Content.Client.csproj b/Content.Client/Content.Client.csproj index 5c56fa52fc..5a9c5641d6 100644 --- a/Content.Client/Content.Client.csproj +++ b/Content.Client/Content.Client.csproj @@ -8,6 +8,7 @@ false ..\bin\Content.Client\ Exe + CS8604;CS8765 diff --git a/Content.Client/GameObjects/Components/Body/BodyComponent.cs b/Content.Client/GameObjects/Components/Body/BodyComponent.cs index fb36486055..524513b372 100644 --- a/Content.Client/GameObjects/Components/Body/BodyComponent.cs +++ b/Content.Client/GameObjects/Components/Body/BodyComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using Content.Client.GameObjects.Components.Disposal; using Content.Client.GameObjects.Components.MedicalScanner; using Content.Shared.GameObjects.Components.Body; @@ -14,7 +14,8 @@ namespace Content.Client.GameObjects.Components.Body public bool CanDrop(CanDropEventArgs eventArgs) { if (eventArgs.Target.HasComponent() || - eventArgs.Target.HasComponent()) + eventArgs.Target.HasComponent() || + eventArgs.Target.HasComponent()) { return true; } diff --git a/Content.Client/GameObjects/Components/Configuration/ConfigurationBoundUserInterface.cs b/Content.Client/GameObjects/Components/Configuration/ConfigurationBoundUserInterface.cs new file mode 100644 index 0000000000..d173f061ed --- /dev/null +++ b/Content.Client/GameObjects/Components/Configuration/ConfigurationBoundUserInterface.cs @@ -0,0 +1,55 @@ +using Robust.Client.GameObjects.Components.UserInterface; +using Robust.Shared.GameObjects.Components.UserInterface; +using System.Collections.Generic; +using System.Text.RegularExpressions; +using static Content.Shared.GameObjects.Components.SharedConfigurationComponent; + +namespace Content.Client.GameObjects.Components.Wires +{ + public class ConfigurationBoundUserInterface : BoundUserInterface + { + public Regex Validation { get; internal set; } + + public ConfigurationBoundUserInterface(ClientUserInterfaceComponent owner, object uiKey) : base(owner, uiKey) + { + } + + private ConfigurationMenu _menu; + + protected override void Open() + { + base.Open(); + _menu = new ConfigurationMenu(this); + + _menu.OnClose += Close; + _menu.OpenCentered(); + } + + protected override void UpdateState(BoundUserInterfaceState state) + { + base.UpdateState(state); + _menu.Populate(state as ConfigurationBoundUserInterfaceState); + } + + protected override void ReceiveMessage(BoundUserInterfaceMessage message) + { + base.ReceiveMessage(message); + if (message is ValidationUpdateMessage msg) + { + Validation = new Regex(msg.ValidationString, RegexOptions.Compiled); + } + } + + public void SendConfiguration(Dictionary config) + { + SendMessage(new ConfigurationUpdatedMessage(config)); + } + + protected override void Dispose(bool disposing) + { + base.Dispose(disposing); + + _menu.Close(); + } + } +} diff --git a/Content.Client/GameObjects/Components/Configuration/ConfigurationMenu.cs b/Content.Client/GameObjects/Components/Configuration/ConfigurationMenu.cs new file mode 100644 index 0000000000..d236ae0202 --- /dev/null +++ b/Content.Client/GameObjects/Components/Configuration/ConfigurationMenu.cs @@ -0,0 +1,176 @@ +using System.Collections.Generic; +using Namotion.Reflection; +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.CustomControls; +using Robust.Shared.Localization; +using Robust.Shared.Maths; +using static Content.Shared.GameObjects.Components.SharedConfigurationComponent; +using static Robust.Client.UserInterface.Controls.BaseButton; + +namespace Content.Client.GameObjects.Components.Wires +{ + public class ConfigurationMenu : SS14Window + { + public ConfigurationBoundUserInterface Owner { get; } + + private readonly VBoxContainer _baseContainer; + private readonly VBoxContainer _column; + private readonly HBoxContainer _row; + + private readonly List<(string name, LineEdit input)> _inputs; + + protected override Vector2? CustomSize => (300, 250); + + public ConfigurationMenu(ConfigurationBoundUserInterface owner) + { + Owner = owner; + + _inputs = new List<(string name, LineEdit input)>(); + + Title = Loc.GetString("Device Configuration"); + + var margin = new MarginContainer + { + MarginBottomOverride = 8, + MarginLeftOverride = 8, + MarginRightOverride = 8, + MarginTopOverride = 8 + }; + + _baseContainer = new VBoxContainer + { + SizeFlagsVertical = SizeFlags.FillExpand, + SizeFlagsHorizontal = SizeFlags.FillExpand + }; + + _column = new VBoxContainer + { + SeparationOverride = 16, + SizeFlagsVertical = SizeFlags.Fill + }; + + _row = new HBoxContainer + { + SeparationOverride = 16, + SizeFlagsHorizontal = SizeFlags.FillExpand + }; + + var buttonRow = new HBoxContainer + { + SizeFlagsHorizontal = SizeFlags.FillExpand + }; + + var spacer1 = new HBoxContainer + { + SizeFlagsHorizontal = SizeFlags.Expand + }; + + var spacer2 = new HBoxContainer() + { + SizeFlagsHorizontal = SizeFlags.Expand + }; + + var confirmButton = new Button + { + Text = Loc.GetString("Confirm"), + SizeFlagsHorizontal = SizeFlags.ShrinkCenter, + SizeFlagsVertical = SizeFlags.ShrinkCenter + }; + + confirmButton.OnButtonUp += OnConfirm; + buttonRow.AddChild(spacer1); + buttonRow.AddChild(confirmButton); + buttonRow.AddChild(spacer2); + + var outerColumn = new ScrollContainer + { + SizeFlagsVertical = SizeFlags.FillExpand, + SizeFlagsHorizontal = SizeFlags.FillExpand, + ModulateSelfOverride = Color.FromHex("#202025") + }; + + margin.AddChild(_column); + outerColumn.AddChild(margin); + _baseContainer.AddChild(outerColumn); + _baseContainer.AddChild(buttonRow); + Contents.AddChild(_baseContainer); + } + + public void Populate(ConfigurationBoundUserInterfaceState state) + { + _column.Children.Clear(); + _inputs.Clear(); + + foreach (var field in state.Config) + { + var margin = new MarginContainer + { + MarginRightOverride = 8 + }; + + var label = new Label + { + Name = field.Key, + Text = field.Key + ":", + SizeFlagsVertical = SizeFlags.ShrinkCenter, + SizeFlagsHorizontal = SizeFlags.FillExpand, + SizeFlagsStretchRatio = .2f, + CustomMinimumSize = new Vector2(60, 0) + }; + + var input = new LineEdit + { + Name = field.Key + "-input", + Text = field.Value, + IsValid = Validate, + SizeFlagsHorizontal = SizeFlags.FillExpand, + SizeFlagsStretchRatio = .8f + }; + + _inputs.Add((field.Key, input)); + + var row = new HBoxContainer(); + CopyProperties(_row, row); + + margin.AddChild(label); + row.AddChild(margin); + row.AddChild(input); + _column.AddChild(row); + } + } + + private void OnConfirm(ButtonEventArgs args) + { + var config = GenerateDictionary(_inputs, "Text"); + + Owner.SendConfiguration(config); + Close(); + } + + private bool Validate(string value) + { + return Owner.Validation == null || Owner.Validation.IsMatch(value); + } + + private Dictionary GenerateDictionary(List<(string name, TInput input)> inputs, string propertyName) where TInput : Control + { + var dictionary = new Dictionary(); + foreach (var input in inputs) + { + var value = input.input.TryGetPropertyValue(propertyName); + dictionary.Add(input.name, value); + } + + return dictionary; + } + + private static void CopyProperties(T from, T to) where T : Control + { + foreach (var property in from.AllAttachedProperties) + { + to.SetValue(property.Key, property.Value); + } + } + } +} diff --git a/Content.Client/GameObjects/Components/Disposal/DisposalMailingUnitBoundUserInterface.cs b/Content.Client/GameObjects/Components/Disposal/DisposalMailingUnitBoundUserInterface.cs new file mode 100644 index 0000000000..164ba9f6f5 --- /dev/null +++ b/Content.Client/GameObjects/Components/Disposal/DisposalMailingUnitBoundUserInterface.cs @@ -0,0 +1,73 @@ +#nullable enable +using JetBrains.Annotations; +using Robust.Client.GameObjects.Components.UserInterface; +using Robust.Client.UserInterface.Controls; +using Robust.Shared.GameObjects.Components.UserInterface; +using static Content.Shared.GameObjects.Components.Disposal.SharedDisposalMailingUnitComponent; + +namespace Content.Client.GameObjects.Components.Disposal +{ + /// + /// Initializes a and updates it when new server messages are received. + /// + [UsedImplicitly] + public class DisposalMailingUnitBoundUserInterface : BoundUserInterface + { + private DisposalMailingUnitWindow? _window; + + public DisposalMailingUnitBoundUserInterface(ClientUserInterfaceComponent owner, object uiKey) : base(owner, uiKey) + { + } + + private void ButtonPressed(UiButton button) + { + SendMessage(new UiButtonPressedMessage(button)); + } + + protected override void Open() + { + base.Open(); + + _window = new DisposalMailingUnitWindow(); + + _window.OpenCentered(); + _window.OnClose += Close; + + _window.Eject.OnPressed += _ => ButtonPressed(UiButton.Eject); + _window.Engage.OnPressed += _ => ButtonPressed(UiButton.Engage); + _window.Power.OnPressed += _ => ButtonPressed(UiButton.Power); + _window.TargetListContainer.OnItemSelected += TargetSelected; + + } + + + protected override void UpdateState(BoundUserInterfaceState state) + { + base.UpdateState(state); + + if (!(state is DisposalMailingUnitBoundUserInterfaceState cast)) + { + return; + } + + _window?.UpdateState(cast); + } + + private void TargetSelected(ItemList.ItemListSelectedEventArgs item) + { + SendMessage(new UiTargetUpdateMessage(_window?.TargetList[item.ItemIndex])); + //(ノ°Д°)ノ︵ ┻━┻ + if (_window != null) _window.Engage.Disabled = false; + } + + protected override void Dispose(bool disposing) + { + base.Dispose(disposing); + + if (disposing) + { + _window?.Dispose(); + } + } + } +} diff --git a/Content.Client/GameObjects/Components/Disposal/DisposalMailingUnitComponent.cs b/Content.Client/GameObjects/Components/Disposal/DisposalMailingUnitComponent.cs new file mode 100644 index 0000000000..fd661f6afa --- /dev/null +++ b/Content.Client/GameObjects/Components/Disposal/DisposalMailingUnitComponent.cs @@ -0,0 +1,11 @@ +using Content.Shared.GameObjects.Components.Disposal; +using Robust.Shared.GameObjects; + +namespace Content.Client.GameObjects.Components.Disposal +{ + [RegisterComponent] + [ComponentReference(typeof(SharedDisposalMailingUnitComponent))] + public class DisposalMailingUnitComponent : SharedDisposalMailingUnitComponent + { + } +} diff --git a/Content.Client/GameObjects/Components/Disposal/DisposalMailingUnitWindow.cs b/Content.Client/GameObjects/Components/Disposal/DisposalMailingUnitWindow.cs new file mode 100644 index 0000000000..1849a33722 --- /dev/null +++ b/Content.Client/GameObjects/Components/Disposal/DisposalMailingUnitWindow.cs @@ -0,0 +1,285 @@ +using Content.Shared.GameObjects.Components.Disposal; +using Robust.Client.Graphics.Drawing; +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.CustomControls; +using Robust.Shared.Localization; +using Robust.Shared.Maths; +using System.Collections.Generic; +using static Content.Shared.GameObjects.Components.Disposal.SharedDisposalMailingUnitComponent; + +namespace Content.Client.GameObjects.Components.Disposal +{ + /// + /// Client-side UI used to control a + /// + public class DisposalMailingUnitWindow : SS14Window + { + private readonly Label _unitState; + private readonly ProgressBar _pressureBar; + private readonly Label _pressurePercentage; + public readonly Button Engage; + public readonly Button Eject; + public readonly Button Power; + + public readonly ItemList TargetListContainer; + public List TargetList; + private readonly Label _tagLabel; + + protected override Vector2? CustomSize => (460, 220); + + public DisposalMailingUnitWindow() + { + TargetList = new List(); + Contents.AddChild(new HBoxContainer + { + Children = + { + new MarginContainer + { + MarginLeftOverride = 8, + MarginRightOverride = 8, + SizeFlagsHorizontal = SizeFlags.FillExpand, + Children = + { + new VBoxContainer + { + SizeFlagsHorizontal = SizeFlags.FillExpand, + Children = + { + new HBoxContainer + { + Children = + { + new Label {Text = Loc.GetString("State: ")}, + new Control {CustomMinimumSize = (4, 0)}, + (_unitState = new Label {Text = Loc.GetString("Ready")}) + } + }, + new Control {CustomMinimumSize = (0, 10)}, + new HBoxContainer + { + SizeFlagsHorizontal = SizeFlags.FillExpand, + Children = + { + new Label {Text = Loc.GetString("Pressure:")}, + new Control {CustomMinimumSize = (4, 0)}, + (_pressureBar = new ProgressBar + { + CustomMinimumSize = (100, 20), + SizeFlagsHorizontal = SizeFlags.FillExpand, + MinValue = 0, + MaxValue = 1, + Page = 0, + Value = 0.5f, + Children = + { + (_pressurePercentage = new Label()) + } + }) + } + }, + new Control {CustomMinimumSize = (0, 10)}, + new HBoxContainer + { + SizeFlagsHorizontal = SizeFlags.FillExpand, + Children = + { + new Label {Text = Loc.GetString("Handle:")}, + new Control { + CustomMinimumSize = (4, 0), + SizeFlagsHorizontal = SizeFlags.FillExpand + }, + (Engage = new Button + { + CustomMinimumSize = (16, 0), + Text = Loc.GetString("Engage"), + ToggleMode = true, + Disabled = true + }) + } + }, + new Control {CustomMinimumSize = (0, 10)}, + new HBoxContainer + { + SizeFlagsHorizontal = SizeFlags.FillExpand, + Children = + { + new Label {Text = Loc.GetString("Eject:")}, + new Control { + CustomMinimumSize = (4, 0), + SizeFlagsHorizontal = SizeFlags.FillExpand + }, + (Eject = new Button { + CustomMinimumSize = (16, 0), + Text = Loc.GetString("Eject Contents"), + //SizeFlagsHorizontal = SizeFlags.ShrinkEnd + }) + } + }, + new Control {CustomMinimumSize = (0, 10)}, + new HBoxContainer + { + Children = + { + (Power = new CheckButton {Text = Loc.GetString("Power")}), + } + } + } + }, + } + }, + new MarginContainer + { + MarginLeftOverride = 12, + MarginRightOverride = 8, + SizeFlagsHorizontal = SizeFlags.FillExpand, + Children = + { + new VBoxContainer + { + SizeFlagsHorizontal = SizeFlags.Fill, + Children = + { + new HBoxContainer + { + Children = + { + new Label + { + Text = Loc.GetString("Select a destination:") + } + } + }, + new Control { CustomMinimumSize = new Vector2(0, 8) }, + new HBoxContainer + { + SizeFlagsVertical = SizeFlags.FillExpand, + Children = + { + (TargetListContainer = new ItemList + { + SelectMode = ItemList.ItemListSelectMode.Single, + SizeFlagsHorizontal = SizeFlags.FillExpand, + SizeFlagsVertical = SizeFlags.FillExpand + }) + } + }, + new PanelContainer + { + PanelOverride = new StyleBoxFlat + { + BackgroundColor = Color.FromHex("#ACBDBA") + }, + SizeFlagsHorizontal = SizeFlags.FillExpand, + CustomMinimumSize = new Vector2(0, 1), + }, + new HBoxContainer + { + Children = + { + new VBoxContainer + { + Children = + { + new MarginContainer + { + MarginLeftOverride = 4, + Children = + { + new HBoxContainer + { + SizeFlagsHorizontal = SizeFlags.FillExpand, + Children = + { + new Label + { + Text = Loc.GetString("This unit:") + }, + new Control + { + CustomMinimumSize = new Vector2(4, 0) + }, + (_tagLabel = new Label + { + Text = "-", + SizeFlagsVertical = SizeFlags.ShrinkEnd + }) + } + } + } + }, + } + } + } + } + } + } + } + } + } + }); + } + + private void UpdatePressureBar(float pressure) + { + _pressureBar.Value = pressure; + + var normalized = pressure / _pressureBar.MaxValue; + + const float leftHue = 0.0f; // Red + const float middleHue = 0.066f; // Orange + const float rightHue = 0.33f; // Green + const float saturation = 1.0f; // Uniform saturation + const float value = 0.8f; // Uniform value / brightness + const float alpha = 1.0f; // Uniform alpha + + // These should add up to 1.0 or your transition won't be smooth + const float leftSideSize = 0.5f; // Fraction of _chargeBar lerped from leftHue to middleHue + const float rightSideSize = 0.5f; // Fraction of _chargeBar lerped from middleHue to rightHue + + float finalHue; + if (normalized <= leftSideSize) + { + normalized /= leftSideSize; // Adjust range to 0.0 to 1.0 + finalHue = MathHelper.Lerp(leftHue, middleHue, normalized); + } + else + { + normalized = (normalized - leftSideSize) / rightSideSize; // Adjust range to 0.0 to 1.0. + finalHue = MathHelper.Lerp(middleHue, rightHue, normalized); + } + + // Check if null first to avoid repeatedly creating this. + _pressureBar.ForegroundStyleBoxOverride ??= new StyleBoxFlat(); + + var foregroundStyleBoxOverride = (StyleBoxFlat) _pressureBar.ForegroundStyleBoxOverride; + foregroundStyleBoxOverride.BackgroundColor = + Color.FromHsv(new Vector4(finalHue, saturation, value, alpha)); + + var percentage = pressure / _pressureBar.MaxValue * 100; + _pressurePercentage.Text = $" {percentage:0}%"; + } + + public void UpdateState(DisposalMailingUnitBoundUserInterfaceState state) + { + Title = state.UnitName; + _unitState.Text = state.UnitState; + UpdatePressureBar(state.Pressure); + Power.Pressed = state.Powered; + Engage.Pressed = state.Engaged; + PopulateTargetList(state.Tags); + _tagLabel.Text = state.Tag; + TargetList = state.Tags; + } + + private void PopulateTargetList(List tags) + { + TargetListContainer.Clear(); + foreach (var target in tags) + { + TargetListContainer.AddItem(target); + } + } + } +} diff --git a/Content.Client/GameObjects/Components/HUD/Inventory/ClientInventoryComponent.cs b/Content.Client/GameObjects/Components/HUD/Inventory/ClientInventoryComponent.cs index 5612a71f67..d74f8d30e7 100644 --- a/Content.Client/GameObjects/Components/HUD/Inventory/ClientInventoryComponent.cs +++ b/Content.Client/GameObjects/Components/HUD/Inventory/ClientInventoryComponent.cs @@ -82,7 +82,10 @@ namespace Content.Client.GameObjects.Components.HUD.Inventory foreach (var (slot, entityUid) in cast.Entities) { - var entity = Owner.EntityManager.GetEntity(entityUid); + if (!Owner.EntityManager.TryGetEntity(entityUid, out var entity)) + { + continue; + } if (!_slots.ContainsKey(slot) || _slots[slot] != entity) { _slots[slot] = entity; diff --git a/Content.Client/GameObjects/Components/HandheldLightComponent.cs b/Content.Client/GameObjects/Components/HandheldLightComponent.cs index fb5be31391..1c09818ae0 100644 --- a/Content.Client/GameObjects/Components/HandheldLightComponent.cs +++ b/Content.Client/GameObjects/Components/HandheldLightComponent.cs @@ -1,5 +1,6 @@ using System; using Content.Shared.GameObjects.Components; +using Content.Shared.Utility; using Robust.Client.Graphics.Drawing; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; @@ -88,23 +89,27 @@ namespace Content.Client.GameObjects.Components } else { - level = 1 + (int) MathF.Round(charge * 6); + level = ContentHelpers.RoundToNearestLevels(charge, 1.0, 6) + 1; } - if (level == 1) + if (level == 0) + { + _sections[0].PanelOverride = _styleBoxUnlit; + } + else if (level == 1) { // Flash the last light. _sections[0].PanelOverride = _timer > TimerCycle / 2 ? _styleBoxLit : _styleBoxUnlit; } else { - _sections[0].PanelOverride = level > 2 ? _styleBoxLit : _styleBoxUnlit; + _sections[0].PanelOverride = _styleBoxLit; } - _sections[1].PanelOverride = level > 3 ? _styleBoxLit : _styleBoxUnlit; - _sections[2].PanelOverride = level > 4 ? _styleBoxLit : _styleBoxUnlit; - _sections[3].PanelOverride = level > 5 ? _styleBoxLit : _styleBoxUnlit; - _sections[4].PanelOverride = level > 6 ? _styleBoxLit : _styleBoxUnlit; + _sections[1].PanelOverride = level >= 3 ? _styleBoxLit : _styleBoxUnlit; + _sections[2].PanelOverride = level >= 4 ? _styleBoxLit : _styleBoxUnlit; + _sections[3].PanelOverride = level >= 5 ? _styleBoxLit : _styleBoxUnlit; + _sections[4].PanelOverride = level >= 6 ? _styleBoxLit : _styleBoxUnlit; } } } diff --git a/Content.Client/GameObjects/Components/Instruments/InstrumentComponent.cs b/Content.Client/GameObjects/Components/Instruments/InstrumentComponent.cs index ab86148401..d30bcf6da9 100644 --- a/Content.Client/GameObjects/Components/Instruments/InstrumentComponent.cs +++ b/Content.Client/GameObjects/Components/Instruments/InstrumentComponent.cs @@ -7,6 +7,7 @@ using Content.Shared.Physics; using Robust.Client.Audio.Midi; using Robust.Shared.Audio.Midi; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.Interfaces.Network; using Robust.Shared.Interfaces.Timing; using Robust.Shared.IoC; @@ -41,6 +42,10 @@ namespace Content.Client.GameObjects.Components.Instruments private uint _sequenceStartTick; + private bool _allowPercussion; + + private bool _allowProgramChange; + /// /// A queue of MidiEvents to be sent to the server. /// @@ -67,7 +72,7 @@ namespace Content.Client.GameObjects.Components.Instruments /// Changes the instrument the midi renderer will play. /// [ViewVariables(VVAccess.ReadWrite)] - public byte InstrumentProgram + public override byte InstrumentProgram { get => _instrumentProgram; set @@ -84,7 +89,7 @@ namespace Content.Client.GameObjects.Components.Instruments /// Changes the instrument bank the midi renderer will use. /// [ViewVariables(VVAccess.ReadWrite)] - public byte InstrumentBank + public override byte InstrumentBank { get => _instrumentBank; set @@ -97,6 +102,34 @@ namespace Content.Client.GameObjects.Components.Instruments } } + [ViewVariables(VVAccess.ReadWrite)] + public override bool AllowPercussion + { + get => _allowPercussion; + set + { + _allowPercussion = value; + if (_renderer != null) + { + _renderer.DisablePercussionChannel = !_allowPercussion; + } + } + } + + [ViewVariables(VVAccess.ReadWrite)] + public override bool AllowProgramChange + { + get => _allowProgramChange; + set + { + _allowProgramChange = value; + if (_renderer != null) + { + _renderer.DisableProgramChangeEvent = !_allowProgramChange; + } + } + } + /// /// Whether this instrument is handheld or not. /// @@ -127,7 +160,7 @@ namespace Content.Client.GameObjects.Components.Instruments IoCManager.InjectDependencies(this); } - protected void SetupRenderer(bool fromStateChange = false) + protected virtual void SetupRenderer(bool fromStateChange = false) { if (IsRendererAlive) return; @@ -141,6 +174,8 @@ namespace Content.Client.GameObjects.Components.Instruments _renderer.MidiBank = _instrumentBank; _renderer.MidiProgram = _instrumentProgram; _renderer.TrackingEntity = Owner; + _renderer.DisablePercussionChannel = !_allowPercussion; + _renderer.DisableProgramChangeEvent = !_allowProgramChange; _renderer.OnMidiPlayerFinished += () => { OnMidiPlaybackEnded?.Invoke(); @@ -173,7 +208,7 @@ namespace Content.Client.GameObjects.Components.Instruments var renderer = _renderer; // We dispose of the synth two seconds from now to allow the last notes to stop from playing. - Timer.Spawn(2000, () => { renderer?.Dispose(); }); + Owner.SpawnTimer(2000, () => { renderer?.Dispose(); }); _renderer = null; _midiEventBuffer.Clear(); @@ -195,6 +230,8 @@ namespace Content.Client.GameObjects.Components.Instruments serializer.DataField(this, x => Handheld, "handheld", false); serializer.DataField(ref _instrumentProgram, "program", (byte) 1); serializer.DataField(ref _instrumentBank, "bank", (byte) 0); + serializer.DataField(ref _allowPercussion, "allowPercussion", false); + serializer.DataField(ref _allowProgramChange, "allowProgramChange", false); } public override void HandleNetworkMessage(ComponentMessage message, INetChannel channel, ICommonSession? session = null) @@ -279,6 +316,11 @@ namespace Content.Client.GameObjects.Components.Instruments { EndRenderer(true); } + + AllowPercussion = state.AllowPercussion; + AllowProgramChange = state.AllowProgramChange; + InstrumentBank = state.InstrumentBank; + InstrumentProgram = state.InstrumentProgram; } /// diff --git a/Content.Client/GameObjects/Components/Items/HandsComponent.cs b/Content.Client/GameObjects/Components/Items/HandsComponent.cs index 2750547ad3..c967a7e4d7 100644 --- a/Content.Client/GameObjects/Components/Items/HandsComponent.cs +++ b/Content.Client/GameObjects/Components/Items/HandsComponent.cs @@ -21,7 +21,6 @@ namespace Content.Client.GameObjects.Components.Items private HandsGui? _gui; - /// private readonly List _hands = new List(); [ViewVariables] public IReadOnlyList Hands => _hands; @@ -90,7 +89,7 @@ namespace Content.Client.GameObjects.Components.Items { if (!TryHand(sharedHand.Name, out var hand)) { - hand = new Hand(sharedHand, Owner.EntityManager); + hand = new Hand(this, sharedHand, Owner.EntityManager); AddHand(hand); } else @@ -102,6 +101,8 @@ namespace Content.Client.GameObjects.Components.Items : null; } + hand.Enabled = sharedHand.Enabled; + UpdateHandSprites(hand); } @@ -197,10 +198,35 @@ namespace Content.Client.GameObjects.Components.Items _gameHud.HandsContainer.AddChild(_gui); _gui.UpdateHandIcons(); break; - case PlayerDetachedMsg _: _gui?.Parent?.RemoveChild(_gui); break; + case HandEnabledMsg msg: + { + var hand = GetHand(msg.Name); + + if (hand?.Button == null) + { + break; + } + + hand.Button.Blocked.Visible = false; + + break; + } + case HandDisabledMsg msg: + { + var hand = GetHand(msg.Name); + + if (hand?.Button == null) + { + break; + } + + hand.Button.Blocked.Visible = true; + + break; + } } } @@ -235,9 +261,11 @@ namespace Content.Client.GameObjects.Components.Items public class Hand { - // TODO: Separate into server hand and client hand - public Hand(SharedHand hand, IEntityManager manager, HandButton? button = null) + private bool _enabled = true; + + public Hand(HandsComponent parent, SharedHand hand, IEntityManager manager, HandButton? button = null) { + Parent = parent; Index = hand.Index; Name = hand.Name; Location = hand.Location; @@ -252,10 +280,33 @@ namespace Content.Client.GameObjects.Components.Items Entity = entity; } + private HandsComponent Parent { get; } public int Index { get; } public string Name { get; } public HandLocation Location { get; set; } public IEntity? Entity { get; set; } public HandButton? Button { get; set; } + + public bool Enabled + { + get => _enabled; + set + { + if (_enabled == value) + { + return; + } + + _enabled = value; + Parent.Dirty(); + + var message = value + ? (ComponentMessage) new HandEnabledMsg(Name) + : new HandDisabledMsg(Name); + + Parent.HandleMessage(message, Parent); + Parent.Owner.SendMessage(Parent, message); + } + } } } diff --git a/Content.Client/GameObjects/Components/Items/ItemComponent.cs b/Content.Client/GameObjects/Components/Items/ItemComponent.cs index 5da0dfaec5..4b1b2b46be 100644 --- a/Content.Client/GameObjects/Components/Items/ItemComponent.cs +++ b/Content.Client/GameObjects/Components/Items/ItemComponent.cs @@ -21,6 +21,8 @@ namespace Content.Client.GameObjects.Components.Items [ComponentReference(typeof(IItemComponent))] public class ItemComponent : Component, IItemComponent, IDraggable { + [Dependency] private IResourceCache _resourceCache = default!; + public override string Name => "Item"; public override uint? NetID => ContentNetIDs.ITEM; @@ -72,8 +74,7 @@ namespace Content.Client.GameObjects.Components.Items protected RSI GetRSI() { - var resourceCache = IoCManager.Resolve(); - return resourceCache.GetResource(SharedSpriteComponent.TextureRoot / RsiPath).RSI; + return _resourceCache.GetResource(SharedSpriteComponent.TextureRoot / RsiPath).RSI; } public override void HandleComponentState(ComponentState curState, ComponentState nextState) diff --git a/Content.Client/GameObjects/Components/Mobs/ClientStatusEffectsComponent.cs b/Content.Client/GameObjects/Components/Mobs/ClientStatusEffectsComponent.cs index 8503644d77..bd292db23f 100644 --- a/Content.Client/GameObjects/Components/Mobs/ClientStatusEffectsComponent.cs +++ b/Content.Client/GameObjects/Components/Mobs/ClientStatusEffectsComponent.cs @@ -35,6 +35,8 @@ namespace Content.Client.GameObjects.Components.Mobs [ViewVariables] private Dictionary _cooldown = new Dictionary(); + public override IReadOnlyDictionary Statuses => _status; + /// /// Allows calculating if we need to act due to this component being controlled by the current mob /// diff --git a/Content.Client/GameObjects/Components/Morgue/BodyBagVisualizer.cs b/Content.Client/GameObjects/Components/Morgue/BodyBagVisualizer.cs new file mode 100644 index 0000000000..a8aa86b777 --- /dev/null +++ b/Content.Client/GameObjects/Components/Morgue/BodyBagVisualizer.cs @@ -0,0 +1,30 @@ +#nullable enable +using Content.Shared.GameObjects.Components.Morgue; +using Robust.Client.GameObjects; +using Robust.Client.Interfaces.GameObjects.Components; + +namespace Content.Client.GameObjects.Components.Morgue +{ + public sealed class BodyBagVisualizer : AppearanceVisualizer + { + public override void OnChangeData(AppearanceComponent component) + { + base.OnChangeData(component); + + if (!component.Owner.TryGetComponent(out ISpriteComponent? sprite)) + { + return; + } + + if (component.TryGetData(BodyBagVisuals.Label, out bool labelVal)) + { + sprite.LayerSetVisible(BodyBagVisualLayers.Label, labelVal); + } + } + } + + public enum BodyBagVisualLayers + { + Label, + } +} diff --git a/Content.Client/GameObjects/Components/Morgue/CrematoriumVisualizer.cs b/Content.Client/GameObjects/Components/Morgue/CrematoriumVisualizer.cs new file mode 100644 index 0000000000..b7b5b9d8c8 --- /dev/null +++ b/Content.Client/GameObjects/Components/Morgue/CrematoriumVisualizer.cs @@ -0,0 +1,75 @@ +#nullable enable +using Content.Shared.GameObjects.Components.Morgue; +using Robust.Client.GameObjects; +using Robust.Client.Interfaces.GameObjects.Components; +using Robust.Shared.Utility; +using YamlDotNet.RepresentationModel; + +namespace Content.Client.GameObjects.Components.Storage +{ + public sealed class CrematoriumVisualizer : AppearanceVisualizer + { + private string _stateOpen = ""; + private string _stateClosed = ""; + + private string _lightContents = ""; + private string _lightBurning = ""; + + public override void LoadData(YamlMappingNode node) + { + base.LoadData(node); + + if (node.TryGetNode("state_open", out var child)) + { + _stateOpen = child.AsString(); + } + if (node.TryGetNode("state_closed", out child)) + { + _stateClosed = child.AsString(); + } + + if (node.TryGetNode("light_contents", out child)) + { + _lightContents = child.AsString(); + } + if (node.TryGetNode("light_burning", out child)) + { + _lightBurning = child.AsString(); + } + } + + public override void OnChangeData(AppearanceComponent component) + { + base.OnChangeData(component); + + if (!component.Owner.TryGetComponent(out ISpriteComponent? sprite)) return; + + sprite.LayerSetState( + CrematoriumVisualLayers.Base, + component.GetData(MorgueVisuals.Open) + ? _stateOpen + : _stateClosed + ); + + var lightState = ""; + if (component.TryGetData(MorgueVisuals.HasContents, out bool hasContents) && hasContents) lightState = _lightContents; + if (component.TryGetData(CrematoriumVisuals.Burning, out bool isBurning) && isBurning) lightState = _lightBurning; + + if (!string.IsNullOrEmpty(lightState)) + { + sprite.LayerSetState(CrematoriumVisualLayers.Light, lightState); + sprite.LayerSetVisible(CrematoriumVisualLayers.Light, true); + } + else + { + sprite.LayerSetVisible(CrematoriumVisualLayers.Light, false); + } + } + } + + public enum CrematoriumVisualLayers + { + Base, + Light, + } +} diff --git a/Content.Client/GameObjects/Components/Morgue/MorgueVisualizer.cs b/Content.Client/GameObjects/Components/Morgue/MorgueVisualizer.cs new file mode 100644 index 0000000000..9f0a10305e --- /dev/null +++ b/Content.Client/GameObjects/Components/Morgue/MorgueVisualizer.cs @@ -0,0 +1,81 @@ +#nullable enable +using Content.Shared.GameObjects.Components.Morgue; +using Robust.Client.GameObjects; +using Robust.Client.Interfaces.GameObjects.Components; +using Robust.Shared.Utility; +using YamlDotNet.RepresentationModel; + +namespace Content.Client.GameObjects.Components.Storage +{ + public sealed class MorgueVisualizer : AppearanceVisualizer + { + private string _stateOpen = ""; + private string _stateClosed = ""; + + private string _lightContents = ""; + private string _lightMob = ""; + private string _lightSoul = ""; + + public override void LoadData(YamlMappingNode node) + { + base.LoadData(node); + + if (node.TryGetNode("state_open", out var child)) + { + _stateOpen = child.AsString(); + } + if (node.TryGetNode("state_closed", out child)) + { + _stateClosed = child.AsString(); + } + + if (node.TryGetNode("light_contents", out child)) + { + _lightContents = child.AsString(); + } + if (node.TryGetNode("light_mob", out child)) + { + _lightMob = child.AsString(); + } + if (node.TryGetNode("light_soul", out child)) + { + _lightSoul = child.AsString(); + } + } + + public override void OnChangeData(AppearanceComponent component) + { + base.OnChangeData(component); + + if (!component.Owner.TryGetComponent(out ISpriteComponent? sprite)) return; + + sprite.LayerSetState( + MorgueVisualLayers.Base, + component.GetData(MorgueVisuals.Open) + ? _stateOpen + : _stateClosed + ); + + var lightState = ""; + if (component.TryGetData(MorgueVisuals.HasContents, out bool hasContents) && hasContents) lightState = _lightContents; + if (component.TryGetData(MorgueVisuals.HasMob, out bool hasMob) && hasMob) lightState = _lightMob; + if (component.TryGetData(MorgueVisuals.HasSoul, out bool hasSoul) && hasSoul) lightState = _lightSoul; + + if (!string.IsNullOrEmpty(lightState)) + { + sprite.LayerSetState(MorgueVisualLayers.Light, lightState); + sprite.LayerSetVisible(MorgueVisualLayers.Light, true); + } + else + { + sprite.LayerSetVisible(MorgueVisualLayers.Light, false); + } + } + } + + public enum MorgueVisualLayers + { + Base, + Light, + } +} diff --git a/Content.Client/GameObjects/Components/Nutrition/DrinkFoodVisualizer.cs b/Content.Client/GameObjects/Components/Nutrition/DrinkFoodVisualizer.cs index caef972db0..214c8d9cef 100644 --- a/Content.Client/GameObjects/Components/Nutrition/DrinkFoodVisualizer.cs +++ b/Content.Client/GameObjects/Components/Nutrition/DrinkFoodVisualizer.cs @@ -22,7 +22,11 @@ namespace Content.Client.GameObjects.Components.Nutrition public override void OnChangeData(AppearanceComponent component) { - var sprite = component.Owner.GetComponent(); + if(!component.Owner.TryGetComponent(out var sprite)) + { + return; + }; + if (!component.TryGetData(SharedFoodComponent.FoodVisuals.MaxUses, out var maxUses)) { return; diff --git a/Content.Client/GameObjects/Components/ParticleAcceleratorPartVisualizer.cs b/Content.Client/GameObjects/Components/ParticleAcceleratorPartVisualizer.cs new file mode 100644 index 0000000000..2e992a516f --- /dev/null +++ b/Content.Client/GameObjects/Components/ParticleAcceleratorPartVisualizer.cs @@ -0,0 +1,79 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Content.Shared.GameObjects.Components; +using Content.Shared.GameObjects.Components.Singularity; +using Robust.Client.GameObjects; +using Robust.Client.Graphics; +using Robust.Client.Interfaces.GameObjects.Components; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Interfaces.Reflection; +using Robust.Shared.Interfaces.Serialization; +using Robust.Shared.IoC; +using Robust.Shared.Log; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; +using Robust.Shared.Utility; +using YamlDotNet.RepresentationModel; + +namespace Content.Client.GameObjects.Components +{ + public class ParticleAcceleratorPartVisualizer : AppearanceVisualizer + { + private Dictionary _states = new Dictionary(); + + public override void LoadData(YamlMappingNode node) + { + base.LoadData(node); + + var serializer = YamlObjectSerializer.NewReader(node); + if (!serializer.TryReadDataField("baseState", out var baseState)) + { + throw new PrototypeLoadException("No baseState property specified for ParticleAcceleratorPartVisualizer"); + } + + _states.Add(ParticleAcceleratorVisualState.Powered, baseState+"p"); + _states.Add(ParticleAcceleratorVisualState.Level0, baseState+"p0"); + _states.Add(ParticleAcceleratorVisualState.Level1, baseState+"p1"); + _states.Add(ParticleAcceleratorVisualState.Level2, baseState+"p2"); + _states.Add(ParticleAcceleratorVisualState.Level3, baseState+"p3"); + } + + public override void InitializeEntity(IEntity entity) + { + base.InitializeEntity(entity); + if (!entity.TryGetComponent(out var sprite)) + { + throw new EntityCreationException("No sprite component found in entity that has ParticleAcceleratorPartVisualizer"); + } + + if (!sprite.AllLayers.Any()) + { + throw new EntityCreationException("No Layer set for entity that has ParticleAcceleratorPartVisualizer"); + } + } + + public override void OnChangeData(AppearanceComponent component) + { + if (component.Owner.Deleted) + return; + + if (!component.Owner.TryGetComponent(out var sprite)) return; + if (!component.TryGetData(ParticleAcceleratorVisuals.VisualState, out ParticleAcceleratorVisualState state)) + { + state = ParticleAcceleratorVisualState.Unpowered; + } + + if (state != ParticleAcceleratorVisualState.Unpowered) + { + sprite.LayerSetVisible(ParticleAcceleratorVisualLayers.Unlit, true); + sprite.LayerSetState(ParticleAcceleratorVisualLayers.Unlit, _states[state]); + } + else + { + sprite.LayerSetVisible(ParticleAcceleratorVisualLayers.Unlit, false); + } + } + } +} diff --git a/Content.Client/GameObjects/Components/Power/PowerCellVisualizer.cs b/Content.Client/GameObjects/Components/Power/PowerCellVisualizer.cs index 71b4d81ff7..408c09d7d6 100644 --- a/Content.Client/GameObjects/Components/Power/PowerCellVisualizer.cs +++ b/Content.Client/GameObjects/Components/Power/PowerCellVisualizer.cs @@ -36,7 +36,8 @@ namespace Content.Client.GameObjects.Components.Power var sprite = component.Owner.GetComponent(); if (component.TryGetData(PowerCellVisuals.ChargeLevel, out float fraction)) { - sprite.LayerSetState(Layers.Charge, $"{_prefix}_{ContentHelpers.RoundToLevels(fraction, 1, 5) * 25}"); + int level = ContentHelpers.RoundToNearestLevels(fraction, 1, 4) * 25; + sprite.LayerSetState(Layers.Charge, $"{_prefix}_{level}"); } } diff --git a/Content.Client/GameObjects/Components/RadiationCollectorVisualizer.cs b/Content.Client/GameObjects/Components/RadiationCollectorVisualizer.cs new file mode 100644 index 0000000000..07f4738f47 --- /dev/null +++ b/Content.Client/GameObjects/Components/RadiationCollectorVisualizer.cs @@ -0,0 +1,104 @@ +using System; +using Content.Client.GameObjects.Components.Doors; +using Content.Client.GameObjects.Components.Wires; +using Content.Shared.GameObjects.Components.Doors; +using Content.Shared.GameObjects.Components.Singularity; +using Robust.Client.Animations; +using Robust.Client.GameObjects; +using Robust.Client.GameObjects.Components.Animations; +using Robust.Client.Interfaces.GameObjects.Components; +using Robust.Shared.Interfaces.GameObjects; +using YamlDotNet.RepresentationModel; + +namespace Content.Client.GameObjects.Components +{ + public class RadiationCollectorVisualizer : AppearanceVisualizer + { + private const string AnimationKey = "radiationcollector_animation"; + + private Animation ActivateAnimation; + private Animation DeactiveAnimation; + + public override void LoadData(YamlMappingNode node) + { + ActivateAnimation = new Animation {Length = TimeSpan.FromSeconds(0.8f)}; + { + var flick = new AnimationTrackSpriteFlick(); + ActivateAnimation.AnimationTracks.Add(flick); + flick.LayerKey = RadiationCollectorVisualLayers.Main; + flick.KeyFrames.Add(new AnimationTrackSpriteFlick.KeyFrame("ca_active", 0f)); + + /*var sound = new AnimationTrackPlaySound(); + CloseAnimation.AnimationTracks.Add(sound); + sound.KeyFrames.Add(new AnimationTrackPlaySound.KeyFrame(closeSound, 0));*/ + } + + DeactiveAnimation = new Animation {Length = TimeSpan.FromSeconds(0.8f)}; + { + var flick = new AnimationTrackSpriteFlick(); + DeactiveAnimation.AnimationTracks.Add(flick); + flick.LayerKey = RadiationCollectorVisualLayers.Main; + flick.KeyFrames.Add(new AnimationTrackSpriteFlick.KeyFrame("ca_deactive", 0f)); + + /*var sound = new AnimationTrackPlaySound(); + CloseAnimation.AnimationTracks.Add(sound); + sound.KeyFrames.Add(new AnimationTrackPlaySound.KeyFrame(closeSound, 0));*/ + } + } + + public override void InitializeEntity(IEntity entity) + { + if (!entity.HasComponent()) + { + entity.AddComponent(); + } + } + + + public override void OnChangeData(AppearanceComponent component) + { + if (component.Owner.Deleted) + return; + + if (!component.Owner.TryGetComponent(out var sprite)) return; + if (!component.Owner.TryGetComponent(out var animPlayer)) return; + if (!component.TryGetData(RadiationCollectorVisuals.VisualState, out RadiationCollectorVisualState state)) + { + state = RadiationCollectorVisualState.Deactive; + } + + switch (state) + { + case RadiationCollectorVisualState.Active: + sprite.LayerSetState(RadiationCollectorVisualLayers.Main, "ca_on"); + break; + case RadiationCollectorVisualState.Activating: + if (!animPlayer.HasRunningAnimation(AnimationKey)) + { + animPlayer.Play(ActivateAnimation, AnimationKey); + animPlayer.AnimationCompleted += _ => + component.SetData(RadiationCollectorVisuals.VisualState, + RadiationCollectorVisualState.Active); + } + break; + case RadiationCollectorVisualState.Deactivating: + if (!animPlayer.HasRunningAnimation(AnimationKey)) + { + animPlayer.Play(DeactiveAnimation, AnimationKey); + animPlayer.AnimationCompleted += _ => + component.SetData(RadiationCollectorVisuals.VisualState, + RadiationCollectorVisualState.Deactive); + } + break; + case RadiationCollectorVisualState.Deactive: + sprite.LayerSetState(RadiationCollectorVisualLayers.Main, "ca_off"); + break; + } + } + + } + public enum RadiationCollectorVisualLayers + { + Main + } +} diff --git a/Content.Client/GameObjects/Components/Singularity/ContainmentFieldComponent.cs b/Content.Client/GameObjects/Components/Singularity/ContainmentFieldComponent.cs new file mode 100644 index 0000000000..692f0b4b89 --- /dev/null +++ b/Content.Client/GameObjects/Components/Singularity/ContainmentFieldComponent.cs @@ -0,0 +1,28 @@ +using Robust.Client.GameObjects; +using Robust.Client.Interfaces.GameObjects.Components; +using Robust.Shared.GameObjects; +using Robust.Shared.Log; + +namespace Content.Client.GameObjects.Components.Singularity +{ + public class ContainmentFieldComponent : Component + { + public override string Name => "Containment Field"; + + private SpriteComponent _spriteComponent; + + public override void Initialize() + { + base.Initialize(); + + if (!Owner.TryGetComponent(out _spriteComponent)) + { + Logger.Error("Containmentfieldcomponent created without spritecomponent"); + } + else + { + _spriteComponent.Directional = false; + } + } + } +} diff --git a/Content.Client/GameObjects/Components/Singularity/EmitterVisualizer.cs b/Content.Client/GameObjects/Components/Singularity/EmitterVisualizer.cs new file mode 100644 index 0000000000..44b4d356cc --- /dev/null +++ b/Content.Client/GameObjects/Components/Singularity/EmitterVisualizer.cs @@ -0,0 +1,49 @@ +using System; +using Content.Shared.GameObjects.Components.Singularity; +using Robust.Client.GameObjects; +using Robust.Client.Interfaces.GameObjects.Components; + +namespace Content.Client.GameObjects.Components.Singularity +{ + public class EmitterVisualizer : AppearanceVisualizer + { + private const string OverlayBeam = "emitter-beam"; + private const string OverlayUnderPowered = "emitter-underpowered"; + + public override void OnChangeData(AppearanceComponent component) + { + base.OnChangeData(component); + + if (!component.Owner.TryGetComponent(out ISpriteComponent sprite)) + { + return; + } + + if (!component.TryGetData(EmitterVisuals.Locked, out bool locked)) + locked = false; + + + if (!component.TryGetData(EmitterVisuals.VisualState, out EmitterVisualState state)) + state = EmitterVisualState.Off; + + switch (state) + { + case EmitterVisualState.On: + sprite.LayerSetVisible(1, true); + sprite.LayerSetState(1, OverlayBeam); + break; + case EmitterVisualState.Underpowered: + sprite.LayerSetVisible(1, true); + sprite.LayerSetState(1, OverlayUnderPowered); + break; + case EmitterVisualState.Off: + sprite.LayerSetVisible(1, false); + break; + default: + throw new ArgumentOutOfRangeException(); + } + + sprite.LayerSetVisible(2, locked); + } + } +} diff --git a/Content.Client/GameObjects/Components/Sound/LoopingSoundComponent.cs b/Content.Client/GameObjects/Components/Sound/LoopingSoundComponent.cs index c9caf04338..b2dec0fcbc 100644 --- a/Content.Client/GameObjects/Components/Sound/LoopingSoundComponent.cs +++ b/Content.Client/GameObjects/Components/Sound/LoopingSoundComponent.cs @@ -1,8 +1,11 @@ +using System; using System.Collections.Generic; +using System.Linq; using Content.Shared.GameObjects.Components.Sound; using Content.Shared.Physics; using Robust.Client.GameObjects.EntitySystems; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.Network; using Robust.Shared.Interfaces.Random; @@ -51,11 +54,19 @@ namespace Content.Client.GameObjects.Components.Sound { if (!schedule.Play) return; - Timer.Spawn((int) schedule.Delay + (_random.Next((int) schedule.RandomDelay)),() => + Owner.SpawnTimer((int) schedule.Delay + (_random.Next((int) schedule.RandomDelay)),() => { if (!schedule.Play) return; // We make sure this hasn't changed. if (_audioSystem == null) _audioSystem = EntitySystem.Get(); - _audioStreams.Add(schedule,_audioSystem.Play(schedule.Filename, Owner, schedule.AudioParams)); + + if (!_audioStreams.ContainsKey(schedule)) + { + _audioStreams.Add(schedule,_audioSystem.Play(schedule.Filename, Owner, schedule.AudioParams)); + } + else + { + _audioStreams[schedule] = _audioSystem.Play(schedule.Filename, Owner, schedule.AudioParams); + } if (schedule.Times == 0) return; diff --git a/Content.Client/GameObjects/Components/Storage/StorageVisualizer.cs b/Content.Client/GameObjects/Components/Storage/StorageVisualizer.cs index 926d4e5c7a..e47c035bba 100644 --- a/Content.Client/GameObjects/Components/Storage/StorageVisualizer.cs +++ b/Content.Client/GameObjects/Components/Storage/StorageVisualizer.cs @@ -1,4 +1,4 @@ -using Content.Shared.GameObjects.Components.Storage; +using Content.Shared.GameObjects.Components.Storage; using Robust.Client.GameObjects; using Robust.Client.Interfaces.GameObjects.Components; using Robust.Shared.Interfaces.GameObjects; @@ -74,9 +74,12 @@ namespace Content.Client.GameObjects.Components.Storage } } - if (component.TryGetData(StorageVisuals.Welded, out bool weldedVal)) + if (component.TryGetData(StorageVisuals.CanWeld, out bool canWeld) && canWeld) { - sprite.LayerSetVisible(StorageVisualLayers.Welded, weldedVal); + if (component.TryGetData(StorageVisuals.Welded, out bool weldedVal)) + { + sprite.LayerSetVisible(StorageVisualLayers.Welded, weldedVal); + } } } } diff --git a/Content.Client/GameObjects/Components/Weapons/FlashableComponent.cs b/Content.Client/GameObjects/Components/Weapons/FlashableComponent.cs index 5e8573034a..f990eb2b27 100644 --- a/Content.Client/GameObjects/Components/Weapons/FlashableComponent.cs +++ b/Content.Client/GameObjects/Components/Weapons/FlashableComponent.cs @@ -7,6 +7,7 @@ using Robust.Client.Interfaces.Graphics; using Robust.Client.Interfaces.Graphics.Overlays; using Robust.Client.Player; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.Interfaces.Timing; using Robust.Shared.IoC; using Robust.Shared.Maths; @@ -83,7 +84,7 @@ namespace Content.Client.GameObjects.Components.Weapons } _cancelToken = new CancellationTokenSource(); - Timer.Spawn((int) duration * 1000, DisableOverlay, _cancelToken.Token); + Owner.SpawnTimer((int) duration * 1000, DisableOverlay, _cancelToken.Token); } private void DisableOverlay() diff --git a/Content.Client/GameObjects/Components/WindowComponent.cs b/Content.Client/GameObjects/Components/WindowComponent.cs index 8587c2bcac..3a06cba79e 100644 --- a/Content.Client/GameObjects/Components/WindowComponent.cs +++ b/Content.Client/GameObjects/Components/WindowComponent.cs @@ -1,4 +1,5 @@ -using Content.Client.GameObjects.EntitySystems; +using System.Diagnostics.CodeAnalysis; +using Content.Client.GameObjects.EntitySystems; using Content.Shared.GameObjects.Components; using Robust.Client.GameObjects; using Robust.Client.Interfaces.GameObjects.Components; @@ -34,14 +35,33 @@ namespace Content.Client.GameObjects.Components Owner.EntityManager.EventBus.RaiseEvent(EventSource.Local, new WindowSmoothDirtyEvent(Owner)); var state0 = $"{_stateBase}0"; + const string cracksRSIPath = "/Textures/Constructible/Structures/Windows/cracks.rsi"; _sprite.LayerMapSet(CornerLayers.SE, _sprite.AddLayerState(state0)); _sprite.LayerSetDirOffset(CornerLayers.SE, SpriteComponent.DirectionOffset.None); + _sprite.LayerMapSet(WindowDamageLayers.DamageSE, _sprite.AddLayerState("0_1", cracksRSIPath)); + _sprite.LayerSetShader(WindowDamageLayers.DamageSE, "unshaded"); + _sprite.LayerSetVisible(WindowDamageLayers.DamageSE, false); + _sprite.LayerMapSet(CornerLayers.NE, _sprite.AddLayerState(state0)); _sprite.LayerSetDirOffset(CornerLayers.NE, SpriteComponent.DirectionOffset.CounterClockwise); + _sprite.LayerMapSet(WindowDamageLayers.DamageNE, _sprite.AddLayerState("0_1", cracksRSIPath)); + _sprite.LayerSetDirOffset(WindowDamageLayers.DamageNE, SpriteComponent.DirectionOffset.CounterClockwise); + _sprite.LayerSetShader(WindowDamageLayers.DamageNE, "unshaded"); + _sprite.LayerSetVisible(WindowDamageLayers.DamageNE, false); + _sprite.LayerMapSet(CornerLayers.NW, _sprite.AddLayerState(state0)); _sprite.LayerSetDirOffset(CornerLayers.NW, SpriteComponent.DirectionOffset.Flip); + _sprite.LayerMapSet(WindowDamageLayers.DamageNW, _sprite.AddLayerState("0_1", cracksRSIPath)); + _sprite.LayerSetDirOffset(WindowDamageLayers.DamageNW, SpriteComponent.DirectionOffset.Flip); + _sprite.LayerSetShader(WindowDamageLayers.DamageNW, "unshaded"); + _sprite.LayerSetVisible(WindowDamageLayers.DamageNW, false); + _sprite.LayerMapSet(CornerLayers.SW, _sprite.AddLayerState(state0)); _sprite.LayerSetDirOffset(CornerLayers.SW, SpriteComponent.DirectionOffset.Clockwise); + _sprite.LayerMapSet(WindowDamageLayers.DamageSW, _sprite.AddLayerState("0_1", cracksRSIPath)); + _sprite.LayerSetDirOffset(WindowDamageLayers.DamageSW, SpriteComponent.DirectionOffset.Clockwise); + _sprite.LayerSetShader(WindowDamageLayers.DamageSW, "unshaded"); + _sprite.LayerSetVisible(WindowDamageLayers.DamageSW, false); } /// @@ -91,4 +111,13 @@ namespace Content.Client.GameObjects.Components serializer.DataField(ref _stateBase, "base", null); } } + + [SuppressMessage("ReSharper", "InconsistentNaming")] + public enum WindowDamageLayers + { + DamageSE, + DamageNE, + DamageNW, + DamageSW + } } diff --git a/Content.Client/GameObjects/Components/WindowVisualizer.cs b/Content.Client/GameObjects/Components/WindowVisualizer.cs new file mode 100644 index 0000000000..e66ded87d2 --- /dev/null +++ b/Content.Client/GameObjects/Components/WindowVisualizer.cs @@ -0,0 +1,60 @@ +using System; +using Content.Shared.GameObjects.Components; +using Content.Shared.Utility; +using JetBrains.Annotations; +using Robust.Client.GameObjects; +using Robust.Client.Interfaces.GameObjects.Components; +using Robust.Shared.GameObjects.Components.Transform; +using Robust.Shared.Interfaces.GameObjects; + +namespace Content.Client.GameObjects.Components +{ + [UsedImplicitly] + public sealed class WindowVisualizer : AppearanceVisualizer + { + public override void OnChangeData(AppearanceComponent component) + { + base.OnChangeData(component); + + var sprite = component.Owner.GetComponent(); + var snapGrid = component.Owner.GetComponent(); + var lowWall = FindLowWall(snapGrid); + if (lowWall == null) return; + + if (component.TryGetData(WindowVisuals.Damage, out float fraction)) + { + var level = Math.Min(ContentHelpers.RoundToLevels(fraction, 1, 7), 5); + if (level == 0) + { + foreach (WindowDamageLayers val in Enum.GetValues(typeof(WindowDamageLayers))) + { + sprite.LayerSetVisible(val, false); + } + return; + } + foreach (WindowDamageLayers val in Enum.GetValues(typeof(WindowDamageLayers))) + { + sprite.LayerSetVisible(val, true); + } + + sprite.LayerSetState(WindowDamageLayers.DamageNE, $"{(int) lowWall.LastCornerNE}_{level}"); + sprite.LayerSetState(WindowDamageLayers.DamageSE, $"{(int) lowWall.LastCornerSE}_{level}"); + sprite.LayerSetState(WindowDamageLayers.DamageSW, $"{(int) lowWall.LastCornerSW}_{level}"); + sprite.LayerSetState(WindowDamageLayers.DamageNW, $"{(int) lowWall.LastCornerNW}_{level}"); + + } + } + + private static LowWallComponent FindLowWall(SnapGridComponent snapGrid) + { + foreach (var entity in snapGrid.GetLocal()) + { + if (entity.TryGetComponent(out LowWallComponent lowWall)) + { + return lowWall; + } + } + return null; + } + } +} diff --git a/Content.Client/GameObjects/Components/Wires/WiresMenu.cs b/Content.Client/GameObjects/Components/Wires/WiresMenu.cs index a3fcda4861..7469f31a8d 100644 --- a/Content.Client/GameObjects/Components/Wires/WiresMenu.cs +++ b/Content.Client/GameObjects/Components/Wires/WiresMenu.cs @@ -21,6 +21,8 @@ namespace Content.Client.GameObjects.Components.Wires { public class WiresMenu : BaseWindow { + [Dependency] private IResourceCache _resourceCache = default!; + public WiresBoundUserInterface Owner { get; } private readonly Control _wiresHBox; @@ -34,7 +36,7 @@ namespace Content.Client.GameObjects.Components.Wires public WiresMenu(WiresBoundUserInterface owner) { - var resourceCache = IoCManager.Resolve(); + IoCManager.InjectDependencies(this); Owner = owner; var rootContainer = new LayoutContainer {Name = "WireRoot"}; @@ -42,7 +44,7 @@ namespace Content.Client.GameObjects.Components.Wires MouseFilter = MouseFilterMode.Stop; - var panelTex = resourceCache.GetTexture("/Textures/Interface/Nano/button.svg.96dpi.png"); + var panelTex = _resourceCache.GetTexture("/Textures/Interface/Nano/button.svg.96dpi.png"); var back = new StyleBoxTexture { Texture = panelTex, @@ -135,8 +137,8 @@ namespace Content.Client.GameObjects.Components.Wires LayoutContainer.SetAnchorPreset(topContainerWrap, LayoutContainer.LayoutPreset.Wide); - var font = resourceCache.GetFont("/Fonts/Boxfont-round/Boxfont Round.ttf", 13); - var fontSmall = resourceCache.GetFont("/Fonts/Boxfont-round/Boxfont Round.ttf", 10); + var font = _resourceCache.GetFont("/Fonts/Boxfont-round/Boxfont Round.ttf", 13); + var fontSmall = _resourceCache.GetFont("/Fonts/Boxfont-round/Boxfont Round.ttf", 10); Button helpButton; var topRow = new MarginContainer @@ -255,7 +257,7 @@ namespace Content.Client.GameObjects.Components.Wires var mirror = random.Next(2) == 0; var flip = random.Next(2) == 0; var type = random.Next(2); - var control = new WireControl(wire.Color, wire.Letter, wire.IsCut, flip, mirror, type) + var control = new WireControl(wire.Color, wire.Letter, wire.IsCut, flip, mirror, type, _resourceCache) { SizeFlagsVertical = SizeFlags.ShrinkEnd }; @@ -278,7 +280,7 @@ namespace Content.Client.GameObjects.Components.Wires { if (status.Value is StatusLightData statusLightData) { - _statusContainer.AddChild(new StatusLight(statusLightData)); + _statusContainer.AddChild(new StatusLight(statusLightData, _resourceCache)); } else { @@ -305,18 +307,20 @@ namespace Content.Client.GameObjects.Components.Wires private sealed class WireControl : Control { + private IResourceCache _resourceCache; + private const string TextureContact = "/Textures/Interface/WireHacking/contact.svg.96dpi.png"; public event Action WireClicked; public event Action ContactsClicked; - public WireControl(WireColor color, WireLetter letter, bool isCut, bool flip, bool mirror, int type) + public WireControl(WireColor color, WireLetter letter, bool isCut, bool flip, bool mirror, int type, IResourceCache resourceCache) { + _resourceCache = resourceCache; + SizeFlagsHorizontal = SizeFlags.ShrinkCenter; MouseFilter = MouseFilterMode.Stop; - var resourceCache = IoCManager.Resolve(); - var layout = new LayoutContainer(); AddChild(layout); @@ -326,7 +330,7 @@ namespace Content.Client.GameObjects.Components.Wires SizeFlagsVertical = SizeFlags.ShrinkEnd, SizeFlagsHorizontal = SizeFlags.ShrinkCenter, Align = Label.AlignMode.Center, - FontOverride = resourceCache.GetFont("/Fonts/NotoSansDisplay/NotoSansDisplay-Bold.ttf", 12), + FontOverride = _resourceCache.GetFont("/Fonts/NotoSansDisplay/NotoSansDisplay-Bold.ttf", 12), FontColorOverride = Color.Gray, ToolTip = letter.Name(), MouseFilter = MouseFilterMode.Stop @@ -337,7 +341,7 @@ namespace Content.Client.GameObjects.Components.Wires LayoutContainer.SetGrowVertical(greek, LayoutContainer.GrowDirection.Begin); LayoutContainer.SetGrowHorizontal(greek, LayoutContainer.GrowDirection.Both); - var contactTexture = resourceCache.GetTexture(TextureContact); + var contactTexture = _resourceCache.GetTexture(TextureContact); var contact1 = new TextureRect { Texture = contactTexture, @@ -356,7 +360,7 @@ namespace Content.Client.GameObjects.Components.Wires layout.AddChild(contact2); LayoutContainer.SetPosition(contact2, (0, 60)); - var wire = new WireRender(color, isCut, flip, mirror, type); + var wire = new WireRender(color, isCut, flip, mirror, type, _resourceCache); layout.AddChild(wire); LayoutContainer.SetPosition(wire, (2, 16)); @@ -420,8 +424,11 @@ namespace Content.Client.GameObjects.Components.Wires "/Textures/Interface/WireHacking/wire_2_copper.svg.96dpi.png" }; - public WireRender(WireColor color, bool isCut, bool flip, bool mirror, int type) + private IResourceCache _resourceCache; + + public WireRender(WireColor color, bool isCut, bool flip, bool mirror, int type, IResourceCache resourceCache) { + _resourceCache = resourceCache; _color = color; _isCut = isCut; _flip = flip; @@ -436,10 +443,8 @@ namespace Content.Client.GameObjects.Components.Wires protected override void Draw(DrawingHandleScreen handle) { - var resC = IoCManager.Resolve(); - var colorValue = _color.ColorValue(); - var tex = resC.GetTexture(_isCut ? TextureCut[_type] : TextureNormal[_type]); + var tex = _resourceCache.GetTexture(_isCut ? TextureCut[_type] : TextureNormal[_type]); var l = 0f; var r = tex.Width + l; @@ -465,7 +470,7 @@ namespace Content.Client.GameObjects.Components.Wires if (_isCut) { var copper = Color.Orange; - var copperTex = resC.GetTexture(TextureCopper[_type]); + var copperTex = _resourceCache.GetTexture(TextureCopper[_type]); handle.DrawTextureRect(copperTex, rect, copper); } @@ -516,9 +521,8 @@ namespace Content.Client.GameObjects.Components.Wires } }; - public StatusLight(StatusLightData data) + public StatusLight(StatusLightData data, IResourceCache resourceCache) { - var resC = IoCManager.Resolve(); var hsv = Color.ToHsv(data.Color); hsv.Z /= 2; var dimColor = Color.FromHsv(hsv); @@ -530,7 +534,7 @@ namespace Content.Client.GameObjects.Components.Wires { new TextureRect { - Texture = resC.GetTexture( + Texture = resourceCache.GetTexture( "/Textures/Interface/WireHacking/light_off_base.svg.96dpi.png"), Stretch = TextureRect.StretchMode.KeepCentered, ModulateSelfOverride = dimColor @@ -540,7 +544,7 @@ namespace Content.Client.GameObjects.Components.Wires ModulateSelfOverride = data.Color.WithAlpha(0.4f), Stretch = TextureRect.StretchMode.KeepCentered, Texture = - resC.GetTexture("/Textures/Interface/WireHacking/light_on_base.svg.96dpi.png"), + resourceCache.GetTexture("/Textures/Interface/WireHacking/light_on_base.svg.96dpi.png"), }) } }; @@ -577,7 +581,7 @@ namespace Content.Client.GameObjects.Components.Wires }; } - var font = IoCManager.Resolve().GetFont("/Fonts/Boxfont-round/Boxfont Round.ttf", 12); + var font = resourceCache.GetFont("/Fonts/Boxfont-round/Boxfont Round.ttf", 12); var hBox = new HBoxContainer {SeparationOverride = 4}; hBox.AddChild(new Label diff --git a/Content.Client/GameObjects/EntitySystems/DoAfter/DoAfterSystem.cs b/Content.Client/GameObjects/EntitySystems/DoAfter/DoAfterSystem.cs index 42583cb010..7dfb8225d0 100644 --- a/Content.Client/GameObjects/EntitySystems/DoAfter/DoAfterSystem.cs +++ b/Content.Client/GameObjects/EntitySystems/DoAfter/DoAfterSystem.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System.Collections.Generic; using System.Linq; using Content.Client.GameObjects.Components; @@ -124,9 +124,7 @@ namespace Content.Client.GameObjects.EntitySystems.DoAfter if (doAfter.BreakOnTargetMove) { - var targetEntity = _entityManager.GetEntity(doAfter.TargetUid); - - if (targetEntity.Transform.Coordinates != doAfter.TargetGrid) + if (_entityManager.TryGetEntity(doAfter.TargetUid, out var targetEntity) && targetEntity.Transform.Coordinates != doAfter.TargetGrid) { comp.Cancel(id, currentTime); continue; diff --git a/Content.Client/GameObjects/EntitySystems/MeleeWeaponSystem.cs b/Content.Client/GameObjects/EntitySystems/MeleeWeaponSystem.cs index d2280535e7..806e122204 100644 --- a/Content.Client/GameObjects/EntitySystems/MeleeWeaponSystem.cs +++ b/Content.Client/GameObjects/EntitySystems/MeleeWeaponSystem.cs @@ -6,6 +6,7 @@ using JetBrains.Annotations; using Robust.Client.GameObjects; using Robust.Client.Interfaces.GameObjects.Components; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.GameObjects.EntitySystemMessages; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.Timing; @@ -95,7 +96,7 @@ namespace Content.Client.GameObjects.EntitySystems var newColor = Color.Red * originalColor; sprite.Color = newColor; - Timer.Spawn(100, () => + hitEntity.SpawnTimer(100, () => { // Only reset back to the original color if something else didn't change the color in the mean time. if (sprite.Color == newColor) diff --git a/Content.Client/GameObjects/EntitySystems/StandingStateSystem.cs b/Content.Client/GameObjects/EntitySystems/StandingStateSystem.cs index 212d386c01..b5659fe7b1 100644 --- a/Content.Client/GameObjects/EntitySystems/StandingStateSystem.cs +++ b/Content.Client/GameObjects/EntitySystems/StandingStateSystem.cs @@ -24,12 +24,6 @@ namespace Content.Client.GameObjects.EntitySystems appearance.SetData(RotationVisuals.RotationState, newState); } - if (playSound) - { - var file = AudioHelpers.GetRandomFileFromSoundCollection("bodyfall"); - Get().Play(file, entity, AudioHelpers.WithVariation(0.25f)); - } - return true; } diff --git a/Content.Client/IgnoredComponents.cs b/Content.Client/IgnoredComponents.cs index ffaa51467d..c906233b6c 100644 --- a/Content.Client/IgnoredComponents.cs +++ b/Content.Client/IgnoredComponents.cs @@ -33,7 +33,6 @@ "Door", "PoweredLight", "Smes", - "Powercell", "LightBulb", "Healing", "Catwalk", @@ -42,6 +41,7 @@ "HitscanWeaponCapacitor", "PowerCell", "PowerCellCharger", + "PowerCellSlot", "WeaponCapacitorCharger", "AiController", "Computer", @@ -182,6 +182,7 @@ "GasCanisterPort", "Lung", "Cleanable", + "Configuration", "Brain", "PlantHolder", "SeedExtractor", @@ -190,7 +191,27 @@ "Hoe", "Seed", "BotanySharp", - "PlantSampleTaker" + "PlantSampleTaker", + "Internals", + "GasTank", + "BreathMask", + "RadiationCollector", + "ContainmentFieldGenerator", + "ContainmentField", + "Emitter", + "Singularity", + "SingularityGenerator", + "EmitterBoltComponent", + "ParticleProjectile", + "ParticleAcceleratorControlBox", + "ParticleAcceleratorEmitter", + "ParticleAcceleratorEndCap", + "ParticleAcceleratorFuelChamber", + "ParticleAcceleratorPowerBox", + "BodyBagEntityStorage", + "MorgueEntityStorage", + "MorgueTray", + "CrematoriumEntityStorage", }; } } diff --git a/Content.Client/Instruments/InstrumentMenu.cs b/Content.Client/Instruments/InstrumentMenu.cs index 76ea0a8c28..c980ffbba7 100644 --- a/Content.Client/Instruments/InstrumentMenu.cs +++ b/Content.Client/Instruments/InstrumentMenu.cs @@ -1,6 +1,7 @@ using Content.Client.GameObjects.Components.Instruments; using Content.Client.UserInterface.Stylesheets; using Content.Client.Utility; +using Content.Shared.GameObjects.EntitySystems; using Robust.Client.Audio.Midi; using Robust.Client.Graphics.Drawing; using Robust.Client.Interfaces.UserInterface; @@ -176,34 +177,20 @@ namespace Content.Client.Instruments var filters = new FileDialogFilters(new FileDialogFilters.Group("mid", "midi")); var filename = await _fileDialogManager.OpenFile(filters); - var instrumentEnt = _owner.Instrument.Owner; - var instrument = _owner.Instrument; - - ContainerHelpers.TryGetContainerMan(_owner.Instrument.Owner, out var conMan); - - var localPlayer = IoCManager.Resolve().LocalPlayer; - // The following checks are only in place to prevent players from playing MIDI songs locally. // There are equivalents for these checks on the server. if (string.IsNullOrEmpty(filename)) return; - // If we don't have a player or controlled entity, we return. - if(localPlayer?.ControlledEntity == null) return; - - // If the instrument is handheld and we're not holding it, we return. - if((instrument.Handheld && (conMan == null - || conMan.Owner != localPlayer.ControlledEntity))) return; - - // We check that we're in range unobstructed just in case. - if (!localPlayer.InRangeUnobstructed(instrumentEnt)) return; - if (!_midiManager.IsMidiFile(filename)) { Logger.Warning($"Not a midi file! Chosen file: {filename}"); return; } + if (!PlayCheck()) + return; + MidiStopButtonOnPressed(null); await Timer.Delay(100); if (!_owner.Instrument.OpenMidi(filename)) return; @@ -216,6 +203,9 @@ namespace Content.Client.Instruments { if (obj.Pressed) { + if (!PlayCheck()) + return; + MidiStopButtonOnPressed(null); _owner.Instrument.OpenInput(); } @@ -223,6 +213,26 @@ namespace Content.Client.Instruments _owner.Instrument.CloseInput(); } + private bool PlayCheck() + { + var instrumentEnt = _owner.Instrument.Owner; + var instrument = _owner.Instrument; + + ContainerHelpers.TryGetContainerMan(_owner.Instrument.Owner, out var conMan); + + var localPlayer = IoCManager.Resolve().LocalPlayer; + + // If we don't have a player or controlled entity, we return. + if(localPlayer?.ControlledEntity == null) return false; + + // If the instrument is handheld and we're not holding it, we return. + if((instrument.Handheld && (conMan == null + || conMan.Owner != localPlayer.ControlledEntity))) return false; + + // We check that we're in range unobstructed just in case. + return localPlayer.InRangeUnobstructed(instrumentEnt, predicate:(e) => e == instrumentEnt || e == localPlayer.ControlledEntity); + } + private void MidiStopButtonOnPressed(BaseButton.ButtonEventArgs obj) { MidiPlaybackSetButtonsDisabled(true); diff --git a/Content.Client/UserInterface/AdminMenu/AdminMenuWindow.cs b/Content.Client/UserInterface/AdminMenu/AdminMenuWindow.cs index 0025f0df6b..f45ac25c88 100644 --- a/Content.Client/UserInterface/AdminMenu/AdminMenuWindow.cs +++ b/Content.Client/UserInterface/AdminMenu/AdminMenuWindow.cs @@ -37,7 +37,7 @@ namespace Content.Client.UserInterface.AdminMenu { new KickCommandButton(), new DirectCommandButton("Admin Ghost", "aghost"), - //TODO: teleport + new TeleportCommandButton(), }; private readonly List _adminbusButtons = new List { @@ -534,6 +534,30 @@ namespace Content.Client.UserInterface.AdminMenu } } + private class TeleportCommandButton : UICommandButton + { + public override string Name => "Teleport"; + public override string RequiredCommand => "tpto"; + + private readonly CommandUIDropDown _playerDropDown = new CommandUIDropDown + { + Name = "Player", + GetData = () => IoCManager.Resolve().Sessions.ToList(), + GetDisplayName = (obj) => $"{((IPlayerSession) obj).Name} ({((IPlayerSession) obj).AttachedEntity?.Name})", + GetValueFromData = (obj) => ((IPlayerSession) obj).Name, + }; + + public override List UI => new List + { + _playerDropDown + }; + + public override void Submit() + { + IoCManager.Resolve().ProcessCommand($"tpto \"{_playerDropDown.GetValue()}\""); + } + } + private class AddAtmosCommandButton : UICommandButton { public override string Name => "Add Atmos"; diff --git a/Content.Client/UserInterface/Atmos/GasTank/GasTankBoundUserInterface.cs b/Content.Client/UserInterface/Atmos/GasTank/GasTankBoundUserInterface.cs new file mode 100644 index 0000000000..868aad1443 --- /dev/null +++ b/Content.Client/UserInterface/Atmos/GasTank/GasTankBoundUserInterface.cs @@ -0,0 +1,50 @@ +using Content.Shared.GameObjects.Components.Atmos.GasTank; +using JetBrains.Annotations; +using Robust.Client.GameObjects.Components.UserInterface; +using Robust.Shared.GameObjects.Components.UserInterface; + +namespace Content.Client.UserInterface.Atmos.GasTank +{ + [UsedImplicitly] + public class GasTankBoundUserInterface + : BoundUserInterface + { + public GasTankBoundUserInterface(ClientUserInterfaceComponent owner, object uiKey) : + base(owner, uiKey) + { + } + + private GasTankWindow _window; + + public void SetOutputPressure(in float value) + { + SendMessage(new GasTankSetPressureMessage {Pressure = value}); + } + + public void ToggleInternals() + { + SendMessage(new GasTankToggleInternalsMessage()); + } + + protected override void Open() + { + base.Open(); + _window = new GasTankWindow(this); + _window.OnClose += Close; + _window.OpenCentered(); + } + + protected override void UpdateState(BoundUserInterfaceState state) + { + base.UpdateState(state); + _window.UpdateState((GasTankBoundUserInterfaceState) state); + } + + protected override void Dispose(bool disposing) + { + base.Dispose(disposing); + + _window.Close(); + } + } +} diff --git a/Content.Client/UserInterface/Atmos/GasTank/GasTankWindow.cs b/Content.Client/UserInterface/Atmos/GasTank/GasTankWindow.cs new file mode 100644 index 0000000000..49210c9464 --- /dev/null +++ b/Content.Client/UserInterface/Atmos/GasTank/GasTankWindow.cs @@ -0,0 +1,235 @@ +using Content.Client.UserInterface.Stylesheets; +using Content.Client.Utility; +using Content.Shared.GameObjects.Components.Atmos.GasTank; +using Robust.Client.Graphics.Drawing; +using Robust.Client.Interfaces.ResourceManagement; +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.CustomControls; +using Robust.Shared.IoC; +using Robust.Shared.Localization; +using Robust.Shared.Maths; + +namespace Content.Client.UserInterface.Atmos.GasTank +{ + public class GasTankWindow + : BaseWindow + { + private GasTankBoundUserInterface _owner; + private readonly Label _lblName; + private readonly VBoxContainer _topContainer; + private readonly Control _contentContainer; + + + private readonly IResourceCache _resourceCache = default!; + private readonly RichTextLabel _lblPressure; + private readonly FloatSpinBox _spbPressure; + private readonly RichTextLabel _lblInternals; + private readonly Button _btnInternals; + + public GasTankWindow(GasTankBoundUserInterface owner) + { + TextureButton btnClose; + _resourceCache = IoCManager.Resolve(); + _owner = owner; + var rootContainer = new LayoutContainer {Name = "GasTankRoot"}; + AddChild(rootContainer); + + MouseFilter = MouseFilterMode.Stop; + + var panelTex = _resourceCache.GetTexture("/Textures/Interface/Nano/button.svg.96dpi.png"); + var back = new StyleBoxTexture + { + Texture = panelTex, + Modulate = Color.FromHex("#25252A"), + }; + + back.SetPatchMargin(StyleBox.Margin.All, 10); + + var topPanel = new PanelContainer + { + PanelOverride = back, + MouseFilter = MouseFilterMode.Pass + }; + + var bottomWrap = new LayoutContainer + { + Name = "BottomWrap" + }; + + rootContainer.AddChild(topPanel); + rootContainer.AddChild(bottomWrap); + + LayoutContainer.SetAnchorPreset(topPanel, LayoutContainer.LayoutPreset.Wide); + LayoutContainer.SetMarginBottom(topPanel, -85); + + LayoutContainer.SetAnchorPreset(bottomWrap, LayoutContainer.LayoutPreset.VerticalCenterWide); + LayoutContainer.SetGrowHorizontal(bottomWrap, LayoutContainer.GrowDirection.Both); + + + var topContainerWrap = new VBoxContainer + { + Children = + { + (_topContainer = new VBoxContainer()), + new Control {CustomMinimumSize = (0, 110)} + } + }; + + rootContainer.AddChild(topContainerWrap); + + LayoutContainer.SetAnchorPreset(topContainerWrap, LayoutContainer.LayoutPreset.Wide); + + var font = _resourceCache.GetFont("/Fonts/Boxfont-round/Boxfont Round.ttf", 13); + + var topRow = new MarginContainer + { + MarginLeftOverride = 4, + MarginTopOverride = 2, + MarginRightOverride = 12, + MarginBottomOverride = 2, + Children = + { + new HBoxContainer + { + Children = + { + (_lblName = new Label + { + Text = Loc.GetString("Gas Tank"), + FontOverride = font, + FontColorOverride = StyleNano.NanoGold, + SizeFlagsVertical = SizeFlags.ShrinkCenter + }), + new Control + { + CustomMinimumSize = (20, 0), + SizeFlagsHorizontal = SizeFlags.Expand + }, + (btnClose = new TextureButton + { + StyleClasses = {SS14Window.StyleClassWindowCloseButton}, + SizeFlagsVertical = SizeFlags.ShrinkCenter + }) + } + } + } + }; + + var middle = new PanelContainer + { + PanelOverride = new StyleBoxFlat {BackgroundColor = Color.FromHex("#202025")}, + Children = + { + new MarginContainer + { + MarginLeftOverride = 8, + MarginRightOverride = 8, + MarginTopOverride = 4, + MarginBottomOverride = 4, + Children = + { + (_contentContainer = new VBoxContainer()) + } + } + } + }; + + _topContainer.AddChild(topRow); + _topContainer.AddChild(new PanelContainer + { + CustomMinimumSize = (0, 2), + PanelOverride = new StyleBoxFlat {BackgroundColor = Color.FromHex("#525252ff")} + }); + _topContainer.AddChild(middle); + _topContainer.AddChild(new PanelContainer + { + CustomMinimumSize = (0, 2), + PanelOverride = new StyleBoxFlat {BackgroundColor = Color.FromHex("#525252ff")} + }); + + + _lblPressure = new RichTextLabel(); + _contentContainer.AddChild(_lblPressure); + + //internals + _lblInternals = new RichTextLabel + {CustomMinimumSize = (200, 0), SizeFlagsVertical = SizeFlags.ShrinkCenter}; + _btnInternals = new Button {Text = Loc.GetString("Toggle")}; + + _contentContainer.AddChild( + new MarginContainer + { + MarginTopOverride = 7, + Children = + { + new HBoxContainer + { + Children = {_lblInternals, _btnInternals} + } + } + }); + + // Separator + _contentContainer.AddChild(new Control + { + CustomMinimumSize = new Vector2(0, 10) + }); + + _contentContainer.AddChild(new Label + { + Text = Loc.GetString("Output Pressure"), + Align = Label.AlignMode.Center + }); + _spbPressure = new FloatSpinBox {IsValid = f => f >= 0 || f <= 3000}; + _contentContainer.AddChild( + new MarginContainer + { + MarginRightOverride = 25, + MarginLeftOverride = 25, + MarginBottomOverride = 7, + Children = + { + _spbPressure + } + } + ); + + // Handlers + _spbPressure.OnValueChanged += args => + { + _owner.SetOutputPressure(args.Value); + }; + + _btnInternals.OnPressed += args => + { + _owner.ToggleInternals(); + }; + + btnClose.OnPressed += _ => Close(); + } + + public void UpdateState(GasTankBoundUserInterfaceState state) + { + _lblPressure.SetMarkup(Loc.GetString("Pressure: {0:0.##} kPa", state.TankPressure)); + _btnInternals.Disabled = !state.CanConnectInternals; + _lblInternals.SetMarkup(Loc.GetString("Internals: [color={0}]{1}[/color]", + state.InternalsConnected ? "green" : "red", + state.InternalsConnected ? "Connected" : "Disconnected")); + if (state.OutputPressure.HasValue) + { + _spbPressure.Value = state.OutputPressure.Value; + } + } + + protected override DragMode GetDragModeFor(Vector2 relativeMousePos) + { + return DragMode.Move; + } + + protected override bool HasPoint(Vector2 point) + { + return false; + } + } +} diff --git a/Content.Client/UserInterface/HandButton.cs b/Content.Client/UserInterface/HandButton.cs index d249cda3bd..af152d5d6b 100644 --- a/Content.Client/UserInterface/HandButton.cs +++ b/Content.Client/UserInterface/HandButton.cs @@ -1,15 +1,25 @@ using Content.Shared.GameObjects.Components.Items; using Robust.Client.Graphics; +using Robust.Client.UserInterface.Controls; namespace Content.Client.UserInterface { public class HandButton : ItemSlotButton { - public HandButton(Texture texture, Texture storageTexture, HandLocation location) : base(texture, storageTexture) + public HandButton(Texture texture, Texture storageTexture, Texture blockedTexture, HandLocation location) : base(texture, storageTexture) { Location = location; + + AddChild(Blocked = new TextureRect + { + Texture = blockedTexture, + TextureScale = (2, 2), + MouseFilter = MouseFilterMode.Stop, + Visible = false + }); } public HandLocation Location { get; } + public TextureRect Blocked { get; } } } diff --git a/Content.Client/UserInterface/HandsGui.cs b/Content.Client/UserInterface/HandsGui.cs index 3297fb467b..fca20f2b9a 100644 --- a/Content.Client/UserInterface/HandsGui.cs +++ b/Content.Client/UserInterface/HandsGui.cs @@ -111,7 +111,8 @@ namespace Content.Client.UserInterface { var buttonTexture = HandTexture(buttonLocation); var storageTexture = _resourceCache.GetTexture("/Textures/Interface/Inventory/back.png"); - var button = new HandButton(buttonTexture, storageTexture, buttonLocation); + var blockedTexture = _resourceCache.GetTexture("/Textures/Interface/Inventory/blocked.png"); + var button = new HandButton(buttonTexture, storageTexture, blockedTexture, buttonLocation); var slot = hand.Name; button.OnPressed += args => HandKeyBindDown(args, slot); diff --git a/Content.Client/UserInterface/ParticleAccelerator/ParticleAcceleratorBoundUserInterface.cs b/Content.Client/UserInterface/ParticleAccelerator/ParticleAcceleratorBoundUserInterface.cs new file mode 100644 index 0000000000..1333b48546 --- /dev/null +++ b/Content.Client/UserInterface/ParticleAccelerator/ParticleAcceleratorBoundUserInterface.cs @@ -0,0 +1,52 @@ +using Content.Shared.GameObjects.Components; +using JetBrains.Annotations; +using Robust.Client.GameObjects.Components.UserInterface; +using Robust.Shared.GameObjects.Components.UserInterface; + +namespace Content.Client.ParticleAccelerator +{ + public class ParticleAcceleratorBoundUserInterface : BoundUserInterface + { + private ParticleAcceleratorControlMenu _menu; + + public ParticleAcceleratorBoundUserInterface([NotNull] ClientUserInterfaceComponent owner, [NotNull] object uiKey) : base(owner, uiKey) + { + } + + protected override void Open() + { + base.Open(); + + _menu = new ParticleAcceleratorControlMenu(this); + _menu.OnClose += Close; + _menu.OpenCentered(); + } + + public void SendEnableMessage(bool enable) + { + SendMessage(new ParticleAcceleratorSetEnableMessage(enable)); + } + + public void SendPowerStateMessage(ParticleAcceleratorPowerState state) + { + SendMessage(new ParticleAcceleratorSetPowerStateMessage(state)); + } + + public void SendScanPartsMessage() + { + SendMessage(new ParticleAcceleratorRescanPartsMessage()); + } + + protected override void UpdateState(BoundUserInterfaceState state) + { + _menu.DataUpdate((ParticleAcceleratorUIState) state); + } + + protected override void Dispose(bool disposing) + { + base.Dispose(disposing); + + _menu.Close(); + } + } +} diff --git a/Content.Client/UserInterface/ParticleAccelerator/ParticleAcceleratorControlMenu.cs b/Content.Client/UserInterface/ParticleAccelerator/ParticleAcceleratorControlMenu.cs new file mode 100644 index 0000000000..2e9ab07227 --- /dev/null +++ b/Content.Client/UserInterface/ParticleAccelerator/ParticleAcceleratorControlMenu.cs @@ -0,0 +1,545 @@ +using System; +using Content.Client.Animations; +using Content.Client.UserInterface; +using Content.Client.UserInterface.Stylesheets; +using Content.Client.Utility; +using Content.Shared.GameObjects.Components; +using Robust.Client.Animations; +using Robust.Client.Graphics; +using Robust.Client.Graphics.Drawing; +using Robust.Client.Graphics.Shaders; +using Robust.Client.Interfaces.ResourceManagement; +using Robust.Client.ResourceManagement; +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.CustomControls; +using Robust.Shared.IoC; +using Robust.Shared.Localization; +using Robust.Shared.Maths; +using Robust.Shared.Noise; +using Robust.Shared.Prototypes; +using Robust.Shared.Timing; + +namespace Content.Client.ParticleAccelerator +{ + public sealed class ParticleAcceleratorControlMenu : BaseWindow + { + private ShaderInstance _greyScaleShader; + + private readonly ParticleAcceleratorBoundUserInterface Owner; + + private readonly Label _drawLabel; + private readonly NoiseGenerator _drawNoiseGenerator; + private readonly Button _onButton; + private readonly Button _offButton; + private readonly Button _scanButton; + private readonly Label _statusLabel; + private readonly SpinBox _stateSpinBox; + + private readonly VBoxContainer _alarmControl; + private readonly Animation _alarmControlAnimation; + + private readonly PASegmentControl _endCapTexture; + private readonly PASegmentControl _fuelChamberTexture; + private readonly PASegmentControl _controlBoxTexture; + private readonly PASegmentControl _powerBoxTexture; + private readonly PASegmentControl _emitterCenterTexture; + private readonly PASegmentControl _emitterRightTexture; + private readonly PASegmentControl _emitterLeftTexture; + + private float _time; + private int _lastDraw; + private int _lastReceive; + + private bool _blockSpinBox; + private bool _assembled; + private bool _shouldContinueAnimating; + + public ParticleAcceleratorControlMenu(ParticleAcceleratorBoundUserInterface owner) + { + _greyScaleShader = IoCManager.Resolve().Index("Greyscale").Instance(); + + Owner = owner; + _drawNoiseGenerator = new NoiseGenerator(NoiseGenerator.NoiseType.Fbm); + _drawNoiseGenerator.SetFrequency(0.5f); + + var resourceCache = IoCManager.Resolve(); + var font = resourceCache.GetFont("/Fonts/Boxfont-round/Boxfont Round.ttf", 13); + var panelTex = resourceCache.GetTexture("/Textures/Interface/Nano/button.svg.96dpi.png"); + + MouseFilter = MouseFilterMode.Stop; + + _alarmControlAnimation = new Animation + { + Length = TimeSpan.FromSeconds(1), + AnimationTracks = + { + new AnimationTrackControlProperty + { + Property = nameof(Control.Visible), + KeyFrames = + { + new AnimationTrackProperty.KeyFrame(true, 0), + new AnimationTrackProperty.KeyFrame(false, 0.75f), + } + } + } + }; + + var back = new StyleBoxTexture + { + Texture = panelTex, + Modulate = Color.FromHex("#25252A"), + }; + back.SetPatchMargin(StyleBox.Margin.All, 10); + + var back2 = new StyleBoxTexture(back) + { + Modulate = Color.FromHex("#202023") + }; + + AddChild(new PanelContainer + { + PanelOverride = back, + MouseFilter = MouseFilterMode.Pass + }); + + _stateSpinBox = new SpinBox + { + Value = 0, + }; + _stateSpinBox.IsValid = StrengthSpinBoxValid; + _stateSpinBox.InitDefaultButtons(); + _stateSpinBox.ValueChanged += PowerStateChanged; + _stateSpinBox.LineEditDisabled = true; + + _offButton = new Button + { + ToggleMode = false, + Text = "Off", + StyleClasses = {StyleBase.ButtonOpenRight}, + }; + _offButton.OnPressed += args => owner.SendEnableMessage(false); + + _onButton = new Button + { + ToggleMode = false, + Text = "On", + StyleClasses = {StyleBase.ButtonOpenLeft}, + }; + _onButton.OnPressed += args => owner.SendEnableMessage(true); + + var closeButton = new TextureButton + { + StyleClasses = {"windowCloseButton"}, + SizeFlagsHorizontal = SizeFlags.ShrinkEnd + }; + closeButton.OnPressed += args => Close(); + + var serviceManual = new Label + { + SizeFlagsHorizontal = SizeFlags.ShrinkCenter, + StyleClasses = {StyleBase.StyleClassLabelSubText}, + Text = Loc.GetString("Refer to p.132 of service manual") + }; + _drawLabel = new Label(); + var imgSize = new Vector2(32, 32); + AddChild(new VBoxContainer + { + Children = + { + new MarginContainer + { + MarginLeftOverride = 2, + MarginTopOverride = 2, + Children = + { + new Label + { + Text = Loc.GetString("Mark 2 Particle Accelerator"), + FontOverride = font, + FontColorOverride = StyleNano.NanoGold, + }, + new MarginContainer + { + MarginRightOverride = 8, + Children = + { + closeButton + } + } + } + }, + new PanelContainer + { + PanelOverride = new StyleBoxFlat {BackgroundColor = StyleNano.NanoGold}, + CustomMinimumSize = (0, 2), + }, + new Control + { + CustomMinimumSize = (0, 4) + }, + + new HBoxContainer + { + SizeFlagsVertical = SizeFlags.FillExpand, + Children = + { + new MarginContainer + { + MarginLeftOverride = 4, + Children = + { + new VBoxContainer + { + SizeFlagsHorizontal = SizeFlags.FillExpand, + Children = + { + new HBoxContainer + { + Children = + { + new Label + { + Text = Loc.GetString("Power: "), + SizeFlagsHorizontal = SizeFlags.Expand + }, + _offButton, + _onButton + } + }, + new HBoxContainer + { + Children = + { + new Label + { + Text = Loc.GetString("Strength: "), + SizeFlagsHorizontal = SizeFlags.Expand + }, + _stateSpinBox + } + }, + new Control + { + CustomMinimumSize = (0, 10), + }, + _drawLabel, + new Control + { + SizeFlagsVertical = SizeFlags.Expand + }, + (_alarmControl = new VBoxContainer + { + Children = + { + new Label + { + Text = Loc.GetString("PARTICLE STRENGTH\nLIMITER FAILURE"), + FontColorOverride = Color.Red, + Align = Label.AlignMode.Center + }, + serviceManual + } + }), + } + } + } + }, + new VBoxContainer + { + SizeFlagsHorizontal = SizeFlags.FillExpand, + Children = + { + (_statusLabel = new Label + { + SizeFlagsHorizontal = SizeFlags.ShrinkCenter + }), + new Control + { + CustomMinimumSize = (0, 20) + }, + new PanelContainer + { + SizeFlagsHorizontal = SizeFlags.ShrinkCenter, + PanelOverride = back2, + Children = + { + new GridContainer + { + Columns = 3, + VSeparationOverride = 0, + HSeparationOverride = 0, + Children = + { + new Control {CustomMinimumSize = imgSize}, + (_endCapTexture = Segment("end_cap")), + new Control {CustomMinimumSize = imgSize}, + (_controlBoxTexture = Segment("control_box")), + (_fuelChamberTexture = Segment("fuel_chamber")), + new Control {CustomMinimumSize = imgSize}, + new Control {CustomMinimumSize = imgSize}, + (_powerBoxTexture = Segment("power_box")), + new Control {CustomMinimumSize = imgSize}, + (_emitterLeftTexture = Segment("emitter_left")), + (_emitterCenterTexture = Segment("emitter_center")), + (_emitterRightTexture = Segment("emitter_right")), + } + } + } + }, + (_scanButton = new Button + { + Text = Loc.GetString("Scan Parts"), + SizeFlagsHorizontal = SizeFlags.ShrinkCenter + }) + } + } + } + }, + new StripeBack + { + Children = + { + new MarginContainer + { + MarginLeftOverride = 4, + MarginTopOverride = 4, + MarginBottomOverride = 4, + Children = + { + new Label + { + Text = Loc.GetString("Ensure containment field is active before operation"), + SizeFlagsHorizontal = SizeFlags.ShrinkCenter, + StyleClasses = {StyleBase.StyleClassLabelSubText}, + } + } + } + } + }, + new MarginContainer + { + MarginLeftOverride = 12, + Children = + { + new HBoxContainer + { + Children = + { + new Label + { + Text = "FOO-BAR-BAZ", + StyleClasses = {StyleBase.StyleClassLabelSubText} + } + } + } + } + }, + } + }); + + _scanButton.OnPressed += args => Owner.SendScanPartsMessage(); + + _alarmControl.AnimationCompleted += s => + { + if (_shouldContinueAnimating) + { + _alarmControl.PlayAnimation(_alarmControlAnimation, "warningAnim"); + } + else + { + _alarmControl.Visible = false; + } + }; + + PASegmentControl Segment(string name) + { + return new PASegmentControl(this, resourceCache, name); + } + } + + private bool StrengthSpinBoxValid(int n) + { + return (n >= 0 && n <= 4 && !_blockSpinBox); + } + + private void PowerStateChanged(object sender, ValueChangedEventArgs e) + { + ParticleAcceleratorPowerState newState; + switch (e.Value) + { + case 0: + newState = ParticleAcceleratorPowerState.Standby; + break; + case 1: + newState = ParticleAcceleratorPowerState.Level0; + break; + case 2: + newState = ParticleAcceleratorPowerState.Level1; + break; + case 3: + newState = ParticleAcceleratorPowerState.Level2; + break; + case 4: + newState = ParticleAcceleratorPowerState.Level3; + break; + default: + return; + } + + Owner.SendPowerStateMessage(newState); + } + + protected override DragMode GetDragModeFor(Vector2 relativeMousePos) + { + return DragMode.Move; + } + + protected override Vector2 CalculateMinimumSize() + { + return (400, 300); + } + + public void DataUpdate(ParticleAcceleratorUIState uiState) + { + _assembled = uiState.Assembled; + UpdateUI(uiState.Assembled, uiState.InterfaceBlock, uiState.Enabled, + uiState.WirePowerBlock); + _statusLabel.Text = Loc.GetString($"Status: {(uiState.Assembled ? "Operational" : "Incomplete")}"); + UpdatePowerState(uiState.State, uiState.Enabled, uiState.Assembled, + uiState.MaxLevel); + UpdatePreview(uiState); + _lastDraw = uiState.PowerDraw; + _lastReceive = uiState.PowerReceive; + } + + private void UpdatePowerState(ParticleAcceleratorPowerState state, bool enabled, bool assembled, + ParticleAcceleratorPowerState maxState) + { + _stateSpinBox.OverrideValue(state switch + { + ParticleAcceleratorPowerState.Standby => 0, + ParticleAcceleratorPowerState.Level0 => 1, + ParticleAcceleratorPowerState.Level1 => 2, + ParticleAcceleratorPowerState.Level2 => 3, + ParticleAcceleratorPowerState.Level3 => 4, + _ => 0 + }); + + + _shouldContinueAnimating = false; + _alarmControl.StopAnimation("warningAnim"); + _alarmControl.Visible = false; + if (maxState == ParticleAcceleratorPowerState.Level3 && enabled == true && assembled == true) + { + _shouldContinueAnimating = true; + _alarmControl.PlayAnimation(_alarmControlAnimation, "warningAnim"); + } + } + + private void UpdateUI(bool assembled, bool blocked, bool enabled, bool powerBlock) + { + _onButton.Pressed = enabled; + _offButton.Pressed = !enabled; + + var cantUse = !assembled || blocked || powerBlock; + _onButton.Disabled = cantUse; + _offButton.Disabled = cantUse; + _scanButton.Disabled = blocked; + + var cantChangeLevel = !assembled || blocked; + _stateSpinBox.SetButtonDisabled(cantChangeLevel); + _blockSpinBox = cantChangeLevel; + } + + private void UpdatePreview(ParticleAcceleratorUIState updateMessage) + { + _endCapTexture.SetPowerState(updateMessage, updateMessage.EndCapExists); + _fuelChamberTexture.SetPowerState(updateMessage, updateMessage.FuelChamberExists); + _controlBoxTexture.SetPowerState(updateMessage, true); + _powerBoxTexture.SetPowerState(updateMessage, updateMessage.PowerBoxExists); + _emitterCenterTexture.SetPowerState(updateMessage, updateMessage.EmitterCenterExists); + _emitterLeftTexture.SetPowerState(updateMessage, updateMessage.EmitterLeftExists); + _emitterRightTexture.SetPowerState(updateMessage, updateMessage.EmitterRightExists); + } + + protected override void FrameUpdate(FrameEventArgs args) + { + base.FrameUpdate(args); + + if (!_assembled) + { + _drawLabel.Text = Loc.GetString("Draw: N/A"); + return; + } + + _time += args.DeltaSeconds; + + var watts = 0; + if (_lastDraw != 0) + { + var val = _drawNoiseGenerator.GetNoise(_time); + watts = (int) (_lastDraw + val * 5); + } + + _drawLabel.Text = Loc.GetString("Draw: {0:##,##0}/{1:##,##0} W", watts, _lastReceive); + } + + private sealed class PASegmentControl : Control + { + private readonly ParticleAcceleratorControlMenu _menu; + private readonly string _baseState; + private readonly TextureRect _base; + private readonly TextureRect _unlit; + private readonly RSI _rsi; + + public PASegmentControl(ParticleAcceleratorControlMenu menu, IResourceCache cache, string name) + { + _menu = menu; + _baseState = name; + _rsi = cache.GetResource($"/Textures/Constructible/Power/PA/{name}.rsi").RSI; + + AddChild(_base = new TextureRect {Texture = _rsi[$"{name}c"].Frame0}); + AddChild(_unlit = new TextureRect()); + } + + public void SetPowerState(ParticleAcceleratorUIState state, bool exists) + { + _base.ShaderOverride = exists ? null : _menu._greyScaleShader; + _base.ModulateSelfOverride = exists ? (Color?)null : new Color(127, 127, 127); + + if (!state.Enabled || !exists) + { + _unlit.Visible = false; + return; + } + + _unlit.Visible = true; + + var suffix = state.State switch + { + ParticleAcceleratorPowerState.Standby => "_unlitp", + ParticleAcceleratorPowerState.Level0 => "_unlitp0", + ParticleAcceleratorPowerState.Level1 => "_unlitp1", + ParticleAcceleratorPowerState.Level2 => "_unlitp2", + ParticleAcceleratorPowerState.Level3 => "_unlitp3", + _ => "" + }; + + if (!_rsi.TryGetState(_baseState + suffix, out var rState)) + { + _unlit.Visible = false; + return; + } + + _unlit.Texture = rState.Frame0; + } + + protected override Vector2 CalculateMinimumSize() + { + return _rsi.Size; + } + } + } +} diff --git a/Content.IntegrationTests/ContentIntegrationTest.cs b/Content.IntegrationTests/ContentIntegrationTest.cs index e73a3247ca..3db9c53884 100644 --- a/Content.IntegrationTests/ContentIntegrationTest.cs +++ b/Content.IntegrationTests/ContentIntegrationTest.cs @@ -127,19 +127,26 @@ namespace Content.IntegrationTests return grid; } - protected async Task WaitUntil(IntegrationInstance instance, Func func, int tickStep = 10, int maxTicks = 600) + protected async Task WaitUntil(IntegrationInstance instance, Func func, int maxTicks = 600, int tickStep = 1) { var ticksAwaited = 0; bool passed; + await instance.WaitIdleAsync(); + while (!(passed = func()) && ticksAwaited < maxTicks) { - await instance.WaitIdleAsync(); - instance.RunTicks(tickStep); - ticksAwaited += tickStep; - } + var ticksToRun = tickStep; - await instance.WaitIdleAsync(); + if (ticksAwaited + tickStep > maxTicks) + { + ticksToRun = maxTicks - ticksAwaited; + } + + await instance.WaitRunTicks(ticksToRun); + + ticksAwaited += ticksToRun; + } Assert.That(passed); } diff --git a/Content.IntegrationTests/Tests/Body/LungTest.cs b/Content.IntegrationTests/Tests/Body/LungTest.cs index 58becef26d..30c181e189 100644 --- a/Content.IntegrationTests/Tests/Body/LungTest.cs +++ b/Content.IntegrationTests/Tests/Body/LungTest.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Content.Server.Atmos; @@ -46,7 +47,7 @@ namespace Content.IntegrationTests.Tests.Body var originalOxygen = 2; var originalNitrogen = 8; - var breathedPercentage = Atmospherics.BreathPercentage; + var breathedPercentage = Atmospherics.BreathVolume / gas.Volume; gas.AdjustMoles(Gas.Oxygen, originalOxygen); gas.AdjustMoles(Gas.Nitrogen, originalNitrogen); @@ -76,7 +77,7 @@ namespace Content.IntegrationTests.Tests.Body lung.Exhale(1, gas); var lungOxygenAfterExhale = lung.Air.GetMoles(Gas.Oxygen); - var exhaledOxygen = lungOxygenBeforeExhale - lungOxygenAfterExhale; + var exhaledOxygen = Math.Abs(lungOxygenBeforeExhale - lungOxygenAfterExhale); // Not completely empty Assert.Positive(lung.Air.Gases.Sum()); diff --git a/Content.IntegrationTests/Tests/BuckleTest.cs b/Content.IntegrationTests/Tests/Buckle/BuckleTest.cs similarity index 75% rename from Content.IntegrationTests/Tests/BuckleTest.cs rename to Content.IntegrationTests/Tests/Buckle/BuckleTest.cs index c0c4bdda78..6e781970bd 100644 --- a/Content.IntegrationTests/Tests/BuckleTest.cs +++ b/Content.IntegrationTests/Tests/Buckle/BuckleTest.cs @@ -14,7 +14,7 @@ using Robust.Shared.Interfaces.Map; using Robust.Shared.IoC; using Robust.Shared.Map; -namespace Content.IntegrationTests.Tests +namespace Content.IntegrationTests.Tests.Buckle { [TestFixture] [TestOf(typeof(BuckleComponent))] @@ -22,7 +22,7 @@ namespace Content.IntegrationTests.Tests public class BuckleTest : ContentIntegrationTest { [Test] - public async Task Test() + public async Task BuckleUnbuckleCooldownRangeTest() { var server = StartServerDummyTicker(); @@ -31,7 +31,7 @@ namespace Content.IntegrationTests.Tests BuckleComponent buckle = null; StrapComponent strap = null; - server.Assert(() => + await server.WaitAssertion(() => { var mapManager = IoCManager.Resolve(); @@ -82,9 +82,9 @@ namespace Content.IntegrationTests.Tests }); // Wait enough ticks for the unbuckling cooldown to run out - server.RunTicks(60); + await server.WaitRunTicks(60); - server.Assert(() => + await server.WaitAssertion(() => { // Still buckled Assert.True(buckle.Buckled); @@ -115,9 +115,9 @@ namespace Content.IntegrationTests.Tests }); // Wait enough ticks for the unbuckling cooldown to run out - server.RunTicks(60); + await server.WaitRunTicks(60); - server.Assert(() => + await server.WaitAssertion(() => { // Still buckled Assert.True(buckle.Buckled); @@ -159,17 +159,15 @@ namespace Content.IntegrationTests.Tests human.Transform.WorldPosition += (1, 0); }); - server.RunTicks(1); + await server.WaitRunTicks(1); - server.Assert(() => + await server.WaitAssertion(() => { // No longer buckled Assert.False(buckle.Buckled); Assert.Null(buckle.BuckledTo); Assert.IsEmpty(strap.BuckledEntities); }); - - await server.WaitIdleAsync(); } [Test] @@ -177,14 +175,13 @@ namespace Content.IntegrationTests.Tests { var server = StartServer(); - IEntity human = null; - IEntity chair = null; + IEntity human; + IEntity chair; BuckleComponent buckle = null; - StrapComponent strap = null; HandsComponent hands = null; IBody body = null; - server.Assert(() => + await server.WaitAssertion(() => { var mapManager = IoCManager.Resolve(); @@ -206,7 +203,7 @@ namespace Content.IntegrationTests.Tests // Component sanity check Assert.True(human.TryGetComponent(out buckle)); - Assert.True(chair.TryGetComponent(out strap)); + Assert.True(chair.HasComponent()); Assert.True(human.TryGetComponent(out hands)); Assert.True(human.TryGetComponent(out body)); @@ -226,9 +223,9 @@ namespace Content.IntegrationTests.Tests } }); - server.RunTicks(10); + await server.WaitRunTicks(10); - server.Assert(() => + await server.WaitAssertion(() => { // Still buckled Assert.True(buckle.Buckled); @@ -248,9 +245,9 @@ namespace Content.IntegrationTests.Tests } }); - server.RunTicks(10); + await server.WaitRunTicks(10); - server.Assert(() => + await server.WaitAssertion(() => { // Still buckled Assert.True(buckle.Buckled); @@ -261,8 +258,73 @@ namespace Content.IntegrationTests.Tests Assert.Null(hands.GetItem(slot)); } }); + } - await server.WaitIdleAsync(); + [Test] + public async Task ForceUnbuckleBuckleTest() + { + var server = StartServer(); + + IEntity human = null; + IEntity chair = null; + BuckleComponent buckle = null; + + await server.WaitAssertion(() => + { + var mapManager = IoCManager.Resolve(); + + var mapId = new MapId(1); + mapManager.CreateNewMapEntity(mapId); + + var entityManager = IoCManager.Resolve(); + var gridId = new GridId(1); + var grid = mapManager.CreateGrid(mapId, gridId); + var coordinates = grid.GridEntityId.ToCoordinates(); + var tileManager = IoCManager.Resolve(); + var tileId = tileManager["underplating"].TileId; + var tile = new Tile(tileId); + + grid.SetTile(coordinates, tile); + + human = entityManager.SpawnEntity("HumanMob_Content", coordinates); + chair = entityManager.SpawnEntity("ChairWood", coordinates); + + // Component sanity check + Assert.True(human.TryGetComponent(out buckle)); + Assert.True(chair.HasComponent()); + + // Buckle + Assert.True(buckle.TryBuckle(human, chair)); + Assert.NotNull(buckle.BuckledTo); + Assert.True(buckle.Buckled); + + // Move the buckled entity away + human.Transform.LocalPosition += (100, 0); + }); + + await WaitUntil(server, () => !buckle.Buckled, maxTicks: 10); + + Assert.False(buckle.Buckled); + + await server.WaitAssertion(() => + { + // Move the now unbuckled entity back onto the chair + human.Transform.LocalPosition -= (100, 0); + + // Buckle + Assert.True(buckle.TryBuckle(human, chair)); + Assert.NotNull(buckle.BuckledTo); + Assert.True(buckle.Buckled); + }); + + await server.WaitRunTicks(60); + + await server.WaitAssertion(() => + { + // Still buckled + Assert.NotNull(buckle.BuckledTo); + Assert.True(buckle.Buckled); + }); } } } diff --git a/Content.IntegrationTests/Tests/Commands/RejuvenateTest.cs b/Content.IntegrationTests/Tests/Commands/RejuvenateTest.cs new file mode 100644 index 0000000000..f3f4867e1b --- /dev/null +++ b/Content.IntegrationTests/Tests/Commands/RejuvenateTest.cs @@ -0,0 +1,51 @@ +using System.Threading.Tasks; +using Content.Server.GlobalVerbs; +using Content.Shared.Damage; +using Content.Shared.GameObjects.Components.Damage; +using NUnit.Framework; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Interfaces.Map; +using Robust.Shared.IoC; +using Robust.Shared.Map; + +namespace Content.IntegrationTests.Tests.Commands +{ + [TestFixture] + [TestOf(typeof(RejuvenateVerb))] + public class RejuvenateTest : ContentIntegrationTest + { + [Test] + public async Task RejuvenateDeadTest() + { + var server = StartServerDummyTicker(); + + await server.WaitAssertion(() => + { + var mapManager = IoCManager.Resolve(); + + mapManager.CreateNewMapEntity(MapId.Nullspace); + + var entityManager = IoCManager.Resolve(); + + var human = entityManager.SpawnEntity("HumanMob_Content", MapCoordinates.Nullspace); + + // Sanity check + Assert.True(human.TryGetComponent(out IDamageableComponent damageable)); + Assert.That(damageable.CurrentState, Is.EqualTo(DamageState.Alive)); + + // Kill the entity + damageable.ChangeDamage(DamageClass.Brute, 10000000, true); + + // Check that it is dead + Assert.That(damageable.CurrentState, Is.EqualTo(DamageState.Dead)); + + // Rejuvenate them + RejuvenateVerb.PerformRejuvenate(human); + + // Check that it is alive and with no damage + Assert.That(damageable.CurrentState, Is.EqualTo(DamageState.Alive)); + Assert.That(damageable.TotalDamage, Is.Zero); + }); + } + } +} diff --git a/Content.IntegrationTests/Tests/Gravity/WeightlessStatusTests.cs b/Content.IntegrationTests/Tests/Gravity/WeightlessStatusTests.cs new file mode 100644 index 0000000000..3e128bceee --- /dev/null +++ b/Content.IntegrationTests/Tests/Gravity/WeightlessStatusTests.cs @@ -0,0 +1,96 @@ +using System.Threading.Tasks; +using Content.Server.GameObjects.Components.Gravity; +using Content.Server.GameObjects.EntitySystems; +using Content.Shared.GameObjects.Components.Gravity; +using Content.Shared.GameObjects.Components.Mobs; +using Content.Shared.GameObjects.EntitySystems; +using Content.Shared.Utility; +using NUnit.Framework; +using Robust.Server.Interfaces.Timing; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Interfaces.Map; +using Robust.Shared.Map; + +namespace Content.IntegrationTests.Tests.Gravity +{ + [TestFixture] + [TestOf(typeof(WeightlessSystem))] + [TestOf(typeof(GravityGeneratorComponent))] + public class WeightlessStatusTests : ContentIntegrationTest + { + [Test] + public async Task WeightlessStatusTest() + { + var server = StartServer(); + + await server.WaitIdleAsync(); + + var mapManager = server.ResolveDependency(); + var entityManager = server.ResolveDependency(); + var pauseManager = server.ResolveDependency(); + var tileDefinitionManager = server.ResolveDependency(); + + IEntity human = null; + SharedStatusEffectsComponent statusEffects = null; + + await server.WaitAssertion(() => + { + var mapId = mapManager.CreateMap(); + + pauseManager.AddUninitializedMap(mapId); + + var gridId = new GridId(1); + + if (!mapManager.TryGetGrid(gridId, out var grid)) + { + grid = mapManager.CreateGrid(mapId, gridId); + } + + var tileDefinition = tileDefinitionManager["underplating"]; + var tile = new Tile(tileDefinition.TileId); + var coordinates = grid.ToCoordinates(); + + grid.SetTile(coordinates, tile); + + pauseManager.DoMapInitialize(mapId); + + human = entityManager.SpawnEntity("HumanMob_Content", coordinates); + + Assert.True(human.TryGetComponent(out statusEffects)); + }); + + // Let WeightlessSystem and GravitySystem tick + await server.WaitRunTicks(1); + + GravityGeneratorComponent gravityGenerator = null; + + await server.WaitAssertion(() => + { + // No gravity without a gravity generator + Assert.True(statusEffects.Statuses.ContainsKey(StatusEffect.Weightless)); + + gravityGenerator = human.EnsureComponent(); + }); + + // Let WeightlessSystem and GravitySystem tick + await server.WaitRunTicks(1); + + await server.WaitAssertion(() => + { + Assert.False(statusEffects.Statuses.ContainsKey(StatusEffect.Weightless)); + + // Disable the gravity generator + var args = new BreakageEventArgs {Owner = human}; + gravityGenerator.OnBreak(args); + }); + + await server.WaitRunTicks(1); + + await server.WaitAssertion(() => + { + Assert.False(statusEffects.Statuses.ContainsKey(StatusEffect.Weightless)); + }); + } + } +} diff --git a/Content.IntegrationTests/Tests/PowerTest.cs b/Content.IntegrationTests/Tests/PowerTest.cs index bb355736a0..3367841cc6 100644 --- a/Content.IntegrationTests/Tests/PowerTest.cs +++ b/Content.IntegrationTests/Tests/PowerTest.cs @@ -1,4 +1,5 @@ using System.Threading.Tasks; +using Content.Server.GameObjects.Components; using Content.Server.GameObjects.Components.Power; using Content.Server.GameObjects.Components.Power.ApcNetComponents; using Content.Server.GameObjects.Components.Power.PowerNetComponents; @@ -34,6 +35,11 @@ namespace Content.IntegrationTests.Tests var consumerEnt1 = entityMan.SpawnEntity("DebugConsumer", grid.ToCoordinates(0, 1)); var consumerEnt2 = entityMan.SpawnEntity("DebugConsumer", grid.ToCoordinates(0, 2)); + if (generatorEnt.TryGetComponent(out AnchorableComponent anchorable)) + { + anchorable.TryAnchor(null, force:true); + } + Assert.That(generatorEnt.TryGetComponent(out supplier)); Assert.That(consumerEnt1.TryGetComponent(out consumer1)); Assert.That(consumerEnt2.TryGetComponent(out consumer2)); diff --git a/Content.Server/Atmos/GasMixture.cs b/Content.Server/Atmos/GasMixture.cs index 425c5da204..e9dca425ed 100644 --- a/Content.Server/Atmos/GasMixture.cs +++ b/Content.Server/Atmos/GasMixture.cs @@ -65,6 +65,38 @@ namespace Content.Server.Atmos } } + /// + /// Heat capacity ratio of gas mixture + /// + [ViewVariables] + public float HeatCapacityRatio + { + get + { + var delimiterSum = 0f; + for (var i = 0; i < Atmospherics.TotalNumberOfGases; i++) + { + delimiterSum += _moles[i] / (_atmosphereSystem.GetGas(i).HeatCapacityRatio - 1); + } + return 1 + TotalMoles / delimiterSum; + } + } + + public float MolarMass + { + get + { + var molarMass = 0f; + var totalMoles = TotalMoles; + for (var i = 0; i < Atmospherics.TotalNumberOfGases; i++) + { + molarMass += _atmosphereSystem.GetGas(i).MolarMass * (_moles[i] / totalMoles); + } + + return molarMass; + } + } + [ViewVariables] public float HeatCapacityArchived { @@ -136,14 +168,15 @@ namespace Content.Server.Atmos public GasMixture(AtmosphereSystem? atmosphereSystem) { _atmosphereSystem = atmosphereSystem ?? EntitySystem.Get(); + _moles = new float[_atmosphereSystem.Gases.Count()]; + _molesArchived = new float[_moles.Length]; } - public GasMixture(float volume, AtmosphereSystem? atmosphereSystem = null) + public GasMixture(float volume, AtmosphereSystem? atmosphereSystem = null): this(atmosphereSystem) { if (volume < 0) volume = 0; Volume = volume; - _atmosphereSystem = atmosphereSystem ?? EntitySystem.Get(); } [MethodImpl(MethodImplOptions.AggressiveInlining)] diff --git a/Content.Server/Atmos/HighPressureMovementController.cs b/Content.Server/Atmos/HighPressureMovementController.cs index 4b494495e5..b112e4619e 100644 --- a/Content.Server/Atmos/HighPressureMovementController.cs +++ b/Content.Server/Atmos/HighPressureMovementController.cs @@ -2,6 +2,7 @@ using System; using Content.Server.GameObjects.Components.Atmos; using Content.Shared.Atmos; +using Content.Shared.Physics; using Robust.Shared.GameObjects.Components; using Robust.Shared.Interfaces.Physics; using Robust.Shared.Interfaces.Random; @@ -13,7 +14,7 @@ using Robust.Shared.Random; namespace Content.Server.Atmos { - public class HighPressureMovementController : VirtualController + public class HighPressureMovementController : FrictionController { [Dependency] private IRobustRandom _robustRandom = default!; [Dependency] private IPhysicsManager _physicsManager = default!; @@ -69,17 +70,5 @@ namespace Content.Server.Atmos } } } - - public override void UpdateAfterProcessing() - { - base.UpdateAfterProcessing(); - - if (ControlledComponent != null && !_physicsManager.IsWeightless(ControlledComponent.Owner.Transform.Coordinates)) - { - LinearVelocity *= 0.85f; - if (MathF.Abs(LinearVelocity.Length) < 1f) - Stop(); - } - } } } diff --git a/Content.Server/Atmos/TileAtmosphere.cs b/Content.Server/Atmos/TileAtmosphere.cs index d885790d26..6e5d91e5ec 100644 --- a/Content.Server/Atmos/TileAtmosphere.cs +++ b/Content.Server/Atmos/TileAtmosphere.cs @@ -1127,6 +1127,10 @@ namespace Content.Server.Atmos UpdateVisuals(); + if (!Excited) + { + _gridAtmosphereComponent.AddActiveTile(this); + } return true; } diff --git a/Content.Server/Content.Server.csproj b/Content.Server/Content.Server.csproj index 9eae91acb0..bb3f002598 100644 --- a/Content.Server/Content.Server.csproj +++ b/Content.Server/Content.Server.csproj @@ -10,6 +10,7 @@ true Exe 1998 + CS8604;CS8765 diff --git a/Content.Server/DeviceNetwork/DeviceNetwork.cs b/Content.Server/DeviceNetwork/DeviceNetwork.cs new file mode 100644 index 0000000000..414cbe9cb8 --- /dev/null +++ b/Content.Server/DeviceNetwork/DeviceNetwork.cs @@ -0,0 +1,198 @@ +using Content.Server.Interfaces; +using Robust.Shared.Interfaces.Random; +using Robust.Shared.IoC; +using System.Collections.Generic; + +namespace Content.Server.GameObjects.EntitySystems.DeviceNetwork +{ + public delegate void OnReceiveNetMessage(int frequency, string sender, IReadOnlyDictionary payload, Metadata metadata, bool broadcast); + + public class DeviceNetwork : IDeviceNetwork + { + private const int PACKAGES_PER_TICK = 30; + + private readonly IRobustRandom _random = IoCManager.Resolve(); + private readonly Dictionary> _devices = new Dictionary>(); + private readonly Queue _packages = new Queue(); + + /// + public DeviceNetworkConnection Register(int netId, int frequency, OnReceiveNetMessage messageHandler, bool receiveAll = false) + { + var address = GenerateValidAddress(netId, frequency); + + var device = new NetworkDevice + { + Address = address, + Frequency = frequency, + ReceiveAll = receiveAll, + ReceiveNetMessage = messageHandler + }; + + AddDevice(netId, device); + + return new DeviceNetworkConnection(this, netId, address, frequency); + } + + public DeviceNetworkConnection Register(int netId, OnReceiveNetMessage messageHandler, bool receiveAll = false) + { + return Register(netId, 0, messageHandler, receiveAll); + } + + public void Update() + { + var i = PACKAGES_PER_TICK; + while (_packages.Count > 0 && i > 0) + { + i--; + + var package = _packages.Dequeue(); + + if (package.Broadcast) + { + BroadcastPackage(package); + continue; + } + + SendPackage(package); + } + } + + public bool EnqueuePackage(int netId, int frequency, string address, IReadOnlyDictionary data, string sender, Metadata metadata, bool broadcast = false) + { + if (!_devices.ContainsKey(netId)) + return false; + + var package = new NetworkPackage() + { + NetId = netId, + Frequency = frequency, + Address = address, + Broadcast = broadcast, + Data = data, + Sender = sender, + Metadata = metadata + }; + + _packages.Enqueue(package); + return true; + } + + public void RemoveDevice(int netId, int frequency, string address) + { + var device = DeviceWithAddress(netId, frequency, address); + _devices[netId].Remove(device); + } + + public void SetDeviceReceiveAll(int netId, int frequency, string address, bool receiveAll) + { + var device = DeviceWithAddress(netId, frequency, address); + device.ReceiveAll = receiveAll; + } + + public bool GetDeviceReceiveAll(int netId, int frequency, string address) + { + var device = DeviceWithAddress(netId, frequency, address); + return device.ReceiveAll; + } + + private string GenerateValidAddress(int netId, int frequency) + { + var unique = false; + var devices = DevicesForFrequency(netId, frequency); + var address = ""; + + while (!unique) + { + address = _random.Next().ToString("x"); + unique = !devices.Exists(device => device.Address == address); + } + + return address; + } + + private void AddDevice(int netId, NetworkDevice networkDevice) + { + if(!_devices.ContainsKey(netId)) + _devices[netId] = new List(); + + _devices[netId].Add(networkDevice); + } + + private List DevicesForFrequency(int netId, int frequency) + { + if (!_devices.ContainsKey(netId)) + return new List(); + + var result = _devices[netId].FindAll(device => device.Frequency == frequency); + + return result; + } + + private NetworkDevice DeviceWithAddress(int netId, int frequency, string address) + { + var devices = DevicesForFrequency(netId, frequency); + + var device = devices.Find(device => device.Address == address); + + return device; + } + + private List DevicesWithReceiveAll(int netId, int frequency) + { + if (!_devices.ContainsKey(netId)) + return new List(); + + var result = _devices[netId].FindAll(device => device.Frequency == frequency && device.ReceiveAll); + + return result; + } + + private void BroadcastPackage(NetworkPackage package) + { + var devices = DevicesForFrequency(package.NetId, package.Frequency); + SendToDevices(devices, package, true); + } + + private void SendPackage(NetworkPackage package) + { + var devices = DevicesWithReceiveAll(package.NetId, package.Frequency); + var device = DeviceWithAddress(package.NetId, package.Frequency, package.Address); + + devices.Add(device); + + SendToDevices(devices, package, false); + } + + private void SendToDevices(List devices, NetworkPackage package, bool broadcast) + { + for (var index = 0; index < devices.Count; index++) + { + var device = devices[index]; + if (device.Address == package.Sender) + continue; + + device.ReceiveNetMessage(package.Frequency, package.Sender, package.Data, package.Metadata, broadcast); + } + } + + internal class NetworkDevice + { + public int Frequency; + public string Address; + public OnReceiveNetMessage ReceiveNetMessage; + public bool ReceiveAll; + } + + internal class NetworkPackage + { + public int NetId; + public int Frequency; + public string Address; + public bool Broadcast; + public IReadOnlyDictionary Data { get; set; } + public Metadata Metadata; + public string Sender; + + } + } +} diff --git a/Content.Server/DeviceNetwork/DeviceNetworkConnection.cs b/Content.Server/DeviceNetwork/DeviceNetworkConnection.cs new file mode 100644 index 0000000000..204f00edf6 --- /dev/null +++ b/Content.Server/DeviceNetwork/DeviceNetworkConnection.cs @@ -0,0 +1,72 @@ +using Content.Server.Interfaces; +using Robust.Shared.ViewVariables; +using System.Collections.Generic; + +namespace Content.Server.GameObjects.EntitySystems.DeviceNetwork +{ + public class DeviceNetworkConnection : IDeviceNetworkConnection + { + private readonly DeviceNetwork _network; + [ViewVariables] + private readonly int _netId; + + [ViewVariables] + public bool Open { get; internal set; } + [ViewVariables] + public string Address { get; internal set; } + [ViewVariables] + public int Frequency { get; internal set; } + + [ViewVariables] + public bool RecieveAll + { + get => _network.GetDeviceReceiveAll(_netId, Frequency, Address); + set => _network.SetDeviceReceiveAll(_netId, Frequency, Address, value); + } + + public DeviceNetworkConnection(DeviceNetwork network, int netId, string address, int frequency) + { + _network = network; + _netId = netId; + Open = true; + Address = address; + Frequency = frequency; + } + + public bool Send(int frequency, string address, IReadOnlyDictionary payload, Metadata metadata) + { + return Open && _network.EnqueuePackage(_netId, frequency, address, payload, Address, metadata); + } + + public bool Send(int frequency, string address, Dictionary payload) + { + return Send(frequency, address, payload); + } + + public bool Send(string address, Dictionary payload) + { + return Send(0, address, payload); + } + + public bool Broadcast(int frequency, IReadOnlyDictionary payload, Metadata metadata) + { + return Open && _network.EnqueuePackage(_netId, frequency, "", payload, Address, metadata, true); + } + + public bool Broadcast(int frequency, Dictionary payload) + { + return Broadcast(frequency, payload); + } + + public bool Broadcast(Dictionary payload) + { + return Broadcast(0, payload); + } + + public void Close() + { + _network.RemoveDevice(_netId, Frequency, Address); + Open = false; + } + } +} diff --git a/Content.Server/DeviceNetwork/Metadata.cs b/Content.Server/DeviceNetwork/Metadata.cs new file mode 100644 index 0000000000..1066676523 --- /dev/null +++ b/Content.Server/DeviceNetwork/Metadata.cs @@ -0,0 +1,20 @@ +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; + +namespace Content.Server.GameObjects.EntitySystems.DeviceNetwork +{ + public class Metadata : Dictionary + { + public bool TryParseMetadata(string key, [NotNullWhen(true)] out T data) + { + if(TryGetValue(key, out var value) && value is T typedValue) + { + data = typedValue; + return true; + } + + data = default; + return false; + } + } +} diff --git a/Content.Server/DeviceNetwork/NetworkConnections/BaseNetworkConnection.cs b/Content.Server/DeviceNetwork/NetworkConnections/BaseNetworkConnection.cs new file mode 100644 index 0000000000..9706bb36b9 --- /dev/null +++ b/Content.Server/DeviceNetwork/NetworkConnections/BaseNetworkConnection.cs @@ -0,0 +1,70 @@ +using Content.Server.Interfaces; +using Robust.Shared.IoC; +using Robust.Shared.ViewVariables; +using System.Collections.Generic; + +namespace Content.Server.GameObjects.EntitySystems.DeviceNetwork +{ + public abstract class BaseNetworkConnection : IDeviceNetworkConnection + { + protected readonly DeviceNetworkConnection Connection; + + protected OnReceiveNetMessage MessageHandler; + + [ViewVariables] + public bool Open => Connection.Open; + [ViewVariables] + public string Address => Connection.Address; + [ViewVariables] + public int Frequency => Connection.Frequency; + + protected BaseNetworkConnection(int netId, int frequency, OnReceiveNetMessage onReceive, bool receiveAll) + { + var network = IoCManager.Resolve(); + Connection = network.Register(netId, frequency, OnReceiveNetMessage, receiveAll); + MessageHandler = onReceive; + + } + + public bool Send(int frequency, string address, Dictionary payload) + { + var data = ManipulatePayload(payload); + var metadata = GetMetadata(); + return Connection.Send(frequency, address, data, metadata); + } + + public bool Send(string address, Dictionary payload) + { + return Send(0, address, payload); + } + + public bool Broadcast(int frequency, Dictionary payload) + { + var data = ManipulatePayload(payload); + var metadata = GetMetadata(); + return Connection.Broadcast(frequency, data, metadata); + } + + public bool Broadcast(Dictionary payload) + { + return Broadcast(0, payload); + } + + public void Close() + { + Connection.Close(); + } + + private void OnReceiveNetMessage(int frequency, string sender, IReadOnlyDictionary payload, Metadata metadata, bool broadcast) + { + if (CanReceive(frequency, sender, payload, metadata, broadcast)) + { + MessageHandler(frequency, sender, payload, metadata, broadcast); + } + } + + protected abstract bool CanReceive(int frequency, string sender, IReadOnlyDictionary payload, Metadata metadata, bool broadcast); + protected abstract Dictionary ManipulatePayload(Dictionary payload); + protected abstract Metadata GetMetadata(); + } +} diff --git a/Content.Server/DeviceNetwork/NetworkConnections/WiredNetworkConnection.cs b/Content.Server/DeviceNetwork/NetworkConnections/WiredNetworkConnection.cs new file mode 100644 index 0000000000..d11e230059 --- /dev/null +++ b/Content.Server/DeviceNetwork/NetworkConnections/WiredNetworkConnection.cs @@ -0,0 +1,84 @@ +using Content.Server.GameObjects.Components.NodeContainer; +using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; +using Content.Server.GameObjects.Components.Power.ApcNetComponents; +using Robust.Shared.Interfaces.GameObjects; +using System.Collections.Generic; + +namespace Content.Server.GameObjects.EntitySystems.DeviceNetwork +{ + public class WiredNetworkConnection : BaseNetworkConnection + { + public const string WIRENET = "powernet"; + + private readonly IEntity _owner; + + public WiredNetworkConnection(OnReceiveNetMessage onReceive, bool receiveAll, IEntity owner) : base(NetworkUtils.WIRED, 0, onReceive, receiveAll) + { + _owner = owner; + } + + protected override bool CanReceive(int frequency, string sender, IReadOnlyDictionary payload, Metadata metadata, bool broadcast) + { + if (_owner.Deleted) + { + Connection.Close(); + return false; + } + + if (_owner.TryGetComponent(out var powerReceiver) + && TryGetWireNet(powerReceiver, out var ownNet) + && metadata.TryParseMetadata(WIRENET, out var senderNet)) + { + return ownNet.Equals(senderNet); + } + + return false; + } + + protected override Metadata GetMetadata() + { + if (_owner.Deleted) + { + Connection.Close(); + return new Metadata(); + } + + if (_owner.TryGetComponent(out var powerReceiver) + && TryGetWireNet(powerReceiver, out var net)) + { + var metadata = new Metadata + { + {WIRENET, net } + }; + + return metadata; + } + + return new Metadata(); + } + + protected override Dictionary ManipulatePayload(Dictionary payload) + { + return payload; + } + + private bool TryGetWireNet(PowerReceiverComponent powerReceiver, out INodeGroup net) + { + if (powerReceiver.Provider is PowerProviderComponent && powerReceiver.Provider.ProviderOwner.TryGetComponent(out var nodeContainer)) + { + var nodes = nodeContainer.Nodes; + for (var index = 0; index < nodes.Count; index++) + { + if (nodes[index].NodeGroupID == NodeGroupID.WireNet) + { + net = nodes[index].NodeGroup; + return true; + } + } + + } + net = default; + return false; + } + } +} diff --git a/Content.Server/DeviceNetwork/NetworkConnections/WirelessNetworkConnection.cs b/Content.Server/DeviceNetwork/NetworkConnections/WirelessNetworkConnection.cs new file mode 100644 index 0000000000..5763ef3d3b --- /dev/null +++ b/Content.Server/DeviceNetwork/NetworkConnections/WirelessNetworkConnection.cs @@ -0,0 +1,63 @@ +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Maths; +using System; +using System.Collections.Generic; + +namespace Content.Server.GameObjects.EntitySystems.DeviceNetwork +{ + public class WirelessNetworkConnection : BaseNetworkConnection + { + public const string WIRELESS_POSITION = "position"; + + private readonly IEntity _owner; + + private float _range; + public float Range { get => _range; set => _range = Math.Abs(value); } + + public WirelessNetworkConnection(int frequency, OnReceiveNetMessage onReceive, bool receiveAll, IEntity owner, float range) : base(NetworkUtils.WIRELESS, frequency, onReceive, receiveAll) + { + _owner = owner; + Range = range; + } + + protected override bool CanReceive(int frequency, string sender, IReadOnlyDictionary payload, Metadata metadata, bool broadcast) + { + if (_owner.Deleted) + { + Connection.Close(); + return false; + } + + if (metadata.TryParseMetadata(WIRELESS_POSITION, out var position)) + { + var ownPosition = _owner.Transform.WorldPosition; + var distance = (ownPosition - position).Length; + return distance <= Range; + } + //Only receive packages with the same frequency + return frequency == Frequency; + } + + protected override Metadata GetMetadata() + { + if (_owner.Deleted) + { + Connection.Close(); + return new Metadata(); + } + + var position = _owner.Transform.WorldPosition; + var metadata = new Metadata + { + {WIRELESS_POSITION, position} + }; + + return metadata; + } + + protected override Dictionary ManipulatePayload(Dictionary payload) + { + return payload; + } + } +} diff --git a/Content.Server/DeviceNetwork/NetworkUtils.cs b/Content.Server/DeviceNetwork/NetworkUtils.cs new file mode 100644 index 0000000000..349d1a6c4d --- /dev/null +++ b/Content.Server/DeviceNetwork/NetworkUtils.cs @@ -0,0 +1,38 @@ +using Content.Server.Interfaces; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Content.Server.GameObjects.EntitySystems.DeviceNetwork +{ + /// + /// A collection of utilities to help with using device networks + /// + public static class NetworkUtils + { + public const int PRIVATE = 0; + public const int WIRED = 1; + public const int WIRELESS = 2; + + public const string COMMAND = "command"; + public const string MESSAGE = "message"; + public const string PING = "ping"; + + /// + /// Handles responding to pings. + /// + public static void PingResponse(T connection, string sender, IReadOnlyDictionary payload, string message = "") where T : IDeviceNetworkConnection + { + if (payload.TryGetValue(COMMAND, out var command) && command == PING) + { + var response = new Dictionary + { + {COMMAND, "ping_response"}, + {MESSAGE, message} + }; + + connection.Send(connection.Frequency, sender, response); + } + } + } +} diff --git a/Content.Server/GameObjects/Components/Arcade/BlockGameArcadeComponent.cs b/Content.Server/GameObjects/Components/Arcade/BlockGameArcadeComponent.cs index 57ad17572c..736442f95a 100644 --- a/Content.Server/GameObjects/Components/Arcade/BlockGameArcadeComponent.cs +++ b/Content.Server/GameObjects/Components/Arcade/BlockGameArcadeComponent.cs @@ -13,6 +13,7 @@ using Robust.Server.GameObjects.Components.UserInterface; using Robust.Server.Interfaces.GameObjects; using Robust.Server.Interfaces.Player; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.ComponentDependencies; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.Random; using Robust.Shared.IoC; @@ -29,10 +30,11 @@ namespace Content.Server.GameObjects.Components.Arcade public override string Name => "BlockGameArcade"; public override uint? NetID => ContentNetIDs.BLOCKGAME_ARCADE; - private bool Powered => !Owner.TryGetComponent(out PowerReceiverComponent? receiver) || receiver.Powered; + [ComponentDependency] private PowerReceiverComponent? _powerReceiverComponent = default!; + private bool Powered => _powerReceiverComponent?.Powered ?? false; private BoundUserInterface? UserInterface => Owner.GetUIOrNull(BlockGameUiKey.Key); - private BlockGame _game = null!; + private BlockGame? _game; private IPlayerSession? _player; private List _spectators = new List(); @@ -47,7 +49,7 @@ namespace Content.Server.GameObjects.Components.Arcade { return; } - if(!ActionBlockerSystem.CanInteract(Owner)) return; + if(!ActionBlockerSystem.CanInteract(actor.playerSession.AttachedEntity)) return; UserInterface?.Toggle(actor.playerSession); RegisterPlayerSession(actor.playerSession); @@ -59,7 +61,7 @@ namespace Content.Server.GameObjects.Components.Arcade else _spectators.Add(session); UpdatePlayerStatus(session); - _game.UpdateNewPlayerUI(session); + _game?.UpdateNewPlayerUI(session); } private void DeactivePlayer(IPlayerSession session) @@ -104,38 +106,56 @@ namespace Content.Server.GameObjects.Components.Arcade { UserInterface.OnReceiveMessage += UserInterfaceOnOnReceiveMessage; } + + if (_powerReceiverComponent != null) + { + _powerReceiverComponent.OnPowerStateChanged += OnPowerStateChanged; + } _game = new BlockGame(this); } + private void OnPowerStateChanged(object? sender, PowerStateEventArgs e) + { + if (e.Powered) return; + + UserInterface?.CloseAll(); + _player = null; + _spectators.Clear(); + } + private void UserInterfaceOnOnReceiveMessage(ServerBoundUserInterfaceMessage obj) { - if (obj.Message is BlockGameMessages.BlockGameUserUnregisterMessage unregisterMessage) + switch (obj.Message) { - UnRegisterPlayerSession(obj.Session); - return; - } - if (obj.Session != _player) return; + case BlockGameMessages.BlockGameUserUnregisterMessage unregisterMessage: + UnRegisterPlayerSession(obj.Session); + break; + case BlockGameMessages.BlockGamePlayerActionMessage playerActionMessage: + if (obj.Session != _player) break; - if (!ActionBlockerSystem.CanInteract(Owner)) - { - DeactivePlayer(obj.Session); - } + if (!ActionBlockerSystem.CanInteract(Owner)) + { + DeactivePlayer(obj.Session); + break; + } - if (!(obj.Message is BlockGameMessages.BlockGamePlayerActionMessage message)) return; - if (message.PlayerAction == BlockGamePlayerAction.NewGame) - { - if(_game.Started) _game = new BlockGame(this); - _game.StartGame(); - } - else - { - _game.ProcessInput(message.PlayerAction); + if (playerActionMessage.PlayerAction == BlockGamePlayerAction.NewGame) + { + if(_game?.Started == true) _game = new BlockGame(this); + _game?.StartGame(); + } + else + { + _game?.ProcessInput(playerActionMessage.PlayerAction); + } + + break; } } public void DoGameTick(float frameTime) { - _game.GameTick(frameTime); + _game?.GameTick(frameTime); } private class BlockGame @@ -196,13 +216,12 @@ namespace Content.Server.GameObjects.Components.Arcade private Vector2i _currentPiecePosition; private BlockGamePieceRotation _currentRotation; - private float _softDropOverride = 0.1f; + private float _softDropModifier = 0.1f; - private float Speed => !_softDropPressed - ? -0.03f * Level + 1 - : _softDropOverride; + private float Speed => + -0.03f * Level + 1 * (!_softDropPressed ? 1 : _softDropModifier); - private float _pressCheckSpeed = 0.08f; + private const float _pressCheckSpeed = 0.08f; private bool _running; public bool Paused => !(_running && _started); @@ -278,7 +297,8 @@ namespace Content.Server.GameObjects.Components.Arcade public BlockGame(BlockGameArcadeComponent component) { _component = component; - _internalNextPiece = BlockGamePiece.GetRandom(_component._random); + _allBlockGamePieces = (BlockGamePieceType[]) Enum.GetValues(typeof(BlockGamePieceType)); + _internalNextPiece = GetRandomBlockGamePiece(_component._random); } private void SendHighscoreUpdate() @@ -343,7 +363,7 @@ namespace Content.Server.GameObjects.Components.Arcade { _accumulatedLeftPressTime += frameTime; - if (_accumulatedLeftPressTime >= _pressCheckSpeed) + while (_accumulatedLeftPressTime >= _pressCheckSpeed) { if (_currentPiece.Positions(_currentPiecePosition.AddToX(-1), _currentRotation) @@ -361,7 +381,7 @@ namespace Content.Server.GameObjects.Components.Arcade { _accumulatedRightPressTime += frameTime; - if (_accumulatedRightPressTime >= _pressCheckSpeed) + while (_accumulatedRightPressTime >= _pressCheckSpeed) { if (_currentPiece.Positions(_currentPiecePosition.AddToX(1), _currentRotation) .All(MoveCheck)) @@ -384,13 +404,14 @@ namespace Content.Server.GameObjects.Components.Arcade var checkTime = Speed; - if (_accumulatedFieldFrameTime < checkTime) return; + while (_accumulatedFieldFrameTime >= checkTime) + { + if (_softDropPressed) AddPoints(1); - if(_softDropPressed) AddPoints(1); + InternalFieldTick(); - InternalFieldTick(); - - _accumulatedFieldFrameTime -= checkTime; + _accumulatedFieldFrameTime -= checkTime; + } } private void InternalFieldTick() @@ -490,7 +511,7 @@ namespace Content.Server.GameObjects.Components.Arcade private void InitializeNewBlock() { InitializeNewBlock(_nextPiece); - _nextPiece = BlockGamePiece.GetRandom(_component._random); + _nextPiece = GetRandomBlockGamePiece(_component._random); _holdBlock = false; _component.UserInterface?.SendMessage(new BlockGameMessages.BlockGameVisualUpdateMessage(_nextPiece.BlocksForPreview(), BlockGameMessages.BlockGameVisualType.NextBlock)); @@ -538,6 +559,7 @@ namespace Content.Server.GameObjects.Components.Arcade break; case BlockGamePlayerAction.SoftdropStart: _softDropPressed = true; + if (_accumulatedFieldFrameTime > Speed) _accumulatedFieldFrameTime = Speed; //to prevent jumps break; case BlockGamePlayerAction.SoftdropEnd: _softDropPressed = false; @@ -707,6 +729,22 @@ namespace Content.Server.GameObjects.Components.Arcade }; } + private readonly BlockGamePieceType[] _allBlockGamePieces; + + private List _blockGamePiecesBuffer = new List(); + + private BlockGamePiece GetRandomBlockGamePiece(IRobustRandom random) + { + if (_blockGamePiecesBuffer.Count == 0) + { + _blockGamePiecesBuffer = _allBlockGamePieces.ToList(); + } + + var chosenPiece = random.Pick(_blockGamePiecesBuffer); + _blockGamePiecesBuffer.Remove(chosenPiece); + return BlockGamePiece.GetPiece(chosenPiece); + } + private struct BlockGamePiece { public Vector2i[] Offsets; @@ -770,13 +808,6 @@ namespace Content.Server.GameObjects.Components.Arcade return Blocks(new Vector2i(-xOffset, -yOffset), BlockGamePieceRotation.North); } - public static BlockGamePiece GetRandom(IRobustRandom random) - { - var pieces = (BlockGamePieceType[])Enum.GetValues(typeof(BlockGamePieceType)); - var choice = random.Pick(pieces); - return GetPiece(choice); - } - public static BlockGamePiece GetPiece(BlockGamePieceType type) { //switch statement, hardcoded offsets diff --git a/Content.Server/GameObjects/Components/Arcade/RandomArcadeGameComponent.cs b/Content.Server/GameObjects/Components/Arcade/RandomArcadeGameComponent.cs new file mode 100644 index 0000000000..84c4b6ccd3 --- /dev/null +++ b/Content.Server/GameObjects/Components/Arcade/RandomArcadeGameComponent.cs @@ -0,0 +1,34 @@ +using System; +using Robust.Server.Interfaces.GameObjects; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Interfaces.Random; +using Robust.Shared.IoC; +using Robust.Shared.Random; +using Robust.Shared.ViewVariables; + +namespace Content.Server.GameObjects.Components.Arcade +{ + [RegisterComponent] + public class RandomArcadeGameComponent : Component, IMapInit + { + public override string Name => "RandomArcade"; + + public void MapInit() + { + var arcades = new[] + { + "BlockGameArcade", + "SpaceVillainArcade" + }; + + var entityManager = IoCManager.Resolve(); + + entityManager.SpawnEntity( + IoCManager.Resolve().Pick(arcades), + Owner.Transform.Coordinates); + + Owner.Delete(); + } + } +} diff --git a/Content.Server/GameObjects/Components/Arcade/SpaceVillainArcadeComponent.cs b/Content.Server/GameObjects/Components/Arcade/SpaceVillainArcadeComponent.cs index 1f4a86d531..2a5a9c878c 100644 --- a/Content.Server/GameObjects/Components/Arcade/SpaceVillainArcadeComponent.cs +++ b/Content.Server/GameObjects/Components/Arcade/SpaceVillainArcadeComponent.cs @@ -5,16 +5,20 @@ using Content.Server.GameObjects.Components.VendingMachines; using Content.Server.Utility; using Content.Shared.GameObjects.Components; using Content.Shared.GameObjects.Components.Arcade; +using Content.Shared.GameObjects.EntitySystems; using Content.Shared.Interfaces.GameObjects.Components; using Robust.Server.GameObjects.Components.UserInterface; using Robust.Server.GameObjects.EntitySystems; using Robust.Server.Interfaces.GameObjects; using Robust.Shared.Audio; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.ComponentDependencies; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.Random; using Robust.Shared.IoC; +using Robust.Shared.Localization; +using Robust.Shared.Maths; using Robust.Shared.Random; using Robust.Shared.Serialization; using Robust.Shared.ViewVariables; @@ -27,7 +31,10 @@ namespace Content.Server.GameObjects.Components.Arcade { [Dependency] private IRobustRandom _random = null!; - private bool Powered => !Owner.TryGetComponent(out PowerReceiverComponent? receiver) || receiver.Powered; + [ComponentDependency] private PowerReceiverComponent? _powerReceiverComponent = default!; + [ComponentDependency] private WiresComponent? _wiresComponent = default!; + + private bool Powered => _powerReceiverComponent != null && _powerReceiverComponent.Powered; [ViewVariables] private BoundUserInterface? UserInterface => Owner.GetUIOrNull(SpaceVillainArcadeUiKey.Key); [ViewVariables] private bool _overflowFlag; @@ -73,11 +80,11 @@ namespace Content.Server.GameObjects.Components.Arcade { return; } + if(!ActionBlockerSystem.CanInteract(actor.playerSession.AttachedEntity)) return; - var wires = Owner.GetComponent(); - if (wires.IsPanelOpen) + if (_wiresComponent?.IsPanelOpen == true) { - wires.OpenInterface(actor.playerSession); + _wiresComponent.OpenInterface(actor.playerSession); } else { UserInterface?.Toggle(actor.playerSession); @@ -92,6 +99,18 @@ namespace Content.Server.GameObjects.Components.Arcade { UserInterface.OnReceiveMessage += UserInterfaceOnOnReceiveMessage; } + + if (_powerReceiverComponent != null) + { + _powerReceiverComponent.OnPowerStateChanged += OnOnPowerStateChanged; + } + } + + private void OnOnPowerStateChanged(object? sender, PowerStateEventArgs e) + { + if(e.Powered) return; + + UserInterface?.CloseAll(); } @@ -145,6 +164,10 @@ namespace Content.Server.GameObjects.Components.Arcade builder.CreateWire(Wires.Overflow); builder.CreateWire(Wires.PlayerInvincible); builder.CreateWire(Wires.EnemyInvincible); + builder.CreateWire(4); + builder.CreateWire(5); + builder.CreateWire(6); + IndicatorUpdate(); } public void WiresUpdate(WiresUpdateEventArgs args) @@ -163,6 +186,24 @@ namespace Content.Server.GameObjects.Components.Arcade _enemyInvincibilityFlag = value; break; } + + IndicatorUpdate(); + } + + public void IndicatorUpdate() + { + _wiresComponent?.SetStatus(Indicators.HealthManager, + new SharedWiresComponent.StatusLightData(Color.Purple, + _playerInvincibilityFlag || _enemyInvincibilityFlag + ? SharedWiresComponent.StatusLightState.BlinkingSlow + : SharedWiresComponent.StatusLightState.On, + "MNGR")); + _wiresComponent?.SetStatus(Indicators.HealthLimiter, + new SharedWiresComponent.StatusLightData(Color.Red, + _overflowFlag + ? SharedWiresComponent.StatusLightState.BlinkingSlow + : SharedWiresComponent.StatusLightState.On, + "LIMT")); } /// @@ -257,7 +298,7 @@ namespace Content.Server.GameObjects.Components.Arcade { case PlayerAction.Attack: var attackAmount = _random.Next(2, 6); - _latestPlayerActionMessage = $"You attack {_enemyName} for {attackAmount}!"; + _latestPlayerActionMessage = Loc.GetString("You attack {0} for {1}!", _enemyName, attackAmount); EntitySystem.Get().PlayFromEntity("/Audio/Effects/Arcade/player_attack.ogg", Owner.Owner, AudioParams.Default.WithVolume(-4f)); if(!Owner._enemyInvincibilityFlag) _enemyHp -= attackAmount; _turtleTracker -= _turtleTracker > 0 ? 1 : 0; @@ -265,24 +306,23 @@ namespace Content.Server.GameObjects.Components.Arcade case PlayerAction.Heal: var pointAmount = _random.Next(1, 3); var healAmount = _random.Next(6, 8); - _latestPlayerActionMessage = $"You use {pointAmount} magic to heal for {healAmount} damage!"; + _latestPlayerActionMessage = Loc.GetString("You use {0} magic to heal for {1} damage!", pointAmount, healAmount); EntitySystem.Get().PlayFromEntity("/Audio/Effects/Arcade/player_heal.ogg", Owner.Owner, AudioParams.Default.WithVolume(-4f)); if(!Owner._playerInvincibilityFlag) _playerMp -= pointAmount; _playerHp += healAmount; _turtleTracker++; break; case PlayerAction.Recharge: - var charge_amount = _random.Next(4, 7); - _latestPlayerActionMessage = $"You regain {charge_amount} points"; + var chargeAmount = _random.Next(4, 7); + _latestPlayerActionMessage = Loc.GetString("You regain {0} points", chargeAmount); EntitySystem.Get().PlayFromEntity("/Audio/Effects/Arcade/player_charge.ogg", Owner.Owner, AudioParams.Default.WithVolume(-4f)); - _playerMp += charge_amount; + _playerMp += chargeAmount; _turtleTracker -= _turtleTracker > 0 ? 1 : 0; break; } if (!CheckGameConditions()) { - _running = false; return; } @@ -291,7 +331,6 @@ namespace Content.Server.GameObjects.Components.Arcade if (!CheckGameConditions()) { - _running = false; return; } ValidateVars(); @@ -304,22 +343,28 @@ namespace Content.Server.GameObjects.Components.Arcade /// A bool indicating if the game should continue. private bool CheckGameConditions() { - if ((_enemyHp <= 0 || _enemyMp <= 0) && (_playerHp > 0 && _playerMp > 0)) + if ((_playerHp > 0 && _playerMp > 0) && (_enemyHp <= 0 || _enemyMp <= 0)) { - UpdateUi("You won!", $"{_enemyName} dies."); + _running = false; + UpdateUi(Loc.GetString("You won!"), Loc.GetString("{0} dies.", _enemyName), true); EntitySystem.Get().PlayFromEntity("/Audio/Effects/Arcade/win.ogg", Owner.Owner, AudioParams.Default.WithVolume(-4f)); Owner.ProcessWin(); return false; } - if ((_playerHp <= 0 || _playerMp <= 0) && _enemyHp > 0 && _enemyMp > 0) + + if (_playerHp > 0 && _playerMp > 0) return true; + + if ((_enemyHp > 0 && _enemyMp > 0)) { - UpdateUi("You lost!", $"{_enemyName} cheers."); + _running = false; + UpdateUi(Loc.GetString("You lost!"), Loc.GetString("{0} cheers.", _enemyName), true); EntitySystem.Get().PlayFromEntity("/Audio/Effects/Arcade/gameover.ogg", Owner.Owner, AudioParams.Default.WithVolume(-4f)); return false; } - if ((_playerHp <= 0 || _playerMp <= 0) && (_enemyHp <= 0 || _enemyMp <= 0)) + if (_enemyHp <= 0 || _enemyMp <= 0) { - UpdateUi("You lost!", $"{_enemyName} dies, but takes you with him."); + _running = false; + UpdateUi(Loc.GetString("You lost!"), Loc.GetString("{0} dies, but takes you with him.", _enemyName), true); EntitySystem.Get().PlayFromEntity("/Audio/Effects/Arcade/gameover.ogg", Owner.Owner, AudioParams.Default.WithVolume(-4f)); return false; } @@ -330,16 +375,16 @@ namespace Content.Server.GameObjects.Components.Arcade /// /// Updates the UI. /// - private void UpdateUi() + private void UpdateUi(bool metadata = false) { - Owner.UserInterface?.SendMessage(GenerateUpdateMessage(_latestPlayerActionMessage, _latestEnemyActionMessage)); + Owner.UserInterface?.SendMessage(metadata ? GenerateMetaDataMessage() : GenerateUpdateMessage()); } - private void UpdateUi(string message1, string message2) + private void UpdateUi(string message1, string message2, bool metadata = false) { _latestPlayerActionMessage = message1; _latestEnemyActionMessage = message2; - UpdateUi(); + UpdateUi(metadata); } /// @@ -351,14 +396,14 @@ namespace Content.Server.GameObjects.Components.Arcade if (_turtleTracker >= 4) { var boomAmount = _random.Next(5, 10); - _latestEnemyActionMessage = $"{_enemyName} throws a bomb, exploding you for {boomAmount} damage!"; + _latestEnemyActionMessage = Loc.GetString("{0} throws a bomb, exploding you for {1} damage!", _enemyName, boomAmount); if (Owner._playerInvincibilityFlag) return; _playerHp -= boomAmount; _turtleTracker--; }else if (_enemyMp <= 5 && _random.Prob(0.7f)) { var stealAmount = _random.Next(2, 3); - _latestEnemyActionMessage = $"{_enemyName} steals {stealAmount} of your power!"; + _latestEnemyActionMessage = Loc.GetString("{0} steals {1} of your power!", _enemyName, stealAmount); if (Owner._playerInvincibilityFlag) return; _playerMp -= stealAmount; _enemyMp += stealAmount; @@ -366,12 +411,13 @@ namespace Content.Server.GameObjects.Components.Arcade { _enemyHp += 4; _enemyMp -= 4; - _latestEnemyActionMessage = $"{_enemyName} heals for 4 health!"; + _latestEnemyActionMessage = Loc.GetString("{0} heals for 4 health!", _enemyName); } else { var attackAmount = _random.Next(3, 6); - _latestEnemyActionMessage = $"{_enemyName} attacks you for {attackAmount} damage!"; + _latestEnemyActionMessage = + Loc.GetString("{0} attacks you for {1} damage!", _enemyName, attackAmount); if (Owner._playerInvincibilityFlag) return; _playerHp -= attackAmount; } @@ -383,20 +429,18 @@ namespace Content.Server.GameObjects.Components.Arcade /// A Metadata-message. public SpaceVillainArcadeMetaDataUpdateMessage GenerateMetaDataMessage() { - return new SpaceVillainArcadeMetaDataUpdateMessage(_playerHp, _playerMp, _enemyHp, _enemyMp, _latestPlayerActionMessage, _latestEnemyActionMessage, Name, _enemyName); + return new SpaceVillainArcadeMetaDataUpdateMessage(_playerHp, _playerMp, _enemyHp, _enemyMp, _latestPlayerActionMessage, _latestEnemyActionMessage, Name, _enemyName, !_running); } /// /// Creates an Update-message based on the objects values. /// - /// Content of the Playeraction-field. - /// Content of the Enemyaction-field. - /// + /// An Update-Message. public SpaceVillainArcadeDataUpdateMessage - GenerateUpdateMessage(string playerAction = "", string enemyAction = "") + GenerateUpdateMessage() { - return new SpaceVillainArcadeDataUpdateMessage(_playerHp, _playerMp, _enemyHp, _enemyMp, playerAction, - enemyAction); + return new SpaceVillainArcadeDataUpdateMessage(_playerHp, _playerMp, _enemyHp, _enemyMp, _latestPlayerActionMessage, + _latestEnemyActionMessage); } } } diff --git a/Content.Server/GameObjects/Components/Atmos/BreathToolComponent.cs b/Content.Server/GameObjects/Components/Atmos/BreathToolComponent.cs new file mode 100644 index 0000000000..b5228797ea --- /dev/null +++ b/Content.Server/GameObjects/Components/Atmos/BreathToolComponent.cs @@ -0,0 +1,70 @@ +#nullable enable +using Content.Server.GameObjects.Components.Body.Respiratory; +using Content.Shared.GameObjects.Components.Inventory; +using Content.Shared.Interfaces.GameObjects.Components; +using Npgsql.TypeHandlers; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Serialization; + +namespace Content.Server.GameObjects.Components.Atmos +{ + /// + /// Used in internals as breath tool. + /// + [RegisterComponent] + public class BreathToolComponent : Component, IEquipped, IUnequipped + { + /// + /// Tool is functional only in allowed slots + /// + private EquipmentSlotDefines.SlotFlags _allowedSlots; + + public override string Name => "BreathMask"; + public bool IsFunctional { get; private set; } + public IEntity? ConnectedInternalsEntity { get; private set; } + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _allowedSlots, "allowedSlots", EquipmentSlotDefines.SlotFlags.MASK); + } + + protected override void Shutdown() + { + base.Shutdown(); + DisconnectInternals(); + } + + public void Equipped(EquippedEventArgs eventArgs) + { + if ((EquipmentSlotDefines.SlotMasks[eventArgs.Slot] & _allowedSlots) != _allowedSlots) return; + IsFunctional = true; + + if (eventArgs.User.TryGetComponent(out InternalsComponent? internals)) + { + ConnectedInternalsEntity = eventArgs.User; + internals.ConnectBreathTool(Owner); + } + } + + public void Unequipped(UnequippedEventArgs eventArgs) + { + DisconnectInternals(); + + } + + public void DisconnectInternals() + { + var old = ConnectedInternalsEntity; + ConnectedInternalsEntity = null; + + if (old != null && old.TryGetComponent(out var internalsComponent)) + { + internalsComponent.DisconnectBreathTool(); + } + + IsFunctional = false; + } + } +} diff --git a/Content.Server/GameObjects/Components/Atmos/FlammableComponent.cs b/Content.Server/GameObjects/Components/Atmos/FlammableComponent.cs index ae7be6c29b..6ca1388d84 100644 --- a/Content.Server/GameObjects/Components/Atmos/FlammableComponent.cs +++ b/Content.Server/GameObjects/Components/Atmos/FlammableComponent.cs @@ -16,6 +16,7 @@ using Content.Shared.Interfaces.GameObjects.Components; using Robust.Server.GameObjects; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components; +using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.IoC; @@ -205,7 +206,7 @@ namespace Content.Server.GameObjects.Components.Atmos Owner.PopupMessage(Loc.GetString("You stop, drop, and roll!")); stunnable.Paralyze(2f); - Timer.Spawn(2000, () => + Owner.SpawnTimer(2000, () => { _resisting = false; FireStacks -= 2f; diff --git a/Content.Server/GameObjects/Components/Atmos/GasMixtureHolderComponent.cs b/Content.Server/GameObjects/Components/Atmos/GasMixtureHolderComponent.cs index 5f2efb662a..3ef464f36c 100644 --- a/Content.Server/GameObjects/Components/Atmos/GasMixtureHolderComponent.cs +++ b/Content.Server/GameObjects/Components/Atmos/GasMixtureHolderComponent.cs @@ -1,4 +1,5 @@ using Content.Server.Atmos; +using Content.Server.Interfaces; using Robust.Shared.GameObjects; using Robust.Shared.Serialization; using Robust.Shared.ViewVariables; @@ -6,23 +7,19 @@ using Robust.Shared.ViewVariables; namespace Content.Server.GameObjects.Components.Atmos { [RegisterComponent] - public class GasMixtureHolderComponent : Component + public class GasMixtureHolderComponent : Component, IGasMixtureHolder { public override string Name => "GasMixtureHolder"; - [ViewVariables] public GasMixture GasMixture { get; set; } + [ViewVariables] public GasMixture Air { get; set; } public override void ExposeData(ObjectSerializer serializer) { base.ExposeData(serializer); - GasMixture = new GasMixture(); + Air = new GasMixture(); - serializer.DataReadWriteFunction( - "volume", - 0f, - vol => GasMixture.Volume = vol, - () => GasMixture.Volume); + serializer.DataField(this, x => x.Air, "air", new GasMixture()); } } } diff --git a/Content.Server/GameObjects/Components/Atmos/GasTankComponent.cs b/Content.Server/GameObjects/Components/Atmos/GasTankComponent.cs index 47f96463e0..7962b56eab 100644 --- a/Content.Server/GameObjects/Components/Atmos/GasTankComponent.cs +++ b/Content.Server/GameObjects/Components/Atmos/GasTankComponent.cs @@ -1,10 +1,356 @@ -using Robust.Shared.GameObjects; +#nullable enable +using System; +using Content.Server.Atmos; +using Content.Server.Explosions; +using Content.Server.GameObjects.Components.Body.Respiratory; +using Content.Server.GameObjects.Components.GUI; +using Content.Server.Interfaces; +using Content.Server.Utility; +using Content.Shared.Atmos; +using Content.Shared.Audio; +using Content.Shared.GameObjects.Components.Atmos.GasTank; +using Content.Shared.GameObjects.Components.Inventory; +using Content.Shared.GameObjects.EntitySystems; +using Content.Shared.GameObjects.Verbs; +using Content.Shared.Interfaces.GameObjects.Components; +using Content.Shared.Utility; +using Robust.Server.GameObjects.Components.UserInterface; +using Robust.Server.GameObjects.EntitySystems; +using Robust.Server.Interfaces.GameObjects; +using Robust.Server.Interfaces.Player; +using Robust.Shared.Containers; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.EntitySystemMessages; +using Robust.Shared.GameObjects.Systems; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.IoC; +using Robust.Shared.Localization; +using Robust.Shared.Map; +using Robust.Shared.Serialization; +using Robust.Shared.Utility; +using Robust.Shared.ViewVariables; namespace Content.Server.GameObjects.Components.Atmos { [RegisterComponent] - public class GasTankComponent : Component + [ComponentReference(typeof(IActivate))] + public class GasTankComponent : SharedGasTankComponent, IExamine, IGasMixtureHolder, IUse, IDropped, IActivate { - public override string Name => "GasTank"; + private const float MaxExplosionRange = 14f; + private const float DefaultOutputPressure = Atmospherics.OneAtmosphere; + + private float _pressureResistance; + + private int _integrity = 3; + + [Dependency] private readonly IEntityManager _entityManager = default!; + [ViewVariables] private BoundUserInterface? _userInterface; + + [ViewVariables] public GasMixture? Air { get; set; } + + /// + /// Distributed pressure. + /// + [ViewVariables] public float OutputPressure { get; private set; } + + /// + /// Tank is connected to internals. + /// + [ViewVariables] public bool IsConnected { get; set; } + + /// + /// Represents that tank is functional and can be connected to internals. + /// + public bool IsFunctional => GetInternalsComponent() != null; + + /// + /// Pressure at which tanks start leaking. + /// + public float TankLeakPressure { get; set; } = 30 * Atmospherics.OneAtmosphere; + + /// + /// Pressure at which tank spills all contents into atmosphere. + /// + public float TankRupturePressure { get; set; } = 40 * Atmospherics.OneAtmosphere; + + /// + /// Base 3x3 explosion. + /// + public float TankFragmentPressure { get; set; } = 50 * Atmospherics.OneAtmosphere; + + /// + /// Increases explosion for each scale kPa above threshold. + /// + public float TankFragmentScale { get; set; } = 10 * Atmospherics.OneAtmosphere; + + public override void Initialize() + { + base.Initialize(); + _userInterface = Owner.GetUIOrNull(SharedGasTankUiKey.Key); + if (_userInterface != null) + { + _userInterface.OnReceiveMessage += UserInterfaceOnOnReceiveMessage; + } + } + + public void OpenInterface(IPlayerSession session) + { + _userInterface?.Open(session); + UpdateUserInterface(true); + } + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + + serializer.DataField(this, x => x.Air, "air", new GasMixture()); + serializer.DataField(this, x => x.OutputPressure, "outputPressure", DefaultOutputPressure); + serializer.DataField(this, x => x.TankLeakPressure, "tankLeakPressure", 30 * Atmospherics.OneAtmosphere); + serializer.DataField(this, x => x.TankRupturePressure, "tankRupturePressure", 40 * Atmospherics.OneAtmosphere); + serializer.DataField(this, x => x.TankFragmentPressure, "tankFragmentPressure", 50 * Atmospherics.OneAtmosphere); + serializer.DataField(this, x => x.TankFragmentScale, "tankFragmentScale", 10 * Atmospherics.OneAtmosphere); + serializer.DataField(ref _pressureResistance, "pressureResistance", Atmospherics.OneAtmosphere * 5f); + } + + public void Examine(FormattedMessage message, bool inDetailsRange) + { + message.AddMarkup(Loc.GetString("Pressure: [color=orange]{0}[/color] kPa.\n", + Math.Round(Air?.Pressure ?? 0))); + if (IsConnected) + { + message.AddMarkup(Loc.GetString("Connected to external component")); + } + } + + protected override void Shutdown() + { + base.Shutdown(); + DisconnectFromInternals(); + } + + public void Update() + { + Air?.React(this); + CheckStatus(); + UpdateUserInterface(); + } + + public GasMixture? RemoveAir(float amount) + { + var gas = Air?.Remove(amount); + CheckStatus(); + return gas; + } + + public GasMixture RemoveAirVolume(float volume) + { + if (Air == null) + return new GasMixture(volume); + + var tankPressure = Air.Pressure; + if (tankPressure < OutputPressure) + { + OutputPressure = tankPressure; + UpdateUserInterface(); + } + + var molesNeeded = OutputPressure * volume / (Atmospherics.R * Air.Temperature); + + var air = RemoveAir(molesNeeded); + + if (air != null) + air.Volume = volume; + else + return new GasMixture(volume); + + return air; + } + + public bool UseEntity(UseEntityEventArgs eventArgs) + { + if (!eventArgs.User.TryGetComponent(out IActorComponent? actor)) return false; + OpenInterface(actor.playerSession); + return true; + } + + public void Activate(ActivateEventArgs eventArgs) + { + if (!eventArgs.User.TryGetComponent(out IActorComponent? actor)) return; + OpenInterface(actor.playerSession); + } + + public void ConnectToInternals() + { + if (IsConnected || !IsFunctional) return; + var internals = GetInternalsComponent(); + if (internals == null) return; + IsConnected = internals.TryConnectTank(Owner); + UpdateUserInterface(); + } + + public void DisconnectFromInternals(IEntity? owner = null) + { + if (!IsConnected) return; + IsConnected = false; + GetInternalsComponent(owner)?.DisconnectTank(); + UpdateUserInterface(); + } + + private void UpdateUserInterface(bool initialUpdate = false) + { + _userInterface?.SetState( + new GasTankBoundUserInterfaceState + { + TankPressure = Air?.Pressure ?? 0, + OutputPressure = initialUpdate ? OutputPressure : (float?) null, + InternalsConnected = IsConnected, + CanConnectInternals = IsFunctional && GetInternalsComponent() != null + }); + } + + private void UserInterfaceOnOnReceiveMessage(ServerBoundUserInterfaceMessage message) + { + switch (message.Message) + { + case GasTankSetPressureMessage msg: + OutputPressure = msg.Pressure; + break; + case GasTankToggleInternalsMessage _: + ToggleInternals(); + break; + } + } + + private void ToggleInternals() + { + if (IsConnected) + { + DisconnectFromInternals(); + return; + } + + ConnectToInternals(); + } + + private InternalsComponent? GetInternalsComponent(IEntity? owner = null) + { + if (owner != null) return owner.GetComponentOrNull(); + return ContainerHelpers.TryGetContainer(Owner, out var container) + ? container.Owner.GetComponentOrNull() + : null; + } + + public void AssumeAir(GasMixture giver) + { + Air?.Merge(giver); + CheckStatus(); + } + + private void CheckStatus() + { + if (Air == null) + return; + + var pressure = Air.Pressure; + + if (pressure > TankFragmentPressure) + { + // Give the gas a chance to build up more pressure. + for (var i = 0; i < 3; i++) + { + Air.React(this); + } + + pressure = Air.Pressure; + var range = (pressure - TankFragmentPressure) / TankFragmentScale; + + // Let's cap the explosion, yeah? + if (range > MaxExplosionRange) + { + range = MaxExplosionRange; + } + + Owner.SpawnExplosion((int) (range * 0.25f), (int) (range * 0.5f), (int) (range * 1.5f), 1); + + Owner.Delete(); + return; + } + + if (pressure > TankRupturePressure) + { + if (_integrity <= 0) + { + var tileAtmos = Owner.Transform.Coordinates.GetTileAtmosphere(); + tileAtmos?.AssumeAir(Air); + + EntitySystem.Get().PlayAtCoords("Audio/Effects/spray.ogg", Owner.Transform.Coordinates, + AudioHelpers.WithVariation(0.125f)); + + Owner.Delete(); + return; + } + + _integrity--; + return; + } + + if (pressure > TankLeakPressure) + { + if (_integrity <= 0) + { + var tileAtmos = Owner.Transform.Coordinates.GetTileAtmosphere(); + if (tileAtmos == null) + return; + + var leakedGas = Air.RemoveRatio(0.25f); + tileAtmos.AssumeAir(leakedGas); + } + else + { + _integrity--; + } + + return; + } + + if (_integrity < 3) + _integrity++; + } + + /// + /// Open interaction window + /// + [Verb] + private sealed class ControlVerb : Verb + { + public override bool RequireInteractionRange => true; + + protected override void GetData(IEntity user, GasTankComponent component, VerbData data) + { + data.Visibility = VerbVisibility.Invisible; + if (!user.HasComponent()) + { + return; + } + + data.Visibility = VerbVisibility.Visible; + data.Text = "Open Control Panel"; + } + + protected override void Activate(IEntity user, GasTankComponent component) + { + if (!user.TryGetComponent(out var actor)) + { + return; + } + + component.OpenInterface(actor.playerSession); + } + } + + public void Dropped(DroppedEventArgs eventArgs) + { + DisconnectFromInternals(eventArgs.User); + } } } diff --git a/Content.Server/GameObjects/Components/Body/Behavior/LungBehaviorComponent.cs b/Content.Server/GameObjects/Components/Body/Behavior/LungBehaviorComponent.cs index 78375835a4..195733fe71 100644 --- a/Content.Server/GameObjects/Components/Body/Behavior/LungBehaviorComponent.cs +++ b/Content.Server/GameObjects/Components/Body/Behavior/LungBehaviorComponent.cs @@ -2,7 +2,9 @@ using System; using System.Linq; using Content.Server.Atmos; +using Content.Server.GameObjects.Components.Atmos; using Content.Server.GameObjects.Components.Body.Circulatory; +using Content.Server.GameObjects.Components.Body.Respiratory; using Content.Server.Utility; using Content.Shared.Atmos; using Content.Shared.GameObjects.Components.Body.Behavior; @@ -10,6 +12,7 @@ using Robust.Shared.GameObjects; using Robust.Shared.Interfaces.Timing; using Robust.Shared.IoC; using Robust.Shared.Localization; +using Robust.Shared.Log; using Robust.Shared.Serialization; using Robust.Shared.ViewVariables; @@ -147,6 +150,16 @@ namespace Content.Server.GameObjects.Components.Body.Behavior public override void Inhale(float frameTime) { + if (Body != null && Body.Owner.TryGetComponent(out InternalsComponent? internals) + && internals.BreathToolEntity != null && internals.GasTankEntity != null + && internals.BreathToolEntity.TryGetComponent(out BreathToolComponent? breathTool) + && breathTool.IsFunctional && internals.GasTankEntity.TryGetComponent(out GasTankComponent? gasTank) + && gasTank.Air != null) + { + Inhale(frameTime, gasTank.RemoveAirVolume(Atmospherics.BreathVolume)); + return; + } + if (!Owner.Transform.Coordinates.TryGetTileAir(out var tileAir)) { return; @@ -157,8 +170,7 @@ namespace Content.Server.GameObjects.Components.Body.Behavior public void Inhale(float frameTime, GasMixture from) { - var ratio = Atmospherics.BreathPercentage * frameTime; - + var ratio = (Atmospherics.BreathVolume / from.Volume) * frameTime; Transfer(from, Air, ratio); ToBloodstream(Air); diff --git a/Content.Server/GameObjects/Components/Body/Respiratory/InternalsComponent.cs b/Content.Server/GameObjects/Components/Body/Respiratory/InternalsComponent.cs new file mode 100644 index 0000000000..6c3380da4e --- /dev/null +++ b/Content.Server/GameObjects/Components/Body/Respiratory/InternalsComponent.cs @@ -0,0 +1,63 @@ +#nullable enable +using Content.Server.GameObjects.Components.Atmos; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.ViewVariables; + +namespace Content.Server.GameObjects.Components.Body.Respiratory +{ + [RegisterComponent] + public class InternalsComponent : Component + { + public override string Name => "Internals"; + [ViewVariables] public IEntity? GasTankEntity { get; set; } + [ViewVariables] public IEntity? BreathToolEntity { get; set; } + + public void DisconnectBreathTool() + { + var old = BreathToolEntity; + BreathToolEntity = null; + + if (old != null && old.TryGetComponent(out BreathToolComponent? breathTool) ) + { + breathTool.DisconnectInternals(); + DisconnectTank(); + } + } + + public void ConnectBreathTool(IEntity toolEntity) + { + if (BreathToolEntity != null && BreathToolEntity.TryGetComponent(out BreathToolComponent? tool)) + { + tool.DisconnectInternals(); + } + + BreathToolEntity = toolEntity; + } + + public void DisconnectTank() + { + if (GasTankEntity != null && GasTankEntity.TryGetComponent(out GasTankComponent? tank)) + { + tank.DisconnectFromInternals(Owner); + } + + GasTankEntity = null; + } + + public bool TryConnectTank(IEntity tankEntity) + { + if (BreathToolEntity == null) + return false; + + if (GasTankEntity != null && GasTankEntity.TryGetComponent(out GasTankComponent? tank)) + { + tank.DisconnectFromInternals(Owner); + } + + GasTankEntity = tankEntity; + return true; + } + + } +} diff --git a/Content.Server/GameObjects/Components/Buckle/BuckleComponent.cs b/Content.Server/GameObjects/Components/Buckle/BuckleComponent.cs index ee429279d7..94e7b0d8a4 100644 --- a/Content.Server/GameObjects/Components/Buckle/BuckleComponent.cs +++ b/Content.Server/GameObjects/Components/Buckle/BuckleComponent.cs @@ -460,6 +460,7 @@ namespace Content.Server.GameObjects.Components.Buckle if (Moved) { TryUnbuckle(Owner, true); + Moved = false; return; } diff --git a/Content.Server/GameObjects/Components/ConfigurationComponent.cs b/Content.Server/GameObjects/Components/ConfigurationComponent.cs new file mode 100644 index 0000000000..77049e6260 --- /dev/null +++ b/Content.Server/GameObjects/Components/ConfigurationComponent.cs @@ -0,0 +1,118 @@ +using Content.Server.GameObjects.Components.Interactable; +using Content.Server.Utility; +using Content.Shared.GameObjects.Components; +using Content.Shared.GameObjects.Components.Interactable; +using Content.Shared.Interfaces.GameObjects.Components; +using Robust.Server.GameObjects.Components.UserInterface; +using Robust.Server.Interfaces.GameObjects; +using Robust.Shared.GameObjects; +using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using System.Text.RegularExpressions; +using System.Threading.Tasks; + +namespace Content.Server.GameObjects.Components +{ + [RegisterComponent] + [ComponentReference(typeof(SharedConfigurationComponent))] + public class ConfigurationComponent : SharedConfigurationComponent, IInteractUsing + { + [ViewVariables] private BoundUserInterface UserInterface => Owner.GetUIOrNull(ConfigurationUiKey.Key); + + [ViewVariables] + private readonly Dictionary _config = new Dictionary(); + + private Regex _validation; + + public event Action> OnConfigUpdate; + + public override void Initialize() + { + base.Initialize(); + + if (UserInterface != null) + { + UserInterface.OnReceiveMessage += UserInterfaceOnReceiveMessage; + } + } + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + + serializer.DataReadWriteFunction("keys", new List(), + (list) => FillConfiguration(list, _config, ""), + () => _config.Keys.ToList()); + + serializer.DataReadFunction("vailidation", "^[a-zA-Z0-9 ]*$", value => _validation = new Regex("^[a-zA-Z0-9 ]*$", RegexOptions.Compiled)); + } + + public string GetConfig(string name) + { + return _config.GetValueOrDefault(name); + } + + protected override void Startup() + { + base.Startup(); + UpdateUserInterface(); + } + + async Task IInteractUsing.InteractUsing(InteractUsingEventArgs eventArgs) + { + if (UserInterface == null || !eventArgs.User.TryGetComponent(out IActorComponent actor)) + return false; + + if (!eventArgs.Using.TryGetComponent(out var tool)) + return false; + + if (!await tool.UseTool(eventArgs.User, Owner, 0.2f, ToolQuality.Multitool)) + return false; + + UpdateUserInterface(); + UserInterface.Open(actor.playerSession); + UserInterface.SendMessage(new ValidationUpdateMessage(_validation.ToString()), actor.playerSession); + return true; + } + + private void UserInterfaceOnReceiveMessage(ServerBoundUserInterfaceMessage serverMsg) + { + var message = serverMsg.Message; + var config = new Dictionary(_config); + + if (message is ConfigurationUpdatedMessage msg) + { + foreach (var key in config.Keys) + { + var value = msg.Config.GetValueOrDefault(key); + + if (_validation != null && !_validation.IsMatch(value) && value != "") + continue; + + _config[key] = value; + } + + OnConfigUpdate(_config); + } + } + + private void UpdateUserInterface() + { + if (UserInterface == null) + return; + + UserInterface.SetState(new ConfigurationBoundUserInterfaceState(_config)); + } + + private static void FillConfiguration(List list, Dictionary configuration, T value){ + for (var index = 0; index < list.Count; index++) + { + configuration.Add(list[index], value); + } + } + } +} diff --git a/Content.Server/GameObjects/Components/Conveyor/ConveyorComponent.cs b/Content.Server/GameObjects/Components/Conveyor/ConveyorComponent.cs index 7a9b3131f7..6593075814 100644 --- a/Content.Server/GameObjects/Components/Conveyor/ConveyorComponent.cs +++ b/Content.Server/GameObjects/Components/Conveyor/ConveyorComponent.cs @@ -155,7 +155,7 @@ namespace Content.Server.GameObjects.Components.Conveyor if (entity.TryGetComponent(out IPhysicsComponent? physics)) { var controller = physics.EnsureController(); - controller.Move(direction, _speed * frameTime); + controller.Move(direction, _speed); } } } diff --git a/Content.Server/GameObjects/Components/Damage/BreakableComponent.cs b/Content.Server/GameObjects/Components/Damage/BreakableComponent.cs index 7be9a71b50..07ee5cc17f 100644 --- a/Content.Server/GameObjects/Components/Damage/BreakableComponent.cs +++ b/Content.Server/GameObjects/Components/Damage/BreakableComponent.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using Content.Shared.Audio; using Content.Shared.GameObjects.Components.Damage; using Content.Shared.GameObjects.EntitySystems; using Robust.Server.GameObjects.EntitySystems; @@ -7,6 +8,7 @@ using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.Random; using Robust.Shared.IoC; +using Robust.Shared.Log; using Robust.Shared.Random; namespace Content.Server.GameObjects.Components.Damage @@ -65,11 +67,6 @@ namespace Content.Server.GameObjects.Components.Damage protected override void DestructionBehavior() { _actSystem.HandleBreakage(Owner); - if (!Owner.Deleted && DestroySound != string.Empty) - { - var pos = Owner.Transform.Coordinates; - EntitySystem.Get().PlayAtCoords(DestroySound, pos); - } } } } diff --git a/Content.Server/GameObjects/Components/Damage/DestructibleComponent.cs b/Content.Server/GameObjects/Components/Damage/DestructibleComponent.cs index c62cf921cf..6c1e59a228 100644 --- a/Content.Server/GameObjects/Components/Damage/DestructibleComponent.cs +++ b/Content.Server/GameObjects/Components/Damage/DestructibleComponent.cs @@ -1,10 +1,13 @@ -using Content.Shared.GameObjects.Components.Damage; +using System.Collections.Generic; +using Content.Server.GameObjects.Components.Stack; +using Content.Shared.GameObjects.Components.Damage; using Content.Shared.GameObjects.EntitySystems; -using Robust.Server.GameObjects.EntitySystems; +using Content.Shared.Utility; using Robust.Shared.GameObjects; -using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Interfaces.Random; using Robust.Shared.IoC; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization; namespace Content.Server.GameObjects.Components.Damage @@ -17,6 +20,8 @@ namespace Content.Server.GameObjects.Components.Damage public class DestructibleComponent : RuinableComponent, IDestroyAct { [Dependency] private readonly IEntitySystemManager _entitySystemManager = default!; + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly IRobustRandom _random = default!; protected ActSystem ActSystem; @@ -24,22 +29,51 @@ namespace Content.Server.GameObjects.Components.Damage public override string Name => "Destructible"; /// - /// Entity spawned upon destruction. + /// Entities spawned on destruction plus the min and max amount spawned. /// - public string SpawnOnDestroy { get; private set; } + public Dictionary SpawnOnDestroy { get; private set; } void IDestroyAct.OnDestroy(DestructionEventArgs eventArgs) { - if (!string.IsNullOrWhiteSpace(SpawnOnDestroy) && eventArgs.IsSpawnWreck) + if (SpawnOnDestroy == null || !eventArgs.IsSpawnWreck) return; + foreach (var (key, value) in SpawnOnDestroy) { - Owner.EntityManager.SpawnEntity(SpawnOnDestroy, Owner.Transform.Coordinates); + int count; + if (value.Min >= value.Max) + { + count = value.Min; + } + else + { + count = _random.Next(value.Min, value.Max + 1); + } + + if (count == 0) continue; + + if (EntityPrototypeHelpers.HasComponent(key)) + { + var spawned = Owner.EntityManager.SpawnEntity(key, Owner.Transform.Coordinates); + var stack = spawned.GetComponent(); + stack.Count = count; + spawned.RandomOffset(0.5f); + } + else + { + for (var i = 0; i < count; i++) + { + var spawned = Owner.EntityManager.SpawnEntity(key, Owner.Transform.Coordinates); + spawned.RandomOffset(0.5f); + } + } } } public override void ExposeData(ObjectSerializer serializer) { base.ExposeData(serializer); - serializer.DataField(this, d => d.SpawnOnDestroy, "spawnOnDestroy", string.Empty); + + + serializer.DataField(this, d => d.SpawnOnDestroy, "spawnOnDestroy", null); } public override void Initialize() @@ -56,11 +90,13 @@ namespace Content.Server.GameObjects.Components.Damage var pos = Owner.Transform.Coordinates; ActSystem.HandleDestruction(Owner, true); //This will call IDestroyAct.OnDestroy on this component (and all other components on this entity) - if (DestroySound != string.Empty) - { - EntitySystem.Get().PlayAtCoords(DestroySound, pos); - } } } + + public struct MinMax + { + public int Min; + public int Max; + } } } diff --git a/Content.Server/GameObjects/Components/Damage/RuinableComponent.cs b/Content.Server/GameObjects/Components/Damage/RuinableComponent.cs index 421574f8a5..c77c374777 100644 --- a/Content.Server/GameObjects/Components/Damage/RuinableComponent.cs +++ b/Content.Server/GameObjects/Components/Damage/RuinableComponent.cs @@ -1,11 +1,15 @@ using System.Collections.Generic; +using Content.Shared.Audio; using Content.Shared.GameObjects.Components.Damage; using Robust.Server.GameObjects.EntitySystems; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Interfaces.Random; +using Robust.Shared.IoC; using Robust.Shared.Serialization; using Robust.Shared.ViewVariables; +using Logger = Robust.Shared.Log.Logger; namespace Content.Server.GameObjects.Components.Damage { @@ -16,12 +20,19 @@ namespace Content.Server.GameObjects.Components.Damage [ComponentReference(typeof(IDamageableComponent))] public abstract class RuinableComponent : DamageableComponent { + [Dependency] private IRobustRandom _random = default!; /// /// Sound played upon destruction. /// [ViewVariables] protected string DestroySound { get; private set; } + /// + /// Used instead of if specified. + /// + [ViewVariables] + protected string DestroySoundCollection { get; private set; } + public override List SupportedDamageStates => new List {DamageState.Alive, DamageState.Dead}; @@ -44,6 +55,7 @@ namespace Content.Server.GameObjects.Components.Damage () => Thresholds.TryGetValue(DamageState.Dead, out var value) ? value : (int?) null); serializer.DataField(this, ruinable => ruinable.DestroySound, "destroySound", string.Empty); + serializer.DataField(this, ruinable => ruinable.DestroySoundCollection, "destroySoundCollection", string.Empty); } protected override void EnterState(DamageState state) @@ -65,10 +77,24 @@ namespace Content.Server.GameObjects.Components.Damage { CurrentState = DamageState.Dead; - if (!Owner.Deleted && DestroySound != string.Empty) + if (!Owner.Deleted) { var pos = Owner.Transform.Coordinates; - EntitySystem.Get().PlayAtCoords(DestroySound, pos); + string sound = string.Empty; + if (DestroySoundCollection != string.Empty) + { + sound = AudioHelpers.GetRandomFileFromSoundCollection(DestroySoundCollection); + + } + else if (DestroySound != string.Empty) + { + sound = DestroySound; + } + if (sound != string.Empty) + { + Logger.Debug("Playing destruction sound"); + EntitySystem.Get().PlayAtCoords(sound, pos, AudioHelpers.WithVariation(0.125f)); + } } DestructionBehavior(); diff --git a/Content.Server/GameObjects/Components/Disposal/DisposalEntryComponent.cs b/Content.Server/GameObjects/Components/Disposal/DisposalEntryComponent.cs index 5dacccd52d..4128234253 100644 --- a/Content.Server/GameObjects/Components/Disposal/DisposalEntryComponent.cs +++ b/Content.Server/GameObjects/Components/Disposal/DisposalEntryComponent.cs @@ -33,7 +33,7 @@ namespace Content.Server.GameObjects.Components.Disposal return TryInsert(holderComponent); } - private bool TryInsert(DisposalHolderComponent holder) + public bool TryInsert(DisposalHolderComponent holder) { if (!Contents.Insert(holder.Owner)) { diff --git a/Content.Server/GameObjects/Components/Disposal/DisposalMailingUnitComponent.cs b/Content.Server/GameObjects/Components/Disposal/DisposalMailingUnitComponent.cs new file mode 100644 index 0000000000..67cac05d66 --- /dev/null +++ b/Content.Server/GameObjects/Components/Disposal/DisposalMailingUnitComponent.cs @@ -0,0 +1,840 @@ +#nullable enable +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.RegularExpressions; +using System.Threading; +using System.Threading.Tasks; +using Content.Server.GameObjects.Components.GUI; +using Content.Server.GameObjects.Components.Items.Storage; +using Content.Server.GameObjects.Components.Power.ApcNetComponents; +using Content.Server.GameObjects.EntitySystems.DeviceNetwork; +using Content.Server.GameObjects.EntitySystems.DoAfter; +using Content.Server.Interfaces; +using Content.Server.Interfaces.GameObjects.Components.Items; +using Content.Server.Utility; +using Content.Shared.GameObjects.Components.Body; +using Content.Shared.GameObjects.Components.Disposal; +using Content.Shared.GameObjects.EntitySystems; +using Content.Shared.GameObjects.Verbs; +using Content.Shared.Interfaces; +using Content.Shared.Interfaces.GameObjects.Components; +using Robust.Server.GameObjects; +using Robust.Server.GameObjects.Components.Container; +using Robust.Server.GameObjects.Components.UserInterface; +using Robust.Server.GameObjects.EntitySystems; +using Robust.Server.Interfaces.GameObjects; +using Robust.Shared.Audio; +using Robust.Shared.Containers; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components; +using Robust.Shared.GameObjects.Components.Transform; +using Robust.Shared.GameObjects.Systems; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Interfaces.Timing; +using Robust.Shared.IoC; +using Robust.Shared.Localization; +using Robust.Shared.Log; +using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; +using Timer = Robust.Shared.Timers.Timer; + +namespace Content.Server.GameObjects.Components.Disposal +{ + [RegisterComponent] + [ComponentReference(typeof(SharedDisposalMailingUnitComponent))] + [ComponentReference(typeof(IActivate))] + [ComponentReference(typeof(IInteractUsing))] + public class DisposalMailingUnitComponent : SharedDisposalMailingUnitComponent, IInteractHand, IActivate, IInteractUsing, IDragDropOn + { + [Dependency] private readonly IGameTiming _gameTiming = default!; + + private const string HolderPrototypeId = "DisposalHolder"; + + /// + /// The delay for an entity trying to move out of this unit. + /// + private static readonly TimeSpan ExitAttemptDelay = TimeSpan.FromSeconds(0.5); + + /// + /// Last time that an entity tried to exit this disposal unit. + /// + [ViewVariables] + private TimeSpan _lastExitAttempt; + + public static readonly Regex TagRegex = new Regex("^[a-zA-Z0-9, ]*$", RegexOptions.Compiled); + + /// + /// The current pressure of this disposal unit. + /// Prevents it from flushing if it is not equal to or bigger than 1. + /// + [ViewVariables] + private float _pressure; + + private bool _engaged; + + [ViewVariables(VVAccess.ReadWrite)] + private TimeSpan _automaticEngageTime; + + [ViewVariables(VVAccess.ReadWrite)] + private TimeSpan _flushDelay; + + [ViewVariables(VVAccess.ReadWrite)] + private float _entryDelay; + + /// + /// Token used to cancel the automatic engage of a disposal unit + /// after an entity enters it. + /// + private CancellationTokenSource? _automaticEngageToken; + + /// + /// Container of entities inside this disposal unit. + /// + [ViewVariables] + private Container _container = default!; + + [ViewVariables] + private WiredNetworkConnection? _connection; + + [ViewVariables] public IReadOnlyList ContainedEntities => _container.ContainedEntities; + + [ViewVariables] + private readonly List _targetList = new List(); + + [ViewVariables] + private string _target = ""; + + [ViewVariables(VVAccess.ReadWrite)] + private string _tag = ""; + + [ViewVariables] + public bool Powered => + !Owner.TryGetComponent(out PowerReceiverComponent? receiver) || + receiver.Powered; + + [ViewVariables] + private PressureState State => _pressure >= 1 ? PressureState.Ready : PressureState.Pressurizing; + + [ViewVariables(VVAccess.ReadWrite)] + private bool Engaged + { + get => _engaged; + set + { + var oldEngaged = _engaged; + _engaged = value; + + if (oldEngaged == value) + { + return; + } + + UpdateVisualState(); + } + } + + [ViewVariables] private BoundUserInterface? UserInterface => Owner.GetUIOrNull(DisposalMailingUnitUiKey.Key); + + private DisposalMailingUnitBoundUserInterfaceState? _lastUiState; + + /// + /// Store the translated state. + /// + private (PressureState State, string Localized) _locState; + + public bool CanInsert(IEntity entity) + { + if (!Anchored) + { + return false; + } + + if (!entity.TryGetComponent(out IPhysicsComponent? physics) || + !physics.CanCollide) + { + return false; + } + + if (!entity.HasComponent() && + !entity.HasComponent()) + { + return false; + } + return _container.CanInsert(entity); + } + + private void TryQueueEngage() + { + if (!Powered && ContainedEntities.Count == 0) + { + return; + } + + _automaticEngageToken = new CancellationTokenSource(); + + Timer.Spawn(_automaticEngageTime, () => + { + if (!TryFlush()) + { + TryQueueEngage(); + } + }, _automaticEngageToken.Token); + } + + private void AfterInsert(IEntity entity) + { + TryQueueEngage(); + + if (entity.TryGetComponent(out IActorComponent? actor)) + { + UserInterface?.Close(actor.playerSession); + } + + UpdateVisualState(); + } + + public async Task TryInsert(IEntity entity, IEntity? user = default) + { + if (!CanInsert(entity)) + return false; + + if (user != null && _entryDelay > 0f) + { + var doAfterSystem = EntitySystem.Get(); + + var doAfterArgs = new DoAfterEventArgs(user, _entryDelay, default, Owner) + { + BreakOnDamage = true, + BreakOnStun = true, + BreakOnTargetMove = true, + BreakOnUserMove = true, + NeedHand = false, + }; + + var result = await doAfterSystem.DoAfter(doAfterArgs); + + if (result == DoAfterStatus.Cancelled) + return false; + + } + + if (!_container.Insert(entity)) + return false; + + AfterInsert(entity); + + return true; + } + + private bool TryDrop(IEntity user, IEntity entity) + { + if (!user.TryGetComponent(out HandsComponent? hands)) + { + return false; + } + + if (!CanInsert(entity) || !hands.Drop(entity, _container)) + { + return false; + } + + AfterInsert(entity); + + return true; + } + + private void Remove(IEntity entity) + { + _container.Remove(entity); + + if (ContainedEntities.Count == 0) + { + _automaticEngageToken?.Cancel(); + _automaticEngageToken = null; + } + + UpdateVisualState(); + } + + private bool CanFlush() + { + return _pressure >= 1 && Powered && Anchored; + } + + private void ToggleEngage() + { + Engaged ^= true; + + if (Engaged && CanFlush()) + { + Timer.Spawn(_flushDelay, () => TryFlush()); + } + } + + public bool TryFlush() + { + if (!CanFlush()) + { + return false; + } + + var snapGrid = Owner.GetComponent(); + var entry = snapGrid + .GetLocal() + .FirstOrDefault(entity => entity.HasComponent()); + + if (entry == null) + { + return false; + } + + var entryComponent = entry.GetComponent(); + var entities = _container.ContainedEntities.ToList(); + foreach (var entity in _container.ContainedEntities.ToList()) + { + _container.Remove(entity); + } + + var holder = CreateTaggedHolder(entities, _target); + + entryComponent.TryInsert(holder); + + _automaticEngageToken?.Cancel(); + _automaticEngageToken = null; + + _pressure = 0; + + Engaged = false; + + UpdateVisualState(true); + UpdateInterface(); + + if (_connection != null) + { + var data = new Dictionary + { + { NetworkUtils.COMMAND, NET_CMD_SENT }, + { NET_SRC, _tag }, + { NET_TARGET, _target } + }; + + _connection.Broadcast(_connection.Frequency, data); + } + + return true; + } + + private DisposalHolderComponent CreateTaggedHolder(IReadOnlyCollection entities, string tag) + { + var holder = Owner.EntityManager.SpawnEntity(HolderPrototypeId, Owner.Transform.MapPosition); + var holderComponent = holder.GetComponent(); + + holderComponent.Tags.Add(tag); + holderComponent.Tags.Add(TAGS_MAIL); + + foreach (var entity in entities) + { + holderComponent.TryInsert(entity); + } + + return holderComponent; + } + + private void UpdateTargetList() + { + _targetList.Clear(); + var payload = new Dictionary + { + { NetworkUtils.COMMAND, NET_CMD_REQUEST } + }; + + _connection?.Broadcast(_connection.Frequency, payload); + } + + private void TryEjectContents() + { + foreach (var entity in _container.ContainedEntities.ToArray()) + { + Remove(entity); + } + } + + private void TogglePower() + { + if (!Owner.TryGetComponent(out PowerReceiverComponent? receiver)) + { + return; + } + + receiver.PowerDisabled = !receiver.PowerDisabled; + UpdateInterface(); + } + + private DisposalMailingUnitBoundUserInterfaceState GetInterfaceState() + { + string stateString; + + if (_locState.State != State) + { + stateString = Loc.GetString($"{State}"); + _locState = (State, stateString); + } + else + { + stateString = _locState.Localized; + } + + return new DisposalMailingUnitBoundUserInterfaceState(Owner.Name, stateString, _pressure, Powered, Engaged, _tag, _targetList, _target); + } + + private void UpdateInterface(bool checkEqual = true) + { + var state = GetInterfaceState(); + + if (checkEqual && _lastUiState != null && _lastUiState.Equals(state)) + { + return; + } + + _lastUiState = state; + UserInterface?.SetState((DisposalMailingUnitBoundUserInterfaceState) state.Clone()); + } + + private bool PlayerCanUse(IEntity? player) + { + if (player == null) + { + return false; + } + + if (!ActionBlockerSystem.CanInteract(player) || + !ActionBlockerSystem.CanUse(player)) + { + return false; + } + + return true; + } + + private void OnUiReceiveMessage(ServerBoundUserInterfaceMessage obj) + { + if (obj.Session.AttachedEntity == null) + { + return; + } + + if (!PlayerCanUse(obj.Session.AttachedEntity)) + { + return; + } + + if (obj.Message is UiButtonPressedMessage buttonMessage) + { + switch (buttonMessage.Button) + { + case UiButton.Eject: + TryEjectContents(); + break; + case UiButton.Engage: + ToggleEngage(); + break; + case UiButton.Power: + TogglePower(); + EntitySystem.Get().PlayFromEntity("/Audio/Machines/machine_switch.ogg", Owner, AudioParams.Default.WithVolume(-2f)); + + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + + if (obj.Message is UiTargetUpdateMessage tagMessage && TagRegex.IsMatch(tagMessage.Target)) + { + _target = tagMessage.Target; + } + } + + private void OnConfigUpdate(Dictionary config) + { + if (config.TryGetValue("Tag", out var tag)) + _tag = tag; + } + + private void UpdateVisualState() + { + UpdateVisualState(false); + } + + private void UpdateVisualState(bool flush) + { + if (!Owner.TryGetComponent(out AppearanceComponent? appearance)) + { + return; + } + + + if (!Anchored) + { + appearance.SetData(Visuals.VisualState, VisualState.UnAnchored); + appearance.SetData(Visuals.Handle, HandleState.Normal); + appearance.SetData(Visuals.Light, LightState.Off); + return; + } + else if (_pressure < 1) + { + appearance.SetData(Visuals.VisualState, VisualState.Charging); + } + else + { + appearance.SetData(Visuals.VisualState, VisualState.Anchored); + } + + appearance.SetData(Visuals.Handle, Engaged + ? HandleState.Engaged + : HandleState.Normal); + + if (!Powered) + { + appearance.SetData(Visuals.Light, LightState.Off); + return; + } + + if (flush) + { + appearance.SetData(Visuals.VisualState, VisualState.Flushing); + appearance.SetData(Visuals.Light, LightState.Off); + return; + } + + if (ContainedEntities.Count > 0) + { + appearance.SetData(Visuals.Light, LightState.Full); + return; + } + + appearance.SetData(Visuals.Light, _pressure < 1 + ? LightState.Charging + : LightState.Ready); + } + + public override void Update(float frameTime) + { + base.Update(frameTime); + if (!Powered) + { + return; + } + + var oldPressure = _pressure; + + _pressure = _pressure + frameTime > 1 + ? 1 + : _pressure + 0.05f * frameTime; + + if (oldPressure < 1 && _pressure >= 1) + { + UpdateVisualState(); + + if (Engaged) + { + TryFlush(); + } + } + + UpdateInterface(); + } + + private void PowerStateChanged(object? sender, PowerStateEventArgs args) + { + if (!args.Powered) + { + _automaticEngageToken?.Cancel(); + _automaticEngageToken = null; + } + + UpdateVisualState(); + + if (Engaged && !TryFlush()) + { + TryQueueEngage(); + } + } + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + + serializer.DataReadWriteFunction( + "pressure", + 1.0f, + pressure => _pressure = pressure, + () => _pressure); + + serializer.DataReadWriteFunction( + "automaticEngageTime", + 30, + seconds => _automaticEngageTime = TimeSpan.FromSeconds(seconds), + () => (int) _automaticEngageTime.TotalSeconds); + + serializer.DataReadWriteFunction( + "flushDelay", + 3, + seconds => _flushDelay = TimeSpan.FromSeconds(seconds), + () => (int) _flushDelay.TotalSeconds); + + serializer.DataReadWriteFunction( + "entryDelay", + 0.5f, + seconds => _entryDelay = seconds, + () => (int) _entryDelay); + + serializer.DataField(ref _tag, "Tag", ""); + } + + public override void Initialize() + { + base.Initialize(); + + _container = ContainerManagerComponent.Ensure(Name, Owner); + + if (UserInterface != null) + { + UserInterface.OnReceiveMessage += OnUiReceiveMessage; + } + + var network = IoCManager.Resolve(); + _connection = new WiredNetworkConnection(OnReceiveNetMessage, false, Owner); + + if (Owner.TryGetComponent(out var configuration)) + configuration.OnConfigUpdate += OnConfigUpdate; + + UpdateInterface(); + } + + protected override void Startup() + { + base.Startup(); + + if(!Owner.HasComponent()) + { + Logger.WarningS("VitalComponentMissing", $"Disposal unit {Owner.Uid} is missing an anchorable component"); + } + + if (Owner.TryGetComponent(out IPhysicsComponent? physics)) + { + physics.AnchoredChanged += UpdateVisualState; + } + + if (Owner.TryGetComponent(out PowerReceiverComponent? receiver)) + { + receiver.OnPowerStateChanged += PowerStateChanged; + } + + UpdateTargetList(); + UpdateVisualState(); + } + + public override void OnRemove() + { + if (Owner.TryGetComponent(out IPhysicsComponent? physics)) + { + physics.AnchoredChanged -= UpdateVisualState; + } + + if (Owner.TryGetComponent(out PowerReceiverComponent? receiver)) + { + receiver.OnPowerStateChanged -= PowerStateChanged; + } + + if (_container != null) + { + foreach (var entity in _container.ContainedEntities.ToArray()) + { + _container.ForceRemove(entity); + } + } + + UserInterface?.CloseAll(); + + _automaticEngageToken?.Cancel(); + _automaticEngageToken = null; + + _container = null!; + + _connection!.Close(); + + base.OnRemove(); + } + + public override void HandleMessage(ComponentMessage message, IComponent? component) + { + base.HandleMessage(message, component); + + switch (message) + { + case RelayMovementEntityMessage msg: + if (!msg.Entity.TryGetComponent(out HandsComponent? hands) || + hands.Count == 0 || + _gameTiming.CurTime < _lastExitAttempt + ExitAttemptDelay) + { + break; + } + + _lastExitAttempt = _gameTiming.CurTime; + Remove(msg.Entity); + break; + } + } + + private void OnReceiveNetMessage(int frequency, string sender, IReadOnlyDictionary payload, object _, bool broadcast) + { + if (payload.TryGetValue(NetworkUtils.COMMAND, out var command) && Powered) + { + if (command == NET_CMD_RESPONSE && payload.TryGetValue(NET_TAG, out var tag)) + { + _targetList.Add(tag); + UpdateInterface(false); + } + + if (command == NET_CMD_REQUEST) + { + if (_tag == "" || !Powered) + return; + + var data = new Dictionary + { + {NetworkUtils.COMMAND, NET_CMD_RESPONSE}, + {NET_TAG, _tag} + }; + + _connection?.Send(frequency, sender, data); + } + } + } + + private bool IsValidInteraction(ITargetedInteractEventArgs eventArgs) + { + if (!ActionBlockerSystem.CanInteract(eventArgs.User)) + { + Owner.PopupMessage(eventArgs.User, Loc.GetString("You can't do that!")); + return false; + } + + if (ContainerHelpers.IsInContainer(eventArgs.User)) + { + Owner.PopupMessage(eventArgs.User, Loc.GetString("You can't reach there!")); + return false; + } + // This popup message doesn't appear on clicks, even when code was seperate. Unsure why. + + if (!eventArgs.User.HasComponent()) + { + Owner.PopupMessage(eventArgs.User, Loc.GetString("You have no hands!")); + return false; + } + + return true; + } + + + bool IInteractHand.InteractHand(InteractHandEventArgs eventArgs) + { + if (!eventArgs.User.TryGetComponent(out IActorComponent? actor)) + { + return false; + } + + // Duplicated code here, not sure how else to get actor inside to make UserInterface happy. + + if (IsValidInteraction(eventArgs)) + { + UpdateTargetList(); + UpdateInterface(false); + UserInterface?.Open(actor.playerSession); + return true; + } + + return false; + } + + void IActivate.Activate(ActivateEventArgs eventArgs) + { + if (!eventArgs.User.TryGetComponent(out IActorComponent? actor)) + { + return; + } + + if (IsValidInteraction(eventArgs)) + { + UserInterface?.Open(actor.playerSession); + } + + return; + } + + + async Task IInteractUsing.InteractUsing(InteractUsingEventArgs eventArgs) + { + return TryDrop(eventArgs.User, eventArgs.Using); + } + + bool IDragDropOn.CanDragDropOn(DragDropEventArgs eventArgs) + { + return CanInsert(eventArgs.Dragged); + } + + bool IDragDropOn.DragDropOn(DragDropEventArgs eventArgs) + { + _ = TryInsert(eventArgs.Dragged, eventArgs.User); + return true; + } + + [Verb] + private sealed class SelfInsertVerb : Verb + { + protected override void GetData(IEntity user, DisposalMailingUnitComponent component, VerbData data) + { + data.Visibility = VerbVisibility.Invisible; + + if (!ActionBlockerSystem.CanInteract(user) || + component.ContainedEntities.Contains(user)) + { + return; + } + + data.Visibility = VerbVisibility.Visible; + data.Text = Loc.GetString("Jump inside"); + } + + protected override void Activate(IEntity user, DisposalMailingUnitComponent component) + { + _ = component.TryInsert(user, user); + } + } + + [Verb] + private sealed class FlushVerb : Verb + { + protected override void GetData(IEntity user, DisposalMailingUnitComponent component, VerbData data) + { + data.Visibility = VerbVisibility.Invisible; + + if (!ActionBlockerSystem.CanInteract(user) || + component.ContainedEntities.Contains(user)) + { + return; + } + + data.Visibility = VerbVisibility.Visible; + data.Text = Loc.GetString("Flush"); + } + + protected override void Activate(IEntity user, DisposalMailingUnitComponent component) + { + component.Engaged = true; + component.TryFlush(); + } + } + } +} diff --git a/Content.Server/GameObjects/Components/Disposal/DisposalUnitComponent.cs b/Content.Server/GameObjects/Components/Disposal/DisposalUnitComponent.cs index e6c9bd7389..e0e1b7d7bb 100644 --- a/Content.Server/GameObjects/Components/Disposal/DisposalUnitComponent.cs +++ b/Content.Server/GameObjects/Components/Disposal/DisposalUnitComponent.cs @@ -6,12 +6,14 @@ using System.Threading; using System.Threading.Tasks; using Content.Server.GameObjects.Components.GUI; using Content.Server.GameObjects.Components.Items.Storage; +using Content.Server.GameObjects.Components.Mobs.State; using Content.Server.GameObjects.Components.Power.ApcNetComponents; using Content.Server.GameObjects.Components.Projectiles; using Content.Server.GameObjects.EntitySystems.DoAfter; using Content.Server.Interfaces.GameObjects.Components.Items; using Content.Server.Utility; using Content.Shared.GameObjects.Components.Body; +using Content.Shared.GameObjects.Components.Damage; using Content.Shared.GameObjects.Components.Disposal; using Content.Shared.GameObjects.Components.Items; using Content.Shared.GameObjects.EntitySystems; @@ -27,6 +29,7 @@ using Robust.Shared.Audio; using Robust.Shared.Containers; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components; +using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.GameObjects.Components.Transform; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; @@ -136,10 +139,13 @@ namespace Content.Server.GameObjects.Components.Disposal return false; } + if (!entity.TryGetComponent(out IPhysicsComponent? physics) || !physics.CanCollide) { - return false; + if (!(entity.TryGetComponent(out IDamageableComponent? damageState) && damageState.CurrentState == DamageState.Dead)) { + return false; + } } if (!entity.HasComponent() && @@ -160,7 +166,7 @@ namespace Content.Server.GameObjects.Components.Disposal _automaticEngageToken = new CancellationTokenSource(); - Timer.Spawn(_automaticEngageTime, () => + Owner.SpawnTimer(_automaticEngageTime, () => { if (!TryFlush()) { @@ -255,7 +261,7 @@ namespace Content.Server.GameObjects.Components.Disposal if (Engaged && CanFlush()) { - Timer.Spawn(_flushDelay, () => TryFlush()); + Owner.SpawnTimer(_flushDelay, () => TryFlush()); } } diff --git a/Content.Server/GameObjects/Components/Doors/AirlockComponent.cs b/Content.Server/GameObjects/Components/Doors/AirlockComponent.cs index 9ec0148d28..6f0f536e2f 100644 --- a/Content.Server/GameObjects/Components/Doors/AirlockComponent.cs +++ b/Content.Server/GameObjects/Components/Doors/AirlockComponent.cs @@ -13,6 +13,7 @@ using Robust.Server.GameObjects; using Robust.Server.GameObjects.EntitySystems; using Robust.Server.Interfaces.GameObjects; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Localization; using Robust.Shared.Maths; @@ -310,7 +311,7 @@ namespace Content.Server.GameObjects.Components.Doors PowerWiresPulsed = true; _powerWiresPulsedTimerCancel.Cancel(); _powerWiresPulsedTimerCancel = new CancellationTokenSource(); - Timer.Spawn(PowerWiresTimeout, + Owner.SpawnTimer(PowerWiresTimeout, () => PowerWiresPulsed = false, _powerWiresPulsedTimerCancel.Token); break; diff --git a/Content.Server/GameObjects/Components/Doors/ServerDoorComponent.cs b/Content.Server/GameObjects/Components/Doors/ServerDoorComponent.cs index 2306b8e112..5033eea168 100644 --- a/Content.Server/GameObjects/Components/Doors/ServerDoorComponent.cs +++ b/Content.Server/GameObjects/Components/Doors/ServerDoorComponent.cs @@ -23,6 +23,7 @@ using Robust.Server.GameObjects.EntitySystems; using Robust.Shared.Audio; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components; +using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Maths; @@ -249,7 +250,7 @@ namespace Content.Server.GameObjects.Components.Doors occluder.Enabled = false; } - Timer.Spawn(OpenTimeOne, async () => + Owner.SpawnTimer(OpenTimeOne, async () => { if (Owner.TryGetComponent(out AirtightComponent? airtight)) { @@ -319,7 +320,7 @@ namespace Content.Server.GameObjects.Components.Doors stun.Paralyze(DoorStunTime); // If we hit someone, open up after stun (opens right when stun ends) - Timer.Spawn(TimeSpan.FromSeconds(DoorStunTime) - OpenTimeOne - OpenTimeTwo, Open); + Owner.SpawnTimer(TimeSpan.FromSeconds(DoorStunTime) - OpenTimeOne - OpenTimeTwo, Open); break; } } @@ -402,7 +403,7 @@ namespace Content.Server.GameObjects.Components.Doors occluder.Enabled = true; } - Timer.Spawn(CloseTimeOne, async () => + Owner.SpawnTimer(CloseTimeOne, async () => { if (shouldCheckCrush && _canCrush) { @@ -435,7 +436,7 @@ namespace Content.Server.GameObjects.Components.Doors return; SetAppearance(DoorVisualState.Deny); - Timer.Spawn(DenyTime, () => + Owner.SpawnTimer(DenyTime, () => { SetAppearance(DoorVisualState.Closed); }, _cancellationTokenSource.Token); diff --git a/Content.Server/GameObjects/Components/Fluids/PuddleComponent.cs b/Content.Server/GameObjects/Components/Fluids/PuddleComponent.cs index 8f152debec..44a08acaca 100644 --- a/Content.Server/GameObjects/Components/Fluids/PuddleComponent.cs +++ b/Content.Server/GameObjects/Components/Fluids/PuddleComponent.cs @@ -14,6 +14,7 @@ using Robust.Server.GameObjects.EntitySystems; using Robust.Server.Interfaces.GameObjects; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components; +using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.GameObjects.Components.Transform; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; @@ -254,7 +255,7 @@ namespace Content.Server.GameObjects.Components.Fluids _evaporationToken = new CancellationTokenSource(); // KYS to evaporate - Timer.Spawn(TimeSpan.FromSeconds(_evaporateTime), Evaporate, _evaporationToken.Token); + Owner.SpawnTimer(TimeSpan.FromSeconds(_evaporateTime), Evaporate, _evaporationToken.Token); } private void UpdateSlip() diff --git a/Content.Server/GameObjects/Components/GUI/HandsComponent.cs b/Content.Server/GameObjects/Components/GUI/HandsComponent.cs index f105d0278a..27246cd39f 100644 --- a/Content.Server/GameObjects/Components/GUI/HandsComponent.cs +++ b/Content.Server/GameObjects/Components/GUI/HandsComponent.cs @@ -4,12 +4,10 @@ using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Server.GameObjects.Components.Items.Storage; -using Content.Server.GameObjects.Components.Mobs; using Content.Server.GameObjects.EntitySystems.Click; using Content.Server.Interfaces.GameObjects.Components.Items; using Content.Shared.GameObjects.Components.Body.Part; using Content.Shared.GameObjects.Components.Items; -using Content.Shared.GameObjects.Components.Mobs; using Content.Shared.GameObjects.EntitySystems; using Content.Shared.Physics.Pull; using Robust.Server.GameObjects; @@ -18,7 +16,6 @@ using Robust.Server.GameObjects.EntitySystemMessages; using Robust.Shared.Containers; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components; -using Robust.Shared.GameObjects.Components.Transform; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.Network; using Robust.Shared.IoC; @@ -26,7 +23,6 @@ using Robust.Shared.Log; using Robust.Shared.Maths; using Robust.Shared.Players; using Robust.Shared.ViewVariables; -using Content.Server.GameObjects.Components.Pulling; using Robust.Shared.Map; namespace Content.Server.GameObjects.Components.GUI @@ -119,7 +115,8 @@ namespace Content.Server.GameObjects.Components.GUI : GetItem(ActiveHand); /// - /// Enumerates over the hand keys, returning the active hand first. + /// Enumerates over the enabled hand keys, + /// returning the active hand first. /// public IEnumerable ActivePriorityEnumerable() { @@ -135,6 +132,11 @@ namespace Content.Server.GameObjects.Components.GUI continue; } + if (!hand.Enabled) + { + continue; + } + yield return hand.Name; } } @@ -205,7 +207,11 @@ namespace Content.Server.GameObjects.Components.GUI if (mobCheck && !ActionBlockerSystem.CanPickup(Owner)) return false; - return GetHand(index)?.Container.CanInsert(item.Owner) == true; + var hand = GetHand(index); + + return hand != null && + hand.Enabled && + hand.Container.CanInsert(item.Owner) == true; } /// @@ -245,7 +251,7 @@ namespace Content.Server.GameObjects.Components.GUI return false; } - public bool Drop(string slot, EntityCoordinates coords, bool doMobChecks = true) + public bool Drop(string slot, EntityCoordinates coords, bool doMobChecks = true, bool doDropInteraction = true) { var hand = GetHand(slot); if (!CanDrop(slot, doMobChecks) || hand?.Entity == null) @@ -260,7 +266,7 @@ namespace Content.Server.GameObjects.Components.GUI return false; } - if (!DroppedInteraction(item, false)) + if (doDropInteraction && !DroppedInteraction(item, false)) return false; item.RemovedFromSlot(); @@ -282,7 +288,7 @@ namespace Content.Server.GameObjects.Components.GUI return true; } - public bool Drop(IEntity entity, EntityCoordinates coords, bool doMobChecks = true) + public bool Drop(IEntity entity, EntityCoordinates coords, bool doMobChecks = true, bool doDropInteraction = true) { if (entity == null) { @@ -294,15 +300,15 @@ namespace Content.Server.GameObjects.Components.GUI throw new ArgumentException("Entity must be held in one of our hands.", nameof(entity)); } - return Drop(slot, coords, doMobChecks); + return Drop(slot, coords, doMobChecks, doDropInteraction); } - public bool Drop(string slot, bool mobChecks = true) + public bool Drop(string slot, bool mobChecks = true, bool doDropInteraction = true) { - return Drop(slot, Owner.Transform.Coordinates, mobChecks); + return Drop(slot, Owner.Transform.Coordinates, mobChecks, doDropInteraction); } - public bool Drop(IEntity entity, bool mobChecks = true) + public bool Drop(IEntity entity, bool mobChecks = true, bool doDropInteraction = true) { if (entity == null) { @@ -314,10 +320,10 @@ namespace Content.Server.GameObjects.Components.GUI throw new ArgumentException("Entity must be held in one of our hands.", nameof(entity)); } - return Drop(slot, Owner.Transform.Coordinates, mobChecks); + return Drop(slot, Owner.Transform.Coordinates, mobChecks, doDropInteraction); } - public bool Drop(string slot, BaseContainer targetContainer, bool doMobChecks = true) + public bool Drop(string slot, BaseContainer targetContainer, bool doMobChecks = true, bool doDropInteraction = true) { if (slot == null) { @@ -352,7 +358,7 @@ namespace Content.Server.GameObjects.Components.GUI throw new InvalidOperationException(); } - if (!DroppedInteraction(item, doMobChecks)) + if (doDropInteraction && !DroppedInteraction(item, doMobChecks)) return false; item.RemovedFromSlot(); @@ -368,7 +374,7 @@ namespace Content.Server.GameObjects.Components.GUI return true; } - public bool Drop(IEntity entity, BaseContainer targetContainer, bool doMobChecks = true) + public bool Drop(IEntity entity, BaseContainer targetContainer, bool doMobChecks = true, bool doDropInteraction = true) { if (entity == null) { @@ -380,7 +386,7 @@ namespace Content.Server.GameObjects.Components.GUI throw new ArgumentException("Entity must be held in one of our hands.", nameof(entity)); } - return Drop(slot, targetContainer, doMobChecks); + return Drop(slot, targetContainer, doMobChecks, doDropInteraction); } /// @@ -411,7 +417,7 @@ namespace Content.Server.GameObjects.Components.GUI } var container = ContainerManagerComponent.Create($"hand {_nextHand++}", Owner); - var hand = new Hand(name, container); + var hand = new Hand(this, name, container); _hands.Add(hand); @@ -515,6 +521,53 @@ namespace Content.Server.GameObjects.Components.GUI return false; } + public override void HandleMessage(ComponentMessage message, IComponent? component) + { + base.HandleMessage(message, component); + + if (message is PullMessage pullMessage && + pullMessage.Puller.Owner != Owner) + { + return; + } + + switch (message) + { + case PullAttemptMessage msg: + if (!_hands.Any(hand => hand.Enabled)) + { + msg.Cancelled = true; + } + + break; + case PullStartedMessage _: + var firstFreeHand = _hands.FirstOrDefault(hand => hand.Enabled); + + if (firstFreeHand == null) + { + break; + } + + firstFreeHand.Enabled = false; + + break; + case PullStoppedMessage _: + var firstOccupiedHand = _hands.FirstOrDefault(hand => !hand.Enabled); + + if (firstOccupiedHand == null) + { + break; + } + + firstOccupiedHand.Enabled = true; + + break; + case HandDisabledMsg msg: + Drop(msg.Name, false); + break; + } + } + public override void HandleNetworkMessage(ComponentMessage message, INetChannel channel, ICommonSession? session = null) { base.HandleNetworkMessage(message, channel, session); @@ -625,34 +678,6 @@ namespace Content.Server.GameObjects.Components.GUI } } - private void AddPullingStatuses(IEntity pulled) - { - if (pulled.TryGetComponent(out ServerStatusEffectsComponent? pulledStatus)) - { - pulledStatus.ChangeStatusEffectIcon(StatusEffect.Pulled, - "/Textures/Interface/StatusEffects/Pull/pulled.png"); - } - - if (Owner.TryGetComponent(out ServerStatusEffectsComponent? ownerStatus)) - { - ownerStatus.ChangeStatusEffectIcon(StatusEffect.Pulling, - "/Textures/Interface/StatusEffects/Pull/pulling.png"); - } - } - - private void RemovePullingStatuses(IEntity pulled) - { - if (pulled.TryGetComponent(out ServerStatusEffectsComponent? pulledStatus)) - { - pulledStatus.RemoveStatusEffect(StatusEffect.Pulled); - } - - if (Owner.TryGetComponent(out ServerStatusEffectsComponent? ownerStatus)) - { - ownerStatus.RemoveStatusEffect(StatusEffect.Pulling); - } - } - void IBodyPartAdded.BodyPartAdded(BodyPartAddedEventArgs args) { if (args.Part.PartType != BodyPartType.Hand) @@ -676,16 +701,42 @@ namespace Content.Server.GameObjects.Components.GUI public class Hand : IDisposable { - public Hand(string name, ContainerSlot container) + private bool _enabled = true; + + public Hand(HandsComponent parent, string name, ContainerSlot container) { + Parent = parent; Name = name; Container = container; } + private HandsComponent Parent { get; } public string Name { get; } public IEntity? Entity => Container.ContainedEntity; public ContainerSlot Container { get; } + public bool Enabled + { + get => _enabled; + set + { + if (_enabled == value) + { + return; + } + + _enabled = value; + Parent.Dirty(); + + var message = value + ? (ComponentMessage) new HandEnabledMsg(Name) + : new HandDisabledMsg(Name); + + Parent.HandleMessage(message, Parent); + Parent.Owner.SendMessage(Parent, message); + } + } + public void Dispose() { Container.Shutdown(); // TODO verify this @@ -693,7 +744,7 @@ namespace Content.Server.GameObjects.Components.GUI public SharedHand ToShared(int index, HandLocation location) { - return new SharedHand(index, Name, Entity?.Uid, location); + return new SharedHand(index, Name, Entity?.Uid, location, Enabled); } } diff --git a/Content.Server/GameObjects/Components/GUI/HumanInventoryControllerComponent.cs b/Content.Server/GameObjects/Components/GUI/HumanInventoryControllerComponent.cs index d5569f8092..dc7a2a69f5 100644 --- a/Content.Server/GameObjects/Components/GUI/HumanInventoryControllerComponent.cs +++ b/Content.Server/GameObjects/Components/GUI/HumanInventoryControllerComponent.cs @@ -1,6 +1,7 @@ using Content.Server.GameObjects.Components.Items.Storage; using Robust.Server.GameObjects.Components.Container; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Localization; using Robust.Shared.Timers; @@ -67,7 +68,7 @@ namespace Content.Server.GameObjects.Components.GUI switch (message) { case ContainerContentsModifiedMessage contentsModified: - Timer.Spawn(0, DropIdAndPocketsIfWeNoLongerHaveAUniform); + Owner.SpawnTimer(0, DropIdAndPocketsIfWeNoLongerHaveAUniform); break; } } diff --git a/Content.Server/GameObjects/Components/GUI/InventoryComponent.cs b/Content.Server/GameObjects/Components/GUI/InventoryComponent.cs index 8c8edaa9cc..0a8737e993 100644 --- a/Content.Server/GameObjects/Components/GUI/InventoryComponent.cs +++ b/Content.Server/GameObjects/Components/GUI/InventoryComponent.cs @@ -156,6 +156,13 @@ namespace Content.Server.GameObjects.Components.GUI { return GetSlotItem(slot); } + + public IEnumerable LookupItems() where T: Component + { + return _slotContainers.Values.SelectMany(x => x.ContainedEntities.Select(e => e.GetComponentOrNull())) + .Where(x => x != null); + } + public T GetSlotItem(Slots slot) where T : ItemComponent { if (!_slotContainers.ContainsKey(slot)) @@ -435,7 +442,7 @@ namespace Content.Server.GameObjects.Components.GUI var activeHand = hands.GetActiveHand; if (activeHand != null && activeHand.Owner.TryGetComponent(out ItemComponent clothing)) { - hands.Drop(hands.ActiveHand); + hands.Drop(hands.ActiveHand, doDropInteraction:false); if (!Equip(msg.Inventoryslot, clothing, true, out var reason)) { hands.PutInHand(clothing); @@ -534,7 +541,7 @@ namespace Content.Server.GameObjects.Components.GUI var list = new List>(); foreach (var (slot, container) in _slotContainers) { - if (container.ContainedEntity != null) + if (container != null && container.ContainedEntity != null) { list.Add(new KeyValuePair(slot, container.ContainedEntity.Uid)); } diff --git a/Content.Server/GameObjects/Components/Instruments/InstrumentComponent.cs b/Content.Server/GameObjects/Components/Instruments/InstrumentComponent.cs index 678acf50b0..89d6ca6711 100644 --- a/Content.Server/GameObjects/Components/Instruments/InstrumentComponent.cs +++ b/Content.Server/GameObjects/Components/Instruments/InstrumentComponent.cs @@ -70,6 +70,47 @@ namespace Content.Server.GameObjects.Components.Instruments [ViewVariables] private int _midiEventCount = 0; + private byte _instrumentProgram; + private byte _instrumentBank; + private bool _allowPercussion; + private bool _allowProgramChange; + + [ViewVariables(VVAccess.ReadWrite)] + public override byte InstrumentProgram { get => _instrumentProgram; + set + { + _instrumentProgram = value; + Dirty(); + } + } + + [ViewVariables(VVAccess.ReadWrite)] + public override byte InstrumentBank { get => _instrumentBank; + set + { + _instrumentBank = value; + Dirty(); + } + } + + [ViewVariables(VVAccess.ReadWrite)] + public override bool AllowPercussion { get => _allowPercussion; + set + { + _allowPercussion = value; + Dirty(); + } + } + + [ViewVariables(VVAccess.ReadWrite)] + public override bool AllowProgramChange { get => _allowProgramChange; + set + { + _allowProgramChange = value; + Dirty(); + } + } + /// /// Whether the instrument is an item which can be held or not. /// @@ -130,11 +171,15 @@ namespace Content.Server.GameObjects.Components.Instruments { base.ExposeData(serializer); serializer.DataField(ref _handheld, "handheld", false); + serializer.DataField(ref _instrumentProgram, "program", (byte) 1); + serializer.DataField(ref _instrumentBank, "bank", (byte) 0); + serializer.DataField(ref _allowPercussion, "allowPercussion", false); + serializer.DataField(ref _allowProgramChange, "allowProgramChange", false); } public override ComponentState GetComponentState() { - return new InstrumentState(Playing, _lastSequencerTick); + return new InstrumentState(Playing, InstrumentProgram, InstrumentBank, AllowPercussion, AllowProgramChange, _lastSequencerTick); } public override void HandleNetworkMessage(ComponentMessage message, INetChannel channel, ICommonSession? session = null) diff --git a/Content.Server/GameObjects/Components/Interactable/HandheldLightComponent.cs b/Content.Server/GameObjects/Components/Interactable/HandheldLightComponent.cs index e29cdd8d2d..ea1492f14a 100644 --- a/Content.Server/GameObjects/Components/Interactable/HandheldLightComponent.cs +++ b/Content.Server/GameObjects/Components/Interactable/HandheldLightComponent.cs @@ -1,52 +1,33 @@ #nullable enable using System.Threading.Tasks; -using Content.Server.GameObjects.Components.GUI; using Content.Server.GameObjects.Components.Items.Clothing; using Content.Server.GameObjects.Components.Items.Storage; using Content.Server.GameObjects.Components.Power; -using Content.Server.Interfaces.GameObjects.Components.Items; using Content.Shared.GameObjects.Components; using Content.Shared.GameObjects.EntitySystems; -using Content.Shared.GameObjects.Verbs; using Content.Shared.Interfaces; using Content.Shared.Interfaces.GameObjects.Components; using Robust.Server.GameObjects; -using Robust.Server.GameObjects.Components.Container; using Robust.Server.GameObjects.EntitySystems; -using Robust.Server.Interfaces.GameObjects; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Localization; +using Robust.Shared.Serialization; using Robust.Shared.Utility; using Robust.Shared.ViewVariables; namespace Content.Server.GameObjects.Components.Interactable { /// - /// Component that represents a handheld lightsource which can be toggled on and off. + /// Component that represents a powered handheld light source which can be toggled on and off. /// [RegisterComponent] - internal sealed class HandheldLightComponent : SharedHandheldLightComponent, IUse, IExamine, IInteractUsing, - IMapInit + internal sealed class HandheldLightComponent : SharedHandheldLightComponent, IUse, IExamine, IInteractUsing { - [ViewVariables(VVAccess.ReadWrite)] public float Wattage { get; set; } = 10; - [ViewVariables] private ContainerSlot _cellContainer = default!; - - [ViewVariables] - private BatteryComponent? Cell - { - get - { - if (_cellContainer.ContainedEntity == null) return null; - if (_cellContainer.ContainedEntity.TryGetComponent(out BatteryComponent? cell)) - { - return cell; - } - - return null; - } - } + [ViewVariables(VVAccess.ReadWrite)] public float Wattage { get; set; } = 10f; + [ViewVariables] private PowerCellSlotComponent _cellSlot = default!; + private PowerCellComponent? Cell => _cellSlot.Cell; /// /// Status of light, whether or not it is emitting light. @@ -54,26 +35,36 @@ namespace Content.Server.GameObjects.Components.Interactable [ViewVariables] public bool Activated { get; private set; } - [ViewVariables] protected override bool HasCell => Cell != null; + [ViewVariables] protected override bool HasCell => _cellSlot.HasCell; + + [ViewVariables(VVAccess.ReadWrite)] public string? TurnOnSound; + [ViewVariables(VVAccess.ReadWrite)] public string? TurnOnFailSound; + [ViewVariables(VVAccess.ReadWrite)] public string? TurnOffSound; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(this, x => x.Wattage, "wattage", 10f); + serializer.DataField(ref TurnOnSound, "turnOnSound", "/Audio/Items/flashlight_toggle.ogg"); + serializer.DataField(ref TurnOnFailSound, "turnOnFailSound", "/Audio/Machines/button.ogg"); + serializer.DataField(ref TurnOffSound, "turnOffSound", "/Audio/Items/flashlight_toggle.ogg"); + } + + public override void Initialize() + { + base.Initialize(); + + Owner.EnsureComponent(); + _cellSlot = Owner.EnsureComponent(); + + Dirty(); + } async Task IInteractUsing.InteractUsing(InteractUsingEventArgs eventArgs) { - if (!eventArgs.Using.HasComponent()) return false; - - if (Cell != null) return false; - - var handsComponent = eventArgs.User.GetComponent(); - - if (!handsComponent.Drop(eventArgs.Using, _cellContainer)) - { - return false; - } - - EntitySystem.Get().PlayFromEntity("/Audio/Items/pistol_magin.ogg", Owner); - - + if (!ActionBlockerSystem.CanInteract(eventArgs.User)) return false; + if (!_cellSlot.InsertCell(eventArgs.Using)) return false; Dirty(); - return true; } @@ -83,6 +74,10 @@ namespace Content.Server.GameObjects.Components.Interactable { message.AddMarkup(Loc.GetString("The light is currently [color=darkgreen]on[/color].")); } + else + { + message.AddMarkup(Loc.GetString("The light is currently [color=darkred]off[/color].")); + } } bool IUse.UseEntity(UseEntityEventArgs eventArgs) @@ -90,45 +85,20 @@ namespace Content.Server.GameObjects.Components.Interactable return ToggleStatus(eventArgs.User); } - public override void Initialize() - { - base.Initialize(); - - Owner.EnsureComponent(); - _cellContainer = - ContainerManagerComponent.Ensure("flashlight_cell_container", Owner, out _); - - Dirty(); - } - /// /// Illuminates the light if it is not active, extinguishes it if it is active. /// /// True if the light's status was toggled, false otherwise. private bool ToggleStatus(IEntity user) { - var item = Owner.GetComponent(); - // Update sprite and light states to match the activation. - if (Activated) - { - TurnOff(); - item.EquippedPrefix = "off"; - } - else - { - TurnOn(user); - item.EquippedPrefix = "on"; - } - - // Toggle always succeeds. - return true; + return Activated ? TurnOff() : TurnOn(user); } - private void TurnOff(bool makeNoise = true) + private bool TurnOff(bool makeNoise = true) { if (!Activated) { - return; + return false; } SetState(false); @@ -136,40 +106,41 @@ namespace Content.Server.GameObjects.Components.Interactable if (makeNoise) { - EntitySystem.Get().PlayFromEntity("/Audio/Items/flashlight_toggle.ogg", Owner); + if (TurnOffSound != null) EntitySystem.Get().PlayFromEntity(TurnOffSound, Owner); } + + return true; } - private void TurnOn(IEntity user) + private bool TurnOn(IEntity user) { if (Activated) { - return; + return false; } - var cell = Cell; - if (cell == null) + if (Cell == null) { - EntitySystem.Get().PlayFromEntity("/Audio/Machines/button.ogg", Owner); - + if (TurnOnFailSound != null) EntitySystem.Get().PlayFromEntity(TurnOnFailSound, Owner); Owner.PopupMessage(user, Loc.GetString("Cell missing...")); - return; + return false; } // To prevent having to worry about frame time in here. // Let's just say you need a whole second of charge before you can turn it on. // Simple enough. - if (Wattage > cell.CurrentCharge) + if (Wattage > Cell.CurrentCharge) { - EntitySystem.Get().PlayFromEntity("/Audio/Machines/button.ogg", Owner); + if (TurnOnFailSound != null) EntitySystem.Get().PlayFromEntity(TurnOnFailSound, Owner); Owner.PopupMessage(user, Loc.GetString("Dead cell...")); - return; + return false; } Activated = true; SetState(true); - EntitySystem.Get().PlayFromEntity("/Audio/Items/flashlight_toggle.ogg", Owner); + if (TurnOnSound != null) EntitySystem.Get().PlayFromEntity(TurnOnSound, Owner); + return true; } private void SetState(bool on) @@ -188,11 +159,20 @@ namespace Content.Server.GameObjects.Components.Interactable { clothing.ClothingEquippedPrefix = on ? "On" : "Off"; } + + if (Owner.TryGetComponent(out ItemComponent? item)) + { + item.EquippedPrefix = on ? "on" : "off"; + } } public void OnUpdate(float frameTime) { - if (!Activated || Cell == null) return; + if (Cell == null) + { + TurnOff(false); + return; + } var appearanceComponent = Owner.GetComponent(); @@ -209,43 +189,10 @@ namespace Content.Server.GameObjects.Components.Interactable appearanceComponent.SetData(HandheldLightVisuals.Power, HandheldLightPowerStates.Dying); } - if (Cell == null || !Cell.TryUseCharge(Wattage * frameTime)) TurnOff(); - + if (Activated && !Cell.TryUseCharge(Wattage * frameTime)) TurnOff(false); Dirty(); } - private void EjectCell(IEntity user) - { - if (Cell == null) - { - return; - } - - var cell = Cell; - - if (!_cellContainer.Remove(cell.Owner)) - { - return; - } - - Dirty(); - - if (!user.TryGetComponent(out HandsComponent? hands)) - { - return; - } - - if (!hands.PutInHand(cell.Owner.GetComponent())) - { - cell.Owner.Transform.Coordinates = user.Transform.Coordinates; - } - - // Assuming the battery has just been taken out of the flashlight, make sure it's getting disabled - TurnOff(false); - - EntitySystem.Get().PlayFromEntity("/Audio/Items/pistol_magout.ogg", Owner); - } - public override ComponentState GetComponentState() { if (Cell == null) @@ -262,44 +209,5 @@ namespace Content.Server.GameObjects.Components.Interactable return new HandheldLightComponentState(Cell.CurrentCharge / Cell.MaxCharge, HasCell); } - - [Verb] - public sealed class EjectCellVerb : Verb - { - protected override void GetData(IEntity user, HandheldLightComponent component, VerbData data) - { - if (!ActionBlockerSystem.CanInteract(user)) - { - data.Visibility = VerbVisibility.Invisible; - return; - } - - if (component.Cell == null) - { - data.Text = Loc.GetString("Eject cell (cell missing)"); - data.Visibility = VerbVisibility.Disabled; - } - else - { - data.Text = Loc.GetString("Eject cell"); - } - } - - protected override void Activate(IEntity user, HandheldLightComponent component) - { - component.EjectCell(user); - } - } - - void IMapInit.MapInit() - { - if (_cellContainer.ContainedEntity != null) - { - return; - } - - var cell = Owner.EntityManager.SpawnEntity("PowerCellSmallStandard", Owner.Transform.Coordinates); - _cellContainer.Insert(cell); - } } } diff --git a/Content.Server/GameObjects/Components/Items/Storage/CursedEntityStorageComponent.cs b/Content.Server/GameObjects/Components/Items/Storage/CursedEntityStorageComponent.cs index f3068de5ce..8f8f1c4eee 100644 --- a/Content.Server/GameObjects/Components/Items/Storage/CursedEntityStorageComponent.cs +++ b/Content.Server/GameObjects/Components/Items/Storage/CursedEntityStorageComponent.cs @@ -22,7 +22,7 @@ namespace Content.Server.GameObjects.Components.Items.Storage public override string Name => "CursedEntityStorage"; - public override void CloseStorage() + protected override void CloseStorage() { base.CloseStorage(); @@ -41,7 +41,7 @@ namespace Content.Server.GameObjects.Components.Items.Storage var locker = lockerEnt.GetComponent(); if(locker.Open) - locker.CloseStorage(); + locker.TryCloseStorage(Owner); foreach (var entity in Contents.ContainedEntities.ToArray()) { diff --git a/Content.Server/GameObjects/Components/Items/Storage/EntityStorageComponent.cs b/Content.Server/GameObjects/Components/Items/Storage/EntityStorageComponent.cs index da88408b93..a99cb7e586 100644 --- a/Content.Server/GameObjects/Components/Items/Storage/EntityStorageComponent.cs +++ b/Content.Server/GameObjects/Components/Items/Storage/EntityStorageComponent.cs @@ -47,11 +47,15 @@ namespace Content.Server.GameObjects.Components.Items.Storage [ViewVariables] private bool _isCollidableWhenOpen; [ViewVariables] - private IEntityQuery _entityQuery; + protected IEntityQuery EntityQuery; + private bool _showContents; private bool _occludesLight; private bool _open; + private bool _canWeldShut; private bool _isWeldedShut; + private string _closeSound = "/Audio/Machines/closetclose.ogg"; + private string _openSound = "/Audio/Machines/closetopen.ogg"; [ViewVariables] protected Container Contents; @@ -104,14 +108,24 @@ namespace Content.Server.GameObjects.Components.Items.Storage } [ViewVariables(VVAccess.ReadWrite)] - public bool CanWeldShut { get; set; } + public bool CanWeldShut { + get => _canWeldShut; + set + { + _canWeldShut = value; + if (Owner.TryGetComponent(out AppearanceComponent appearance)) + { + appearance.SetData(StorageVisuals.CanWeld, value); + } + } + } /// public override void Initialize() { base.Initialize(); Contents = ContainerManagerComponent.Ensure(nameof(EntityStorageComponent), Owner); - _entityQuery = new IntersectingEntityQuery(Owner); + EntityQuery = new IntersectingEntityQuery(Owner); Contents.ShowContents = _showContents; Contents.OccludesLight = _occludesLight; @@ -134,6 +148,8 @@ namespace Content.Server.GameObjects.Components.Items.Storage serializer.DataField(ref _open, "open", false); serializer.DataField(this, a => a.IsWeldedShut, "IsWeldedShut", false); serializer.DataField(this, a => a.CanWeldShut, "CanWeldShut", true); + serializer.DataField(this, x => _closeSound, "closeSound", "/Audio/Machines/closetclose.ogg"); + serializer.DataField(this, x => _openSound, "openSound", "/Audio/Machines/closetopen.ogg"); } public virtual void Activate(ActivateEventArgs eventArgs) @@ -141,17 +157,26 @@ namespace Content.Server.GameObjects.Components.Items.Storage ToggleOpen(eventArgs.User); } - private void ToggleOpen(IEntity user) + public virtual bool CanOpen(IEntity user, bool silent = false) { if (IsWeldedShut) { - Owner.PopupMessage(user, Loc.GetString("It's welded completely shut!")); - return; + if(!silent) Owner.PopupMessage(user, Loc.GetString("It's welded completely shut!")); + return false; } + return true; + } + public virtual bool CanClose(IEntity user, bool silent = false) + { + return true; + } + + private void ToggleOpen(IEntity user) + { if (Open) { - CloseStorage(); + TryCloseStorage(user); } else { @@ -159,10 +184,10 @@ namespace Content.Server.GameObjects.Components.Items.Storage } } - public virtual void CloseStorage() + protected virtual void CloseStorage() { Open = false; - var entities = Owner.EntityManager.GetEntities(_entityQuery); + var entities = Owner.EntityManager.GetEntities(EntityQuery); var count = 0; foreach (var entity in entities) { @@ -187,16 +212,16 @@ namespace Content.Server.GameObjects.Components.Items.Storage } ModifyComponents(); - EntitySystem.Get().PlayFromEntity("/Audio/Machines/closetclose.ogg", Owner); + EntitySystem.Get().PlayFromEntity(_closeSound, Owner); _lastInternalOpenAttempt = default; } - private void OpenStorage() + protected virtual void OpenStorage() { Open = true; EmptyContents(); ModifyComponents(); - EntitySystem.Get().PlayFromEntity("/Audio/Machines/closetopen.ogg", Owner); + EntitySystem.Get().PlayFromEntity(_openSound, Owner); } private void ModifyComponents() @@ -224,8 +249,9 @@ namespace Content.Server.GameObjects.Components.Items.Storage } } - private bool AddToContents(IEntity entity) + protected virtual bool AddToContents(IEntity entity) { + if (entity == Owner) return false; if (entity.TryGetComponent(out IPhysicsComponent entityPhysicsComponent)) { if(MaxSize < entityPhysicsComponent.WorldAABB.Size.X @@ -247,12 +273,18 @@ namespace Content.Server.GameObjects.Components.Items.Storage return false; } + public virtual Vector2 ContentsDumpPosition() + { + return Owner.Transform.WorldPosition; + } + private void EmptyContents() { foreach (var contained in Contents.ContainedEntities.ToArray()) { if(Contents.Remove(contained)) { + contained.Transform.WorldPosition = ContentsDumpPosition(); if (contained.TryGetComponent(out var physics)) { physics.CanCollide = true; @@ -284,14 +316,18 @@ namespace Content.Server.GameObjects.Components.Items.Storage } } - protected virtual void TryOpenStorage(IEntity user) + public virtual bool TryOpenStorage(IEntity user) { - if (IsWeldedShut) - { - Owner.PopupMessage(user, Loc.GetString("It's welded completely shut!")); - return; - } + if (!CanOpen(user)) return false; OpenStorage(); + return true; + } + + public virtual bool TryCloseStorage(IEntity user) + { + if (!CanClose(user)) return false; + CloseStorage(); + return true; } /// diff --git a/Content.Server/GameObjects/Components/Items/Storage/ItemComponent.cs b/Content.Server/GameObjects/Components/Items/Storage/ItemComponent.cs index b1c5648e07..9c88a9769a 100644 --- a/Content.Server/GameObjects/Components/Items/Storage/ItemComponent.cs +++ b/Content.Server/GameObjects/Components/Items/Storage/ItemComponent.cs @@ -58,12 +58,12 @@ namespace Content.Server.GameObjects.Components.Items.Storage } } - public void Equipped(EquippedEventArgs eventArgs) + public virtual void Equipped(EquippedEventArgs eventArgs) { EquippedToSlot(); } - public void Unequipped(UnequippedEventArgs eventArgs) + public virtual void Unequipped(UnequippedEventArgs eventArgs) { RemovedFromSlot(); } diff --git a/Content.Server/GameObjects/Components/Items/Storage/SecureEntityStorageComponent.cs b/Content.Server/GameObjects/Components/Items/Storage/SecureEntityStorageComponent.cs index 9c37fd850c..1f7228d25a 100644 --- a/Content.Server/GameObjects/Components/Items/Storage/SecureEntityStorageComponent.cs +++ b/Content.Server/GameObjects/Components/Items/Storage/SecureEntityStorageComponent.cs @@ -69,15 +69,14 @@ namespace Content.Server.GameObjects.Components.Items.Storage base.Activate(eventArgs); } - protected override void TryOpenStorage(IEntity user) + public override bool CanOpen(IEntity user, bool silent = false) { if (Locked) { Owner.PopupMessage(user, "It's locked!"); - return; + return false; } - - base.TryOpenStorage(user); + return base.CanOpen(user, silent); } protected override void OpenVerbGetData(IEntity user, EntityStorageComponent component, VerbData data) diff --git a/Content.Server/GameObjects/Components/Kitchen/KitchenSpikeComponent.cs b/Content.Server/GameObjects/Components/Kitchen/KitchenSpikeComponent.cs index 324b326ac3..9bccc8c858 100644 --- a/Content.Server/GameObjects/Components/Kitchen/KitchenSpikeComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/KitchenSpikeComponent.cs @@ -23,6 +23,7 @@ namespace Content.Server.GameObjects.Components.Kitchen private string? _meatPrototype; private string _meatSource1p = "?"; private string _meatSource0 = "?"; + private string _meatName = "?"; void IActivate.Activate(ActivateEventArgs eventArgs) { @@ -38,7 +39,11 @@ namespace Content.Server.GameObjects.Components.Kitchen if (!string.IsNullOrEmpty(_meatPrototype)) { - Owner.EntityManager.SpawnEntity(_meatPrototype, Owner.Transform.Coordinates); + var meat = Owner.EntityManager.SpawnEntity(_meatPrototype, Owner.Transform.Coordinates); + if (meat != null) + { + meat.Name = _meatName; + } } if (_meatParts != 0) @@ -74,6 +79,9 @@ namespace Content.Server.GameObjects.Components.Kitchen _meatParts = 5; _meatSource1p = Loc.GetString("You remove some meat from {0:theName}.", victim); _meatSource0 = Loc.GetString("You remove the last piece of meat from {0:theName}!", victim); + // TODO: This could stand to be improved somehow, but it'd require Name to be much 'richer' in detail than it presently is. + // But Name is RobustToolbox-level, so presumably it'd have to be done in some other way (interface???) + _meatName = Loc.GetString("{0:name} meat", victim); if (Owner.TryGetComponent(out sprite)) { diff --git a/Content.Server/GameObjects/Components/Kitchen/MicrowaveComponent.cs b/Content.Server/GameObjects/Components/Kitchen/MicrowaveComponent.cs index c8ef0f671d..7a665dde13 100644 --- a/Content.Server/GameObjects/Components/Kitchen/MicrowaveComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/MicrowaveComponent.cs @@ -26,6 +26,7 @@ using Robust.Server.GameObjects.EntitySystems; using Robust.Server.Interfaces.GameObjects; using Robust.Shared.Audio; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.IoC; @@ -312,7 +313,7 @@ namespace Content.Server.GameObjects.Components.Kitchen (_currentCookTimerTime == (uint)recipeToCook.CookTime); SetAppearance(MicrowaveVisualState.Cooking); _audioSystem.PlayFromEntity(_startCookingSound, Owner, AudioParams.Default); - Timer.Spawn((int)(_currentCookTimerTime * _cookTimeMultiplier), (Action)(() => + Owner.SpawnTimer((int)(_currentCookTimerTime * _cookTimeMultiplier), (Action)(() => { if (_lostPower) { diff --git a/Content.Server/GameObjects/Components/Markers/TimedSpawnerComponent.cs b/Content.Server/GameObjects/Components/Markers/TimedSpawnerComponent.cs index a223349e16..323ffec02b 100644 --- a/Content.Server/GameObjects/Components/Markers/TimedSpawnerComponent.cs +++ b/Content.Server/GameObjects/Components/Markers/TimedSpawnerComponent.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Threading; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.Random; using Robust.Shared.IoC; @@ -67,7 +68,7 @@ namespace Content.Server.GameObjects.Components.Markers { TokenSource?.Cancel(); TokenSource = new CancellationTokenSource(); - Timer.SpawnRepeating(TimeSpan.FromSeconds(IntervalSeconds), OnTimerFired, TokenSource.Token); + Owner.SpawnRepeatingTimer(TimeSpan.FromSeconds(IntervalSeconds), OnTimerFired, TokenSource.Token); } private void OnTimerFired() diff --git a/Content.Server/GameObjects/Components/Medical/CloningPodComponent.cs b/Content.Server/GameObjects/Components/Medical/CloningPodComponent.cs index b943f6cfc1..dd41fae7ba 100644 --- a/Content.Server/GameObjects/Components/Medical/CloningPodComponent.cs +++ b/Content.Server/GameObjects/Components/Medical/CloningPodComponent.cs @@ -1,7 +1,5 @@ #nullable enable using System; -using System.Linq; -using System.Threading.Tasks; using Content.Server.GameObjects.Components.Mobs; using Content.Server.GameObjects.Components.Observer; using Content.Server.GameObjects.Components.Power.ApcNetComponents; @@ -19,6 +17,7 @@ using Robust.Server.GameObjects.Components.UserInterface; using Robust.Server.Interfaces.GameObjects; using Robust.Server.Interfaces.Player; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Maths; @@ -76,12 +75,12 @@ namespace Content.Server.GameObjects.Components.Medical HandleGhostReturn); } - public void Update(float frametime) + public void Update(float frameTime) { if (_bodyContainer.ContainedEntity != null && Powered) { - _cloningProgress += frametime; + _cloningProgress += frameTime; _cloningProgress = MathHelper.Clamp(_cloningProgress, 0f, _cloningTime); } @@ -122,7 +121,9 @@ namespace Content.Server.GameObjects.Components.Medical private CloningPodBoundUserInterfaceState GetUserInterfaceState() { - return new CloningPodBoundUserInterfaceState(CloningSystem.getIdToUser(), _cloningProgress, + var idToUser = EntitySystem.Get().GetIdToUser(); + + return new CloningPodBoundUserInterfaceState(idToUser, _cloningProgress, (_status == CloningPodStatus.Cloning)); } @@ -152,11 +153,12 @@ namespace Content.Server.GameObjects.Components.Medical switch (message.Button) { case UiButton.Clone: - if (message.ScanId == null) return; + var cloningSystem = EntitySystem.Get(); + if (_bodyContainer.ContainedEntity != null || - !CloningSystem.Minds.TryGetValue(message.ScanId.Value, out var mind)) + !cloningSystem.Minds.TryGetValue(message.ScanId.Value, out var mind)) { return; } diff --git a/Content.Server/GameObjects/Components/Medical/MedicalScannerComponent.cs b/Content.Server/GameObjects/Components/Medical/MedicalScannerComponent.cs index 33ce3f5c8b..5f395d2c36 100644 --- a/Content.Server/GameObjects/Components/Medical/MedicalScannerComponent.cs +++ b/Content.Server/GameObjects/Components/Medical/MedicalScannerComponent.cs @@ -20,6 +20,7 @@ using Robust.Server.GameObjects.Components.UserInterface; using Robust.Server.Interfaces.GameObjects; using Robust.Server.Interfaces.Player; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.Timing; using Robust.Shared.IoC; @@ -126,9 +127,12 @@ namespace Content.Server.GameObjects.Components.Medical return new MedicalScannerBoundUserInterfaceState(body.Uid, classes, types, true); } + var cloningSystem = EntitySystem.Get(); + var scanned = _bodyContainer.ContainedEntity.TryGetComponent(out MindComponent? mindComponent) && + mindComponent.Mind != null && + cloningSystem.HasDnaScan(mindComponent.Mind); - return new MedicalScannerBoundUserInterfaceState(body.Uid, classes, types, - CloningSystem.HasDnaScan(_bodyContainer.ContainedEntity.GetComponent().Mind)); + return new MedicalScannerBoundUserInterfaceState(body.Uid, classes, types, scanned); } private void UpdateUserInterface() @@ -261,7 +265,8 @@ namespace Content.Server.GameObjects.Components.Medical if (_bodyContainer.ContainedEntity != null) { //TODO: Show a 'ERROR: Body is completely devoid of soul' if no Mind owns the entity. - CloningSystem.AddToDnaScans(_playerManager + var cloningSystem = EntitySystem.Get(); + cloningSystem.AddToDnaScans(_playerManager .GetPlayersBy(playerSession => { var mindOwnedMob = playerSession.ContentData()?.Mind?.OwnedEntity; diff --git a/Content.Server/GameObjects/Components/Mobs/MindComponent.cs b/Content.Server/GameObjects/Components/Mobs/MindComponent.cs index 05c9ec8fbe..8ae15d2640 100644 --- a/Content.Server/GameObjects/Components/Mobs/MindComponent.cs +++ b/Content.Server/GameObjects/Components/Mobs/MindComponent.cs @@ -9,6 +9,7 @@ using Content.Shared.GameObjects.Components.Damage; using Content.Shared.GameObjects.EntitySystems; using Robust.Server.GameObjects.Components.UserInterface; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.Map; using Robust.Shared.IoC; @@ -135,7 +136,7 @@ namespace Content.Server.GameObjects.Components.Mobs else { var spawnPosition = Owner.Transform.Coordinates; - Timer.Spawn(0, () => + Owner.SpawnTimer(0, () => { // Async this so that we don't throw if the grid we're on is being deleted. var mapMan = IoCManager.Resolve(); diff --git a/Content.Server/GameObjects/Components/Mobs/ServerStatusEffectsComponent.cs b/Content.Server/GameObjects/Components/Mobs/ServerStatusEffectsComponent.cs index 8ae619e9f7..8715fdb3d7 100644 --- a/Content.Server/GameObjects/Components/Mobs/ServerStatusEffectsComponent.cs +++ b/Content.Server/GameObjects/Components/Mobs/ServerStatusEffectsComponent.cs @@ -2,8 +2,8 @@ using System.Collections.Generic; using Content.Server.GameObjects.Components.Atmos; using Content.Server.GameObjects.Components.Buckle; -using Content.Server.GameObjects.Components.GUI; using Content.Server.GameObjects.Components.Movement; +using Content.Server.GameObjects.EntitySystems; using Content.Shared.GameObjects.Components.Mobs; using Content.Shared.GameObjects.Components.Pulling; using Content.Shared.GameObjects.EntitySystems; @@ -23,6 +23,22 @@ namespace Content.Server.GameObjects.Components.Mobs [ViewVariables] private readonly Dictionary _statusEffects = new Dictionary(); + public override IReadOnlyDictionary Statuses => _statusEffects; + + protected override void Startup() + { + base.Startup(); + + EntitySystem.Get().AddStatus(this); + } + + public override void OnRemove() + { + EntitySystem.Get().RemoveStatus(this); + + base.OnRemove(); + } + public override ComponentState GetComponentState() { return new StatusEffectComponentState(_statusEffects); diff --git a/Content.Server/GameObjects/Components/Mobs/State/CriticalState.cs b/Content.Server/GameObjects/Components/Mobs/State/CriticalState.cs index 4592a90f51..0adea20dde 100644 --- a/Content.Server/GameObjects/Components/Mobs/State/CriticalState.cs +++ b/Content.Server/GameObjects/Components/Mobs/State/CriticalState.cs @@ -38,8 +38,6 @@ namespace Content.Server.GameObjects.Components.Mobs.State public override void ExitState(IEntity entity) { - EntitySystem.Get().Standing(entity); - if (entity.TryGetComponent(out ServerOverlayEffectsComponent overlay)) { overlay.ClearOverlays(); diff --git a/Content.Server/GameObjects/Components/Mobs/State/DeadState.cs b/Content.Server/GameObjects/Components/Mobs/State/DeadState.cs index 5c19d0a872..9fc2428975 100644 --- a/Content.Server/GameObjects/Components/Mobs/State/DeadState.cs +++ b/Content.Server/GameObjects/Components/Mobs/State/DeadState.cs @@ -44,8 +44,6 @@ namespace Content.Server.GameObjects.Components.Mobs.State public override void ExitState(IEntity entity) { - EntitySystem.Get().Standing(entity); - if (entity.TryGetComponent(out IPhysicsComponent physics)) { physics.CanCollide = true; diff --git a/Content.Server/GameObjects/Components/Mobs/State/NormalState.cs b/Content.Server/GameObjects/Components/Mobs/State/NormalState.cs index a2416447f7..6b8eb4aab3 100644 --- a/Content.Server/GameObjects/Components/Mobs/State/NormalState.cs +++ b/Content.Server/GameObjects/Components/Mobs/State/NormalState.cs @@ -1,10 +1,10 @@ -using Content.Server.GameObjects.Components.Body; -using Content.Server.GameObjects.Components.Damage; -using Content.Shared.GameObjects.Components.Body; +using Content.Server.GameObjects.Components.Damage; +using Content.Server.GameObjects.EntitySystems; using Content.Shared.GameObjects.Components.Damage; using Content.Shared.GameObjects.Components.Mobs; using Content.Shared.GameObjects.Components.Mobs.State; using Robust.Server.GameObjects; +using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; namespace Content.Server.GameObjects.Components.Mobs.State @@ -13,6 +13,8 @@ namespace Content.Server.GameObjects.Components.Mobs.State { public override void EnterState(IEntity entity) { + EntitySystem.Get().Standing(entity); + if (entity.TryGetComponent(out AppearanceComponent appearance)) { appearance.SetData(DamageStateVisuals.State, DamageState.Alive); diff --git a/Content.Server/GameObjects/Components/Mobs/StunnableComponent.cs b/Content.Server/GameObjects/Components/Mobs/StunnableComponent.cs index 5b23d16e9c..1af15ecce2 100644 --- a/Content.Server/GameObjects/Components/Mobs/StunnableComponent.cs +++ b/Content.Server/GameObjects/Components/Mobs/StunnableComponent.cs @@ -5,6 +5,7 @@ using Content.Shared.GameObjects.Components.Movement; using Content.Shared.Interfaces.GameObjects.Components; using NFluidsynth; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.Timing; using Robust.Shared.IoC; @@ -101,7 +102,7 @@ namespace Content.Server.GameObjects.Components.Mobs if (progress >= length) { - Timer.Spawn(250, () => status.RemoveStatusEffect(StatusEffect.Stun), StatusRemoveCancellation.Token); + Owner.SpawnTimer(250, () => status.RemoveStatusEffect(StatusEffect.Stun), StatusRemoveCancellation.Token); LastStun = null; } } diff --git a/Content.Server/GameObjects/Components/Morgue/BodyBagEntityStorageComponent.cs b/Content.Server/GameObjects/Components/Morgue/BodyBagEntityStorageComponent.cs new file mode 100644 index 0000000000..ef3e1bb8d3 --- /dev/null +++ b/Content.Server/GameObjects/Components/Morgue/BodyBagEntityStorageComponent.cs @@ -0,0 +1,123 @@ +#nullable enable +using Content.Server.GameObjects.Components.GUI; +using Content.Server.GameObjects.Components.Items.Storage; +using Content.Server.GameObjects.Components.Paper; +using Content.Server.GameObjects.EntitySystems; +using Content.Server.Interfaces.GameObjects.Components.Items; +using Content.Shared.GameObjects.Components.Body; +using Content.Shared.GameObjects.Components.Morgue; +using Content.Shared.GameObjects.EntitySystems; +using Content.Shared.GameObjects.Verbs; +using Content.Shared.Interfaces; +using Content.Shared.Interfaces.GameObjects.Components; +using Robust.Server.GameObjects; +using Robust.Server.GameObjects.Components.Container; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.ComponentDependencies; +using Robust.Shared.GameObjects.Systems; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Localization; +using Robust.Shared.Utility; +using Robust.Shared.ViewVariables; +using System.Threading.Tasks; + +namespace Content.Server.GameObjects.Components.Morgue +{ + [RegisterComponent] + [ComponentReference(typeof(EntityStorageComponent))] + [ComponentReference(typeof(IActivate))] + [ComponentReference(typeof(IStorageComponent))] + public class BodyBagEntityStorageComponent : EntityStorageComponent, IExamine, IInteractUsing + { + public override string Name => "BodyBagEntityStorage"; + + [ViewVariables] + [ComponentDependency] private AppearanceComponent? _appearance = null; + + [ViewVariables] public ContainerSlot? LabelContainer { get; private set; } + + public override void Initialize() + { + base.Initialize(); + _appearance?.SetData(BodyBagVisuals.Label, false); + LabelContainer = ContainerManagerComponent.Ensure("body_bag_label", Owner, out _); + } + + protected override bool AddToContents(IEntity entity) + { + if (entity.HasComponent() && !EntitySystem.Get().IsDown(entity)) return false; + return base.AddToContents(entity); + } + + void IExamine.Examine(FormattedMessage message, bool inDetailsRange) + { + if (inDetailsRange) + { + if (LabelContainer?.ContainedEntity != null && LabelContainer.ContainedEntity.TryGetComponent(out var paper)) + { + message.AddText(Loc.GetString("The label reads: {0}", paper.Content)); + } + } + } + + async Task IInteractUsing.InteractUsing(InteractUsingEventArgs eventArgs) + { + if (LabelContainer == null) return false; + + if (LabelContainer.ContainedEntity != null) + { + Owner.PopupMessage(eventArgs.User, Loc.GetString("There's already a label attached.")); + return false; + } + + var handsComponent = eventArgs.User.GetComponent(); + if (!handsComponent.Drop(eventArgs.Using, LabelContainer)) + { + return false; + } + + _appearance?.SetData(BodyBagVisuals.Label, true); + + Owner.PopupMessage(eventArgs.User, Loc.GetString("You attach {0:theName} to the body bag.", eventArgs.Using)); + return true; + } + + public void RemoveLabel(IEntity user) + { + if (LabelContainer == null) return; + + if (user.TryGetComponent(out HandsComponent? hands)) + { + hands.PutInHandOrDrop(LabelContainer.ContainedEntity.GetComponent()); + _appearance?.SetData(BodyBagVisuals.Label, false); + } + else if (LabelContainer.Remove(LabelContainer.ContainedEntity)) + { + LabelContainer.ContainedEntity.Transform.Coordinates = Owner.Transform.Coordinates; + _appearance?.SetData(BodyBagVisuals.Label, false); + } + } + + + [Verb] + private sealed class RemoveLabelVerb : Verb + { + protected override void GetData(IEntity user, BodyBagEntityStorageComponent component, VerbData data) + { + if (!ActionBlockerSystem.CanInteract(user) || component.LabelContainer?.ContainedEntity == null) + { + data.Visibility = VerbVisibility.Invisible; + return; + } + + data.Text = Loc.GetString("Remove label"); + } + + /// + protected override void Activate(IEntity user, BodyBagEntityStorageComponent component) + { + component.RemoveLabel(user); + } + } + } +} diff --git a/Content.Server/GameObjects/Components/Morgue/CrematoriumEntityStorageComponent.cs b/Content.Server/GameObjects/Components/Morgue/CrematoriumEntityStorageComponent.cs new file mode 100644 index 0000000000..761c64561c --- /dev/null +++ b/Content.Server/GameObjects/Components/Morgue/CrematoriumEntityStorageComponent.cs @@ -0,0 +1,104 @@ +#nullable enable +using Content.Server.GameObjects.Components.Items.Storage; +using Content.Shared.GameObjects.Components.Morgue; +using Content.Shared.GameObjects.EntitySystems; +using Content.Shared.GameObjects.Verbs; +using Content.Shared.Interfaces.GameObjects.Components; +using Robust.Server.GameObjects.EntitySystems; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Systems; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Localization; +using Robust.Shared.Timers; +using Robust.Shared.Utility; +using Robust.Shared.ViewVariables; + +namespace Content.Server.GameObjects.Components.Morgue +{ + [RegisterComponent] + [ComponentReference(typeof(MorgueEntityStorageComponent))] + [ComponentReference(typeof(EntityStorageComponent))] + [ComponentReference(typeof(IActivate))] + [ComponentReference(typeof(IStorageComponent))] + public class CrematoriumEntityStorageComponent : MorgueEntityStorageComponent, IExamine + { + public override string Name => "CrematoriumEntityStorage"; + + [ViewVariables] + public bool Cooking { get; private set; } + + [ViewVariables(VVAccess.ReadWrite)] + private int _burnMilis = 3000; + + void IExamine.Examine(FormattedMessage message, bool inDetailsRange) + { + if (Appearance == null) return; + + if (inDetailsRange) + { + if (Appearance.TryGetData(CrematoriumVisuals.Burning, out bool isBurning) && isBurning) + { + message.AddMarkup(Loc.GetString("The {0:theName} is [color=red]active[/color]!\n", Owner)); + } + + if (Appearance.TryGetData(MorgueVisuals.HasContents, out bool hasContents) && hasContents) + { + message.AddMarkup(Loc.GetString("The content light is [color=green]on[/color], there's something in here.")); + } + else + { + message.AddText(Loc.GetString("The content light is off, there's nothing in here.")); + } + } + } + + public void Cremate() + { + if (Cooking) return; + + Appearance?.SetData(CrematoriumVisuals.Burning, true); + Cooking = true; + + Timer.Spawn(_burnMilis, () => + { + Appearance?.SetData(CrematoriumVisuals.Burning, false); + Cooking = false; + + for (var i = Contents.ContainedEntities.Count - 1; i >= 0; i--) + { + var item = Contents.ContainedEntities[i]; + Contents.Remove(item); + item.Delete(); + } + + var ash = Owner.EntityManager.SpawnEntity("Ash", Owner.Transform.Coordinates); + Contents.Insert(ash); + + TryOpenStorage(Owner); + + EntitySystem.Get().PlayFromEntity("/Audio/Machines/ding.ogg", Owner); + }); + } + + [Verb] + private sealed class CremateVerb : Verb + { + protected override void GetData(IEntity user, CrematoriumEntityStorageComponent component, VerbData data) + { + if (!ActionBlockerSystem.CanInteract(user) || component.Cooking) + { + data.Visibility = VerbVisibility.Invisible; + return; + } + + data.Text = Loc.GetString("Cremate"); + } + + /// + protected override void Activate(IEntity user, CrematoriumEntityStorageComponent component) + { + component.Cremate(); + } + } + } +} diff --git a/Content.Server/GameObjects/Components/Morgue/MorgueEntityStorageComponent.cs b/Content.Server/GameObjects/Components/Morgue/MorgueEntityStorageComponent.cs new file mode 100644 index 0000000000..2dd2b6673f --- /dev/null +++ b/Content.Server/GameObjects/Components/Morgue/MorgueEntityStorageComponent.cs @@ -0,0 +1,178 @@ +#nullable enable +using Content.Server.GameObjects.Components.Items.Storage; +using Content.Server.GameObjects.EntitySystems; +using Content.Shared.GameObjects.Components.Body; +using Content.Shared.GameObjects.Components.Morgue; +using Content.Shared.GameObjects.EntitySystems; +using Content.Shared.Interfaces; +using Content.Shared.Interfaces.GameObjects.Components; +using Content.Shared.Physics; +using Content.Shared.Utility; +using Robust.Server.GameObjects; +using Robust.Server.GameObjects.Components.Container; +using Robust.Server.GameObjects.EntitySystems; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.ComponentDependencies; +using Robust.Shared.GameObjects.Systems; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Localization; +using Robust.Shared.Maths; +using Robust.Shared.Serialization; +using Robust.Shared.Utility; +using Robust.Shared.ViewVariables; + +namespace Content.Server.GameObjects.Components.Morgue +{ + [RegisterComponent] + [ComponentReference(typeof(EntityStorageComponent))] + [ComponentReference(typeof(IActivate))] + [ComponentReference(typeof(IStorageComponent))] + public class MorgueEntityStorageComponent : EntityStorageComponent, IExamine + { + public override string Name => "MorgueEntityStorage"; + + [ViewVariables(VVAccess.ReadWrite)] + private string? _trayPrototypeId; + + [ViewVariables] + private IEntity? _tray; + + [ViewVariables] + public ContainerSlot? TrayContainer { get; private set; } + + [ViewVariables(VVAccess.ReadWrite)] + public bool DoSoulBeep = true; + + [ViewVariables] + [ComponentDependency] protected readonly AppearanceComponent? Appearance = null; + + + public override void Initialize() + { + base.Initialize(); + Appearance?.SetData(MorgueVisuals.Open, false); + TrayContainer = ContainerManagerComponent.Ensure("morgue_tray", Owner, out _); + } + + /// + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _trayPrototypeId, "trayPrototype", ""); + serializer.DataField(ref DoSoulBeep, "doSoulBeep", true); + } + + public override Vector2 ContentsDumpPosition() + { + if (_tray != null) return _tray.Transform.WorldPosition; + return base.ContentsDumpPosition(); + } + + protected override bool AddToContents(IEntity entity) + { + if (entity.HasComponent() && !EntitySystem.Get().IsDown(entity)) return false; + return base.AddToContents(entity); + } + + public override bool CanOpen(IEntity user, bool silent = false) + { + if (!Owner.InRangeUnobstructed( + Owner.Transform.Coordinates.Offset(Owner.Transform.LocalRotation.GetCardinalDir()), + collisionMask: CollisionGroup.Impassable | CollisionGroup.VaultImpassable + )) + { + if(!silent) Owner.PopupMessage(user, Loc.GetString("There's no room for the tray to extend!")); + return false; + } + + return base.CanOpen(user, silent); + } + + protected override void OpenStorage() + { + Appearance?.SetData(MorgueVisuals.Open, true); + Appearance?.SetData(MorgueVisuals.HasContents, false); + Appearance?.SetData(MorgueVisuals.HasMob, false); + Appearance?.SetData(MorgueVisuals.HasSoul, false); + + if (_tray == null) + { + _tray = Owner.EntityManager.SpawnEntity(_trayPrototypeId, Owner.Transform.Coordinates); + var trayComp = _tray.EnsureComponent(); + trayComp.Morgue = Owner; + EntityQuery = new IntersectingEntityQuery(_tray); + } + else + { + TrayContainer?.Remove(_tray); + } + + _tray.Transform.WorldPosition = Owner.Transform.WorldPosition + Owner.Transform.LocalRotation.GetCardinalDir().ToVec(); + _tray.Transform.AttachParent(Owner); + + base.OpenStorage(); + } + + private void CheckContents() + { + var count = 0; + var hasMob = false; + var hasSoul = false; + foreach (var entity in Contents.ContainedEntities) + { + count++; + if (!hasMob && entity.HasComponent()) hasMob = true; + if (!hasSoul && entity.TryGetComponent(out var actor) && actor.playerSession != null) hasSoul = true; + } + Appearance?.SetData(MorgueVisuals.HasContents, count > 0); + Appearance?.SetData(MorgueVisuals.HasMob, hasMob); + Appearance?.SetData(MorgueVisuals.HasSoul, hasSoul); + } + + protected override void CloseStorage() + { + base.CloseStorage(); + + Appearance?.SetData(MorgueVisuals.Open, false); + CheckContents(); + + if (_tray != null) + { + TrayContainer?.Insert(_tray); + } + } + + //Called every 10 seconds + public void Update() + { + CheckContents(); + + if(DoSoulBeep && Appearance !=null && Appearance.TryGetData(MorgueVisuals.HasSoul, out bool hasSoul) && hasSoul) + EntitySystem.Get().PlayFromEntity("/Audio/Weapons/Guns/EmptyAlarm/smg_empty_alarm.ogg", Owner); + } + + void IExamine.Examine(FormattedMessage message, bool inDetailsRange) + { + if (Appearance == null) return; + + if (inDetailsRange) + { + if (Appearance.TryGetData(MorgueVisuals.HasSoul, out bool hasSoul) && hasSoul) + { + message.AddMarkup(Loc.GetString("The content light is [color=green]green[/color], this body might still be saved!")); + } + else if (Appearance.TryGetData(MorgueVisuals.HasMob, out bool hasMob) && hasMob) + { + message.AddMarkup(Loc.GetString("The content light is [color=red]red[/color], there's a dead body in here! Oh wait...")); + } + else if (Appearance.TryGetData(MorgueVisuals.HasContents, out bool hasContents) && hasContents) + { + message.AddMarkup(Loc.GetString("The content light is [color=yellow]yellow[/color], there's something in here.")); + } else + { + message.AddMarkup(Loc.GetString("The content light is off, there's nothing in here.")); + } + } + } + } +} diff --git a/Content.Server/GameObjects/Components/Morgue/MorgueTrayComponent.cs b/Content.Server/GameObjects/Components/Morgue/MorgueTrayComponent.cs new file mode 100644 index 0000000000..7e314b7c37 --- /dev/null +++ b/Content.Server/GameObjects/Components/Morgue/MorgueTrayComponent.cs @@ -0,0 +1,29 @@ +using Content.Shared.Interfaces.GameObjects.Components; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.ViewVariables; + +namespace Content.Server.GameObjects.Components.Morgue +{ + [RegisterComponent] + [ComponentReference(typeof(IActivate))] + public class MorgueTrayComponent : Component, IActivate + { + public override string Name => "MorgueTray"; + + [ViewVariables] + public IEntity Morgue { get; set; } + + void IActivate.Activate(ActivateEventArgs eventArgs) + { + if(Morgue != null && !Morgue.Deleted && Morgue.TryGetComponent(out var comp)) + { + comp.Activate(new ActivateEventArgs() + { + User = eventArgs.User, + Target = Morgue + }); + } + } + } +} diff --git a/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/INodeGroup.cs b/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/INodeGroup.cs index e57ce1db5d..c193922a7b 100644 --- a/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/INodeGroup.cs +++ b/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/INodeGroup.cs @@ -25,7 +25,7 @@ namespace Content.Server.GameObjects.Components.NodeContainer.NodeGroups void RemakeGroup(); } - [NodeGroup(NodeGroupID.Default)] + [NodeGroup(NodeGroupID.Default, NodeGroupID.WireNet)] public class BaseNodeGroup : INodeGroup { [ViewVariables] diff --git a/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/NodeGroupFactory.cs b/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/NodeGroupFactory.cs index 81e21dae26..26559fbd23 100644 --- a/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/NodeGroupFactory.cs +++ b/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/NodeGroupFactory.cs @@ -64,5 +64,6 @@ Apc, AMEngine, Pipe, + WireNet } } diff --git a/Content.Server/GameObjects/Components/PA/ParticleAcceleratorControlBoxComponent.cs b/Content.Server/GameObjects/Components/PA/ParticleAcceleratorControlBoxComponent.cs new file mode 100644 index 0000000000..a2f5c122d3 --- /dev/null +++ b/Content.Server/GameObjects/Components/PA/ParticleAcceleratorControlBoxComponent.cs @@ -0,0 +1,724 @@ +#nullable enable +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; +using System.Threading; +using Content.Server.GameObjects.Components.Power.ApcNetComponents; +using Content.Server.GameObjects.Components.Power.PowerNetComponents; +using Content.Server.GameObjects.Components.VendingMachines; +using Content.Server.Utility; +using Content.Shared.GameObjects.Components; +using Content.Shared.GameObjects.EntitySystems; +using Content.Shared.Interfaces.GameObjects.Components; +using Robust.Server.GameObjects; +using Robust.Server.GameObjects.Components.UserInterface; +using Robust.Server.Interfaces.GameObjects; +using Robust.Shared.GameObjects; +using Robust.Shared.Localization; +using Robust.Shared.Log; +using Robust.Shared.Maths; +using Robust.Shared.Serialization; +using Robust.Shared.Utility; +using Robust.Shared.ViewVariables; +using static Content.Shared.GameObjects.Components.SharedWiresComponent; +using Timer = Robust.Shared.Timers.Timer; + +namespace Content.Server.GameObjects.Components.PA +{ + // This component is in control of the PA's logic because it's the one to contain the wires for hacking. + // And also it's the only PA component that meaningfully needs to work on its own. + /// + /// Is the computer thing people interact with to control the PA. + /// Also contains primary logic for actual PA behavior, part scanning, etc... + /// + [ComponentReference(typeof(IActivate))] + [RegisterComponent] + public class ParticleAcceleratorControlBoxComponent : ParticleAcceleratorPartComponent, IActivate, IWires + { + public override string Name => "ParticleAcceleratorControlBox"; + + [ViewVariables] + private BoundUserInterface? UserInterface => Owner.GetUIOrNull(ParticleAcceleratorControlBoxUiKey.Key); + + /// + /// Power receiver for the control console itself. + /// + [ViewVariables] private PowerReceiverComponent? _powerReceiverComponent; + + [ViewVariables] private ParticleAcceleratorFuelChamberComponent? _partFuelChamber; + [ViewVariables] private ParticleAcceleratorEndCapComponent? _partEndCap; + [ViewVariables] private ParticleAcceleratorPowerBoxComponent? _partPowerBox; + [ViewVariables] private ParticleAcceleratorEmitterComponent? _partEmitterLeft; + [ViewVariables] private ParticleAcceleratorEmitterComponent? _partEmitterCenter; + [ViewVariables] private ParticleAcceleratorEmitterComponent? _partEmitterRight; + [ViewVariables] private ParticleAcceleratorPowerState _selectedStrength = ParticleAcceleratorPowerState.Standby; + + [ViewVariables] private bool _isAssembled; + + // Enabled: power switch is on + [ViewVariables] private bool _isEnabled; + + // Powered: power switch is on AND the PA is actively firing (if not on standby) + [ViewVariables] private bool _isPowered; + [ViewVariables] private bool _wireInterfaceBlocked; + [ViewVariables] private bool _wirePowerBlocked; + [ViewVariables] private bool _wireLimiterCut; + [ViewVariables] private bool _wireStrengthCut; + [ViewVariables] private CancellationTokenSource? _fireCancelTokenSrc; + + /// + /// Delay between consecutive PA shots. + /// + [ViewVariables(VVAccess.ReadWrite)] private TimeSpan _firingDelay; + + [ViewVariables(VVAccess.ReadWrite)] private int _powerDrawBase; + [ViewVariables(VVAccess.ReadWrite)] private int _powerDrawMult; + + [ViewVariables] private bool ConsolePowered => _powerReceiverComponent?.Powered ?? true; + + public ParticleAcceleratorControlBoxComponent() + { + Master = this; + } + + private ParticleAcceleratorPowerState MaxPower => _wireLimiterCut + ? ParticleAcceleratorPowerState.Level3 + : ParticleAcceleratorPowerState.Level2; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + + // Fun fact: + // On /vg/station (can't check TG because lol they removed singulo), + // the PA emitter parts have var/fire_delay = 50. + // For anybody from the future not BYOND-initiated, that's 5 seconds. + // However, /obj/machinery/particle_accelerator/control_box/process(), + // which calls emit_particle() on the emitters, + // only gets called every *2* seconds, because of CarnMC timing. + // So the *actual* effective firing delay of the PA is 6 seconds, not 5 as listed in the code. + // So... + // I have reflected that here to be authentic. + serializer.DataField(ref _firingDelay, "fireDelay", TimeSpan.FromSeconds(6)); + serializer.DataField(ref _powerDrawBase, "powerDrawBase", 500); + serializer.DataField(ref _powerDrawMult, "powerDrawMult", 1500); + } + + public override void Initialize() + { + base.Initialize(); + if (UserInterface != null) + { + UserInterface.OnReceiveMessage += UserInterfaceOnOnReceiveMessage; + } + + if (!Owner.TryGetComponent(out _powerReceiverComponent)) + { + Logger.Error("ParticleAcceleratorControlBox was created without PowerReceiverComponent"); + return; + } + + _powerReceiverComponent.OnPowerStateChanged += OnPowerStateChanged; + _powerReceiverComponent.Load = 250; + } + + protected override void Startup() + { + base.Startup(); + + UpdateWireStatus(); + } + + // This is the power state for the PA control box itself. + // Keep in mind that the PA itself can keep firing as long as the HV cable under the power box has... power. + private void OnPowerStateChanged(object? sender, PowerStateEventArgs e) + { + UpdateAppearance(); + + if (!e.Powered) + { + UserInterface?.CloseAll(); + } + } + + private void UserInterfaceOnOnReceiveMessage(ServerBoundUserInterfaceMessage obj) + { + if (!ConsolePowered) + { + return; + } + + + if (obj.Session.AttachedEntity == null || + !ActionBlockerSystem.CanInteract(obj.Session.AttachedEntity)) + { + return; + } + + if (_wireInterfaceBlocked) + { + return; + } + + switch (obj.Message) + { + case ParticleAcceleratorSetEnableMessage enableMessage: + if (enableMessage.Enabled) + { + SwitchOn(); + } + else + { + SwitchOff(); + } + + break; + + case ParticleAcceleratorSetPowerStateMessage stateMessage: + SetStrength(stateMessage.State); + break; + + case ParticleAcceleratorRescanPartsMessage _: + RescanParts(); + break; + } + + UpdateUI(); + } + + public void UpdateUI() + { + var draw = 0; + var receive = 0; + + if (_isEnabled) + { + draw = _partPowerBox!.PowerConsumerComponent!.DrawRate; + receive = _partPowerBox!.PowerConsumerComponent!.ReceivedPower; + } + + var state = new ParticleAcceleratorUIState( + _isAssembled, + _isEnabled, + _selectedStrength, + draw, + receive, + _partEmitterLeft != null, + _partEmitterCenter != null, + _partEmitterRight != null, + _partPowerBox != null, + _partFuelChamber != null, + _partEndCap != null, + _wireInterfaceBlocked, + MaxPower, + _wirePowerBlocked); + + UserInterface?.SetState(state); + } + + void IActivate.Activate(ActivateEventArgs eventArgs) + { + if (!eventArgs.User.TryGetComponent(out IActorComponent? actor)) + { + return; + } + + if (Owner.TryGetComponent(out var wires) && wires.IsPanelOpen) + { + wires.OpenInterface(actor.playerSession); + } + else + { + if (!ConsolePowered) + { + return; + } + + UserInterface?.Toggle(actor.playerSession); + UpdateUI(); + } + } + + public override void OnRemove() + { + UserInterface?.CloseAll(); + base.OnRemove(); + } + + void IWires.RegisterWires(WiresComponent.WiresBuilder builder) + { + builder.CreateWire(ParticleAcceleratorControlBoxWires.Toggle); + builder.CreateWire(ParticleAcceleratorControlBoxWires.Strength); + builder.CreateWire(ParticleAcceleratorControlBoxWires.Interface); + builder.CreateWire(ParticleAcceleratorControlBoxWires.Limiter); + builder.CreateWire(ParticleAcceleratorControlBoxWires.Nothing); + } + + public void WiresUpdate(WiresUpdateEventArgs args) + { + switch (args.Identifier) + { + case ParticleAcceleratorControlBoxWires.Toggle: + if (args.Action == WiresAction.Pulse) + { + if (_isEnabled) + { + SwitchOff(); + } + else + { + SwitchOn(); + } + } + else + { + _wirePowerBlocked = args.Action == WiresAction.Cut; + if (_isEnabled) + { + SwitchOff(); + } + } + + break; + + case ParticleAcceleratorControlBoxWires.Strength: + if (args.Action == WiresAction.Pulse) + { + SetStrength(_selectedStrength + 1); + } + else + { + _wireStrengthCut = args.Action == WiresAction.Cut; + } + + break; + + case ParticleAcceleratorControlBoxWires.Interface: + if (args.Action == WiresAction.Pulse) + { + _wireInterfaceBlocked ^= true; + } + else + { + _wireInterfaceBlocked = args.Action == WiresAction.Cut; + } + + break; + + case ParticleAcceleratorControlBoxWires.Limiter: + if (args.Action == WiresAction.Pulse) + { + Owner.PopupMessageEveryone(Loc.GetString("The control box makes a whirring noise.")); + } + else + { + _wireLimiterCut = args.Action == WiresAction.Cut; + if (_selectedStrength == ParticleAcceleratorPowerState.Level3 && !_wireLimiterCut) + { + // Yes, it's a feature that mending this wire WON'T WORK if the strength wire is also cut. + // Since that blocks SetStrength(). + SetStrength(ParticleAcceleratorPowerState.Level2); + } + } + + break; + } + + UpdateUI(); + UpdateWireStatus(); + } + + private void UpdateWireStatus() + { + if (!Owner.TryGetComponent(out WiresComponent? wires)) + { + return; + } + + var powerBlock = _wirePowerBlocked; + var keyboardLight = new StatusLightData(Color.Green, + _wireInterfaceBlocked + ? StatusLightState.BlinkingFast + : StatusLightState.On, + "KEYB"); + + var powerLight = new StatusLightData( + Color.Yellow, + powerBlock ? StatusLightState.Off : StatusLightState.On, + "POWR"); + + var limiterLight = new StatusLightData( + _wireLimiterCut ? Color.Purple : Color.Teal, + StatusLightState.On, + "LIMT"); + + var strengthLight = new StatusLightData( + Color.Blue, + _wireStrengthCut ? StatusLightState.BlinkingSlow : StatusLightState.On, + "STRC"); + + wires.SetStatus(ParticleAcceleratorWireStatus.Keyboard, keyboardLight); + wires.SetStatus(ParticleAcceleratorWireStatus.Power, powerLight); + wires.SetStatus(ParticleAcceleratorWireStatus.Limiter, limiterLight); + wires.SetStatus(ParticleAcceleratorWireStatus.Strength, strengthLight); + } + + public void RescanParts() + { + SwitchOff(); + foreach (var part in AllParts()) + { + part.Master = null; + } + + _isAssembled = false; + _partFuelChamber = null; + _partEndCap = null; + _partPowerBox = null; + _partEmitterLeft = null; + _partEmitterCenter = null; + _partEmitterRight = null; + + // Find fuel chamber first by scanning cardinals. + if (SnapGrid != null) + { + foreach (var maybeFuel in SnapGrid.GetCardinalNeighborCells()) + { + if (maybeFuel.Owner.TryGetComponent(out _partFuelChamber)) + { + break; + } + } + } + + if (_partFuelChamber == null) + { + UpdateUI(); + return; + } + + // Align ourselves to match fuel chamber orientation. + // This means that if you mess up the orientation of the control box it's not a big deal, + // because the sprite is far from obvious about the orientation. + Owner.Transform.LocalRotation = _partFuelChamber.Owner.Transform.LocalRotation; + + var offsetEndCap = RotateOffset((1, 1)); + var offsetPowerBox = RotateOffset((1, -1)); + var offsetEmitterLeft = RotateOffset((0, -2)); + var offsetEmitterCenter = RotateOffset((1, -2)); + var offsetEmitterRight = RotateOffset((2, -2)); + + ScanPart(offsetEndCap, out _partEndCap); + ScanPart(offsetPowerBox, out _partPowerBox); + + if (!ScanPart(offsetEmitterCenter, out _partEmitterCenter) || + _partEmitterCenter.Type != ParticleAcceleratorEmitterType.Center) + { + // if it's the wrong type we need to clear this to avoid shenanigans. + _partEmitterCenter = null; + } + + if (ScanPart(offsetEmitterLeft, out _partEmitterLeft) && + _partEmitterLeft.Type != ParticleAcceleratorEmitterType.Left) + { + _partEmitterLeft = null; + } + + if (ScanPart(offsetEmitterRight, out _partEmitterRight) && + _partEmitterRight.Type != ParticleAcceleratorEmitterType.Right) + { + _partEmitterRight = null; + } + + _isAssembled = _partFuelChamber != null && + _partPowerBox != null && + _partEmitterCenter != null && + _partEmitterLeft != null && + _partEmitterRight != null && + _partEndCap != null; + + foreach (var part in AllParts()) + { + part.Master = this; + } + + UpdateUI(); + + Vector2i RotateOffset(in Vector2i vec) + { + var rot = new Angle(Owner.Transform.LocalRotation + Math.PI / 2); + return (Vector2i) rot.RotateVec(vec); + } + } + + private bool ScanPart(Vector2i offset, [NotNullWhen(true)] out T? part) + where T : ParticleAcceleratorPartComponent + { + foreach (var ent in SnapGrid!.GetOffset(offset)) + { + if (ent.TryGetComponent(out part) && !part.Deleted) + { + return true; + } + } + + part = default; + return false; + } + + private IEnumerable AllParts() + { + if (_partFuelChamber != null) + yield return _partFuelChamber; + if (_partEndCap != null) + yield return _partEndCap; + if (_partPowerBox != null) + yield return _partPowerBox; + if (_partEmitterLeft != null) + yield return _partEmitterLeft; + if (_partEmitterCenter != null) + yield return _partEmitterCenter; + if (_partEmitterRight != null) + yield return _partEmitterRight; + } + + private void SwitchOn() + { + DebugTools.Assert(_isAssembled); + + if (_isEnabled) + { + return; + } + + _isEnabled = true; + UpdatePowerDraw(); + // If we don't have power yet we'll turn on when we receive more power from the powernet. + // if we do we'll just go and turn on right now. + if (_partPowerBox!.PowerConsumerComponent!.ReceivedPower >= _partPowerBox.PowerConsumerComponent.DrawRate) + { + PowerOn(); + } + + UpdateUI(); + } + + private void UpdatePowerDraw() + { + _partPowerBox!.PowerConsumerComponent!.DrawRate = PowerDrawFor(_selectedStrength); + } + + private void SwitchOff() + { + _isEnabled = false; + PowerOff(); + UpdateUI(); + } + + private void PowerOn() + { + DebugTools.Assert(_isEnabled); + DebugTools.Assert(_isAssembled); + + if (_isPowered) + { + return; + } + + _isPowered = true; + UpdateFiring(); + UpdatePartVisualStates(); + UpdateUI(); + } + + private void PowerOff() + { + if (!_isPowered) + { + return; + } + + _isPowered = false; + UpdateFiring(); + UpdateUI(); + UpdatePartVisualStates(); + } + + private void SetStrength(ParticleAcceleratorPowerState state) + { + if (_wireStrengthCut) + { + return; + } + + state = (ParticleAcceleratorPowerState) MathHelper.Clamp( + (int) state, + (int) ParticleAcceleratorPowerState.Standby, + (int) MaxPower); + + _selectedStrength = state; + UpdateAppearance(); + UpdatePartVisualStates(); + + if (_isEnabled) + { + UpdatePowerDraw(); + UpdateFiring(); + } + } + + private void UpdateAppearance() + { + if (Owner.TryGetComponent(out AppearanceComponent? appearance)) + { + appearance.SetData(ParticleAcceleratorVisuals.VisualState, + _powerReceiverComponent!.Powered + ? (ParticleAcceleratorVisualState) _selectedStrength + : ParticleAcceleratorVisualState.Unpowered); + } + } + + private void UpdateFiring() + { + if (!_isPowered || _selectedStrength == ParticleAcceleratorPowerState.Standby) + { + StopFiring(); + } + else + { + StartFiring(); + } + } + + private void StartFiring() + { + EverythingIsWellToFire(); + + _fireCancelTokenSrc?.Cancel(); + _fireCancelTokenSrc = new CancellationTokenSource(); + var cancelToken = _fireCancelTokenSrc.Token; + Timer.SpawnRepeating(_firingDelay, Fire, cancelToken); + } + + private void Fire() + { + EverythingIsWellToFire(); + + _partEmitterCenter!.Fire(_selectedStrength); + _partEmitterLeft!.Fire(_selectedStrength); + _partEmitterRight!.Fire(_selectedStrength); + } + + [Conditional("DEBUG")] + private void EverythingIsWellToFire() + { + DebugTools.Assert(!Deleted); + DebugTools.Assert(_isPowered); + DebugTools.Assert(_selectedStrength != ParticleAcceleratorPowerState.Standby); + DebugTools.Assert(_isAssembled); + DebugTools.Assert(_partEmitterCenter != null); + DebugTools.Assert(_partEmitterLeft != null); + DebugTools.Assert(_partEmitterRight != null); + } + + private void StopFiring() + { + _fireCancelTokenSrc?.Cancel(); + _fireCancelTokenSrc = null; + } + + private int PowerDrawFor(ParticleAcceleratorPowerState strength) + { + return strength switch + { + ParticleAcceleratorPowerState.Standby => 0, + ParticleAcceleratorPowerState.Level0 => 1, + ParticleAcceleratorPowerState.Level1 => 3, + ParticleAcceleratorPowerState.Level2 => 4, + ParticleAcceleratorPowerState.Level3 => 5, + _ => 0 + } * _powerDrawMult + _powerDrawBase; + } + + public void PowerBoxReceivedChanged(object? sender, ReceivedPowerChangedEventArgs eventArgs) + { + DebugTools.Assert(_isAssembled); + + if (!_isEnabled) + { + return; + } + + var isPowered = eventArgs.ReceivedPower >= eventArgs.DrawRate; + if (isPowered) + { + PowerOn(); + } + else + { + PowerOff(); + } + + UpdateUI(); + } + + private void UpdatePartVisualStates() + { + // UpdatePartVisualState(ControlBox); + UpdatePartVisualState(_partFuelChamber); + UpdatePartVisualState(_partPowerBox); + UpdatePartVisualState(_partEmitterCenter); + UpdatePartVisualState(_partEmitterLeft); + UpdatePartVisualState(_partEmitterRight); + //no endcap because it has no powerlevel-sprites + } + + private void UpdatePartVisualState(ParticleAcceleratorPartComponent? component) + { + if (component == null || !component.Owner.TryGetComponent(out var appearanceComponent)) + { + return; + } + + var state = _isPowered + ? (ParticleAcceleratorVisualState) _selectedStrength + : ParticleAcceleratorVisualState.Unpowered; + appearanceComponent.SetData(ParticleAcceleratorVisuals.VisualState, state); + } + + public override void Rotated() + { + // We rotate OURSELVES when scanning for parts, so don't actually run rescan on rotate. + // That would be silly. + } + + public enum ParticleAcceleratorControlBoxWires + { + /// + /// Pulse toggles Power. Cut permanently turns off until Mend. + /// + Toggle, + + /// + /// Pulsing increases level until at limit. + /// + Strength, + + /// + /// Pulsing toggles Button-Disabled on UI. Cut disables, Mend enables. + /// + Interface, + + /// + /// Pulsing will produce short message about whirring noise. Cutting increases the max level to 3. Mending reduces it back to 2. + /// + Limiter, + + /// + /// Does Nothing + /// + Nothing + } + } +} diff --git a/Content.Server/GameObjects/Components/PA/ParticleAcceleratorEmitterComponent.cs b/Content.Server/GameObjects/Components/PA/ParticleAcceleratorEmitterComponent.cs new file mode 100644 index 0000000000..dd7643d3ff --- /dev/null +++ b/Content.Server/GameObjects/Components/PA/ParticleAcceleratorEmitterComponent.cs @@ -0,0 +1,50 @@ +using Content.Shared.GameObjects.Components; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.IoC; +using Robust.Shared.Log; +using Robust.Shared.Serialization; + +namespace Content.Server.GameObjects.Components.PA +{ + [RegisterComponent] + [ComponentReference(typeof(ParticleAcceleratorPartComponent))] + public class ParticleAcceleratorEmitterComponent : ParticleAcceleratorPartComponent + { + [Dependency] private IEntityManager _entityManager = null!; + + public override string Name => "ParticleAcceleratorEmitter"; + public ParticleAcceleratorEmitterType Type; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + + serializer.DataField(ref Type, "emitterType", ParticleAcceleratorEmitterType.Center); + } + + public void Fire(ParticleAcceleratorPowerState strength) + { + var projectile = _entityManager.SpawnEntity("ParticlesProjectile", Owner.Transform.Coordinates); + + if (!projectile.TryGetComponent(out var particleProjectileComponent)) + { + Logger.Error("ParticleAcceleratorEmitter tried firing particles, but they was spawned without a ParticleProjectileComponent"); + return; + } + particleProjectileComponent.Fire(strength, Owner.Transform.WorldRotation, Owner); + } + + public override string ToString() + { + return base.ToString() + $" EmitterType:{Type}"; + } + } + + public enum ParticleAcceleratorEmitterType + { + Left, + Center, + Right + } +} diff --git a/Content.Server/GameObjects/Components/PA/ParticleAcceleratorEndCapComponent.cs b/Content.Server/GameObjects/Components/PA/ParticleAcceleratorEndCapComponent.cs new file mode 100644 index 0000000000..e62bbde893 --- /dev/null +++ b/Content.Server/GameObjects/Components/PA/ParticleAcceleratorEndCapComponent.cs @@ -0,0 +1,11 @@ +using Robust.Shared.GameObjects; + +namespace Content.Server.GameObjects.Components.PA +{ + [RegisterComponent] + [ComponentReference(typeof(ParticleAcceleratorPartComponent))] + public class ParticleAcceleratorEndCapComponent : ParticleAcceleratorPartComponent + { + public override string Name => "ParticleAcceleratorEndCap"; + } +} diff --git a/Content.Server/GameObjects/Components/PA/ParticleAcceleratorFuelChamberComponent.cs b/Content.Server/GameObjects/Components/PA/ParticleAcceleratorFuelChamberComponent.cs new file mode 100644 index 0000000000..ee3e18a348 --- /dev/null +++ b/Content.Server/GameObjects/Components/PA/ParticleAcceleratorFuelChamberComponent.cs @@ -0,0 +1,11 @@ +using Robust.Shared.GameObjects; + +namespace Content.Server.GameObjects.Components.PA +{ + [RegisterComponent] + [ComponentReference(typeof(ParticleAcceleratorPartComponent))] + public class ParticleAcceleratorFuelChamberComponent : ParticleAcceleratorPartComponent + { + public override string Name => "ParticleAcceleratorFuelChamber"; + } +} diff --git a/Content.Server/GameObjects/Components/PA/ParticleAcceleratorPartComponent.cs b/Content.Server/GameObjects/Components/PA/ParticleAcceleratorPartComponent.cs new file mode 100644 index 0000000000..3f078cd71f --- /dev/null +++ b/Content.Server/GameObjects/Components/PA/ParticleAcceleratorPartComponent.cs @@ -0,0 +1,58 @@ +#nullable enable +using Content.Server.Utility; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components; +using Robust.Shared.GameObjects.Components.Transform; +using Robust.Shared.Log; +using Robust.Shared.ViewVariables; + +namespace Content.Server.GameObjects.Components.PA +{ + public abstract class ParticleAcceleratorPartComponent : Component + { + [ViewVariables] private PhysicsComponent? _collidableComponent; + [ViewVariables] public ParticleAcceleratorControlBoxComponent? Master; + [ViewVariables] protected SnapGridComponent? SnapGrid; + + public override void Initialize() + { + base.Initialize(); + // FIXME: this has to be an entity system, full stop. + if (!Owner.TryGetComponent(out _collidableComponent)) + { + Logger.Error("ParticleAcceleratorPartComponent created with no CollidableComponent"); + } + else + { + _collidableComponent.AnchoredChanged += OnAnchorChanged; + } + + if (!Owner.TryGetComponent(out SnapGrid)) + { + Logger.Error("ParticleAcceleratorControlBox was created without SnapGridComponent"); + } + } + + public void OnAnchorChanged() + { + RescanIfPossible(); + } + + public override void OnRemove() + { + base.OnRemove(); + + RescanIfPossible(); + } + + private void RescanIfPossible() + { + Master?.RescanParts(); + } + + public virtual void Rotated() + { + RescanIfPossible(); + } + } +} diff --git a/Content.Server/GameObjects/Components/PA/ParticleAcceleratorPowerBoxComponent.cs b/Content.Server/GameObjects/Components/PA/ParticleAcceleratorPowerBoxComponent.cs new file mode 100644 index 0000000000..4736c34a03 --- /dev/null +++ b/Content.Server/GameObjects/Components/PA/ParticleAcceleratorPowerBoxComponent.cs @@ -0,0 +1,33 @@ +#nullable enable +using Content.Server.GameObjects.Components.Power.PowerNetComponents; +using Robust.Shared.GameObjects; +using Robust.Shared.Log; +using Robust.Shared.ViewVariables; + +namespace Content.Server.GameObjects.Components.PA +{ + [RegisterComponent] + [ComponentReference(typeof(ParticleAcceleratorPartComponent))] + public class ParticleAcceleratorPowerBoxComponent : ParticleAcceleratorPartComponent + { + public override string Name => "ParticleAcceleratorPowerBox"; + [ViewVariables] public PowerConsumerComponent? PowerConsumerComponent; + + public override void Initialize() + { + base.Initialize(); + if (Owner.TryGetComponent(out PowerConsumerComponent)) + { + PowerConsumerComponent.OnReceivedPowerChanged += PowerReceivedChanged; + return; + } + + Logger.Error($"ParticleAcceleratorPowerBoxComponent Component initialized without PowerConsumerComponent."); + } + + private void PowerReceivedChanged(object? sender, ReceivedPowerChangedEventArgs e) + { + Master?.PowerBoxReceivedChanged(sender, e); + } + } +} diff --git a/Content.Server/GameObjects/Components/PA/ParticleProjectileComponent.cs b/Content.Server/GameObjects/Components/PA/ParticleProjectileComponent.cs new file mode 100644 index 0000000000..5f24db47f7 --- /dev/null +++ b/Content.Server/GameObjects/Components/PA/ParticleProjectileComponent.cs @@ -0,0 +1,94 @@ +using System; +using Content.Server.GameObjects.Components.Projectiles; +using Content.Server.GameObjects.Components.Singularity; +using Content.Shared.GameObjects.Components; +using Content.Shared.Physics; +using Robust.Server.GameObjects; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Log; +using Robust.Shared.Maths; +using Robust.Shared.Timers; + +namespace Content.Server.GameObjects.Components.PA +{ + [RegisterComponent] + public class ParticleProjectileComponent : Component, ICollideBehavior + { + public override string Name => "ParticleProjectile"; + private ParticleAcceleratorPowerState _state; + public void CollideWith(IEntity collidedWith) + { + if (collidedWith.TryGetComponent(out var singularityComponent)) + { + var multiplier = _state switch + { + ParticleAcceleratorPowerState.Standby => 0, + ParticleAcceleratorPowerState.Level0 => 1, + ParticleAcceleratorPowerState.Level1 => 3, + ParticleAcceleratorPowerState.Level2 => 6, + ParticleAcceleratorPowerState.Level3 => 10, + _ => 0 + }; + singularityComponent.Energy += 10 * multiplier; + Owner.Delete(); + }else if (collidedWith.TryGetComponent(out var singularityGeneratorComponent) + ) + { + singularityGeneratorComponent.Power += _state switch + { + ParticleAcceleratorPowerState.Standby => 0, + ParticleAcceleratorPowerState.Level0 => 1, + ParticleAcceleratorPowerState.Level1 => 2, + ParticleAcceleratorPowerState.Level2 => 4, + ParticleAcceleratorPowerState.Level3 => 8, + _ => 0 + }; + Owner.Delete(); + } + } + + public void Fire(ParticleAcceleratorPowerState state, Angle angle, IEntity firer) + { + _state = state; + + if (!Owner.TryGetComponent(out var physicsComponent)) + { + Logger.Error("ParticleProjectile tried firing, but it was spawned without a CollidableComponent"); + return; + } + physicsComponent.Status = BodyStatus.InAir; + + if (!Owner.TryGetComponent(out var projectileComponent)) + { + Logger.Error("ParticleProjectile tried firing, but it was spawned without a ProjectileComponent"); + return; + } + projectileComponent.IgnoreEntity(firer); + + var suffix = state switch + { + ParticleAcceleratorPowerState.Level0 => "0", + ParticleAcceleratorPowerState.Level1 => "1", + ParticleAcceleratorPowerState.Level2 => "2", + ParticleAcceleratorPowerState.Level3 => "3", + _ => "0" + }; + + if (!Owner.TryGetComponent(out var spriteComponent)) + { + Logger.Error("ParticleProjectile tried firing, but it was spawned without a SpriteComponent"); + return; + } + spriteComponent.LayerSetState(0, $"particle{suffix}"); + + physicsComponent + .EnsureController() + .LinearVelocity = angle.ToVec() * 20f; + + Owner.Transform.LocalRotation = new Angle(angle + Angle.FromDegrees(180)); + Timer.Spawn(3000, () => Owner.Delete()); + } + } +} diff --git a/Content.Server/GameObjects/Components/Paper/PaperComponent.cs b/Content.Server/GameObjects/Components/Paper/PaperComponent.cs index 3070172259..10e3dd0c6e 100644 --- a/Content.Server/GameObjects/Components/Paper/PaperComponent.cs +++ b/Content.Server/GameObjects/Components/Paper/PaperComponent.cs @@ -16,8 +16,8 @@ namespace Content.Server.GameObjects.Components.Paper [RegisterComponent] public class PaperComponent : SharedPaperComponent, IExamine, IInteractUsing, IUse { - private string _content = ""; private PaperAction _mode; + public string Content { get; private set; } = ""; [ViewVariables] private BoundUserInterface? UserInterface => Owner.GetUIOrNull(PaperUiKey.Key); @@ -35,7 +35,7 @@ namespace Content.Server.GameObjects.Components.Paper } private void UpdateUserInterface() { - UserInterface?.SetState(new PaperBoundUserInterfaceState(_content, _mode)); + UserInterface?.SetState(new PaperBoundUserInterfaceState(Content, _mode)); } public void Examine(FormattedMessage message, bool inDetailsRange) @@ -43,7 +43,7 @@ namespace Content.Server.GameObjects.Components.Paper if (!inDetailsRange) return; - message.AddMarkup(_content); + message.AddMarkup(Content); } public bool UseEntity(UseEntityEventArgs eventArgs) @@ -63,7 +63,7 @@ namespace Content.Server.GameObjects.Components.Paper if (string.IsNullOrEmpty(msg.Text)) return; - _content += msg.Text + '\n'; + Content += msg.Text + '\n'; if (Owner.TryGetComponent(out SpriteComponent? sprite)) { diff --git a/Content.Server/GameObjects/Components/Portal/PortalComponent.cs b/Content.Server/GameObjects/Components/Portal/PortalComponent.cs index f177e5bd7a..8f352f83a4 100644 --- a/Content.Server/GameObjects/Components/Portal/PortalComponent.cs +++ b/Content.Server/GameObjects/Components/Portal/PortalComponent.cs @@ -6,6 +6,7 @@ using Robust.Server.GameObjects; using Robust.Server.GameObjects.EntitySystems; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components; +using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Serialization; @@ -58,7 +59,7 @@ namespace Content.Server.GameObjects.Components.Portal if (_aliveTime > 0) { - Timer.Spawn(TimeSpan.FromSeconds(_aliveTime), () => Owner.Delete()); + Owner.SpawnTimer(TimeSpan.FromSeconds(_aliveTime), () => Owner.Delete()); } } @@ -138,7 +139,7 @@ namespace Content.Server.GameObjects.Components.Portal otherPortal.TryChangeState(PortalState.RecentlyTeleported); - Timer.Spawn(TimeSpan.FromSeconds(_overallPortalCooldown), () => + Owner.SpawnTimer(TimeSpan.FromSeconds(_overallPortalCooldown), () => { _onCooldown = false; TryChangeState(PortalState.Pending); @@ -168,7 +169,7 @@ namespace Content.Server.GameObjects.Components.Portal // To stop spam teleporting. Could potentially look at adding a timer to flush this from the portal ImmuneEntities.Add(entity); _connectingTeleporter.GetComponent().ImmuneEntities.Add(entity); - Timer.Spawn(TimeSpan.FromSeconds(_individualPortalCooldown), () => ReleaseCooldown(entity)); + Owner.SpawnTimer(TimeSpan.FromSeconds(_individualPortalCooldown), () => ReleaseCooldown(entity)); StartCooldown(); } diff --git a/Content.Server/GameObjects/Components/Portal/TeleporterComponent.cs b/Content.Server/GameObjects/Components/Portal/TeleporterComponent.cs index a704f7565f..cc0f0bf0c9 100644 --- a/Content.Server/GameObjects/Components/Portal/TeleporterComponent.cs +++ b/Content.Server/GameObjects/Components/Portal/TeleporterComponent.cs @@ -8,6 +8,7 @@ using Robust.Server.GameObjects.EntitySystems; using Robust.Server.Interfaces.GameObjects; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components; +using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.Random; @@ -125,14 +126,14 @@ namespace Content.Server.GameObjects.Components.Portal return; } - Timer.Spawn(TimeSpan.FromSeconds(_chargeTime), () => Teleport(user, mapCoords.Position)); + Owner.SpawnTimer(TimeSpan.FromSeconds(_chargeTime), () => Teleport(user, mapCoords.Position)); StartCooldown(); } public void StartCooldown() { SetState(ItemTeleporterState.Cooldown); - Timer.Spawn(TimeSpan.FromSeconds(_chargeTime + _cooldown), () => SetState(ItemTeleporterState.Off)); + Owner.SpawnTimer(TimeSpan.FromSeconds(_chargeTime + _cooldown), () => SetState(ItemTeleporterState.Off)); if (_cooldownSound != null) { var soundPlayer = EntitySystem.Get(); @@ -212,7 +213,7 @@ namespace Content.Server.GameObjects.Components.Portal } // Seemed easier to just start the cd timer at the same time - Timer.Spawn(TimeSpan.FromSeconds(_chargeTime), () => Teleport(user, targetVector)); + Owner.SpawnTimer(TimeSpan.FromSeconds(_chargeTime), () => Teleport(user, targetVector)); StartCooldown(); } diff --git a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerProviderComponent.cs b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerProviderComponent.cs index 4b53fcec71..f462b3f3a0 100644 --- a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerProviderComponent.cs +++ b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerProviderComponent.cs @@ -2,10 +2,8 @@ using System.Collections.Generic; using System.Linq; using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; -using Robust.Server.Interfaces.GameObjects; using Robust.Shared.GameObjects; -using Robust.Shared.Interfaces.Map; -using Robust.Shared.IoC; +using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Serialization; using Robust.Shared.ViewVariables; @@ -19,6 +17,8 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents void AddReceiver(PowerReceiverComponent receiver); void RemoveReceiver(PowerReceiverComponent receiver); + + public IEntity ProviderOwner { get; } } [RegisterComponent] @@ -26,6 +26,8 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents { public override string Name => "PowerProvider"; + public IEntity ProviderOwner => Owner; + /// /// The max distance this can transmit power to s from. /// @@ -126,6 +128,7 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents { public void AddReceiver(PowerReceiverComponent receiver) { } public void RemoveReceiver(PowerReceiverComponent receiver) { } + public IEntity ProviderOwner => default; } } } diff --git a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverComponent.cs b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverComponent.cs index a6e924e4f0..c84c416a04 100644 --- a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverComponent.cs +++ b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverComponent.cs @@ -8,7 +8,6 @@ using Robust.Server.Interfaces.GameObjects; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.ComponentDependencies; using Robust.Shared.GameObjects.Components; -using Robust.Shared.Interfaces.Map; using Robust.Shared.IoC; using Robust.Shared.Localization; using Robust.Shared.Serialization; @@ -234,7 +233,7 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents public void Examine(FormattedMessage message, bool inDetailsRange) { - message.AddMarkup(Loc.GetString("It appears to be {0}.", this.Powered ? "[color=darkgreen]powered[/color]" : "[color=darkred]un-powered[/color]")); + message.AddMarkup(Loc.GetString("It appears to be {0}.", Powered ? "[color=darkgreen]powered[/color]" : "[color=darkred]un-powered[/color]")); } } diff --git a/Content.Server/GameObjects/Components/Power/BatteryComponent.cs b/Content.Server/GameObjects/Components/Power/BatteryComponent.cs index e6224bf4bf..887f9420f0 100644 --- a/Content.Server/GameObjects/Components/Power/BatteryComponent.cs +++ b/Content.Server/GameObjects/Components/Power/BatteryComponent.cs @@ -11,14 +11,28 @@ namespace Content.Server.GameObjects.Components.Power { public override string Name => "Battery"; + /// + /// Maximum charge of the battery in joules (ie. watt seconds) + /// [ViewVariables(VVAccess.ReadWrite)] public int MaxCharge { get => _maxCharge; set => SetMaxCharge(value); } private int _maxCharge; + /// + /// Current charge of the battery in joules (ie. watt seconds) + /// [ViewVariables(VVAccess.ReadWrite)] public float CurrentCharge { get => _currentCharge; set => SetCurrentCharge(value); } - private float _currentCharge; + /// + /// True if the battery is fully charged. + /// + [ViewVariables] public bool IsFullyCharged => MathHelper.CloseTo(CurrentCharge, MaxCharge); + + [ViewVariables(VVAccess.ReadWrite)] public bool AutoRecharge { get; set; } + + [ViewVariables(VVAccess.ReadWrite)] public float AutoRechargeRate { get; set; } + [ViewVariables] public BatteryState BatteryState { get; private set; } public override void ExposeData(ObjectSerializer serializer) @@ -26,6 +40,8 @@ namespace Content.Server.GameObjects.Components.Power base.ExposeData(serializer); serializer.DataField(ref _maxCharge, "maxCharge", 1000); serializer.DataField(ref _currentCharge, "startingCharge", 500); + serializer.DataField(this, x => x.AutoRecharge, "autoRecharge", false); + serializer.DataField(this, x => x.AutoRechargeRate, "autoRechargeRate", 0); } public override void Initialize() @@ -75,7 +91,7 @@ namespace Content.Server.GameObjects.Components.Power private void UpdateStorageState() { - if (CurrentCharge == MaxCharge) + if (IsFullyCharged) { BatteryState = BatteryState.Full; } @@ -103,6 +119,13 @@ namespace Content.Server.GameObjects.Components.Power UpdateStorageState(); OnChargeChanged(); } + + public void OnUpdate(float frameTime) + { + if (!AutoRecharge) return; + if (IsFullyCharged) return; + CurrentCharge += AutoRechargeRate * frameTime; + } } public enum BatteryState diff --git a/Content.Server/GameObjects/Components/Power/PowerCellComponent.cs b/Content.Server/GameObjects/Components/Power/PowerCellComponent.cs index 4165b82fbe..9241536250 100644 --- a/Content.Server/GameObjects/Components/Power/PowerCellComponent.cs +++ b/Content.Server/GameObjects/Components/Power/PowerCellComponent.cs @@ -1,18 +1,33 @@ using Content.Shared.GameObjects.Components.Power; +using Content.Shared.GameObjects.EntitySystems; using Robust.Server.GameObjects; using Robust.Shared.GameObjects; +using Robust.Shared.Localization; +using Robust.Shared.Serialization; +using Robust.Shared.Utility; +using Robust.Shared.ViewVariables; namespace Content.Server.GameObjects.Components.Power { /// - /// Batteries that have update an based on their charge percent. + /// Batteries that can update an based on their charge percent + /// and fit into a of the appropriate size. /// [RegisterComponent] [ComponentReference(typeof(BatteryComponent))] - public class PowerCellComponent : BatteryComponent + public class PowerCellComponent : BatteryComponent, IExamine { public override string Name => "PowerCell"; + [ViewVariables] public PowerCellSize CellSize => _cellSize; + private PowerCellSize _cellSize = PowerCellSize.Small; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _cellSize, "cellSize", PowerCellSize.Small); + } + public override void Initialize() { base.Initialize(); @@ -33,5 +48,20 @@ namespace Content.Server.GameObjects.Components.Power appearance.SetData(PowerCellVisuals.ChargeLevel, CurrentCharge / MaxCharge); } } + + void IExamine.Examine(FormattedMessage message, bool inDetailsRange) + { + if(inDetailsRange) + { + message.AddMarkup(Loc.GetString($"The charge indicator reads {CurrentCharge / MaxCharge * 100:F0} %.")); + } + } + } + + public enum PowerCellSize + { + Small, + Medium, + Large } } diff --git a/Content.Server/GameObjects/Components/Power/PowerCellSlotComponent.cs b/Content.Server/GameObjects/Components/Power/PowerCellSlotComponent.cs new file mode 100644 index 0000000000..c898b29497 --- /dev/null +++ b/Content.Server/GameObjects/Components/Power/PowerCellSlotComponent.cs @@ -0,0 +1,254 @@ +#nullable enable +using System; +using Content.Server.GameObjects.Components.GUI; +using Content.Server.GameObjects.Components.Items.Storage; +using Content.Shared.Audio; +using Content.Shared.GameObjects.EntitySystems; +using Content.Shared.GameObjects.Verbs; +using Robust.Server.GameObjects.Components.Container; +using Robust.Server.GameObjects.EntitySystems; +using Robust.Server.Interfaces.GameObjects; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Systems; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Localization; +using Robust.Shared.Serialization; +using Robust.Shared.Utility; +using Robust.Shared.ViewVariables; + +namespace Content.Server.GameObjects.Components.Power +{ + /// + /// Provides a "battery compartment" that can contain a of the matching + /// . Intended to supplement other components, not very useful by itself. + /// + [RegisterComponent] + public class PowerCellSlotComponent : Component, IExamine, IMapInit + { + public override string Name => "PowerCellSlot"; + + /// + /// What size of cell fits into this component. + /// + [ViewVariables(VVAccess.ReadWrite)] + public PowerCellSize SlotSize { get; set; } = PowerCellSize.Small; + + /// + /// Can the cell be removed ? + /// + [ViewVariables(VVAccess.ReadWrite)] + public bool CanRemoveCell { get; set; } = true; + + /// + /// Should the "Remove cell" verb be displayed on this component? + /// + [ViewVariables(VVAccess.ReadWrite)] + public bool ShowVerb { get; set; } = true; + + /// + /// String passed to String.Format when showing the description text for this item. + /// String.Format is given a single parameter which is the size letter (S/M/L) of the cells this component uses. + /// Use null to show no text. + /// + [ViewVariables(VVAccess.ReadWrite)] + public string? DescFormatString { get; set; } + + /// + /// File path to a sound file that should be played when the cell is removed. + /// + /// "/Audio/Items/pistol_magout.ogg" + [ViewVariables(VVAccess.ReadWrite)] + public string? CellRemoveSound { get; set; } + + /// + /// File path to a sound file that should be played when a cell is inserted. + /// + /// "/Audio/Items/pistol_magin.ogg" + [ViewVariables(VVAccess.ReadWrite)] + public string? CellInsertSound { get; set; } + + [ViewVariables] private ContainerSlot _cellContainer = default!; + + [ViewVariables] + public PowerCellComponent? Cell + { + get + { + if (_cellContainer.ContainedEntity == null) return null; + return _cellContainer.ContainedEntity.TryGetComponent(out PowerCellComponent? cell) ? cell : null; + } + } + + [ViewVariables] public bool HasCell => Cell != null; + + /// + /// True if we don't want a cell inserted during map init. + /// + private bool _startEmpty = false; + + /// + /// If not null, this cell type will be inserted at MapInit instead of the default Standard cell. + /// + private string? _startingCellType = null; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(this, x => x.SlotSize, "slotSize", PowerCellSize.Small); + serializer.DataField(this, x => x.CanRemoveCell, "canRemoveCell", true); + serializer.DataField(this, x => x.ShowVerb, "showVerb", true); + serializer.DataField(ref _startEmpty, "startEmpty", false); + serializer.DataField(ref _startingCellType, "startingCellType", null); + serializer.DataField(this, x => x.CellRemoveSound, "cellRemoveSound", "/Audio/Items/pistol_magin.ogg"); + serializer.DataField(this, x => x.CellInsertSound, "cellInsertSound", "/Audio/Items/pistol_magout.ogg"); + serializer.DataField(this, x => x.DescFormatString, "descFormatString", "It uses size {0} power cells."); + } + + public override void Initialize() + { + base.Initialize(); + _cellContainer = ContainerManagerComponent.Ensure("cellslot_cell_container", Owner, out _); + } + + void IExamine.Examine(FormattedMessage message, bool inDetailsRange) + { + if (!inDetailsRange) return; + string sizeLetter = SlotSize switch + { + PowerCellSize.Small => Loc.GetString("S"), + PowerCellSize.Medium => Loc.GetString("M"), + PowerCellSize.Large => Loc.GetString("L"), + _ => "???" + }; + if (DescFormatString != null) message.AddMarkup(string.Format(DescFormatString, sizeLetter)); + } + + /// + /// Remove the cell from this component. If a user is specified, the cell will be put in their hands + /// or failing that, at their feet. If no user is specified the cell will be put at the location of + /// the parent of this component. + /// + /// (optional) the user to give the removed cell to. + /// Should be played upon removal? + /// The cell component of the entity that was removed, or null if removal failed. + public PowerCellComponent? EjectCell(IEntity? user, bool playSound = true) + { + var cell = Cell; + if (cell == null || !CanRemoveCell) return null; + if (!_cellContainer.Remove(cell.Owner)) return null; + //Dirty(); + if (user != null) + { + if (!user.TryGetComponent(out HandsComponent? hands) || !hands.PutInHand(cell.Owner.GetComponent())) + { + cell.Owner.Transform.Coordinates = user.Transform.Coordinates; + } + } + else + { + cell.Owner.Transform.Coordinates = Owner.Transform.Coordinates; + } + + if (playSound && CellRemoveSound != null) + { + EntitySystem.Get().PlayFromEntity(CellRemoveSound, Owner, AudioHelpers.WithVariation(0.125f)); + } + SendMessage(new PowerCellChangedMessage(true)); + return cell; + } + + /// + /// Tries to insert the given cell into this component. The cell will be put into the container of this component. + /// + /// The cell to insert. + /// Should be played upon insertion? + /// True if insertion succeeded; false otherwise. + public bool InsertCell(IEntity cell, bool playSound = true) + { + if (Cell != null) return false; + if (!cell.TryGetComponent(out var _)) return false; + if (!cell.TryGetComponent(out var cellComponent)) return false; + if (cellComponent.CellSize != SlotSize) return false; + if (!_cellContainer.Insert(cell)) return false; + //Dirty(); + if (playSound && CellInsertSound != null) + { + EntitySystem.Get().PlayFromEntity(CellInsertSound, Owner, AudioHelpers.WithVariation(0.125f)); + } + SendMessage(new PowerCellChangedMessage(false)); + return true; + } + + [Verb] + public sealed class EjectCellVerb : Verb + { + protected override void GetData(IEntity user, PowerCellSlotComponent component, VerbData data) + { + if (!component.ShowVerb || !ActionBlockerSystem.CanInteract(user)) + { + data.Visibility = VerbVisibility.Invisible; + return; + } + + if (component.Cell == null) + { + data.Text = Loc.GetString("Eject cell (cell missing)"); + } + else + { + data.Text = Loc.GetString("Eject cell"); + } + + if (component.Cell == null || !component.CanRemoveCell) + { + data.Visibility = VerbVisibility.Disabled; + } + } + + protected override void Activate(IEntity user, PowerCellSlotComponent component) + { + component.EjectCell(user); + } + } + + void IMapInit.MapInit() + { + if (_startEmpty || _cellContainer.ContainedEntity != null) + { + return; + } + + string type; + if (_startingCellType != null) + { + type = _startingCellType; + } + else + { + type = SlotSize switch + { + PowerCellSize.Small => "PowerCellSmallStandard", + PowerCellSize.Medium => "PowerCellMediumStandard", + PowerCellSize.Large => "PowerCellLargeStandard", + _ => throw new ArgumentOutOfRangeException() + }; + } + + var cell = Owner.EntityManager.SpawnEntity(type, Owner.Transform.Coordinates); + _cellContainer.Insert(cell); + } + } + + public class PowerCellChangedMessage : ComponentMessage + { + /// + /// If true, the cell was ejected; if false, it was inserted. + /// + public bool Ejected { get; } + + public PowerCellChangedMessage(bool ejected) + { + Ejected = ejected; + } + } +} diff --git a/Content.Server/GameObjects/Components/Power/PowerNetComponents/PowerConsumerComponent.cs b/Content.Server/GameObjects/Components/Power/PowerNetComponents/PowerConsumerComponent.cs index 28e37ad789..54dd3437d2 100644 --- a/Content.Server/GameObjects/Components/Power/PowerNetComponents/PowerConsumerComponent.cs +++ b/Content.Server/GameObjects/Components/Power/PowerNetComponents/PowerConsumerComponent.cs @@ -1,4 +1,5 @@ -using System.Diagnostics; +using System; +using System.Diagnostics; using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; using Robust.Shared.GameObjects; using Robust.Shared.Serialization; @@ -33,6 +34,8 @@ namespace Content.Server.GameObjects.Components.Power.PowerNetComponents public int ReceivedPower { get => _receivedPower; set => SetReceivedPower(value); } private int _receivedPower; + public event EventHandler OnReceivedPowerChanged; + public override void ExposeData(ObjectSerializer serializer) { base.ExposeData(serializer); @@ -60,7 +63,9 @@ namespace Content.Server.GameObjects.Components.Power.PowerNetComponents private void SetReceivedPower(int newReceivedPower) { Debug.Assert(newReceivedPower >= 0 && newReceivedPower <= DrawRate); + if(_receivedPower == newReceivedPower) return; _receivedPower = newReceivedPower; + OnReceivedPowerChanged?.Invoke(this, new ReceivedPowerChangedEventArgs(_drawRate, _receivedPower)); } private void SetPriority(Priority newPriority) @@ -75,4 +80,16 @@ namespace Content.Server.GameObjects.Components.Power.PowerNetComponents First, Last, } + + public class ReceivedPowerChangedEventArgs : EventArgs + { + public readonly int DrawRate; + public readonly int ReceivedPower; + + public ReceivedPowerChangedEventArgs(int drawRate, int receivedPower) + { + DrawRate = drawRate; + ReceivedPower = receivedPower; + } + } } diff --git a/Content.Server/GameObjects/Components/Power/PowerNetComponents/RadiationCollectorComponent.cs b/Content.Server/GameObjects/Components/Power/PowerNetComponents/RadiationCollectorComponent.cs new file mode 100644 index 0000000000..51d378b5d0 --- /dev/null +++ b/Content.Server/GameObjects/Components/Power/PowerNetComponents/RadiationCollectorComponent.cs @@ -0,0 +1,97 @@ +using System; +using System.Threading; +using Content.Server.Utility; +using Content.Shared.GameObjects.Components; +using Content.Shared.GameObjects.Components.Doors; +using Content.Shared.GameObjects.Components.Singularity; +using Content.Shared.Interfaces; +using Content.Shared.Interfaces.GameObjects.Components; +using Robust.Server.GameObjects; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components; +using Robust.Shared.Interfaces.Timing; +using Robust.Shared.IoC; +using Robust.Shared.Localization; +using Robust.Shared.Log; +using Timer = Robust.Shared.Timers.Timer; + +namespace Content.Server.GameObjects.Components.Power.PowerNetComponents +{ + [RegisterComponent] + public class RadiationCollectorComponent : PowerSupplierComponent, IInteractHand, IRadiationAct + { + [Dependency] private readonly IGameTiming _gameTiming = default!; + + public override string Name => "RadiationCollector"; + private bool _enabled; + private TimeSpan _coolDownEnd; + + private PhysicsComponent _collidableComponent; + + public override void Initialize() + { + base.Initialize(); + if (!Owner.TryGetComponent(out _collidableComponent)) + { + Logger.Error("RadiationCollectorComponent created with no CollidableComponent"); + return; + } + _collidableComponent.AnchoredChanged += OnAnchoredChanged; + } + + private void OnAnchoredChanged() + { + if(_collidableComponent.Anchored) Owner.SnapToGrid(); + } + + bool IInteractHand.InteractHand(InteractHandEventArgs eventArgs) + { + var curTime = _gameTiming.CurTime; + + if(curTime < _coolDownEnd) + return true; + + if (!_enabled) + { + Owner.PopupMessage(eventArgs.User, Loc.GetString("The collector turns on.")); + EnableCollection(); + } + else + { + Owner.PopupMessage(eventArgs.User, Loc.GetString("The collector turns off.")); + DisableCollection(); + } + + _coolDownEnd = curTime + TimeSpan.FromSeconds(0.81f); + + return true; + } + + void EnableCollection() + { + _enabled = true; + SetAppearance(RadiationCollectorVisualState.Activating); + } + + void DisableCollection() + { + _enabled = false; + SetAppearance(RadiationCollectorVisualState.Deactivating); + } + + public void RadiationAct(float frameTime, SharedRadiationPulseComponent radiation) + { + if (!_enabled) return; + + SupplyRate = (int) (frameTime * radiation.RadsPerSecond * 3000f); + } + + protected void SetAppearance(RadiationCollectorVisualState state) + { + if (Owner.TryGetComponent(out AppearanceComponent appearance)) + { + appearance.SetData(RadiationCollectorVisuals.VisualState, state); + } + } + } +} diff --git a/Content.Server/GameObjects/Components/Projectiles/EmitterBoltComponent.cs b/Content.Server/GameObjects/Components/Projectiles/EmitterBoltComponent.cs new file mode 100644 index 0000000000..83f489818a --- /dev/null +++ b/Content.Server/GameObjects/Components/Projectiles/EmitterBoltComponent.cs @@ -0,0 +1,13 @@ +using Content.Server.GameObjects.Components.Singularity; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components; +using Robust.Shared.Interfaces.GameObjects; + +namespace Content.Server.GameObjects.Components.Projectiles +{ + [RegisterComponent] + public class EmitterBoltComponent : Component + { + public override string Name => "EmitterBoltComponent"; + } +} diff --git a/Content.Server/GameObjects/Components/Projectiles/HitscanComponent.cs b/Content.Server/GameObjects/Components/Projectiles/HitscanComponent.cs index 091b582574..1a30f4886a 100644 --- a/Content.Server/GameObjects/Components/Projectiles/HitscanComponent.cs +++ b/Content.Server/GameObjects/Components/Projectiles/HitscanComponent.cs @@ -3,6 +3,7 @@ using Content.Shared.Damage; using Content.Shared.Physics; using Robust.Server.GameObjects.EntitySystems; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.GameObjects.EntitySystemMessages; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; @@ -94,7 +95,7 @@ namespace Content.Server.GameObjects.Components.Projectiles EntitySystem.Get().PlayAtCoords(_soundHitWall, user.Transform.Coordinates.Offset(offset)); } - Timer.Spawn((int) _deathTime.TotalMilliseconds, () => + Owner.SpawnTimer((int) _deathTime.TotalMilliseconds, () => { if (!Owner.Deleted) { diff --git a/Content.Server/GameObjects/Components/Projectiles/ProjectileComponent.cs b/Content.Server/GameObjects/Components/Projectiles/ProjectileComponent.cs index f4751d35f9..3c0669ba18 100644 --- a/Content.Server/GameObjects/Components/Projectiles/ProjectileComponent.cs +++ b/Content.Server/GameObjects/Components/Projectiles/ProjectileComponent.cs @@ -60,6 +60,8 @@ namespace Content.Server.GameObjects.Components.Projectiles Dirty(); } + private bool _internalDeleteOnCollide; + /// /// Applies the damage when our projectile collides with its victim /// @@ -74,12 +76,12 @@ namespace Content.Server.GameObjects.Components.Projectiles // This is so entities that shouldn't get a collision are ignored. if (entity.TryGetComponent(out IPhysicsComponent otherPhysics) && otherPhysics.Hard == false) { - _deleteOnCollide = false; + _internalDeleteOnCollide = false; return; } else { - _deleteOnCollide = true; + _internalDeleteOnCollide = true; } if (_soundHitSpecies != null && entity.HasComponent()) @@ -112,7 +114,7 @@ namespace Content.Server.GameObjects.Components.Projectiles void ICollideBehavior.PostCollide(int collideCount) { - if (collideCount > 0 && DeleteOnCollide) Owner.Delete(); + if (collideCount > 0 && DeleteOnCollide && _internalDeleteOnCollide) Owner.Delete(); } public override ComponentState GetComponentState() diff --git a/Content.Server/GameObjects/Components/Projectiles/ThrownItemComponent.cs b/Content.Server/GameObjects/Components/Projectiles/ThrownItemComponent.cs index 1fffccb797..afcac3a7af 100644 --- a/Content.Server/GameObjects/Components/Projectiles/ThrownItemComponent.cs +++ b/Content.Server/GameObjects/Components/Projectiles/ThrownItemComponent.cs @@ -5,6 +5,7 @@ using Content.Shared.GameObjects.Components.Damage; using Content.Shared.Physics; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components; +using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.Physics; @@ -102,7 +103,7 @@ namespace Content.Server.GameObjects.Components.Projectiles private void StartStopTimer() { - Timer.Spawn((int) (DefaultThrowTime * 1000), MaybeStopThrow); + Owner.SpawnTimer((int) (DefaultThrowTime * 1000), MaybeStopThrow); } private void MaybeStopThrow() @@ -120,12 +121,5 @@ namespace Content.Server.GameObjects.Components.Projectiles StopThrow(); } - - public override void Initialize() - { - base.Initialize(); - - Owner.EnsureComponent().EnsureController(); - } } } diff --git a/Content.Server/GameObjects/Components/RandomSpriteStateComponent.cs b/Content.Server/GameObjects/Components/RandomSpriteStateComponent.cs new file mode 100644 index 0000000000..75a7539ad7 --- /dev/null +++ b/Content.Server/GameObjects/Components/RandomSpriteStateComponent.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; +using Robust.Server.GameObjects; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.Random; +using Robust.Shared.IoC; +using Robust.Shared.Random; +using Robust.Shared.Serialization; + +namespace Content.Server.GameObjects.Components +{ + [RegisterComponent] + public class RandomSpriteStateComponent : Component + { + [Dependency] private readonly IRobustRandom _random = default!; + public override string Name => "RandomSpriteState"; + + private List _spriteStates; + + private int _spriteLayer; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _spriteStates, "spriteStates", null); + serializer.DataField(ref _spriteLayer, "spriteLayer", 0); + } + + public override void Initialize() + { + base.Initialize(); + if (_spriteStates == null) return; + if (!Owner.TryGetComponent(out SpriteComponent spriteComponent)) return; + spriteComponent.LayerSetState(_spriteLayer, _random.Pick(_spriteStates)); + } + } +} diff --git a/Content.Server/GameObjects/Components/Research/LatheComponent.cs b/Content.Server/GameObjects/Components/Research/LatheComponent.cs index af846aa738..4021d45c03 100644 --- a/Content.Server/GameObjects/Components/Research/LatheComponent.cs +++ b/Content.Server/GameObjects/Components/Research/LatheComponent.cs @@ -16,6 +16,7 @@ using Robust.Server.GameObjects.Components.UserInterface; using Robust.Server.Interfaces.GameObjects; using Robust.Server.Interfaces.Player; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.Timers; using Robust.Shared.ViewVariables; @@ -124,7 +125,7 @@ namespace Content.Server.GameObjects.Components.Research State = LatheState.Producing; SetAppearance(LatheVisualState.Producing); - Timer.Spawn(recipe.CompleteTime, () => + Owner.SpawnTimer(recipe.CompleteTime, () => { Producing = false; _producingRecipe = null; @@ -195,7 +196,7 @@ namespace Content.Server.GameObjects.Components.Research break; } - Timer.Spawn(InsertionTime, () => + Owner.SpawnTimer(InsertionTime, () => { State = LatheState.Base; SetAppearance(LatheVisualState.Idle); diff --git a/Content.Server/GameObjects/Components/Singularity/ContainmentFieldComponent.cs b/Content.Server/GameObjects/Components/Singularity/ContainmentFieldComponent.cs new file mode 100644 index 0000000000..2a85124e49 --- /dev/null +++ b/Content.Server/GameObjects/Components/Singularity/ContainmentFieldComponent.cs @@ -0,0 +1,29 @@ +#nullable enable +using System; +using Content.Shared.Physics; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Maths; +using Robust.Shared.Physics; + +namespace Content.Server.GameObjects.Components.Singularity +{ + [RegisterComponent] + public class ContainmentFieldComponent : Component, ICollideBehavior + { + public override string Name => "ContainmentField"; + public ContainmentFieldConnection? Parent; + + public void CollideWith(IEntity collidedWith) + { + if (Parent == null) + { + Owner.Delete(); + return; + } + + Parent.TryRepell(Owner, collidedWith); + } + } +} diff --git a/Content.Server/GameObjects/Components/Singularity/ContainmentFieldConnection.cs b/Content.Server/GameObjects/Components/Singularity/ContainmentFieldConnection.cs new file mode 100644 index 0000000000..15b5b88d37 --- /dev/null +++ b/Content.Server/GameObjects/Components/Singularity/ContainmentFieldConnection.cs @@ -0,0 +1,145 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using Content.Shared.Physics; +using Robust.Shared.GameObjects.Components; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.IoC; +using Robust.Shared.Log; +using Robust.Shared.Maths; +using Timer = Robust.Shared.Timers.Timer; + +namespace Content.Server.GameObjects.Components.Singularity +{ + public class ContainmentFieldConnection : IDisposable + { + public readonly ContainmentFieldGeneratorComponent Generator1; + public readonly ContainmentFieldGeneratorComponent Generator2; + private List _fields = new List(); + private int _sharedEnergyPool; + private CancellationTokenSource _powerDecreaseCancellationTokenSource = new CancellationTokenSource(); + public int SharedEnergyPool + { + get => _sharedEnergyPool; + set + { + _sharedEnergyPool = Math.Clamp(value, 0, 10); + if (_sharedEnergyPool == 0) + { + Dispose(); + } + } + } + + public ContainmentFieldConnection(ContainmentFieldGeneratorComponent generator1, ContainmentFieldGeneratorComponent generator2) + { + Generator1 = generator1; + Generator2 = generator2; + + //generateFields + var pos1 = generator1.Owner.Transform.Coordinates; + var pos2 = generator2.Owner.Transform.Coordinates; + if (pos1 == pos2) + { + Dispose(); + return; + } + + var entityManager = IoCManager.Resolve(); + + var delta = (pos2 - pos1).Position; + var dirVec = delta.Normalized; + var stopDist = delta.Length; + var currentOffset = dirVec; + while (currentOffset.Length < stopDist) + { + var currentCoords = pos1.Offset(currentOffset); + var newEnt = entityManager.SpawnEntity("ContainmentField", currentCoords); + if (!newEnt.TryGetComponent(out var containmentFieldComponent)) + { + Logger.Error("While creating Fields in ContainmentFieldConnection, a ContainmentField without a ContainmentFieldComponent was created. Deleting newly spawned ContainmentField..."); + newEnt.Delete(); + continue; + } + + containmentFieldComponent.Parent = this; + newEnt.Transform.WorldRotation = dirVec.ToAngle(); + + _fields.Add(newEnt); + currentOffset += dirVec; + } + + + Timer.SpawnRepeating(1000, () => { SharedEnergyPool--;}, _powerDecreaseCancellationTokenSource.Token); + } + + public bool CanRepell(IEntity toRepell) + { + var powerNeeded = 1; + if (toRepell.TryGetComponent(out var singularityComponent)) + { + powerNeeded += 2*singularityComponent.Level; + } + + return _sharedEnergyPool > powerNeeded; + } + + /// + /// Tries to repell a Entity. This deletes the connection if the repelling fails! + /// + /// Entity to repell from. Should be a field, otherwise return will be false. + /// Entity to repell. + public void TryRepell(IEntity repellFrom, IEntity toRepell) + { + if (!_fields.Contains(repellFrom) || !toRepell.TryGetComponent(out var collidableComponent)) return; + + var speed = 5; + var containmentFieldRepellController = collidableComponent.EnsureController(); + + if (!CanRepell(toRepell)) + { + Dispose(); + return; + } + + if (Math.Abs(repellFrom.Transform.WorldRotation.Degrees + 90f) < 0.1f || + Math.Abs(repellFrom.Transform.WorldRotation.Degrees - 90f) < 0.1f) + { + if (repellFrom.Transform.WorldPosition.X.CompareTo(toRepell.Transform.WorldPosition.X) > 0) + { + containmentFieldRepellController.Repell(Direction.West, speed); + } + else + { + containmentFieldRepellController.Repell(Direction.East, speed); + } + } + else + { + if (repellFrom.Transform.WorldPosition.Y.CompareTo(toRepell.Transform.WorldPosition.Y) > 0) + { + containmentFieldRepellController.Repell(Direction.South, speed); + } + else + { + containmentFieldRepellController.Repell(Direction.North, speed); + } + } + + return; + } + + public void Dispose() + { + _powerDecreaseCancellationTokenSource.Cancel(); + foreach (var field in _fields) + { + field.Delete(); + } + _fields.Clear(); + + Generator1.RemoveConnection(this); + Generator2.RemoveConnection(this); + } + } +} diff --git a/Content.Server/GameObjects/Components/Singularity/ContainmentFieldGeneratorComponent.cs b/Content.Server/GameObjects/Components/Singularity/ContainmentFieldGeneratorComponent.cs new file mode 100644 index 0000000000..92bf31aac9 --- /dev/null +++ b/Content.Server/GameObjects/Components/Singularity/ContainmentFieldGeneratorComponent.cs @@ -0,0 +1,206 @@ +#nullable enable +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using Content.Server.GameObjects.Components.Projectiles; +using Content.Server.Utility; +using Content.Shared.GameObjects.EntitySystems; +using Content.Shared.Physics; +using JetBrains.Annotations; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Interfaces.Physics; +using Robust.Shared.IoC; +using Robust.Shared.Localization; +using Robust.Shared.Log; +using Robust.Shared.Map; +using Robust.Shared.Maths; +using Robust.Shared.Physics; +using Robust.Shared.Utility; +using Robust.Shared.ViewVariables; + +namespace Content.Server.GameObjects.Components.Singularity +{ + [RegisterComponent] + public class ContainmentFieldGeneratorComponent : Component, ICollideBehavior + { + [Dependency] private IPhysicsManager _physicsManager = null!; + [Dependency] private IEntityManager _entityManager = null!; + + public override string Name => "ContainmentFieldGenerator"; + + private int _powerBuffer; + + [ViewVariables] + public int PowerBuffer + { + get => _powerBuffer; + set => _powerBuffer = Math.Clamp(value, 0, 6); + } + + public void ReceivePower(int power) + { + var totalPower = power + PowerBuffer; + var powerPerConnection = totalPower / 2; + var newBuffer = totalPower % 2; + TryPowerConnection(ref _connection1, ref newBuffer, powerPerConnection); + TryPowerConnection(ref _connection2, ref newBuffer, powerPerConnection); + + PowerBuffer = newBuffer; + } + + private void TryPowerConnection(ref Tuple? connectionProperty, ref int powerBuffer, int powerPerConnection) + { + if (connectionProperty != null) + { + connectionProperty.Item2.SharedEnergyPool += powerPerConnection; + } + else + { + if (TryGenerateFieldConnection(ref connectionProperty)) + { + connectionProperty.Item2.SharedEnergyPool += powerPerConnection; + } + else + { + powerBuffer += powerPerConnection; + } + } + } + + private PhysicsComponent? _collidableComponent; + + private Tuple? _connection1; + private Tuple? _connection2; + + public bool CanRepell(IEntity toRepell) => _connection1?.Item2?.CanRepell(toRepell) == true || + _connection2?.Item2?.CanRepell(toRepell) == true; + + public override void Initialize() + { + base.Initialize(); + if (!Owner.TryGetComponent(out _collidableComponent)) + { + Logger.Error("ContainmentFieldGeneratorComponent created with no CollidableComponent"); + return; + } + _collidableComponent.AnchoredChanged += OnAnchoredChanged; + } + + + private void OnAnchoredChanged() + { + if(_collidableComponent?.Anchored == true) + { + Owner.SnapToGrid(); + } + else + { + _connection1?.Item2.Dispose(); + _connection2?.Item2.Dispose(); + } + } + + private bool IsConnectedWith(ContainmentFieldGeneratorComponent comp) + { + + return comp == this || _connection1?.Item2.Generator1 == comp || _connection1?.Item2.Generator2 == comp || + _connection2?.Item2.Generator1 == comp || _connection2?.Item2.Generator2 == comp; + } + + public bool HasFreeConnections() + { + return _connection1 == null || _connection2 == null; + } + + private bool TryGenerateFieldConnection([NotNullWhen(true)] ref Tuple? propertyFieldTuple) + { + if (propertyFieldTuple != null) return false; + if(_collidableComponent?.Anchored == false) return false; + + foreach (var direction in new[] {Direction.North, Direction.East, Direction.South, Direction.West}) + { + if (_connection1?.Item1 == direction || _connection2?.Item1 == direction) continue; + + var dirVec = direction.ToVec(); + var ray = new CollisionRay(Owner.Transform.WorldPosition, dirVec, (int) CollisionGroup.MobMask); + var rawRayCastResults = _physicsManager.IntersectRay(Owner.Transform.MapID, ray, 4.5f, Owner, false); + + var rayCastResults = rawRayCastResults as RayCastResults[] ?? rawRayCastResults.ToArray(); + if(!rayCastResults.Any()) continue; + + RayCastResults? closestResult = null; + var smallestDist = 4.5f; + foreach (var res in rayCastResults) + { + if (res.Distance > smallestDist) continue; + + smallestDist = res.Distance; + closestResult = res; + } + if(closestResult == null) continue; + var ent = closestResult.Value.HitEntity; + if (!ent.TryGetComponent(out var fieldGeneratorComponent) || + fieldGeneratorComponent.Owner == Owner || + !fieldGeneratorComponent.HasFreeConnections() || + IsConnectedWith(fieldGeneratorComponent) || + !ent.TryGetComponent(out var collidableComponent) || + !collidableComponent.Anchored) + { + continue; + } + + var connection = new ContainmentFieldConnection(this, fieldGeneratorComponent); + propertyFieldTuple = new Tuple(direction, connection); + if (fieldGeneratorComponent._connection1 == null) + { + fieldGeneratorComponent._connection1 = new Tuple(direction.GetOpposite(), connection); + } + else if (fieldGeneratorComponent._connection2 == null) + { + fieldGeneratorComponent._connection2 = new Tuple(direction.GetOpposite(), connection); + } + else + { + Logger.Error("When trying to connect two Containmentfieldgenerators, the second one already had two connection but the check didn't catch it"); + } + + return true; + } + + return false; + } + + public void RemoveConnection(ContainmentFieldConnection? connection) + { + if (_connection1?.Item2 == connection) + { + _connection1 = null; + }else if (_connection2?.Item2 == connection) + { + _connection2 = null; + } + else if(connection != null) + { + Logger.Error("RemoveConnection called on Containmentfieldgenerator with a connection that can't be found in its connections."); + } + } + + public void CollideWith(IEntity collidedWith) + { + if(collidedWith.HasComponent()) + { + ReceivePower(4); + } + } + + public override void OnRemove() + { + _connection1?.Item2.Dispose(); + _connection2?.Item2.Dispose(); + base.OnRemove(); + } + } +} diff --git a/Content.Server/GameObjects/Components/Singularity/EmitterComponent.cs b/Content.Server/GameObjects/Components/Singularity/EmitterComponent.cs new file mode 100644 index 0000000000..75a4353ad1 --- /dev/null +++ b/Content.Server/GameObjects/Components/Singularity/EmitterComponent.cs @@ -0,0 +1,309 @@ +using System; +using System.Threading; +using System.Threading.Tasks; +using Content.Server.GameObjects.Components.Access; +using Content.Server.GameObjects.Components.Power.PowerNetComponents; +using Content.Server.GameObjects.Components.Projectiles; +using Content.Server.Interfaces; +using Content.Server.Utility; +using Content.Shared.GameObjects.Components.Singularity; +using Content.Shared.Interfaces; +using Content.Shared.Interfaces.GameObjects.Components; +using Content.Shared.Physics; +using Robust.Server.GameObjects; +using Robust.Server.GameObjects.EntitySystems; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.ComponentDependencies; +using Robust.Shared.GameObjects.Components; +using Robust.Shared.GameObjects.Systems; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Interfaces.Random; +using Robust.Shared.IoC; +using Robust.Shared.Localization; +using Robust.Shared.Log; +using Robust.Shared.Random; +using Robust.Shared.Serialization; +using Robust.Shared.Utility; +using Robust.Shared.ViewVariables; +using Timer = Robust.Shared.Timers.Timer; + +#nullable enable + +namespace Content.Server.GameObjects.Components.Singularity +{ + [RegisterComponent] + [ComponentReference(typeof(IActivate))] + public class EmitterComponent : Component, IActivate, IInteractUsing + { + [Dependency] private readonly IEntityManager _entityManager = default!; + [Dependency] private readonly IRobustRandom _robustRandom = default!; + + [ComponentDependency] private AppearanceComponent? _appearance; + [ComponentDependency] private AccessReader? _accessReader; + + public override string Name => "Emitter"; + + private CancellationTokenSource? _timerCancel; + + private PhysicsComponent _collidableComponent = default!; + private PowerConsumerComponent _powerConsumer = default!; + + // whether the power switch is in "on" + [ViewVariables] private bool _isOn; + // Whether the power switch is on AND the machine has enough power (so is actively firing) + [ViewVariables] private bool _isPowered; + [ViewVariables] private bool _isLocked; + + [ViewVariables(VVAccess.ReadWrite)] private int _fireShotCounter; + + [ViewVariables(VVAccess.ReadWrite)] private string _fireSound = default!; + [ViewVariables(VVAccess.ReadWrite)] private string _boltType = default!; + [ViewVariables(VVAccess.ReadWrite)] private int _powerUseActive; + [ViewVariables(VVAccess.ReadWrite)] private int _fireBurstSize; + [ViewVariables(VVAccess.ReadWrite)] private TimeSpan _fireInterval; + [ViewVariables(VVAccess.ReadWrite)] private TimeSpan _fireBurstDelayMin; + [ViewVariables(VVAccess.ReadWrite)] private TimeSpan _fireBurstDelayMax; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + + serializer.DataField(ref _fireBurstDelayMin, "fireBurstDelayMin", TimeSpan.FromSeconds(2)); + serializer.DataField(ref _fireBurstDelayMax, "fireBurstDelayMax", TimeSpan.FromSeconds(10)); + serializer.DataField(ref _fireInterval, "fireInterval", TimeSpan.FromSeconds(2)); + serializer.DataField(ref _fireBurstSize, "fireBurstSize", 3); + serializer.DataField(ref _powerUseActive, "powerUseActive", 500); + serializer.DataField(ref _boltType, "boltType", "EmitterBolt"); + serializer.DataField(ref _fireSound, "fireSound", "/Audio/Weapons/emitter.ogg"); + } + + public override void Initialize() + { + base.Initialize(); + + if (!Owner.TryGetComponent(out _collidableComponent!)) + { + Logger.Error($"EmitterComponent {Owner} created with no CollidableComponent"); + return; + } + + if (!Owner.TryGetComponent(out _powerConsumer!)) + { + Logger.Error($"EmitterComponent {Owner} created with no PowerConsumerComponent"); + return; + } + + _collidableComponent.AnchoredChanged += OnAnchoredChanged; + _powerConsumer.OnReceivedPowerChanged += OnReceivedPowerChanged; + } + + private void OnReceivedPowerChanged(object? sender, ReceivedPowerChangedEventArgs e) + { + if (!_isOn) + { + return; + } + + if (e.ReceivedPower < e.DrawRate) + { + PowerOff(); + } + else + { + PowerOn(); + } + } + + private void OnAnchoredChanged() + { + if (_collidableComponent.Anchored) + Owner.SnapToGrid(); + } + + void IActivate.Activate(ActivateEventArgs eventArgs) + { + if (_isLocked) + { + Owner.PopupMessage(eventArgs.User, Loc.GetString("{0:TheName} is access locked!", Owner)); + return; + } + + if (!_isOn) + { + SwitchOn(); + Owner.PopupMessage(eventArgs.User, Loc.GetString("{0:TheName} turns on.", Owner)); + } + else + { + SwitchOff(); + Owner.PopupMessage(eventArgs.User, Loc.GetString("{0:TheName} turns off.", Owner)); + } + } + + Task IInteractUsing.InteractUsing(InteractUsingEventArgs eventArgs) + { + if (_accessReader == null || !eventArgs.Using.TryGetComponent(out IAccess? access)) + { + return Task.FromResult(false); + } + + if (_accessReader.IsAllowed(access)) + { + _isLocked ^= true; + + if (_isLocked) + { + Owner.PopupMessage(eventArgs.User, Loc.GetString("You lock {0:TheName}.", Owner)); + } + else + { + Owner.PopupMessage(eventArgs.User, Loc.GetString("You unlock {0:TheName}.", Owner)); + } + + UpdateAppearance(); + } + else + { + Owner.PopupMessage(eventArgs.User, Loc.GetString("Access denied.")); + } + + return Task.FromResult(true); + } + + private void SwitchOff() + { + _isOn = false; + _powerConsumer.DrawRate = 0; + PowerOff(); + UpdateAppearance(); + } + + private void SwitchOn() + { + _isOn = true; + _powerConsumer.DrawRate = _powerUseActive; + // Do not directly PowerOn(). + // OnReceivedPowerChanged will get fired due to DrawRate change which will turn it on. + UpdateAppearance(); + } + + private void PowerOff() + { + if (!_isPowered) + { + return; + } + + _isPowered = false; + + // Must be set while emitter powered. + DebugTools.AssertNotNull(_timerCancel); + _timerCancel!.Cancel(); + + UpdateAppearance(); + } + + private void PowerOn() + { + if (_isPowered) + { + return; + } + + _isPowered = true; + + _fireShotCounter = 0; + _timerCancel = new CancellationTokenSource(); + + Timer.Spawn(_fireBurstDelayMax, ShotTimerCallback, _timerCancel.Token); + + UpdateAppearance(); + } + + private void ShotTimerCallback() + { + // Any power-off condition should result in the timer for this method being cancelled + // and thus not firing + DebugTools.Assert(_isPowered); + DebugTools.Assert(_isOn); + DebugTools.Assert(_powerConsumer.DrawRate <= _powerConsumer.ReceivedPower); + + Fire(); + + TimeSpan delay; + if (_fireShotCounter < _fireBurstSize) + { + _fireShotCounter += 1; + delay = _fireInterval; + } + else + { + _fireShotCounter = 0; + var diff = _fireBurstDelayMax - _fireBurstDelayMin; + // TIL you can do TimeSpan * double. + delay = _fireBurstDelayMin + _robustRandom.NextFloat() * diff; + } + + // Must be set while emitter powered. + DebugTools.AssertNotNull(_timerCancel); + Timer.Spawn(delay, ShotTimerCallback, _timerCancel!.Token); + } + + private void Fire() + { + var projectile = _entityManager.SpawnEntity(_boltType, Owner.Transform.Coordinates); + + if (!projectile.TryGetComponent(out var physicsComponent)) + { + Logger.Error("Emitter tried firing a bolt, but it was spawned without a CollidableComponent"); + return; + } + + physicsComponent.Status = BodyStatus.InAir; + + if (!projectile.TryGetComponent(out var projectileComponent)) + { + Logger.Error("Emitter tried firing a bolt, but it was spawned without a ProjectileComponent"); + return; + } + + projectileComponent.IgnoreEntity(Owner); + + physicsComponent + .EnsureController() + .LinearVelocity = Owner.Transform.WorldRotation.ToVec() * 20f; + + projectile.Transform.LocalRotation = Owner.Transform.WorldRotation; + + // TODO: Move to projectile's code. + Timer.Spawn(3000, () => projectile.Delete()); + + EntitySystem.Get().PlayFromEntity(_fireSound, Owner); + } + + private void UpdateAppearance() + { + if (_appearance == null) + { + return; + } + + EmitterVisualState state; + if (_isPowered) + { + state = EmitterVisualState.On; + } + else if (_isOn) + { + state = EmitterVisualState.Underpowered; + } + else + { + state = EmitterVisualState.Off; + } + + _appearance.SetData(EmitterVisuals.VisualState, state); + _appearance.SetData(EmitterVisuals.Locked, _isLocked); + } + } +} diff --git a/Content.Server/GameObjects/Components/Singularity/SingularityComponent.cs b/Content.Server/GameObjects/Components/Singularity/SingularityComponent.cs new file mode 100644 index 0000000000..10ffcb51fe --- /dev/null +++ b/Content.Server/GameObjects/Components/Singularity/SingularityComponent.cs @@ -0,0 +1,227 @@ +#nullable enable +using System; +using System.Collections.Generic; +using System.Linq; +using Content.Server.GameObjects.Components.StationEvents; +using Content.Shared.GameObjects; +using Content.Shared.GameObjects.EntitySystemMessages; +using Content.Shared.Physics; +using Robust.Server.GameObjects; +using Robust.Server.GameObjects.EntitySystems; +using Robust.Shared.Audio; +using Robust.Shared.Containers; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components; +using Robust.Shared.GameObjects.Components.Map; +using Robust.Shared.GameObjects.Systems; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Interfaces.Map; +using Robust.Shared.Interfaces.Random; +using Robust.Shared.IoC; +using Robust.Shared.Log; +using Robust.Shared.Maths; +using Robust.Shared.Map; +using Robust.Shared.Physics; +using Robust.Shared.Timers; + +namespace Content.Server.GameObjects.Components.Singularity +{ + [RegisterComponent] + public class SingularityComponent : Component, ICollideBehavior + { + [Dependency] private IEntityManager _entityManager = null!; + [Dependency] private IMapManager _mapManager = null!; + [Dependency] private IRobustRandom _random = null!; + + + public override uint? NetID => ContentNetIDs.SINGULARITY; + + public override string Name => "Singularity"; + + public int Energy + { + get => _energy; + set + { + if (value == _energy) return; + + _energy = value; + if (_energy <= 0) + { + if(_singularityController != null) _singularityController.LinearVelocity = Vector2.Zero; + _spriteComponent?.LayerSetVisible(0, false); + + Owner.Delete(); + return; + } + + Level = _energy switch + { + var n when n >= 1500 => 6, + var n when n >= 1000 => 5, + var n when n >= 600 => 4, + var n when n >= 300 => 3, + var n when n >= 200 => 2, + var n when n < 200 => 1, + _ => 1 + }; + } + } + private int _energy = 180; + + public int Level + { + get => _level; + set + { + if (value == _level) return; + if (value < 0) value = 0; + if (value > 6) value = 6; + + _level = value; + + if(_radiationPulseComponent != null) _radiationPulseComponent.RadsPerSecond = 10 * value; + + _spriteComponent?.LayerSetRSI(0, "Effects/Singularity/singularity_" + _level + ".rsi"); + _spriteComponent?.LayerSetState(0, "singularity_" + _level); + + if(_collidableComponent != null && _collidableComponent.PhysicsShapes.Any() && _collidableComponent.PhysicsShapes[0] is PhysShapeCircle circle) + { + circle.Radius = _level - 0.5f; + } + } + } + private int _level; + + public int EnergyDrain => + Level switch + { + 6 => 20, + 5 => 15, + 4 => 10, + 3 => 5, + 2 => 2, + 1 => 1, + _ => 0 + }; + + private SingularityController? _singularityController; + private PhysicsComponent? _collidableComponent; + private SpriteComponent? _spriteComponent; + private RadiationPulseComponent? _radiationPulseComponent; + private AudioSystem _audioSystem = null!; + private AudioSystem.AudioSourceServer? _playingSound; + + public override void Initialize() + { + base.Initialize(); + + _audioSystem = EntitySystem.Get(); + var audioParams = AudioParams.Default; + audioParams.Loop = true; + audioParams.MaxDistance = 20f; + audioParams.Volume = 5; + _audioSystem.PlayFromEntity("/Audio/Effects/singularity_form.ogg", Owner); + Timer.Spawn(5200,() => _playingSound = _audioSystem.PlayFromEntity("/Audio/Effects/singularity.ogg", Owner, audioParams)); + + + if (!Owner.TryGetComponent(out _collidableComponent)) + { + Logger.Error("SingularityComponent was spawned without CollidableComponent"); + } + else + { + _collidableComponent.Hard = false; + } + + if (!Owner.TryGetComponent(out _spriteComponent)) + { + Logger.Error("SingularityComponent was spawned without SpriteComponent"); + } + + _singularityController = _collidableComponent?.EnsureController(); + if(_singularityController!=null)_singularityController.ControlledComponent = _collidableComponent; + + if (!Owner.TryGetComponent(out _radiationPulseComponent)) + { + Logger.Error("SingularityComponent was spawned without RadiationPulseComponent"); + } + + Level = 1; + } + + public void Update() + { + Energy -= EnergyDrain; + + if(Level == 1) return; + //pushing + var pushVector = new Vector2((_random.Next(-10, 10)), _random.Next(-10, 10)); + while (pushVector.X == 0 && pushVector.Y == 0) + { + pushVector = new Vector2((_random.Next(-10, 10)), _random.Next(-10, 10)); + } + _singularityController?.Push(pushVector.Normalized, 2); + } + + List _previousPulledEntites = new List(); + public void PullUpdate() + { + foreach (var previousPulledEntity in _previousPulledEntites) + { + if(previousPulledEntity.Deleted) continue; + if (!previousPulledEntity.TryGetComponent(out var collidableComponent)) continue; + var controller = collidableComponent.EnsureController(); + controller.StopPull(); + } + _previousPulledEntites.Clear(); + + var entitiesToPull = _entityManager.GetEntitiesInRange(Owner.Transform.Coordinates, Level * 10); + foreach (var entity in entitiesToPull) + { + if (!entity.TryGetComponent(out var collidableComponent)) continue; + var controller = collidableComponent.EnsureController(); + if(Owner.Transform.Coordinates.EntityId != entity.Transform.Coordinates.EntityId) continue; + var vec = (Owner.Transform.Coordinates - entity.Transform.Coordinates).Position; + if (vec == Vector2.Zero) continue; + + var speed = 10 / vec.Length * Level; + + controller.Pull(vec.Normalized, speed); + _previousPulledEntites.Add(entity); + } + } + + void ICollideBehavior.CollideWith(IEntity entity) + { + if (_collidableComponent == null) return; //how did it even collide then? :D + + if (entity.TryGetComponent(out var mapGridComponent)) + { + foreach (var tile in mapGridComponent.Grid.GetTilesIntersecting(((IPhysBody) _collidableComponent).WorldAABB)) + { + mapGridComponent.Grid.SetTile(tile.GridIndices, Tile.Empty); + Energy++; + } + return; + } + + if (entity.HasComponent() || (entity.TryGetComponent(out var component) && component.CanRepell(Owner))) + { + return; + } + + if (ContainerHelpers.IsInContainer(entity)) return; + + entity.Delete(); + Energy++; + } + + public override void OnRemove() + { + _playingSound?.Stop(); + _audioSystem.PlayAtCoords("/Audio/Effects/singularity_collapse.ogg", Owner.Transform.Coordinates); + base.OnRemove(); + } + } +} diff --git a/Content.Server/GameObjects/Components/Singularity/SingularityGenerator.cs b/Content.Server/GameObjects/Components/Singularity/SingularityGenerator.cs new file mode 100644 index 0000000000..7cb11986d9 --- /dev/null +++ b/Content.Server/GameObjects/Components/Singularity/SingularityGenerator.cs @@ -0,0 +1,31 @@ +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.IoC; + +namespace Content.Server.GameObjects.Components.Singularity +{ + [RegisterComponent] + public class SingularityGeneratorComponent : Component + { + public override string Name => "SingularityGenerator"; + + private int _power; + + public int Power + { + get => _power; + set + { + if(_power == value) return; + + _power = value; + if (_power > 15) + { + var entityManager = IoCManager.Resolve(); + entityManager.SpawnEntity("Singularity", Owner.Transform.Coordinates); + //dont delete ourselves, just wait to get eaten + } + } + } + } +} diff --git a/Content.Server/GameObjects/Components/Stack/StackComponent.cs b/Content.Server/GameObjects/Components/Stack/StackComponent.cs index dfb13c8ab8..fe202bdc02 100644 --- a/Content.Server/GameObjects/Components/Stack/StackComponent.cs +++ b/Content.Server/GameObjects/Components/Stack/StackComponent.cs @@ -7,6 +7,7 @@ using Content.Shared.GameObjects.EntitySystems; using Content.Shared.Interfaces; using Content.Shared.Interfaces.GameObjects.Components; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Localization; @@ -117,7 +118,7 @@ namespace Content.Server.GameObjects.Components.Stack if (stack.AvailableSpace == 0) { - Timer.Spawn(300, () => popupPos.PopupMessage(eventArgs.User, "Stack is now full.")); + Owner.SpawnTimer(300, () => popupPos.PopupMessage(eventArgs.User, "Stack is now full.")); } return true; diff --git a/Content.Server/GameObjects/Components/Timing/UseDelayComponent.cs b/Content.Server/GameObjects/Components/Timing/UseDelayComponent.cs index a5bdbcb6aa..2b20077cb1 100644 --- a/Content.Server/GameObjects/Components/Timing/UseDelayComponent.cs +++ b/Content.Server/GameObjects/Components/Timing/UseDelayComponent.cs @@ -2,6 +2,7 @@ using System.Threading; using Content.Shared.GameObjects.Components.Items; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.Interfaces.Timing; using Robust.Shared.IoC; using Robust.Shared.Serialization; @@ -46,7 +47,7 @@ namespace Content.Server.GameObjects.Components.Timing cancellationTokenSource = new CancellationTokenSource(); - Timer.Spawn(TimeSpan.FromSeconds(Delay), () => ActiveDelay = false, cancellationTokenSource.Token); + Owner.SpawnTimer(TimeSpan.FromSeconds(Delay), () => ActiveDelay = false, cancellationTokenSource.Token); _lastUseTime = IoCManager.Resolve().CurTime; diff --git a/Content.Server/GameObjects/Components/VendingMachines/VendingMachineComponent.cs b/Content.Server/GameObjects/Components/VendingMachines/VendingMachineComponent.cs index c1d5dfc96a..138d88d667 100644 --- a/Content.Server/GameObjects/Components/VendingMachines/VendingMachineComponent.cs +++ b/Content.Server/GameObjects/Components/VendingMachines/VendingMachineComponent.cs @@ -14,6 +14,7 @@ using Robust.Server.GameObjects.EntitySystems; using Robust.Server.Interfaces.GameObjects; using Robust.Shared.Audio; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.Random; using Robust.Shared.IoC; @@ -184,7 +185,7 @@ namespace Content.Server.GameObjects.Components.VendingMachines UserInterface?.SendMessage(new VendingMachineInventoryMessage(Inventory)); TrySetVisualState(VendingMachineVisualState.Eject); - Timer.Spawn(_animationDuration, () => + Owner.SpawnTimer(_animationDuration, () => { _ejecting = false; TrySetVisualState(VendingMachineVisualState.Normal); @@ -198,7 +199,7 @@ namespace Content.Server.GameObjects.Components.VendingMachines { TrySetVisualState(VendingMachineVisualState.Deny); //TODO: This duration should be a distinct value specific to the deny animation - Timer.Spawn(_animationDuration, () => + Owner.SpawnTimer(_animationDuration, () => { TrySetVisualState(VendingMachineVisualState.Normal); }); diff --git a/Content.Server/GameObjects/Components/Weapon/Melee/FlashComponent.cs b/Content.Server/GameObjects/Components/Weapon/Melee/FlashComponent.cs index 3ab0b8c28a..8e7be3056f 100644 --- a/Content.Server/GameObjects/Components/Weapon/Melee/FlashComponent.cs +++ b/Content.Server/GameObjects/Components/Weapon/Melee/FlashComponent.cs @@ -8,6 +8,7 @@ using Robust.Server.GameObjects; using Robust.Server.GameObjects.EntitySystems; using Robust.Shared.Audio; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.IoC; @@ -107,7 +108,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Melee int animLayer = sprite.AddLayerWithState("flashing"); _flashing = true; - Timer.Spawn(400, () => + Owner.SpawnTimer(400, () => { sprite.RemoveLayer(animLayer); _flashing = false; diff --git a/Content.Server/GameObjects/Components/Weapon/Melee/StunbatonComponent.cs b/Content.Server/GameObjects/Components/Weapon/Melee/StunbatonComponent.cs index 377748da11..03de47d17d 100644 --- a/Content.Server/GameObjects/Components/Weapon/Melee/StunbatonComponent.cs +++ b/Content.Server/GameObjects/Components/Weapon/Melee/StunbatonComponent.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +#nullable enable +using System.Collections.Generic; using System.Threading.Tasks; using Content.Server.GameObjects.Components.GUI; using Content.Server.GameObjects.Components.Items.Storage; @@ -28,7 +29,7 @@ using Robust.Shared.ViewVariables; namespace Content.Server.GameObjects.Components.Weapon.Melee { [RegisterComponent] - public class StunbatonComponent : MeleeWeaponComponent, IUse, IExamine, IMapInit, IInteractUsing, IThrowCollide + public class StunbatonComponent : MeleeWeaponComponent, IUse, IExamine, IInteractUsing, IThrowCollide { [Dependency] private readonly IRobustRandom _robustRandom = default!; @@ -36,7 +37,8 @@ namespace Content.Server.GameObjects.Components.Weapon.Melee private bool _activated = false; - [ViewVariables] private ContainerSlot _cellContainer; + [ViewVariables] private PowerCellSlotComponent _cellSlot = default!; + private PowerCellComponent? Cell => _cellSlot.Cell; [ViewVariables(VVAccess.ReadWrite)] private float _paralyzeChanceNoSlowdown = 0.35f; @@ -55,23 +57,10 @@ namespace Content.Server.GameObjects.Components.Weapon.Melee [ViewVariables] public bool Activated => _activated; - [ViewVariables] - private BatteryComponent Cell - { - get - { - if (_cellContainer.ContainedEntity == null) return null; - - _cellContainer.ContainedEntity.TryGetComponent(out BatteryComponent cell); - return cell; - } - } - public override void Initialize() { base.Initialize(); - _cellContainer = - ContainerManagerComponent.Ensure("stunbaton_cell_container", Owner, out var existed); + _cellSlot = Owner.EnsureComponent(); } public override void ExposeData(ObjectSerializer serializer) @@ -84,6 +73,23 @@ namespace Content.Server.GameObjects.Components.Weapon.Melee serializer.DataField(ref _slowdownTime, "slowdownTime", 5f); } + public override void HandleMessage(ComponentMessage message, IComponent? component) + { + base.HandleMessage(message, component); + switch (message) + { + case PowerCellChangedMessage m: + if (component is PowerCellSlotComponent slotComponent && slotComponent == _cellSlot) + { + if (m.Ejected) + { + TurnOff(); + } + } + break; + } + } + protected override bool OnHitEntities(IReadOnlyList entities, AttackEventArgs eventArgs) { if (!Activated || entities.Count == 0 || Cell == null) @@ -96,7 +102,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Melee foreach (var entity in entities) { - if (!entity.TryGetComponent(out StunnableComponent stunnable)) continue; + if (!entity.TryGetComponent(out StunnableComponent? stunnable)) continue; if(!stunnable.SlowedDown) if(_robustRandom.Prob(_paralyzeChanceNoSlowdown)) @@ -120,6 +126,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Melee private bool ToggleStatus(IEntity user) { + if (!ActionBlockerSystem.CanUse(user)) return false; if (Activated) { TurnOff(); @@ -158,9 +165,8 @@ namespace Content.Server.GameObjects.Components.Weapon.Melee var sprite = Owner.GetComponent(); var item = Owner.GetComponent(); - var cell = Cell; - if (cell == null) + if (Cell == null) { EntitySystem.Get().PlayAtCoords("/Audio/Machines/button.ogg", Owner.Transform.Coordinates, AudioHelpers.WithVariation(0.25f)); @@ -168,7 +174,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Melee return; } - if (cell.CurrentCharge < EnergyPerUse) + if (Cell.CurrentCharge < EnergyPerUse) { EntitySystem.Get().PlayAtCoords("/Audio/Machines/button.ogg", Owner.Transform.Coordinates, AudioHelpers.WithVariation(0.25f)); Owner.PopupMessage(user, Loc.GetString("Dead cell...")); @@ -191,51 +197,12 @@ namespace Content.Server.GameObjects.Components.Weapon.Melee public async Task InteractUsing(InteractUsingEventArgs eventArgs) { - if (!eventArgs.Using.HasComponent()) return false; - - if (Cell != null) return false; - - var handsComponent = eventArgs.User.GetComponent(); - - if (!handsComponent.Drop(eventArgs.Using, _cellContainer)) - { - return false; - } - - EntitySystem.Get().PlayFromEntity("/Audio/Items/pistol_magin.ogg", Owner); - + if (!ActionBlockerSystem.CanInteract(eventArgs.User)) return false; + if (!_cellSlot.InsertCell(eventArgs.Using)) return false; Dirty(); - return true; } - private void EjectCell(IEntity user) - { - if (Cell == null) - { - return; - } - - var cell = Cell; - - if (!_cellContainer.Remove(cell.Owner)) - { - return; - } - - if (!user.TryGetComponent(out HandsComponent hands)) - { - return; - } - - if (!hands.PutInHand(cell.Owner.GetComponent())) - { - cell.Owner.Transform.Coordinates = user.Transform.Coordinates; - } - - EntitySystem.Get().PlayAtCoords("/Audio/Items/pistol_magout.ogg", Owner.Transform.Coordinates, AudioHelpers.WithVariation(0.25f)); - } - public void Examine(FormattedMessage message, bool inDetailsRange) { if (Activated) @@ -244,48 +211,9 @@ namespace Content.Server.GameObjects.Components.Weapon.Melee } } - public void MapInit() - { - if (_cellContainer.ContainedEntity != null) - { - return; - } - - var cell = Owner.EntityManager.SpawnEntity("PowerCellSmallHyper", Owner.Transform.Coordinates); - _cellContainer.Insert(cell); - } - - [Verb] - public sealed class EjectCellVerb : Verb - { - protected override void GetData(IEntity user, StunbatonComponent component, VerbData data) - { - if (!ActionBlockerSystem.CanInteract(user)) - { - data.Visibility = VerbVisibility.Invisible; - return; - } - - if (component.Cell == null) - { - data.Text = Loc.GetString("Eject cell (cell missing)"); - data.Visibility = VerbVisibility.Disabled; - } - else - { - data.Text = Loc.GetString("Eject cell"); - } - } - - protected override void Activate(IEntity user, StunbatonComponent component) - { - component.EjectCell(user); - } - } - public void DoHit(ThrowCollideEventArgs eventArgs) { - if (!Activated || Cell == null || !Cell.TryUseCharge(EnergyPerUse) || !eventArgs.Target.TryGetComponent(out StunnableComponent stunnable)) + if (!Activated || Cell == null || !Cell.TryUseCharge(EnergyPerUse) || !eventArgs.Target.TryGetComponent(out StunnableComponent? stunnable)) return; EntitySystem.Get().PlayAtCoords("/Audio/Weapons/egloves.ogg", Owner.Transform.Coordinates, AudioHelpers.WithVariation(0.25f)); diff --git a/Content.Server/GameObjects/Components/WindowComponent.cs b/Content.Server/GameObjects/Components/WindowComponent.cs index 1d4b78b7e5..f506fefb33 100644 --- a/Content.Server/GameObjects/Components/WindowComponent.cs +++ b/Content.Server/GameObjects/Components/WindowComponent.cs @@ -1,11 +1,104 @@ -using Content.Shared.GameObjects.Components; +using System; +using Content.Server.Utility; +using Content.Shared.Audio; +using Content.Shared.GameObjects.Components; +using Content.Shared.GameObjects.Components.Damage; +using Content.Shared.GameObjects.EntitySystems; +using Content.Shared.Interfaces.GameObjects.Components; +using Content.Shared.Utility; +using Robust.Server.GameObjects; +using Robust.Server.GameObjects.EntitySystems; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Systems; +using Robust.Shared.Localization; +using Robust.Shared.Utility; namespace Content.Server.GameObjects.Components { [RegisterComponent] [ComponentReference(typeof(SharedWindowComponent))] - public class WindowComponent : SharedWindowComponent + public class WindowComponent : SharedWindowComponent, IExamine, IInteractHand { + private int? Damage + { + get + { + if (!Owner.TryGetComponent(out IDamageableComponent damageableComponent)) return null; + return damageableComponent.TotalDamage; + } + } + + private int? MaxDamage + { + get + { + if (!Owner.TryGetComponent(out IDamageableComponent damageableComponent)) return null; + return damageableComponent.Thresholds[DamageState.Dead]; + } + } + + public override void Initialize() + { + base.Initialize(); + if (Owner.TryGetComponent(out IDamageableComponent damageableComponent)) + { + damageableComponent.HealthChangedEvent += OnDamage; + } + } + + private void OnDamage(HealthChangedEventArgs eventArgs) + { + int current = eventArgs.Damageable.TotalDamage; + int max = eventArgs.Damageable.Thresholds[DamageState.Dead]; + if (eventArgs.Damageable.CurrentState == DamageState.Dead) return; + UpdateVisuals(current, max); + } + + private void UpdateVisuals(int currentDamage, int maxDamage) + { + if (Owner.TryGetComponent(out AppearanceComponent appearance)) + { + appearance.SetData(WindowVisuals.Damage, (float) currentDamage / maxDamage); + } + } + + + void IExamine.Examine(FormattedMessage message, bool inDetailsRange) + { + int? damage = Damage; + int? maxDamage = MaxDamage; + if (damage == null || maxDamage == null) return; + float fraction = ((damage == 0 || maxDamage == 0) ? 0f : (float) damage / maxDamage) ?? 0f; + int level = Math.Min(ContentHelpers.RoundToLevels(fraction, 1, 7), 5); + switch (level) + { + case 0: + message.AddText(Loc.GetString("It looks fully intact.")); + break; + case 1: + message.AddText(Loc.GetString("It has a few scratches.")); + break; + case 2: + message.AddText(Loc.GetString("It has a few small cracks.")); + break; + case 3: + message.AddText(Loc.GetString("It has several big cracks running along its surface.")); + break; + case 4: + message.AddText(Loc.GetString("It has deep cracks across multiple layers.")); + break; + case 5: + message.AddText(Loc.GetString("It is extremely badly cracked and on the verge of shattering.")); + break; + } + } + + bool IInteractHand.InteractHand(InteractHandEventArgs eventArgs) + { + EntitySystem.Get() + .PlayAtCoords("/Audio/Effects/glass_knock.ogg", eventArgs.Target.Transform.Coordinates, AudioHelpers.WithVariation(0.05f)); + eventArgs.Target.PopupMessageEveryone(Loc.GetString("*knock knock*")); + return true; + } } } diff --git a/Content.Server/GameObjects/Components/WiresComponent.cs b/Content.Server/GameObjects/Components/WiresComponent.cs index 100157f0a7..cb2f201faa 100644 --- a/Content.Server/GameObjects/Components/WiresComponent.cs +++ b/Content.Server/GameObjects/Components/WiresComponent.cs @@ -373,6 +373,14 @@ namespace Content.Server.GameObjects.Components UserInterface?.Open(session); } + /// + /// Closes all wire UIs. + /// + public void CloseAll() + { + UserInterface?.CloseAll(); + } + private void UserInterfaceOnReceiveMessage(ServerBoundUserInterfaceMessage serverMsg) { var message = serverMsg.Message; diff --git a/Content.Server/GameObjects/EntitySystems/BatterySystem.cs b/Content.Server/GameObjects/EntitySystems/BatterySystem.cs new file mode 100644 index 0000000000..9a4aefbf80 --- /dev/null +++ b/Content.Server/GameObjects/EntitySystems/BatterySystem.cs @@ -0,0 +1,18 @@ +using Content.Server.GameObjects.Components.Power; +using JetBrains.Annotations; +using Robust.Shared.GameObjects.Systems; + +namespace Content.Server.GameObjects.EntitySystems +{ + [UsedImplicitly] + public class BatterySystem : EntitySystem + { + public override void Update(float frameTime) + { + foreach (var comp in ComponentManager.EntityQuery(false)) + { + comp.OnUpdate(frameTime); + } + } + } +} diff --git a/Content.Server/GameObjects/EntitySystems/CloningSystem.cs b/Content.Server/GameObjects/EntitySystems/CloningSystem.cs index 5f4e9377b5..8be1900553 100644 --- a/Content.Server/GameObjects/EntitySystems/CloningSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/CloningSystem.cs @@ -2,11 +2,12 @@ using System.Linq; using Content.Server.GameObjects.Components.Medical; using Content.Server.Mobs; +using Content.Shared.GameTicking; using Robust.Shared.GameObjects.Systems; namespace Content.Server.GameObjects.EntitySystems { - internal sealed class CloningSystem : EntitySystem + internal sealed class CloningSystem : EntitySystem, IResettingEntitySystem { public override void Update(float frameTime) { @@ -16,9 +17,9 @@ namespace Content.Server.GameObjects.EntitySystems } } - public static Dictionary Minds = new Dictionary(); + public readonly Dictionary Minds = new Dictionary(); - public static void AddToDnaScans(Mind mind) + public void AddToDnaScans(Mind mind) { if (!Minds.ContainsValue(mind)) { @@ -26,14 +27,19 @@ namespace Content.Server.GameObjects.EntitySystems } } - public static bool HasDnaScan(Mind mind) + public bool HasDnaScan(Mind mind) { return Minds.ContainsValue(mind); } - public static Dictionary getIdToUser() + public Dictionary GetIdToUser() { return Minds.ToDictionary(m => m.Key, m => m.Value.CharacterName); } + + public void Reset() + { + Minds.Clear(); + } } } diff --git a/Content.Server/GameObjects/EntitySystems/DeviceNetworkSystem.cs b/Content.Server/GameObjects/EntitySystems/DeviceNetworkSystem.cs new file mode 100644 index 0000000000..f5b99a5988 --- /dev/null +++ b/Content.Server/GameObjects/EntitySystems/DeviceNetworkSystem.cs @@ -0,0 +1,28 @@ +using Content.Server.Interfaces; +using Robust.Shared.GameObjects.Systems; +using Robust.Shared.IoC; + +namespace Content.Server.GameObjects.EntitySystems.DeviceNetwork +{ + public class DeviceNetworkSystem : EntitySystem + { + private IDeviceNetwork _network; + + public override void Initialize() + { + base.Initialize(); + + _network = IoCManager.Resolve(); + } + + public override void Update(float frameTime) + { + base.Update(frameTime); + + if (_network == null) + return; + //(ノ°Д°)ノ︵ ┻━┻ + _network.Update(); + } + } +} diff --git a/Content.Server/GameObjects/EntitySystems/GasTankSystem.cs b/Content.Server/GameObjects/EntitySystems/GasTankSystem.cs new file mode 100644 index 0000000000..fe88bc52f3 --- /dev/null +++ b/Content.Server/GameObjects/EntitySystems/GasTankSystem.cs @@ -0,0 +1,32 @@ +using System; +using Content.Server.GameObjects.Components.Atmos; +using JetBrains.Annotations; +using Robust.Shared.GameObjects.EntitySystemMessages; +using Robust.Shared.GameObjects.Systems; +using Robust.Shared.Interfaces.Timing; +using Robust.Shared.IoC; + +namespace Content.Server.GameObjects.EntitySystems +{ + [UsedImplicitly] + public class GasTankSystem : EntitySystem + { + private float _timer = 0f; + private const float Interval = 0.5f; + + public override void Update(float frameTime) + { + base.Update(frameTime); + + _timer += frameTime; + + if (_timer < Interval) return; + _timer = 0f; + + foreach (var gasTank in EntityManager.ComponentManager.EntityQuery()) + { + gasTank.Update(); + } + } + } +} diff --git a/Content.Server/GameObjects/EntitySystems/GravitySystem.cs b/Content.Server/GameObjects/EntitySystems/GravitySystem.cs index 06d4be417d..501b0809fa 100644 --- a/Content.Server/GameObjects/EntitySystems/GravitySystem.cs +++ b/Content.Server/GameObjects/EntitySystems/GravitySystem.cs @@ -3,6 +3,7 @@ using System.Linq; using Content.Server.GameObjects.Components.Gravity; using Content.Server.GameObjects.Components.Mobs; using Content.Shared.GameObjects.Components.Gravity; +using Content.Shared.GameObjects.EntitySystemMessages.Gravity; using JetBrains.Annotations; using Robust.Server.GameObjects.EntitySystems; using Robust.Server.Interfaces.Player; @@ -41,7 +42,7 @@ namespace Content.Server.GameObjects.EntitySystems { generator.UpdateState(); } - + if (generator.Status == GravityGeneratorStatus.On) { gridsWithGravity.Add(generator.Owner.Transform.GridID); @@ -52,12 +53,11 @@ namespace Content.Server.GameObjects.EntitySystems { if (grid.HasGravity && !gridsWithGravity.Contains(grid.Index)) { - grid.HasGravity = false; - ScheduleGridToShake(grid.Index, ShakeTimes); - } else if (!grid.HasGravity && gridsWithGravity.Contains(grid.Index)) + DisableGravity(grid); + } + else if (!grid.HasGravity && gridsWithGravity.Contains(grid.Index)) { - grid.HasGravity = true; - ScheduleGridToShake(grid.Index, ShakeTimes); + EnableGravity(grid); } } @@ -68,6 +68,26 @@ namespace Content.Server.GameObjects.EntitySystems } } + private void EnableGravity(IMapGrid grid) + { + grid.HasGravity = true; + ScheduleGridToShake(grid.Index, ShakeTimes); + + var message = new GravityChangedMessage(grid); + + RaiseLocalEvent(message); + } + + private void DisableGravity(IMapGrid grid) + { + grid.HasGravity = false; + ScheduleGridToShake(grid.Index, ShakeTimes); + + var message = new GravityChangedMessage(grid); + + RaiseLocalEvent(message); + } + private void ScheduleGridToShake(GridId gridId, uint shakeTimes) { if (!_gridsToShake.Keys.Contains(gridId)) diff --git a/Content.Server/GameObjects/EntitySystems/HandHeldLightSystem.cs b/Content.Server/GameObjects/EntitySystems/HandHeldLightSystem.cs index abb68219e7..3947f882a7 100644 --- a/Content.Server/GameObjects/EntitySystems/HandHeldLightSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/HandHeldLightSystem.cs @@ -9,7 +9,7 @@ namespace Content.Server.GameObjects.EntitySystems { public override void Update(float frameTime) { - foreach (var comp in ComponentManager.EntityQuery()) + foreach (var comp in ComponentManager.EntityQuery(false)) { comp.OnUpdate(frameTime); } diff --git a/Content.Server/GameObjects/EntitySystems/MorgueSystem.cs b/Content.Server/GameObjects/EntitySystems/MorgueSystem.cs new file mode 100644 index 0000000000..bbb18adca2 --- /dev/null +++ b/Content.Server/GameObjects/EntitySystems/MorgueSystem.cs @@ -0,0 +1,27 @@ +using Content.Server.GameObjects.Components.Morgue; +using JetBrains.Annotations; +using Robust.Shared.GameObjects.Systems; + +namespace Content.Server.GameObjects.EntitySystems +{ + [UsedImplicitly] + public class MorgueSystem : EntitySystem + { + + private float _accumulatedFrameTime; + + public override void Update(float frameTime) + { + _accumulatedFrameTime += frameTime; + + if (_accumulatedFrameTime >= 10) + { + foreach (var morgue in ComponentManager.EntityQuery()) + { + morgue.Update(); + } + _accumulatedFrameTime -= 10; + } + } + } +} diff --git a/Content.Server/GameObjects/EntitySystems/ParticleAcceleratorPartSystem.cs b/Content.Server/GameObjects/EntitySystems/ParticleAcceleratorPartSystem.cs new file mode 100644 index 0000000000..114028e9b1 --- /dev/null +++ b/Content.Server/GameObjects/EntitySystems/ParticleAcceleratorPartSystem.cs @@ -0,0 +1,28 @@ +#nullable enable +using Content.Server.GameObjects.Components.PA; +using JetBrains.Annotations; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components.Transform; +using Robust.Shared.GameObjects.Systems; + +namespace Content.Server.GameObjects.EntitySystems +{ + [UsedImplicitly] + public class ParticleAcceleratorPartSystem : EntitySystem + { + public override void Initialize() + { + base.Initialize(); + + EntityManager.EventBus.SubscribeEvent(EventSource.Local, this, RotateEvent); + } + + private static void RotateEvent(RotateEvent ev) + { + if (ev.Sender.TryGetComponent(out ParticleAcceleratorPartComponent? part)) + { + part.Rotated(); + } + } + } +} diff --git a/Content.Server/GameObjects/EntitySystems/PlantSystem.cs b/Content.Server/GameObjects/EntitySystems/PlantSystem.cs index 4f60d22aa5..6227dedc4e 100644 --- a/Content.Server/GameObjects/EntitySystems/PlantSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/PlantSystem.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using Content.Server.Botany; using Content.Server.GameObjects.Components.Botany; +using Content.Shared.GameTicking; using JetBrains.Annotations; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; @@ -12,7 +13,7 @@ using Robust.Shared.Prototypes; namespace Content.Server.GameObjects.EntitySystems { [UsedImplicitly] - public class PlantSystem : EntitySystem + public class PlantSystem : EntitySystem, IResettingEntitySystem { [Dependency] private readonly IComponentManager _componentManager = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; @@ -29,6 +30,15 @@ namespace Content.Server.GameObjects.EntitySystems { base.Initialize(); + PopulateDatabase(); + } + + private void PopulateDatabase() + { + _nextUid = 0; + + _seeds.Clear(); + foreach (var seed in _prototypeManager.EnumeratePrototypes()) { AddSeedToDatabase(seed); @@ -66,5 +76,10 @@ namespace Content.Server.GameObjects.EntitySystems plantHolder.Update(); } } + + public void Reset() + { + PopulateDatabase(); + } } } diff --git a/Content.Server/GameObjects/EntitySystems/SingularitySystem.cs b/Content.Server/GameObjects/EntitySystems/SingularitySystem.cs new file mode 100644 index 0000000000..825f8a61e1 --- /dev/null +++ b/Content.Server/GameObjects/EntitySystems/SingularitySystem.cs @@ -0,0 +1,41 @@ +using Content.Server.GameObjects.Components.Singularity; +using Robust.Shared.GameObjects.Systems; + +namespace Content.Server.GameObjects.EntitySystems +{ + public class SingularitySystem : EntitySystem + { + private float curTimeSingulo; + private float curTimePull; + public override void Update(float frameTime) + { + base.Update(frameTime); + + curTimeSingulo += frameTime; + curTimePull += frameTime; + + var shouldUpdate = curTimeSingulo >= 1f; + var shouldPull = curTimePull >= 0.2f; + if (!shouldUpdate && !shouldPull) return; + var singulos = ComponentManager.EntityQuery(); + + if (curTimeSingulo >= 1f) + { + curTimeSingulo -= 1f; + foreach (var singulo in singulos) + { + singulo.Update(); + } + } + + if (curTimePull >= 0.5f) + { + curTimePull -= 0.5f; + foreach (var singulo in singulos) + { + singulo.PullUpdate(); + } + } + } + } +} diff --git a/Content.Server/GameObjects/EntitySystems/StandingStateSystem.cs b/Content.Server/GameObjects/EntitySystems/StandingStateSystem.cs index 49165efd87..13974c76e4 100644 --- a/Content.Server/GameObjects/EntitySystems/StandingStateSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/StandingStateSystem.cs @@ -25,12 +25,12 @@ namespace Content.Server.GameObjects.EntitySystems if (newState != oldState) { appearance.SetData(RotationVisuals.RotationState, newState); - } - if (playSound) - { - var file = AudioHelpers.GetRandomFileFromSoundCollection("bodyfall"); - Get().PlayFromEntity(file, entity, AudioHelpers.WithVariation(0.25f)); + if (playSound) + { + var file = AudioHelpers.GetRandomFileFromSoundCollection("bodyfall"); + Get().PlayFromEntity(file, entity, AudioHelpers.WithVariation(0.25f)); + } } return true; @@ -61,5 +61,21 @@ namespace Content.Server.GameObjects.EntitySystems hands.Drop(heldItem.Owner, doMobChecks); } } + + //TODO: RotationState can be null and I want to burn all lifeforms in the universe for this!!! + //If you use these it's atleast slightly less painful (null is treated as false) + public bool IsStanding(IEntity entity) + { + return entity.TryGetComponent(out var appearance) + && appearance.TryGetData(RotationVisuals.RotationState, out var rotation) + && rotation == RotationState.Vertical; + } + + public bool IsDown(IEntity entity) + { + return entity.TryGetComponent(out var appearance) + && appearance.TryGetData(RotationVisuals.RotationState, out var rotation) + && rotation == RotationState.Horizontal; + } } } diff --git a/Content.Server/GameObjects/EntitySystems/WeightlessSystem.cs b/Content.Server/GameObjects/EntitySystems/WeightlessSystem.cs new file mode 100644 index 0000000000..1ceec26a0a --- /dev/null +++ b/Content.Server/GameObjects/EntitySystems/WeightlessSystem.cs @@ -0,0 +1,125 @@ +using System.Collections.Generic; +using Content.Server.GameObjects.Components.Mobs; +using Content.Shared.GameObjects.Components.Mobs; +using Content.Shared.GameObjects.EntitySystemMessages.Gravity; +using Content.Shared.GameTicking; +using JetBrains.Annotations; +using Robust.Shared.GameObjects.Components.Map; +using Robust.Shared.GameObjects.EntitySystemMessages; +using Robust.Shared.GameObjects.Systems; +using Robust.Shared.Interfaces.Map; +using Robust.Shared.IoC; +using Robust.Shared.Map; +using Robust.Shared.Utility; + +namespace Content.Server.GameObjects.EntitySystems +{ + [UsedImplicitly] + public class WeightlessSystem : EntitySystem, IResettingEntitySystem + { + [Dependency] private readonly IMapManager _mapManager = default!; + + private readonly Dictionary> _statuses = new Dictionary>(); + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(GravityChanged); + SubscribeLocalEvent(EntParentChanged); + } + + public void Reset() + { + _statuses.Clear(); + } + + public void AddStatus(ServerStatusEffectsComponent status) + { + var gridId = status.Owner.Transform.GridID; + var statuses = _statuses.GetOrNew(gridId); + + statuses.Add(status); + + if (_mapManager.TryGetGrid(status.Owner.Transform.GridID, out var grid)) + { + if (grid.HasGravity) + { + RemoveWeightless(status); + } + else + { + AddWeightless(status); + } + } + } + + public void RemoveStatus(ServerStatusEffectsComponent status) + { + var grid = status.Owner.Transform.GridID; + if (!_statuses.TryGetValue(grid, out var statuses)) + { + return; + } + + statuses.Remove(status); + } + + private void GravityChanged(GravityChangedMessage ev) + { + if (!_statuses.TryGetValue(ev.Grid.Index, out var statuses)) + { + return; + } + + if (ev.HasGravity) + { + foreach (var status in statuses) + { + RemoveWeightless(status); + } + } + else + { + foreach (var status in statuses) + { + AddWeightless(status); + } + } + } + + private void AddWeightless(ServerStatusEffectsComponent status) + { + status.ChangeStatusEffect(StatusEffect.Weightless, "/Textures/Interface/StatusEffects/Weightless/weightless.png", null); + } + + private void RemoveWeightless(ServerStatusEffectsComponent status) + { + status.RemoveStatusEffect(StatusEffect.Weightless); + } + + private void EntParentChanged(EntParentChangedMessage ev) + { + if (!ev.Entity.TryGetComponent(out ServerStatusEffectsComponent status)) + { + return; + } + + if (ev.OldParent != null && + ev.OldParent.TryGetComponent(out IMapGridComponent mapGrid)) + { + var oldGrid = mapGrid.GridIndex; + + if (_statuses.TryGetValue(oldGrid, out var oldStatuses)) + { + oldStatuses.Remove(status); + } + } + + var newGrid = ev.Entity.Transform.GridID; + var newStatuses = _statuses.GetOrNew(newGrid); + + newStatuses.Add(status); + } + } +} diff --git a/Content.Server/GlobalVerbs/InRangeUnoccludedVerb.cs b/Content.Server/GlobalVerbs/InRangeUnoccludedVerb.cs new file mode 100644 index 0000000000..b15ef0516a --- /dev/null +++ b/Content.Server/GlobalVerbs/InRangeUnoccludedVerb.cs @@ -0,0 +1,57 @@ +using Content.Shared.GameObjects.Verbs; +using Content.Shared.Interfaces; +using Content.Shared.Utility; +using Robust.Server.Console; +using Robust.Server.Interfaces.GameObjects; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.IoC; +using Robust.Shared.Localization; + +namespace Content.Server.GlobalVerbs +{ + [GlobalVerb] + public class InRangeUnoccludedVerb : GlobalVerb + { + public override bool RequireInteractionRange => false; + + public override void GetData(IEntity user, IEntity target, VerbData data) + { + data.Visibility = VerbVisibility.Invisible; + + if (!user.TryGetComponent(out IActorComponent actor)) + { + return; + } + + var groupController = IoCManager.Resolve(); + if (!groupController.CanCommand(actor.playerSession, "inrangeunoccluded")) + { + return; + } + + data.Visibility = VerbVisibility.Visible; + data.Text = Loc.GetString("In Range Unoccluded"); + data.CategoryData = VerbCategories.Debug; + } + + public override void Activate(IEntity user, IEntity target) + { + if (!user.TryGetComponent(out IActorComponent actor)) + { + return; + } + + var groupController = IoCManager.Resolve(); + if (!groupController.CanCommand(actor.playerSession, "inrangeunoccluded")) + { + return; + } + + var message = user.InRangeUnOccluded(target) + ? Loc.GetString("Not occluded") + : Loc.GetString("Occluded"); + + target.PopupMessage(user, message); + } + } +} diff --git a/Content.Server/GlobalVerbs/RejuvenateVerb.cs b/Content.Server/GlobalVerbs/RejuvenateVerb.cs index 494cf2df87..67fc9137ba 100644 --- a/Content.Server/GlobalVerbs/RejuvenateVerb.cs +++ b/Content.Server/GlobalVerbs/RejuvenateVerb.cs @@ -15,7 +15,7 @@ namespace Content.Server.GlobalVerbs /// Completely removes all damage from the DamageableComponent (heals the mob). /// [GlobalVerb] - class RejuvenateVerb : GlobalVerb + public class RejuvenateVerb : GlobalVerb { public override bool RequireInteractionRange => false; public override bool BlockedByContainers => false; @@ -58,6 +58,7 @@ namespace Content.Server.GlobalVerbs if (target.TryGetComponent(out IDamageableComponent damage)) { damage.Heal(); + damage.CurrentState = DamageState.Alive; } if (target.TryGetComponent(out HungerComponent hunger)) diff --git a/Content.Server/Interfaces/GameObjects/Components/Items/IHandsComponent.cs b/Content.Server/Interfaces/GameObjects/Components/Items/IHandsComponent.cs index a840d589fb..d2da0870d0 100644 --- a/Content.Server/Interfaces/GameObjects/Components/Items/IHandsComponent.cs +++ b/Content.Server/Interfaces/GameObjects/Components/Items/IHandsComponent.cs @@ -109,14 +109,16 @@ namespace Content.Server.Interfaces.GameObjects.Components.Items /// /// The slot of which to drop to drop the item. /// Whether to check the for the mob or not. + /// Whether to perform Dropped interactions. /// True on success, false if something blocked the drop. - bool Drop(string slot, bool mobChecks = true); + bool Drop(string slot, bool mobChecks = true, bool doDropInteraction = true); /// /// Drops an item held by one of our hand slots to the same position as our owning entity. /// /// The item to drop. /// Whether to check the for the mob or not. + /// Whether to perform Dropped interactions. /// True on success, false if something blocked the drop. /// /// Thrown if is null. @@ -124,7 +126,7 @@ namespace Content.Server.Interfaces.GameObjects.Components.Items /// /// Thrown if is not actually held in any hand. /// - bool Drop(IEntity entity, bool mobChecks = true); + bool Drop(IEntity entity, bool mobChecks = true, bool doDropInteraction = true); /// /// Drops the item in a slot. @@ -132,8 +134,9 @@ namespace Content.Server.Interfaces.GameObjects.Components.Items /// The slot to drop the item from. /// /// Whether to check the for the mob or not. + /// Whether to perform Dropped interactions. /// True if an item was dropped, false otherwise. - bool Drop(string slot, EntityCoordinates coords, bool doMobChecks = true); + bool Drop(string slot, EntityCoordinates coords, bool doMobChecks = true, bool doDropInteraction = true); /// /// Drop the specified entity in our hands to a certain position. @@ -145,6 +148,7 @@ namespace Content.Server.Interfaces.GameObjects.Components.Items /// The entity to drop, must be held in one of the hands. /// The coordinates to drop the entity at. /// Whether to check the for the mob or not. + /// Whether to perform Dropped interactions. /// /// True if the drop succeeded, /// false if it failed (due to failing to eject from our hand slot, etc...) @@ -155,7 +159,7 @@ namespace Content.Server.Interfaces.GameObjects.Components.Items /// /// Thrown if is not actually held in any hand. /// - bool Drop(IEntity entity, EntityCoordinates coords, bool doMobChecks = true); + bool Drop(IEntity entity, EntityCoordinates coords, bool doMobChecks = true, bool doDropInteraction = true); /// /// Drop the item contained in a slot into another container. @@ -163,13 +167,14 @@ namespace Content.Server.Interfaces.GameObjects.Components.Items /// The slot of which to drop the entity. /// The container to drop into. /// Whether to check the for the mob or not. + /// Whether to perform Dropped interactions. /// True on success, false if something was blocked (insertion or removal). /// /// Thrown if dry-run checks reported OK to remove and insert, /// but practical remove or insert returned false anyways. /// This is an edge-case that is currently unhandled. /// - bool Drop(string slot, BaseContainer targetContainer, bool doMobChecks = true); + bool Drop(string slot, BaseContainer targetContainer, bool doMobChecks = true, bool doDropInteraction = true); /// /// Drops an item in one of the hands into a container. @@ -177,6 +182,7 @@ namespace Content.Server.Interfaces.GameObjects.Components.Items /// The item to drop. /// The container to drop into. /// Whether to check the for the mob or not. + /// Whether to perform Dropped interactions. /// True on success, false if something was blocked (insertion or removal). /// /// Thrown if dry-run checks reported OK to remove and insert, @@ -189,7 +195,7 @@ namespace Content.Server.Interfaces.GameObjects.Components.Items /// /// Thrown if is not actually held in any hand. /// - bool Drop(IEntity entity, BaseContainer targetContainer, bool doMobChecks = true); + bool Drop(IEntity entity, BaseContainer targetContainer, bool doMobChecks = true, bool doDropInteraction = true); /// /// Checks whether the item in the specified hand can be dropped. diff --git a/Content.Server/Interfaces/IDeviceNetwork.cs b/Content.Server/Interfaces/IDeviceNetwork.cs new file mode 100644 index 0000000000..242abd51ec --- /dev/null +++ b/Content.Server/Interfaces/IDeviceNetwork.cs @@ -0,0 +1,25 @@ +using System; +using Content.Server.GameObjects.EntitySystems.DeviceNetwork; + +namespace Content.Server.Interfaces +{ + /// + /// Package based device network allowing devices to communicate with eachother + /// + public interface IDeviceNetwork + { + /// + /// Registers a device with the device network + /// + /// The id of the network to register with + /// The frequency the device receives packages on. Wired networks use frequency 0 + /// The delegate that gets called when the device receives a message + /// If the device should receive all packages on its frequency or only ones addressed to itself + /// + public DeviceNetworkConnection Register(int netId, int frequency, OnReceiveNetMessage messageHandler, bool receiveAll = false); + /// + public DeviceNetworkConnection Register(int netId, OnReceiveNetMessage messageHandler, bool receiveAll = false); + + public void Update(); + } +} diff --git a/Content.Server/Interfaces/IDeviceNetworkConnection.cs b/Content.Server/Interfaces/IDeviceNetworkConnection.cs new file mode 100644 index 0000000000..854acf78db --- /dev/null +++ b/Content.Server/Interfaces/IDeviceNetworkConnection.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Content.Server.Interfaces +{ + public interface IDeviceNetworkConnection + { + public int Frequency { get; } + /// + /// Sends a package to a specific device + /// + /// The frequency the package should be send on + /// The target devices address + /// + /// + public bool Send(int frequency, string address, Dictionary payload); + /// + public bool Send(string address, Dictionary payload); + /// + /// Sends a package to all devices + /// + /// The frequency the package should be send on + /// + /// + public bool Broadcast(int frequency, Dictionary payload); + /// + public bool Broadcast(Dictionary payload); + } +} diff --git a/Content.Server/Interfaces/IGasMixtureHolder.cs b/Content.Server/Interfaces/IGasMixtureHolder.cs index ad7d035f88..d155f02bea 100644 --- a/Content.Server/Interfaces/IGasMixtureHolder.cs +++ b/Content.Server/Interfaces/IGasMixtureHolder.cs @@ -5,5 +5,20 @@ namespace Content.Server.Interfaces public interface IGasMixtureHolder { public GasMixture Air { get; set; } + + public void AssumeAir(GasMixture giver) + { + Air.Merge(giver); + } + + public GasMixture RemoveAir(float amount) + { + return Air.Remove(amount); + } + + public GasMixture RemoveAirVolume(float ratio) + { + return Air.RemoveRatio(ratio); + } } } diff --git a/Content.Server/ServerContentIoC.cs b/Content.Server/ServerContentIoC.cs index abde376c85..fca5cef686 100644 --- a/Content.Server/ServerContentIoC.cs +++ b/Content.Server/ServerContentIoC.cs @@ -7,6 +7,7 @@ using Content.Server.Database; using Content.Server.GameObjects.Components.Mobs.Speech; using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; using Content.Server.GameObjects.Components.Power.PowerNetComponents; +using Content.Server.GameObjects.EntitySystems.DeviceNetwork; using Content.Server.GameTicking; using Content.Server.Interfaces; using Content.Server.Interfaces.Chat; @@ -46,6 +47,7 @@ namespace Content.Server IoCManager.Register(); IoCManager.Register(); IoCManager.Register(); + IoCManager.Register(); } } } diff --git a/Content.Server/Throw/ThrowHelper.cs b/Content.Server/Throw/ThrowHelper.cs index dfc3bac5d7..300460f578 100644 --- a/Content.Server/Throw/ThrowHelper.cs +++ b/Content.Server/Throw/ThrowHelper.cs @@ -85,8 +85,7 @@ namespace Content.Server.Throw projComp.StartThrow(angle.ToVec(), spd); if (throwSourceEnt != null && - throwSourceEnt.TryGetComponent(out var physics) && - physics.TryGetController(out ThrownController mover)) + throwSourceEnt.TryGetComponent(out var physics)) { if (throwSourceEnt.IsWeightless()) { @@ -95,8 +94,9 @@ namespace Content.Server.Throw // I got kinda lazy is the reason why. Also it makes a bit of sense. // If somebody wants they can come along and make it so magboots completely hold you still. // Would be a cool incentive to use them. - const float ThrowFactor = 5.0f; // Break Newton's Third Law for better gameplay - mover.Push(-angle.ToVec(), spd * ThrowFactor * physics.InvMass); + const float throwFactor = 0.2f; // Break Newton's Third Law for better gameplay + var mover = physics.EnsureController(); + mover.Push(-angle.ToVec(), spd * throwFactor); } } } diff --git a/Content.Shared/Atmos/GasPrototype.cs b/Content.Shared/Atmos/GasPrototype.cs index 064ec0139d..3186b09847 100644 --- a/Content.Shared/Atmos/GasPrototype.cs +++ b/Content.Shared/Atmos/GasPrototype.cs @@ -19,6 +19,17 @@ namespace Content.Shared.Atmos /// public float SpecificHeat { get; private set; } + /// + /// Heat capacity ratio for gas + /// + public float HeatCapacityRatio { get; private set; } + + /// + /// Molar mass of gas + /// + public float MolarMass { get; set; } + + /// /// Minimum amount of moles for this gas to be visible. /// @@ -49,6 +60,7 @@ namespace Content.Shared.Atmos /// public string OverlayPath { get; private set; } + public string Color { get; private set; } public void LoadFrom(YamlMappingNode mapping) @@ -59,6 +71,8 @@ namespace Content.Shared.Atmos serializer.DataField(this, x => Name, "name", string.Empty); serializer.DataField(this, x => OverlayPath, "overlayPath", string.Empty); serializer.DataField(this, x => SpecificHeat, "specificHeat", 0f); + serializer.DataField(this, x => HeatCapacityRatio, "heatCapacityRatio", 1.4f); + serializer.DataField(this, x => MolarMass, "molarMass", 1f); serializer.DataField(this, x => GasMolesVisible, "gasMolesVisible", 0.25f); serializer.DataField(this, x => GasOverlayTexture, "gasOverlayTexture", string.Empty); serializer.DataField(this, x => GasOverlaySprite, "gasOverlaySprite", string.Empty); diff --git a/Content.Shared/Construction/IEdgeCondition.cs b/Content.Shared/Construction/IEdgeCondition.cs index 6c2410a752..498bf8cce1 100644 --- a/Content.Shared/Construction/IEdgeCondition.cs +++ b/Content.Shared/Construction/IEdgeCondition.cs @@ -1,4 +1,4 @@ -using System.Threading.Tasks; +using System.Threading.Tasks; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.Serialization; using Robust.Shared.Utility; diff --git a/Content.Shared/Content.Shared.csproj b/Content.Shared/Content.Shared.csproj index 173184e1d1..10e9c89c1e 100644 --- a/Content.Shared/Content.Shared.csproj +++ b/Content.Shared/Content.Shared.csproj @@ -9,6 +9,7 @@ ../bin/Content.Shared Release;Debug AnyCPU + CS8604;CS8765 diff --git a/Content.Shared/GameObjects/Components/Arcade/SharedSpaceVillainArcadeComponent.cs b/Content.Shared/GameObjects/Components/Arcade/SharedSpaceVillainArcadeComponent.cs index 786cf62aac..58abda34ba 100644 --- a/Content.Shared/GameObjects/Components/Arcade/SharedSpaceVillainArcadeComponent.cs +++ b/Content.Shared/GameObjects/Components/Arcade/SharedSpaceVillainArcadeComponent.cs @@ -10,6 +10,19 @@ namespace Content.Shared.GameObjects.Components.Arcade public override string Name => "SpaceVillainArcade"; public override uint? NetID => ContentNetIDs.SPACE_VILLAIN_ARCADE; + [Serializable, NetSerializable] + public enum Indicators + { + /// + /// Blinks when any invincible flag is set + /// + HealthManager, + /// + /// Blinks when Overflow flag is set + /// + HealthLimiter + } + [Serializable, NetSerializable] public enum PlayerAction { @@ -51,10 +64,12 @@ namespace Content.Shared.GameObjects.Components.Arcade { public readonly string GameTitle; public readonly string EnemyName; - public SpaceVillainArcadeMetaDataUpdateMessage(int playerHp, int playerMp, int enemyHp, int enemyMp, string playerActionMessage, string enemyActionMessage, string gameTitle, string enemyName) : base(playerHp, playerMp, enemyHp, enemyMp, playerActionMessage, enemyActionMessage) + public readonly bool ButtonsDisabled; + public SpaceVillainArcadeMetaDataUpdateMessage(int playerHp, int playerMp, int enemyHp, int enemyMp, string playerActionMessage, string enemyActionMessage, string gameTitle, string enemyName, bool buttonsDisabled) : base(playerHp, playerMp, enemyHp, enemyMp, playerActionMessage, enemyActionMessage) { GameTitle = gameTitle; EnemyName = enemyName; + ButtonsDisabled = buttonsDisabled; } } diff --git a/Content.Shared/GameObjects/Components/Atmos/GasTank/GasTankBoundUserInterfaceState.cs b/Content.Shared/GameObjects/Components/Atmos/GasTank/GasTankBoundUserInterfaceState.cs new file mode 100644 index 0000000000..4c5bf4b02d --- /dev/null +++ b/Content.Shared/GameObjects/Components/Atmos/GasTank/GasTankBoundUserInterfaceState.cs @@ -0,0 +1,16 @@ +using System; +using Robust.Shared.GameObjects.Components.UserInterface; +using Robust.Shared.Serialization; + +namespace Content.Shared.GameObjects.Components.Atmos.GasTank +{ + [Serializable, NetSerializable] + public class GasTankBoundUserInterfaceState : BoundUserInterfaceState + { + public float TankPressure { get; set; } + public float? OutputPressure { get; set; } + public bool InternalsConnected { get; set; } + public bool CanConnectInternals { get; set; } + + } +} diff --git a/Content.Shared/GameObjects/Components/Atmos/GasTank/GasTankSetPressureMessage.cs b/Content.Shared/GameObjects/Components/Atmos/GasTank/GasTankSetPressureMessage.cs new file mode 100644 index 0000000000..4fbf2bfc84 --- /dev/null +++ b/Content.Shared/GameObjects/Components/Atmos/GasTank/GasTankSetPressureMessage.cs @@ -0,0 +1,12 @@ +using System; +using Robust.Shared.GameObjects.Components.UserInterface; +using Robust.Shared.Serialization; + +namespace Content.Shared.GameObjects.Components.Atmos.GasTank +{ + [Serializable, NetSerializable] + public class GasTankSetPressureMessage : BoundUserInterfaceMessage + { + public float Pressure { get; set; } + } +} diff --git a/Content.Shared/GameObjects/Components/Atmos/GasTank/GasTankToggleInternalsMessage.cs b/Content.Shared/GameObjects/Components/Atmos/GasTank/GasTankToggleInternalsMessage.cs new file mode 100644 index 0000000000..d009450482 --- /dev/null +++ b/Content.Shared/GameObjects/Components/Atmos/GasTank/GasTankToggleInternalsMessage.cs @@ -0,0 +1,11 @@ +using System; +using Robust.Shared.GameObjects.Components.UserInterface; +using Robust.Shared.Serialization; + +namespace Content.Shared.GameObjects.Components.Atmos.GasTank +{ + [Serializable, NetSerializable] + public class GasTankToggleInternalsMessage : BoundUserInterfaceMessage + { + } +} diff --git a/Content.Shared/GameObjects/Components/Atmos/GasTank/SharedGasTankComponent.cs b/Content.Shared/GameObjects/Components/Atmos/GasTank/SharedGasTankComponent.cs new file mode 100644 index 0000000000..541d1ecbc2 --- /dev/null +++ b/Content.Shared/GameObjects/Components/Atmos/GasTank/SharedGasTankComponent.cs @@ -0,0 +1,10 @@ +using Robust.Shared.GameObjects; + +namespace Content.Shared.GameObjects.Components.Atmos.GasTank +{ + public class SharedGasTankComponent : Component + { + public override string Name => "GasTank"; + public override uint? NetID => ContentNetIDs.GAS_TANK; + } +} diff --git a/Content.Shared/GameObjects/Components/Atmos/GasTank/SharedGasTankUiKey.cs b/Content.Shared/GameObjects/Components/Atmos/GasTank/SharedGasTankUiKey.cs new file mode 100644 index 0000000000..246aad545d --- /dev/null +++ b/Content.Shared/GameObjects/Components/Atmos/GasTank/SharedGasTankUiKey.cs @@ -0,0 +1,11 @@ +using System; +using Robust.Shared.Serialization; + +namespace Content.Shared.GameObjects.Components.Atmos.GasTank +{ + [Serializable, NetSerializable] + public enum SharedGasTankUiKey + { + Key + } +} diff --git a/Content.Shared/GameObjects/Components/Disposal/SharedDisposalMailingUnitComponent.cs b/Content.Shared/GameObjects/Components/Disposal/SharedDisposalMailingUnitComponent.cs new file mode 100644 index 0000000000..5c9def4322 --- /dev/null +++ b/Content.Shared/GameObjects/Components/Disposal/SharedDisposalMailingUnitComponent.cs @@ -0,0 +1,109 @@ +using System; +using System.Collections.Generic; +using Robust.Shared.GameObjects.Components; +using Robust.Shared.GameObjects.Components.UserInterface; +using Robust.Shared.Serialization; +using Robust.Shared.Utility; + +namespace Content.Shared.GameObjects.Components.Disposal +{ + public abstract class SharedDisposalMailingUnitComponent : SharedDisposalUnitComponent, ICollideSpecial + { + public override string Name => "DisposalMailingUnit"; + + public const string TAGS_MAIL = "mail"; + + public const string NET_TAG = "tag"; + public const string NET_SRC = "src"; + public const string NET_TARGET = "target"; + public const string NET_CMD_SENT = "mail_sent"; + public const string NET_CMD_REQUEST = "get_mailer_tag"; + public const string NET_CMD_RESPONSE = "mailer_tag"; + + [Serializable, NetSerializable] + public new enum UiButton + { + Eject, + Engage, + Power + } + + [Serializable, NetSerializable] + public class DisposalMailingUnitBoundUserInterfaceState : BoundUserInterfaceState, IEquatable, ICloneable + { + public readonly string UnitName; + public readonly string UnitState; + public readonly float Pressure; + public readonly bool Powered; + public readonly bool Engaged; + public readonly string Tag; + public readonly List Tags; + public readonly string Target; + + public DisposalMailingUnitBoundUserInterfaceState(string unitName, string unitState, float pressure, bool powered, + bool engaged, string tag, List tags, string target) + { + UnitName = unitName; + UnitState = unitState; + Pressure = pressure; + Powered = powered; + Engaged = engaged; + Tag = tag; + Tags = tags; + Target = target; + } + + public object Clone() + { + return new DisposalMailingUnitBoundUserInterfaceState(UnitName, UnitState, Pressure, Powered, Engaged, Tag, (List)Tags.Clone(), Target); + } + + public bool Equals(DisposalMailingUnitBoundUserInterfaceState other) + { + if (other is null) return false; + if (ReferenceEquals(this, other)) return true; + return UnitName == other.UnitName && + UnitState == other.UnitState && + Powered == other.Powered && + Engaged == other.Engaged && + Pressure.Equals(other.Pressure) && + Tag == other.Tag && + Target == other.Target; + } + } + + /// + /// Message data sent from client to server when a mailing unit ui button is pressed. + /// + [Serializable, NetSerializable] + public new class UiButtonPressedMessage : BoundUserInterfaceMessage + { + public readonly UiButton Button; + + public UiButtonPressedMessage(UiButton button) + { + Button = button; + } + } + + /// + /// Message data sent from client to server when the mailing units target is updated. + /// + [Serializable, NetSerializable] + public class UiTargetUpdateMessage : BoundUserInterfaceMessage + { + public readonly string Target; + + public UiTargetUpdateMessage(string target) + { + Target = target; + } + } + + [Serializable, NetSerializable] + public enum DisposalMailingUnitUiKey + { + Key + } + } +} diff --git a/Content.Shared/GameObjects/Components/Instruments/SharedInstrumentComponent.cs b/Content.Shared/GameObjects/Components/Instruments/SharedInstrumentComponent.cs index 87c1fa35f3..ed2292514f 100644 --- a/Content.Shared/GameObjects/Components/Instruments/SharedInstrumentComponent.cs +++ b/Content.Shared/GameObjects/Components/Instruments/SharedInstrumentComponent.cs @@ -2,6 +2,7 @@ using System; using Robust.Shared.Audio.Midi; using Robust.Shared.GameObjects; using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; namespace Content.Shared.GameObjects.Components.Instruments { @@ -17,6 +18,11 @@ namespace Content.Shared.GameObjects.Components.Instruments public override string Name => "Instrument"; public override uint? NetID => ContentNetIDs.INSTRUMENTS; + public virtual byte InstrumentProgram { get; set; } + public virtual byte InstrumentBank { get; set; } + public virtual bool AllowPercussion { get; set; } + public virtual bool AllowProgramChange { get ; set; } + public virtual void Update(float delta) { } @@ -58,10 +64,18 @@ namespace Content.Shared.GameObjects.Components.Instruments public class InstrumentState : ComponentState { public bool Playing { get; } + public byte InstrumentProgram { get; } + public byte InstrumentBank { get; } + public bool AllowPercussion { get; } + public bool AllowProgramChange { get; } - public InstrumentState(bool playing, uint sequencerTick = 0) : base(ContentNetIDs.INSTRUMENTS) + public InstrumentState(bool playing, byte instrumentProgram, byte instrumentBank, bool allowPercussion, bool allowProgramChange, uint sequencerTick = 0) : base(ContentNetIDs.INSTRUMENTS) { Playing = playing; + InstrumentProgram = instrumentProgram; + InstrumentBank = instrumentBank; + AllowPercussion = allowPercussion; + AllowProgramChange = allowProgramChange; } } diff --git a/Content.Shared/GameObjects/Components/Items/SharedHandsComponent.cs b/Content.Shared/GameObjects/Components/Items/SharedHandsComponent.cs index dbb31f2883..c8eb3a5255 100644 --- a/Content.Shared/GameObjects/Components/Items/SharedHandsComponent.cs +++ b/Content.Shared/GameObjects/Components/Items/SharedHandsComponent.cs @@ -1,13 +1,7 @@ #nullable enable using System; -using Content.Shared.GameObjects.Components.Pulling; -using Content.Shared.Physics.Pull; -using Robust.Shared.Containers; using Robust.Shared.GameObjects; -using Robust.Shared.GameObjects.Components; -using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Serialization; -using Robust.Shared.ViewVariables; namespace Content.Shared.GameObjects.Components.Items { @@ -24,13 +18,15 @@ namespace Content.Shared.GameObjects.Components.Items public readonly string Name; public readonly EntityUid? EntityUid; public readonly HandLocation Location; + public readonly bool Enabled; - public SharedHand(int index, string name, EntityUid? entityUid, HandLocation location) + public SharedHand(int index, string name, EntityUid? entityUid, HandLocation location, bool enabled) { Index = index; Name = name; EntityUid = entityUid; Location = location; + Enabled = enabled; } } @@ -99,6 +95,28 @@ namespace Content.Shared.GameObjects.Components.Items } } + [Serializable, NetSerializable] + public class HandEnabledMsg : ComponentMessage + { + public string Name { get; } + + public HandEnabledMsg(string name) + { + Name = name; + } + } + + [Serializable, NetSerializable] + public class HandDisabledMsg : ComponentMessage + { + public string Name { get; } + + public HandDisabledMsg(string name) + { + Name = name; + } + } + public enum HandLocation : byte { Left, diff --git a/Content.Shared/GameObjects/Components/Mobs/SharedStatusEffectsComponent.cs b/Content.Shared/GameObjects/Components/Mobs/SharedStatusEffectsComponent.cs index 8ffb4da6ed..2c1cffeadd 100644 --- a/Content.Shared/GameObjects/Components/Mobs/SharedStatusEffectsComponent.cs +++ b/Content.Shared/GameObjects/Components/Mobs/SharedStatusEffectsComponent.cs @@ -14,6 +14,8 @@ namespace Content.Shared.GameObjects.Components.Mobs public override string Name => "StatusEffectsUI"; public override uint? NetID => ContentNetIDs.STATUSEFFECTS; + public abstract IReadOnlyDictionary Statuses { get; } + public abstract void ChangeStatusEffectIcon(StatusEffect effect, string icon); public abstract void ChangeStatusEffect(StatusEffect effect, string icon, ValueTuple? cooldown); @@ -68,6 +70,7 @@ namespace Content.Shared.GameObjects.Components.Mobs Buckled, Piloting, Pulling, - Pulled + Pulled, + Weightless } } diff --git a/Content.Shared/GameObjects/Components/Mobs/SharedStunnableComponent.cs b/Content.Shared/GameObjects/Components/Mobs/SharedStunnableComponent.cs index 79ca4dd46c..a347dbbccf 100644 --- a/Content.Shared/GameObjects/Components/Mobs/SharedStunnableComponent.cs +++ b/Content.Shared/GameObjects/Components/Mobs/SharedStunnableComponent.cs @@ -4,6 +4,7 @@ using Content.Shared.GameObjects.Components.Movement; using Content.Shared.GameObjects.EntitySystems; using Content.Shared.Interfaces.GameObjects.Components; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.Interfaces.Timing; using Robust.Shared.IoC; using Robust.Shared.Serialization; @@ -225,7 +226,7 @@ namespace Content.Shared.GameObjects.Components.Mobs } _canHelp = false; - Timer.Spawn((int) _helpInterval * 1000, () => _canHelp = true); + Owner.SpawnTimer((int) _helpInterval * 1000, () => _canHelp = true); KnockdownTimer -= _helpKnockdownRemove; diff --git a/Content.Shared/GameObjects/Components/Pulling/SharedPullableComponent.cs b/Content.Shared/GameObjects/Components/Pulling/SharedPullableComponent.cs index d274c03140..5683665358 100644 --- a/Content.Shared/GameObjects/Components/Pulling/SharedPullableComponent.cs +++ b/Content.Shared/GameObjects/Components/Pulling/SharedPullableComponent.cs @@ -1,22 +1,26 @@ #nullable enable using System; using Content.Shared.GameObjects.Components.Mobs; +using Content.Shared.Physics; using Content.Shared.Physics.Pull; using Robust.Shared.Containers; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.ComponentDependencies; using Robust.Shared.GameObjects.Components; -using Robust.Shared.GameObjects.Components.Transform; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Map; +using Robust.Shared.Physics; using Robust.Shared.Serialization; namespace Content.Shared.GameObjects.Components.Pulling { - public abstract class SharedPullableComponent : Component + public abstract class SharedPullableComponent : Component, ICollideSpecial { public override string Name => "Pullable"; public override uint? NetID => ContentNetIDs.PULLABLE; + [ComponentDependency] private IPhysicsComponent? _physics = default!; + private IEntity? _puller; public virtual IEntity? Puller @@ -232,6 +236,16 @@ namespace Content.Shared.GameObjects.Components.Pulling base.OnRemove(); } + + public bool PreventCollide(IPhysBody collidedWith) + { + if (_puller == null || _physics == null) + { + return false; + } + + return (_physics.CollisionLayer & collidedWith.CollisionMask) == (int) CollisionGroup.MobImpassable; + } } [Serializable, NetSerializable] diff --git a/Content.Shared/GameObjects/Components/SharedConfigurationComponent.cs b/Content.Shared/GameObjects/Components/SharedConfigurationComponent.cs new file mode 100644 index 0000000000..413507d3b3 --- /dev/null +++ b/Content.Shared/GameObjects/Components/SharedConfigurationComponent.cs @@ -0,0 +1,55 @@ +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components.UserInterface; +using Robust.Shared.Serialization; +using System; +using System.Collections.Generic; + +namespace Content.Shared.GameObjects.Components +{ + public class SharedConfigurationComponent : Component + { + public override string Name => "Configuration"; + + [Serializable, NetSerializable] + public class ConfigurationBoundUserInterfaceState : BoundUserInterfaceState + { + public readonly Dictionary Config; + + public ConfigurationBoundUserInterfaceState(Dictionary config) + { + Config = config; + } + } + + /// + /// Message data sent from client to server when the device configuration is updated. + /// + [Serializable, NetSerializable] + public class ConfigurationUpdatedMessage : BoundUserInterfaceMessage + { + public readonly Dictionary Config; + + public ConfigurationUpdatedMessage(Dictionary config) + { + Config = config; + } + } + + [Serializable, NetSerializable] + public class ValidationUpdateMessage : BoundUserInterfaceMessage + { + public readonly string ValidationString; + + public ValidationUpdateMessage(string validationString) + { + ValidationString = validationString; + } + } + + [Serializable, NetSerializable] + public enum ConfigurationUiKey + { + Key + } + } +} diff --git a/Content.Shared/GameObjects/Components/SharedWindowComponent.cs b/Content.Shared/GameObjects/Components/SharedWindowComponent.cs index 862b9069bf..ed62f9cf57 100644 --- a/Content.Shared/GameObjects/Components/SharedWindowComponent.cs +++ b/Content.Shared/GameObjects/Components/SharedWindowComponent.cs @@ -1,4 +1,6 @@ -using Robust.Shared.GameObjects; +using System; +using Robust.Shared.GameObjects; +using Robust.Shared.Serialization; namespace Content.Shared.GameObjects.Components { @@ -6,4 +8,10 @@ namespace Content.Shared.GameObjects.Components { public override string Name => "Window"; } + + [Serializable, NetSerializable] + public enum WindowVisuals + { + Damage + } } diff --git a/Content.Shared/GameObjects/Components/Singularity/SharedEmitterComponent.cs b/Content.Shared/GameObjects/Components/Singularity/SharedEmitterComponent.cs new file mode 100644 index 0000000000..7844f3f215 --- /dev/null +++ b/Content.Shared/GameObjects/Components/Singularity/SharedEmitterComponent.cs @@ -0,0 +1,20 @@ +using System; +using Robust.Shared.Serialization; + +namespace Content.Shared.GameObjects.Components.Singularity +{ + [NetSerializable, Serializable] + public enum EmitterVisuals + { + VisualState, + Locked + } + + [NetSerializable, Serializable] + public enum EmitterVisualState + { + On, + Underpowered, + Off + } +} diff --git a/Content.Shared/GameObjects/Components/Singularity/SharedParticleAcceleratorComponent.cs b/Content.Shared/GameObjects/Components/Singularity/SharedParticleAcceleratorComponent.cs new file mode 100644 index 0000000000..bdf5919356 --- /dev/null +++ b/Content.Shared/GameObjects/Components/Singularity/SharedParticleAcceleratorComponent.cs @@ -0,0 +1,125 @@ +using System; +using Robust.Shared.GameObjects.Components.UserInterface; +using Robust.Shared.Serialization; + +namespace Content.Shared.GameObjects.Components +{ + [NetSerializable, Serializable] + public enum ParticleAcceleratorVisuals + { + VisualState + } + + [NetSerializable, Serializable] + public enum ParticleAcceleratorVisualState + { + //Open, //no prefix + //Wired, //w prefix + Unpowered, //c prefix + Powered, //p prefix + Level0, //0 prefix + Level1, //1 prefix + Level2, //2 prefix + Level3 //3 prefix + } + + [NetSerializable, Serializable] + public enum ParticleAcceleratorPowerState + { + Standby = ParticleAcceleratorVisualState.Powered, + Level0 = ParticleAcceleratorVisualState.Level0, + Level1 = ParticleAcceleratorVisualState.Level1, + Level2 = ParticleAcceleratorVisualState.Level2, + Level3 = ParticleAcceleratorVisualState.Level3 + } + + public enum ParticleAcceleratorVisualLayers + { + Base, + Unlit + } + + [Serializable, NetSerializable] + public enum ParticleAcceleratorWireStatus + { + Power, + Keyboard, + Limiter, + Strength, + } + + [NetSerializable, Serializable] + public class ParticleAcceleratorUIState : BoundUserInterfaceState + { + public bool Assembled; + public bool Enabled; + public ParticleAcceleratorPowerState State; + public int PowerDraw; + public int PowerReceive; + + //dont need a bool for the controlbox because... this is sent to the controlbox :D + public bool EmitterLeftExists; + public bool EmitterCenterExists; + public bool EmitterRightExists; + public bool PowerBoxExists; + public bool FuelChamberExists; + public bool EndCapExists; + + public bool InterfaceBlock; + public ParticleAcceleratorPowerState MaxLevel; + public bool WirePowerBlock; + + public ParticleAcceleratorUIState(bool assembled, bool enabled, ParticleAcceleratorPowerState state, int powerReceive, int powerDraw, bool emitterLeftExists, bool emitterCenterExists, bool emitterRightExists, bool powerBoxExists, bool fuelChamberExists, bool endCapExists, bool interfaceBlock, ParticleAcceleratorPowerState maxLevel, bool wirePowerBlock) + { + Assembled = assembled; + Enabled = enabled; + State = state; + PowerDraw = powerDraw; + PowerReceive = powerReceive; + EmitterLeftExists = emitterLeftExists; + EmitterCenterExists = emitterCenterExists; + EmitterRightExists = emitterRightExists; + PowerBoxExists = powerBoxExists; + FuelChamberExists = fuelChamberExists; + EndCapExists = endCapExists; + InterfaceBlock = interfaceBlock; + MaxLevel = maxLevel; + WirePowerBlock = wirePowerBlock; + } + } + + [NetSerializable, Serializable] + public class ParticleAcceleratorSetEnableMessage : BoundUserInterfaceMessage + { + public readonly bool Enabled; + public ParticleAcceleratorSetEnableMessage(bool enabled) + { + Enabled = enabled; + } + } + + [NetSerializable, Serializable] + public class ParticleAcceleratorRescanPartsMessage : BoundUserInterfaceMessage + { + public ParticleAcceleratorRescanPartsMessage() + { + } + } + + [NetSerializable, Serializable] + public class ParticleAcceleratorSetPowerStateMessage : BoundUserInterfaceMessage + { + public readonly ParticleAcceleratorPowerState State; + + public ParticleAcceleratorSetPowerStateMessage(ParticleAcceleratorPowerState state) + { + State = state; + } + } + + [NetSerializable, Serializable] + public enum ParticleAcceleratorControlBoxUiKey + { + Key + } +} diff --git a/Content.Shared/GameObjects/Components/Singularity/SharedRadiationCollectorComponent.cs b/Content.Shared/GameObjects/Components/Singularity/SharedRadiationCollectorComponent.cs new file mode 100644 index 0000000000..f2bc67424f --- /dev/null +++ b/Content.Shared/GameObjects/Components/Singularity/SharedRadiationCollectorComponent.cs @@ -0,0 +1,20 @@ +using System; +using Robust.Shared.Serialization; + +namespace Content.Shared.GameObjects.Components.Singularity +{ + [NetSerializable, Serializable] + public enum RadiationCollectorVisuals + { + VisualState + } + + [NetSerializable, Serializable] + public enum RadiationCollectorVisualState + { + Active, + Activating, + Deactivating, + Deactive + } +} diff --git a/Content.Shared/GameObjects/Components/Storage/SharedMorgue.cs b/Content.Shared/GameObjects/Components/Storage/SharedMorgue.cs new file mode 100644 index 0000000000..09699d8c89 --- /dev/null +++ b/Content.Shared/GameObjects/Components/Storage/SharedMorgue.cs @@ -0,0 +1,26 @@ +using System; +using Robust.Shared.Serialization; + +namespace Content.Shared.GameObjects.Components.Morgue +{ + [Serializable, NetSerializable] + public enum MorgueVisuals + { + Open, + HasContents, + HasMob, + HasSoul, + } + + [Serializable, NetSerializable] + public enum CrematoriumVisuals + { + Burning, + } + + [Serializable, NetSerializable] + public enum BodyBagVisuals + { + Label, + } +} diff --git a/Content.Shared/GameObjects/Components/Storage/SharedStorageComponent.cs b/Content.Shared/GameObjects/Components/Storage/SharedStorageComponent.cs index 45f69c6636..2bbdb8ffe1 100644 --- a/Content.Shared/GameObjects/Components/Storage/SharedStorageComponent.cs +++ b/Content.Shared/GameObjects/Components/Storage/SharedStorageComponent.cs @@ -144,8 +144,9 @@ namespace Content.Shared.GameObjects.Components.Storage public enum StorageVisuals { Open, - CanLock, + CanWeld, Welded, + CanLock, Locked } } diff --git a/Content.Shared/GameObjects/ContentNetIDs.cs b/Content.Shared/GameObjects/ContentNetIDs.cs index d6dc3fcafc..8769dd85d4 100644 --- a/Content.Shared/GameObjects/ContentNetIDs.cs +++ b/Content.Shared/GameObjects/ContentNetIDs.cs @@ -82,6 +82,8 @@ public const uint PLACEABLE_SURFACE = 1076; public const uint STORABLE = 1077; public const uint PULLABLE = 1078; + public const uint GAS_TANK = 1079; + public const uint SINGULARITY = 1080; // Net IDs for integration tests. public const uint PREDICTION_TEST = 10001; diff --git a/Content.Shared/GameObjects/EntitySystemMessages/Gravity/GravityChangedMessage.cs b/Content.Shared/GameObjects/EntitySystemMessages/Gravity/GravityChangedMessage.cs new file mode 100644 index 0000000000..5b54d058fd --- /dev/null +++ b/Content.Shared/GameObjects/EntitySystemMessages/Gravity/GravityChangedMessage.cs @@ -0,0 +1,17 @@ +using Robust.Shared.GameObjects; +using Robust.Shared.Map; + +namespace Content.Shared.GameObjects.EntitySystemMessages.Gravity +{ + public class GravityChangedMessage : EntitySystemMessage + { + public GravityChangedMessage(IMapGrid grid) + { + Grid = grid; + } + + public IMapGrid Grid { get; } + + public bool HasGravity => Grid.HasGravity; + } +} diff --git a/Content.Shared/GameObjects/EntitySystemMessages/SingularitySoundMessage.cs b/Content.Shared/GameObjects/EntitySystemMessages/SingularitySoundMessage.cs new file mode 100644 index 0000000000..66392f6c43 --- /dev/null +++ b/Content.Shared/GameObjects/EntitySystemMessages/SingularitySoundMessage.cs @@ -0,0 +1,20 @@ +using System; +using Robust.Shared.GameObjects; +using Robust.Shared.Serialization; + +namespace Content.Shared.GameObjects.EntitySystemMessages +{ + [Serializable, NetSerializable] + public class SingularitySoundMessage : ComponentMessage + { + public bool Start { get; } + + public SingularitySoundMessage(bool start) + { + Directed = true; + Start = start; + } + } + + +} diff --git a/Content.Shared/GameObjects/EntitySystems/ExamineSystemShared.cs b/Content.Shared/GameObjects/EntitySystems/ExamineSystemShared.cs index 8a8310aad3..79489aa59d 100644 --- a/Content.Shared/GameObjects/EntitySystems/ExamineSystemShared.cs +++ b/Content.Shared/GameObjects/EntitySystems/ExamineSystemShared.cs @@ -1,9 +1,12 @@ -using System.Linq; +#nullable enable +using System.Linq; using Content.Shared.GameObjects.Components.Mobs; using Content.Shared.Interfaces.GameObjects.Components; using Content.Shared.Utility; using JetBrains.Annotations; using Robust.Shared.Containers; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Map; @@ -38,7 +41,7 @@ namespace Content.Shared.GameObjects.EntitySystems [Pure] protected static bool CanExamine(IEntity examiner, IEntity examined) { - if (!examiner.TryGetComponent(out ExaminerComponent examinerComponent)) + if (!examiner.TryGetComponent(out ExaminerComponent? examinerComponent)) { return false; } @@ -68,7 +71,7 @@ namespace Content.Shared.GameObjects.EntitySystems ignoreInsideBlocker: true); } - public static bool InRangeUnOccluded(MapCoordinates origin, MapCoordinates other, float range, Ignored predicate, bool ignoreInsideBlocker = true) + public static bool InRangeUnOccluded(MapCoordinates origin, MapCoordinates other, float range, Ignored? predicate, bool ignoreInsideBlocker = true) { var occluderSystem = Get(); if (!origin.InRange(other, range)) return false; @@ -88,12 +91,27 @@ namespace Content.Shared.GameObjects.EntitySystems if (!ignoreInsideBlocker) return false; - if (rayResults.Count <= 0) return false; + foreach (var result in rayResults) + { + if (!result.HitEntity.TryGetComponent(out OccluderComponent? o)) + { + continue; + } - return (rayResults[0].HitPos - other.Position).Length < 1f; + var bBox = o.BoundingBox.Translated(o.Owner.Transform.WorldPosition); + + if (bBox.Contains(origin.Position) || bBox.Contains(other.Position)) + { + continue; + } + + return false; + } + + return true; } - public static bool InRangeUnOccluded(IEntity origin, IEntity other, float range, Ignored predicate, bool ignoreInsideBlocker = true) + public static bool InRangeUnOccluded(IEntity origin, IEntity other, float range, Ignored? predicate, bool ignoreInsideBlocker = true) { var originPos = origin.Transform.MapPosition; var otherPos = other.Transform.MapPosition; @@ -101,7 +119,7 @@ namespace Content.Shared.GameObjects.EntitySystems return InRangeUnOccluded(originPos, otherPos, range, predicate, ignoreInsideBlocker); } - public static bool InRangeUnOccluded(IEntity origin, IComponent other, float range, Ignored predicate, bool ignoreInsideBlocker = true) + public static bool InRangeUnOccluded(IEntity origin, IComponent other, float range, Ignored? predicate, bool ignoreInsideBlocker = true) { var originPos = origin.Transform.MapPosition; var otherPos = other.Owner.Transform.MapPosition; @@ -109,7 +127,7 @@ namespace Content.Shared.GameObjects.EntitySystems return InRangeUnOccluded(originPos, otherPos, range, predicate, ignoreInsideBlocker); } - public static bool InRangeUnOccluded(IEntity origin, EntityCoordinates other, float range, Ignored predicate, bool ignoreInsideBlocker = true) + public static bool InRangeUnOccluded(IEntity origin, EntityCoordinates other, float range, Ignored? predicate, bool ignoreInsideBlocker = true) { var originPos = origin.Transform.MapPosition; var otherPos = other.ToMap(origin.EntityManager); @@ -117,14 +135,14 @@ namespace Content.Shared.GameObjects.EntitySystems return InRangeUnOccluded(originPos, otherPos, range, predicate, ignoreInsideBlocker); } - public static bool InRangeUnOccluded(IEntity origin, MapCoordinates other, float range, Ignored predicate, bool ignoreInsideBlocker = true) + public static bool InRangeUnOccluded(IEntity origin, MapCoordinates other, float range, Ignored? predicate, bool ignoreInsideBlocker = true) { var originPos = origin.Transform.MapPosition; return InRangeUnOccluded(originPos, other, range, predicate, ignoreInsideBlocker); } - public static bool InRangeUnOccluded(ITargetedInteractEventArgs args, float range, Ignored predicate, bool ignoreInsideBlocker = true) + public static bool InRangeUnOccluded(ITargetedInteractEventArgs args, float range, Ignored? predicate, bool ignoreInsideBlocker = true) { var originPos = args.User.Transform.MapPosition; var otherPos = args.Target.Transform.MapPosition; @@ -132,7 +150,7 @@ namespace Content.Shared.GameObjects.EntitySystems return InRangeUnOccluded(originPos, otherPos, range, predicate, ignoreInsideBlocker); } - public static bool InRangeUnOccluded(DragDropEventArgs args, float range, Ignored predicate, bool ignoreInsideBlocker = true) + public static bool InRangeUnOccluded(DragDropEventArgs args, float range, Ignored? predicate, bool ignoreInsideBlocker = true) { var originPos = args.User.Transform.MapPosition; var otherPos = args.DropLocation.ToMap(args.User.EntityManager); @@ -140,7 +158,7 @@ namespace Content.Shared.GameObjects.EntitySystems return InRangeUnOccluded(originPos, otherPos, range, predicate, ignoreInsideBlocker); } - public static bool InRangeUnOccluded(AfterInteractEventArgs args, float range, Ignored predicate, bool ignoreInsideBlocker = true) + public static bool InRangeUnOccluded(AfterInteractEventArgs args, float range, Ignored? predicate, bool ignoreInsideBlocker = true) { var originPos = args.User.Transform.MapPosition; var otherPos = args.Target.Transform.MapPosition; diff --git a/Content.Shared/GameObjects/EntitySystems/SharedDisposalUnitSystem.cs b/Content.Shared/GameObjects/EntitySystems/SharedDisposalUnitSystem.cs index c019620ef0..d957a9f203 100644 --- a/Content.Shared/GameObjects/EntitySystems/SharedDisposalUnitSystem.cs +++ b/Content.Shared/GameObjects/EntitySystems/SharedDisposalUnitSystem.cs @@ -13,6 +13,11 @@ namespace Content.Shared.GameObjects.EntitySystems { comp.Update(frameTime); } + + foreach (var comp in ComponentManager.EntityQuery()) + { + comp.Update(frameTime); + } } } } diff --git a/Content.Shared/GameObjects/EntitySystems/SharedInteractionSystem.cs b/Content.Shared/GameObjects/EntitySystems/SharedInteractionSystem.cs index d6c2122457..838dafcb09 100644 --- a/Content.Shared/GameObjects/EntitySystems/SharedInteractionSystem.cs +++ b/Content.Shared/GameObjects/EntitySystems/SharedInteractionSystem.cs @@ -3,6 +3,7 @@ using Content.Shared.Interfaces; using Content.Shared.Interfaces.GameObjects.Components; using Content.Shared.Physics; using JetBrains.Annotations; +using Robust.Shared.GameObjects.Components; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.Physics; @@ -132,9 +133,24 @@ namespace Content.Shared.GameObjects.EntitySystems if (!ignoreInsideBlocker) return false; - if (rayResults.Count <= 0) return false; + foreach (var result in rayResults) + { + if (!result.HitEntity.TryGetComponent(out IPhysicsComponent p)) + { + continue; + } - return (rayResults[0].HitPos - other.Position).Length < 1f; + var bBox = p.WorldAABB; + + if (bBox.Contains(origin.Position) || bBox.Contains(other.Position)) + { + continue; + } + + return false; + } + + return true; } /// diff --git a/Content.Shared/GameObjects/Verbs/SharedVerbSystem.cs b/Content.Shared/GameObjects/Verbs/SharedVerbSystem.cs index 82c5a940e2..6ed33924d4 100644 --- a/Content.Shared/GameObjects/Verbs/SharedVerbSystem.cs +++ b/Content.Shared/GameObjects/Verbs/SharedVerbSystem.cs @@ -5,6 +5,7 @@ using System.Linq; using Content.Shared.Physics; using Content.Shared.Utility; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components.Eye; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Map; @@ -46,7 +47,11 @@ namespace Content.Shared.GameObjects.Verbs !occluder.Enabled; } - var result = player.InRangeUnobstructed(targetPos, distance, CollisionGroup.Opaque, Ignored); + var mask = player.TryGetComponent(out SharedEyeComponent? eye) && eye.DrawFov + ? CollisionGroup.Opaque + : CollisionGroup.None; + + var result = player.InRangeUnobstructed(targetPos, distance, mask, Ignored); if (!result) { diff --git a/Content.Shared/Physics/CollisionGroup.cs b/Content.Shared/Physics/CollisionGroup.cs index 0834d69787..c5d2448076 100644 --- a/Content.Shared/Physics/CollisionGroup.cs +++ b/Content.Shared/Physics/CollisionGroup.cs @@ -21,7 +21,8 @@ namespace Content.Shared.Physics SmallImpassable = 1 << 4, // 16 Things a smaller object - a cat, a crab - can't go through - a wall, but not a computer terminal or a table Clickable = 1 << 5, // 32 Temporary "dummy" layer to ensure that objects can still be clicked even if they don't collide with anything (you can't interact with objects that have no layer, including items) GhostImpassable = 1 << 6, // 64 Things impassible by ghosts/observers, ie blessed tiles or forcefields - + Underplating = 1 << 7, // 128 Things that are under plating + Passable = 1 << 8, // 256 Things that are passable MapGrid = MapGridHelpers.CollisionGroup, // Map grids, like shuttles. This is the actual grid itself, not the walls or other entities connected to the grid. MobMask = Impassable | MobImpassable | VaultImpassable | SmallImpassable, diff --git a/Content.Shared/Physics/ContainmentFieldCollisionController.cs b/Content.Shared/Physics/ContainmentFieldCollisionController.cs new file mode 100644 index 0000000000..c2e56646d2 --- /dev/null +++ b/Content.Shared/Physics/ContainmentFieldCollisionController.cs @@ -0,0 +1,9 @@ +using Robust.Shared.Physics; + +namespace Content.Shared.Physics +{ + public class ContainmentFieldCollisionController : VirtualController + { + + } +} diff --git a/Content.Shared/Physics/ContainmentFieldRepellController.cs b/Content.Shared/Physics/ContainmentFieldRepellController.cs new file mode 100644 index 0000000000..314dbc811a --- /dev/null +++ b/Content.Shared/Physics/ContainmentFieldRepellController.cs @@ -0,0 +1,14 @@ +using System.Numerics; +using Robust.Shared.Maths; +using Robust.Shared.Physics; + +namespace Content.Shared.Physics +{ + public class ContainmentFieldRepellController : FrictionController + { + public void Repell(Direction dir, float speed) + { + LinearVelocity = dir.ToVec() * speed; + } + } +} diff --git a/Content.Shared/Physics/ConveyedController.cs b/Content.Shared/Physics/ConveyedController.cs index d3a08818ea..7665100dd9 100644 --- a/Content.Shared/Physics/ConveyedController.cs +++ b/Content.Shared/Physics/ConveyedController.cs @@ -1,8 +1,6 @@ #nullable enable using Content.Shared.GameObjects.Components.Movement; using Robust.Shared.GameObjects.Components; -using Robust.Shared.Interfaces.Physics; -using Robust.Shared.IoC; using Robust.Shared.Maths; using Robust.Shared.Physics; @@ -24,7 +22,7 @@ namespace Content.Shared.Physics return; } - LinearVelocity = velocityDirection * speed * 100; + LinearVelocity = velocityDirection * speed; } public override void UpdateAfterProcessing() diff --git a/Content.Shared/Physics/FrictionController.cs b/Content.Shared/Physics/FrictionController.cs new file mode 100644 index 0000000000..92e9e17baf --- /dev/null +++ b/Content.Shared/Physics/FrictionController.cs @@ -0,0 +1,24 @@ +using System; +using Robust.Shared.Interfaces.Physics; +using Robust.Shared.IoC; +using Robust.Shared.Physics; + +namespace Content.Shared.Physics +{ + public abstract class FrictionController : VirtualController + { + [Dependency] private IPhysicsManager _physicsManager = default!; + + public override void UpdateAfterProcessing() + { + base.UpdateAfterProcessing(); + + if (ControlledComponent != null && !_physicsManager.IsWeightless(ControlledComponent.Owner.Transform.Coordinates)) + { + LinearVelocity *= 0.85f; + if (MathF.Abs(LinearVelocity.Length) < 1f) + Stop(); + } + } + } +} diff --git a/Content.Shared/Physics/Pull/PullAttemptMessage.cs b/Content.Shared/Physics/Pull/PullAttemptMessage.cs new file mode 100644 index 0000000000..8a3a31bab4 --- /dev/null +++ b/Content.Shared/Physics/Pull/PullAttemptMessage.cs @@ -0,0 +1,11 @@ +using Robust.Shared.GameObjects.Components; + +namespace Content.Shared.Physics.Pull +{ + public class PullAttemptMessage : PullMessage + { + public PullAttemptMessage(IPhysicsComponent puller, IPhysicsComponent pulled) : base(puller, pulled) { } + + public bool Cancelled { get; set; } + } +} diff --git a/Content.Shared/Physics/Pull/PullController.cs b/Content.Shared/Physics/Pull/PullController.cs index cadb0db3ce..5ad3dff9df 100644 --- a/Content.Shared/Physics/Pull/PullController.cs +++ b/Content.Shared/Physics/Pull/PullController.cs @@ -26,8 +26,6 @@ namespace Content.Shared.Physics.Pull private IPhysicsComponent? _puller; - public bool GettingPulled => _puller != null; - private EntityCoordinates? _movingTo; public IPhysicsComponent? Puller => _puller; @@ -47,18 +45,6 @@ namespace Content.Shared.Physics.Pull } } - private float DistanceBeforeStopPull() - { - if (_puller == null) - { - return 0; - } - - var aabbSize = _puller.AABB.Size; - - return (aabbSize.X > aabbSize.Y ? aabbSize.X : aabbSize.Y) + 0.15f; - } - private bool PullerMovingTowardsPulled() { if (_puller == null) @@ -83,7 +69,7 @@ namespace Content.Shared.Physics.Pull var ray = new CollisionRay(origin, velocity, (int) CollisionGroup.AllMask); bool Predicate(IEntity e) => e != ControlledComponent.Owner; var rayResults = - _physicsManager.IntersectRayWithPredicate(mapId, ray, DistanceBeforeStopPull() * 2, Predicate); + _physicsManager.IntersectRayWithPredicate(mapId, ray, DistBeforeStopPull, Predicate); return rayResults.Any(); } @@ -114,6 +100,22 @@ namespace Content.Shared.Physics.Pull return false; } + var pullAttempt = new PullAttemptMessage(puller, ControlledComponent); + + puller.Owner.SendMessage(null, pullAttempt); + + if (pullAttempt.Cancelled) + { + return false; + } + + ControlledComponent.Owner.SendMessage(null, pullAttempt); + + if (pullAttempt.Cancelled) + { + return false; + } + _puller = puller; var message = new PullStartedMessage(this, _puller, ControlledComponent); @@ -219,13 +221,23 @@ namespace Content.Shared.Physics.Pull var diff = MovingTo.Value.Position - ControlledComponent.Owner.Transform.Coordinates.Position; LinearVelocity = diff.Normalized * 5; } - else if (distance.Length > DistanceBeforeStopPull() && !PullerMovingTowardsPulled()) - { - LinearVelocity = distance.Normalized * _puller.LinearVelocity.Length * 1.5f; - } else { - LinearVelocity = Vector2.Zero; + if (PullerMovingTowardsPulled()) + { + LinearVelocity = Vector2.Zero; + return; + } + + var distanceAbs = Vector2.Abs(distance); + var totalAabb = _puller.AABB.Size + ControlledComponent.AABB.Size / 2; + if (distanceAbs.X < totalAabb.X && distanceAbs.Y < totalAabb.Y) + { + LinearVelocity = Vector2.Zero; + return; + } + + LinearVelocity = distance.Normalized * _puller.LinearVelocity.Length * 1.5f; } } @@ -244,6 +256,12 @@ namespace Content.Shared.Physics.Pull { MovingTo = null; } + + if (LinearVelocity != Vector2.Zero) + { + var angle = LinearVelocity.ToAngle(); + ControlledComponent.Owner.Transform.LocalRotation = angle; + } } } } diff --git a/Content.Shared/Physics/SingularityController.cs b/Content.Shared/Physics/SingularityController.cs new file mode 100644 index 0000000000..2aafe8d5a6 --- /dev/null +++ b/Content.Shared/Physics/SingularityController.cs @@ -0,0 +1,18 @@ +#nullable enable +using Robust.Shared.GameObjects.Components; +using Robust.Shared.Maths; +using Robust.Shared.Physics; + +namespace Content.Shared.Physics +{ + public class SingularityController : VirtualController + { + public override IPhysicsComponent? ControlledComponent { protected get; set; } + + + public void Push(Vector2 velocityDirection, float speed) + { + LinearVelocity = velocityDirection * speed; + } + } +} diff --git a/Content.Shared/Physics/SingularityPullController.cs b/Content.Shared/Physics/SingularityPullController.cs new file mode 100644 index 0000000000..0a235fe1d0 --- /dev/null +++ b/Content.Shared/Physics/SingularityPullController.cs @@ -0,0 +1,22 @@ +#nullable enable +using Robust.Shared.GameObjects.Components; +using Robust.Shared.Maths; +using Robust.Shared.Physics; + +namespace Content.Server.GameObjects.Components.Singularity +{ + public class SingularityPullController : VirtualController + { + public override IPhysicsComponent? ControlledComponent { protected get; set; } + + public void StopPull() + { + LinearVelocity = Vector2.Zero; + } + + public void Pull(Vector2 velocityDirection, float speed) + { + LinearVelocity = velocityDirection * speed; + } + } +} diff --git a/Content.Shared/Physics/SlipController.cs b/Content.Shared/Physics/SlipController.cs index 7a83b1ea40..8a2091019b 100644 --- a/Content.Shared/Physics/SlipController.cs +++ b/Content.Shared/Physics/SlipController.cs @@ -1,5 +1,6 @@ -using Robust.Shared.Interfaces.Physics; +using Robust.Shared.Interfaces.Physics; using Robust.Shared.IoC; +using Robust.Shared.Maths; using Robust.Shared.Physics; namespace Content.Shared.Physics @@ -24,6 +25,11 @@ namespace Content.Shared.Physics if (_physicsManager.IsWeightless(ControlledComponent.Owner.Transform.Coordinates)) { + if (ControlledComponent.IsColliding(Vector2.Zero, false)) + { + Stop(); + } + return; } diff --git a/Content.Shared/Physics/ThrowKnockbackController.cs b/Content.Shared/Physics/ThrowKnockbackController.cs new file mode 100644 index 0000000000..e1cae0ee3b --- /dev/null +++ b/Content.Shared/Physics/ThrowKnockbackController.cs @@ -0,0 +1,52 @@ +using Content.Shared.GameObjects.Components.Movement; +using Content.Shared.GameObjects.EntitySystems; +using Robust.Shared.Interfaces.Physics; +using Robust.Shared.IoC; +using Robust.Shared.Maths; +using Robust.Shared.Physics; + +namespace Content.Shared.Physics +{ + public class ThrowKnockbackController : VirtualController + { + [Dependency] private readonly IPhysicsManager _physicsManager = default!; + + public ThrowKnockbackController() + { + IoCManager.InjectDependencies(this); + } + + public void Push(Vector2 velocityDirection, float speed) + { + LinearVelocity = velocityDirection * speed; + } + + private float Decay { get; set; } = 0.95f; + + public override void UpdateAfterProcessing() + { + if (ControlledComponent == null) + { + return; + } + + if (ControlledComponent.Owner.IsWeightless()) + { + if (ActionBlockerSystem.CanMove(ControlledComponent.Owner) + && ControlledComponent.IsColliding(Vector2.Zero, false)) + { + Stop(); + } + + return; + } + + LinearVelocity *= Decay; + + if (LinearVelocity.Length < 0.001) + { + Stop(); + } + } + } +} diff --git a/Content.Shared/Prototypes/Cargo/CargoProductPrototype.cs b/Content.Shared/Prototypes/Cargo/CargoProductPrototype.cs index 3cfc1497f5..7c5411e20d 100644 --- a/Content.Shared/Prototypes/Cargo/CargoProductPrototype.cs +++ b/Content.Shared/Prototypes/Cargo/CargoProductPrototype.cs @@ -34,10 +34,8 @@ namespace Content.Shared.Prototypes.Cargo { if (_name.Trim().Length != 0) return _name; - var protoMan = IoCManager.Resolve(); - if (protoMan == null) - return _name; - protoMan.TryIndex(_product, out EntityPrototype prototype); + EntityPrototype prototype = null; + IoCManager.Resolve()?.TryIndex(_product, out prototype); if (prototype?.Name != null) _name = prototype.Name; return _name; @@ -54,10 +52,8 @@ namespace Content.Shared.Prototypes.Cargo { if (_description.Trim().Length != 0) return _description; - var protoMan = IoCManager.Resolve(); - if (protoMan == null) - return _description; - protoMan.TryIndex(_product, out EntityPrototype prototype); + EntityPrototype prototype = null; + IoCManager.Resolve()?.TryIndex(_product, out prototype); if (prototype?.Description != null) _description = prototype.Description; return _description; @@ -94,6 +90,11 @@ namespace Content.Shared.Prototypes.Cargo [ViewVariables] public string Group => _group; + public CargoProductPrototype() + { + IoCManager.InjectDependencies(this); + } + public void LoadFrom(YamlMappingNode mapping) { var serializer = YamlObjectSerializer.NewReader(mapping); diff --git a/Content.Shared/Utility/ContentHelpers.cs b/Content.Shared/Utility/ContentHelpers.cs index 58cc6a7110..69132a4082 100644 --- a/Content.Shared/Utility/ContentHelpers.cs +++ b/Content.Shared/Utility/ContentHelpers.cs @@ -56,5 +56,53 @@ namespace Content.Shared.Utility return (int)Math.Floor(preround); } } + + /// + /// Returns the segment lies on on a decimal scale from 0 to divided into + /// sections. In less mathematical terms, same as + /// except is rounded to the nearest matching level instead of 0 and the highest level being + /// precisely 0 and max and no other value. + /// + /// + /// You have a 5-segment progress bar used to display a percentile value. + /// You want the display to match the percentile value as accurately as possible, so that eg. + /// 95% is rounded up to 5, 89.99% is rounded down to 4, 15% is rounded up to 1 and 5% is rounded down + /// to 0, in terms of number of segments lit. + /// In this case you would use RoundToNearestLevels(value, max, 5) + /// + /// The point to be rounded to the nearest level. + /// The maximum value of the scale. + /// Number of segments the scale is subdivided into. + /// The segment lies on. + /// + public static int RoundToNearestLevels(double actual, double max, int levels) + { + if (levels <= 1) + { + throw new ArgumentException("Levels must be greater than 1.", nameof(levels)); + } + if (actual >= max) + { + return levels; + } + if (actual <= 0) + { + return 0; + } + double step = max / levels; + + int nearest = 0; + double nearestDiff = actual; + for (var i = 1; i <= levels; i++) + { + var diff = Math.Abs(actual - i * step); + if (diff < nearestDiff) + { + nearestDiff = diff; + nearest = i; + } + } + return nearest; + } } } diff --git a/Content.Shared/Utility/EntityPrototypeHelpers.cs b/Content.Shared/Utility/EntityPrototypeHelpers.cs index 3c7115f20f..704313d329 100644 --- a/Content.Shared/Utility/EntityPrototypeHelpers.cs +++ b/Content.Shared/Utility/EntityPrototypeHelpers.cs @@ -1,5 +1,6 @@ #nullable enable using System; +using JetBrains.Annotations; using Robust.Shared.GameObjects; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.IoC; @@ -7,8 +8,23 @@ using Robust.Shared.Prototypes; namespace Content.Shared.Utility { + [UsedImplicitly] public static class EntityPrototypeHelpers { + public static bool HasComponent(this EntityPrototype prototype, IComponentFactory? componentFactory = null) where T : IComponent + { + return prototype.HasComponent(typeof(T), componentFactory); + } + + public static bool HasComponent(this EntityPrototype prototype, Type component, IComponentFactory? componentFactory = null) + { + componentFactory ??= IoCManager.Resolve(); + + var registration = componentFactory.GetRegistration(component); + + return prototype.Components.ContainsKey(registration.Name); + } + public static bool HasComponent(string prototype, IPrototypeManager? prototypeManager = null, IComponentFactory? componentFactory = null) where T : IComponent { return HasComponent(prototype, typeof(T), prototypeManager, componentFactory); @@ -17,16 +33,8 @@ namespace Content.Shared.Utility public static bool HasComponent(string prototype, Type component, IPrototypeManager? prototypeManager = null, IComponentFactory? componentFactory = null) { prototypeManager ??= IoCManager.Resolve(); - componentFactory ??= IoCManager.Resolve(); - var registration = componentFactory.GetRegistration(component); - - if (!prototypeManager.TryIndex(prototype, out EntityPrototype proto)) - { - return proto.Components.ContainsKey(registration.Name); - } - - return false; + return prototypeManager.TryIndex(prototype, out EntityPrototype proto) && proto.HasComponent(component, componentFactory); } } } diff --git a/Content.Shared/Utility/SharedUnoccludedExtensions.cs b/Content.Shared/Utility/SharedUnoccludedExtensions.cs index 0f14238509..db2d057ddf 100644 --- a/Content.Shared/Utility/SharedUnoccludedExtensions.cs +++ b/Content.Shared/Utility/SharedUnoccludedExtensions.cs @@ -18,7 +18,7 @@ namespace Content.Shared.Utility IEntity other, float range = ExamineRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false) + bool ignoreInsideBlocker = true) { return ExamineSystemShared.InRangeUnOccluded(origin, other, range, predicate, ignoreInsideBlocker); } @@ -28,7 +28,7 @@ namespace Content.Shared.Utility IComponent other, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false) + bool ignoreInsideBlocker = true) { return ExamineSystemShared.InRangeUnOccluded(origin, other, range, predicate, ignoreInsideBlocker); } @@ -38,7 +38,7 @@ namespace Content.Shared.Utility IContainer other, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false) + bool ignoreInsideBlocker = true) { var otherEntity = other.Owner; @@ -50,7 +50,7 @@ namespace Content.Shared.Utility EntityCoordinates other, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false) + bool ignoreInsideBlocker = true) { return ExamineSystemShared.InRangeUnOccluded(origin, other, range, predicate, ignoreInsideBlocker); } @@ -60,7 +60,7 @@ namespace Content.Shared.Utility MapCoordinates other, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false) + bool ignoreInsideBlocker = true) { return ExamineSystemShared.InRangeUnOccluded(origin, other, range, predicate, ignoreInsideBlocker); } @@ -72,7 +72,7 @@ namespace Content.Shared.Utility IEntity other, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false) + bool ignoreInsideBlocker = true) { var originEntity = origin.Owner; @@ -84,7 +84,7 @@ namespace Content.Shared.Utility IComponent other, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false) + bool ignoreInsideBlocker = true) { var originEntity = origin.Owner; @@ -96,7 +96,7 @@ namespace Content.Shared.Utility IContainer other, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false) + bool ignoreInsideBlocker = true) { var originEntity = origin.Owner; var otherEntity = other.Owner; @@ -110,7 +110,7 @@ namespace Content.Shared.Utility EntityCoordinates other, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false) + bool ignoreInsideBlocker = true) { var originEntity = origin.Owner; @@ -122,7 +122,7 @@ namespace Content.Shared.Utility MapCoordinates other, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false) + bool ignoreInsideBlocker = true) { var originEntity = origin.Owner; @@ -137,7 +137,7 @@ namespace Content.Shared.Utility IEntity other, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false) + bool ignoreInsideBlocker = true) { var originEntity = origin.Owner; @@ -150,7 +150,7 @@ namespace Content.Shared.Utility IComponent other, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false) + bool ignoreInsideBlocker = true) { var originEntity = origin.Owner; @@ -162,7 +162,7 @@ namespace Content.Shared.Utility IContainer other, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false) + bool ignoreInsideBlocker = true) { var originEntity = origin.Owner; var otherEntity = other.Owner; @@ -176,7 +176,7 @@ namespace Content.Shared.Utility EntityCoordinates other, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false) + bool ignoreInsideBlocker = true) { var originEntity = origin.Owner; @@ -188,7 +188,7 @@ namespace Content.Shared.Utility MapCoordinates other, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false) + bool ignoreInsideBlocker = true) { var originEntity = origin.Owner; @@ -202,7 +202,7 @@ namespace Content.Shared.Utility IEntity other, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false) + bool ignoreInsideBlocker = true) { var originPosition = origin.ToMap(other.EntityManager); var otherPosition = other.Transform.MapPosition; @@ -216,7 +216,7 @@ namespace Content.Shared.Utility IComponent other, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false) + bool ignoreInsideBlocker = true) { var originPosition = origin.ToMap(other.Owner.EntityManager); var otherPosition = other.Owner.Transform.MapPosition; @@ -230,7 +230,7 @@ namespace Content.Shared.Utility IContainer other, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false) + bool ignoreInsideBlocker = true) { var originPosition = origin.ToMap(other.Owner.EntityManager); var otherPosition = other.Owner.Transform.MapPosition; @@ -244,7 +244,7 @@ namespace Content.Shared.Utility EntityCoordinates other, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false, + bool ignoreInsideBlocker = true, IEntityManager? entityManager = null) { entityManager ??= IoCManager.Resolve(); @@ -261,7 +261,7 @@ namespace Content.Shared.Utility MapCoordinates other, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false, + bool ignoreInsideBlocker = true, IEntityManager? entityManager = null) { entityManager ??= IoCManager.Resolve(); @@ -279,7 +279,7 @@ namespace Content.Shared.Utility IEntity other, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false) + bool ignoreInsideBlocker = true) { var otherPosition = other.Transform.MapPosition; @@ -292,7 +292,7 @@ namespace Content.Shared.Utility IComponent other, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false) + bool ignoreInsideBlocker = true) { var otherPosition = other.Owner.Transform.MapPosition; @@ -305,7 +305,7 @@ namespace Content.Shared.Utility IContainer other, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false) + bool ignoreInsideBlocker = true) { var otherPosition = other.Owner.Transform.MapPosition; @@ -318,7 +318,7 @@ namespace Content.Shared.Utility EntityCoordinates other, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false, + bool ignoreInsideBlocker = true, IEntityManager? entityManager = null) { entityManager ??= IoCManager.Resolve(); @@ -334,7 +334,7 @@ namespace Content.Shared.Utility MapCoordinates other, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false) + bool ignoreInsideBlocker = true) { return ExamineSystemShared.InRangeUnOccluded(origin, other, range, predicate, ignoreInsideBlocker); @@ -346,7 +346,7 @@ namespace Content.Shared.Utility this ITargetedInteractEventArgs args, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false) + bool ignoreInsideBlocker = true) { return ExamineSystemShared.InRangeUnOccluded(args, range, predicate, ignoreInsideBlocker); @@ -356,7 +356,7 @@ namespace Content.Shared.Utility this DragDropEventArgs args, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false) + bool ignoreInsideBlocker = true) { return ExamineSystemShared.InRangeUnOccluded(args, range, predicate, ignoreInsideBlocker); @@ -366,7 +366,7 @@ namespace Content.Shared.Utility this AfterInteractEventArgs args, float range = InteractionRange, Ignored? predicate = null, - bool ignoreInsideBlocker = false) + bool ignoreInsideBlocker = true) { return ExamineSystemShared.InRangeUnOccluded(args, range, predicate, ignoreInsideBlocker); diff --git a/Resources/Audio/Effects/gen_hit.ogg b/Resources/Audio/Effects/gen_hit.ogg index 9a354b9a00..7bf618a7d2 100644 Binary files a/Resources/Audio/Effects/gen_hit.ogg and b/Resources/Audio/Effects/gen_hit.ogg differ diff --git a/Resources/Audio/Effects/glassbreak1.ogg b/Resources/Audio/Effects/glass_break1.ogg similarity index 100% rename from Resources/Audio/Effects/glassbreak1.ogg rename to Resources/Audio/Effects/glass_break1.ogg diff --git a/Resources/Audio/Effects/glassbreak2.ogg b/Resources/Audio/Effects/glass_break2.ogg similarity index 100% rename from Resources/Audio/Effects/glassbreak2.ogg rename to Resources/Audio/Effects/glass_break2.ogg diff --git a/Resources/Audio/Effects/glassbreak3.ogg b/Resources/Audio/Effects/glass_break3.ogg similarity index 100% rename from Resources/Audio/Effects/glassbreak3.ogg rename to Resources/Audio/Effects/glass_break3.ogg diff --git a/Resources/Audio/Effects/glass_hit.ogg b/Resources/Audio/Effects/glass_hit.ogg new file mode 100644 index 0000000000..e6842104db Binary files /dev/null and b/Resources/Audio/Effects/glass_hit.ogg differ diff --git a/Resources/Audio/Effects/glass_knock.ogg b/Resources/Audio/Effects/glass_knock.ogg new file mode 100644 index 0000000000..4d01e479b1 Binary files /dev/null and b/Resources/Audio/Effects/glass_knock.ogg differ diff --git a/Resources/Audio/Effects/glass_step.ogg b/Resources/Audio/Effects/glass_step.ogg new file mode 100644 index 0000000000..c093f2cff6 Binary files /dev/null and b/Resources/Audio/Effects/glass_step.ogg differ diff --git a/Resources/Audio/Effects/singularity.ogg b/Resources/Audio/Effects/singularity.ogg new file mode 100644 index 0000000000..c426e1ff4c Binary files /dev/null and b/Resources/Audio/Effects/singularity.ogg differ diff --git a/Resources/Audio/Effects/singularity_collapse.ogg b/Resources/Audio/Effects/singularity_collapse.ogg new file mode 100644 index 0000000000..8ec6adf947 Binary files /dev/null and b/Resources/Audio/Effects/singularity_collapse.ogg differ diff --git a/Resources/Audio/Effects/singularity_form.ogg b/Resources/Audio/Effects/singularity_form.ogg new file mode 100644 index 0000000000..0d53d0d665 Binary files /dev/null and b/Resources/Audio/Effects/singularity_form.ogg differ diff --git a/Resources/Audio/Machines/ding.ogg b/Resources/Audio/Machines/ding.ogg new file mode 100644 index 0000000000..24bce5d8d7 Binary files /dev/null and b/Resources/Audio/Machines/ding.ogg differ diff --git a/Resources/Audio/Misc/zip.ogg b/Resources/Audio/Misc/zip.ogg new file mode 100644 index 0000000000..d437d486ea Binary files /dev/null and b/Resources/Audio/Misc/zip.ogg differ diff --git a/Resources/Audio/Weapons/emitter.ogg b/Resources/Audio/Weapons/emitter.ogg new file mode 100644 index 0000000000..46e0153dc9 Binary files /dev/null and b/Resources/Audio/Weapons/emitter.ogg differ diff --git a/Resources/Maps/saltern.yml b/Resources/Maps/saltern.yml index c93b395cdf..b4b93a9b6d 100644 --- a/Resources/Maps/saltern.yml +++ b/Resources/Maps/saltern.yml @@ -49,7 +49,7 @@ grids: - ind: "0,1" tiles: GQAAABMAAAATAAAAEwAAABMAAAATAAAAGQAAABMAAAATAAAAEwAAABMAAAAZAAAAGAAAABUAAAAZAAAAFQAAABUAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAGQAAABgAAAAVAAAAGQAAAAAAAAAZAAAAEwAAABMAAAATAAAAEwAAABMAAAAZAAAAEwAAABMAAAATAAAAEwAAABkAAAAYAAAAFQAAABkAAAAAAAAAGQAAABMAAAATAAAAEwAAABMAAAATAAAAGQAAABMAAAATAAAAEwAAABMAAAAZAAAAGAAAABUAAAAZAAAAAAAAABUAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAFQAAABgAAAAVAAAAGQAAAAAAAAAZAAAAEwAAABMAAAATAAAAEwAAABMAAAAZAAAAEwAAABMAAAATAAAAEwAAABkAAAAVAAAAFQAAABkAAAAAAAAAGQAAABkAAAATAAAAGQAAABMAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAFQAAABkAAAAZAAAAAAAAAA0AAAAZAAAAEwAAABMAAAATAAAAGQAAABcAAAAXAAAAFwAAABcAAAAZAAAAFQAAABUAAAAVAAAAGQAAAAAAAAANAAAADQAAABMAAAATAAAAEwAAABkAAAAXAAAAFwAAABcAAAAXAAAAGQAAABgAAAAYAAAAGAAAABkAAAAAAAAADQAAAA0AAAATAAAAEwAAABMAAAATAAAAFwAAABcAAAAXAAAAFwAAABkAAAAZAAAAGQAAABkAAAAZAAAAAAAAAA0AAAAZAAAAEwAAABMAAAATAAAAGQAAABcAAAAXAAAAFwAAABcAAAAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAGQAAABMAAAATAAAAEwAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAGQAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - ind: "-2,0" - tiles: GQAAABcAAAAXAAAAFwAAABcAAAAXAAAAEwAAABMAAAATAAAAEwAAABkAAAATAAAAEwAAABMAAAATAAAAEwAAABkAAAAXAAAAFwAAABcAAAAXAAAAGQAAABkAAAATAAAAEwAAABkAAAAZAAAAEwAAABMAAAATAAAAEwAAABMAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAATAAAAEwAAABMAAAATAAAAGQAAABkAAAAZAAAAGQAAABkAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAEwAAABMAAAATAAAAEwAAABkAAAAZAAAAGQAAABkAAAAZAAAAFQAAABgAAAAZAAAAEwAAABMAAAATAAAAGQAAABkAAAATAAAAEwAAABkAAAAZAAAAEwAAABMAAAAZAAAAGAAAABgAAAAVAAAAGQAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAAZAAAAEwAAABMAAAATAAAAGQAAABgAAAAVAAAAFQAAABkAAAATAAAAEwAAABMAAAATAAAAGQAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABkAAAAYAAAAFQAAABUAAAAZAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABkAAAATAAAAEwAAABMAAAAZAAAAGAAAABUAAAAVAAAAGQAAABMAAAATAAAAEwAAABMAAAAZAAAAEwAAABMAAAAZAAAAGQAAABUAAAAZAAAAGQAAABgAAAAYAAAAFQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABUAAAAYAAAAFQAAABUAAAAYAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAGAAAABgAAAAYAAAAGAAAABUAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAZAAAAGQAAABgAAAAVAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABgAAAAYAAAAFQAAAA== + tiles: GQAAABcAAAAXAAAAFwAAABcAAAAXAAAAEwAAABMAAAATAAAAEwAAABkAAAAMAAAAEwAAABMAAAATAAAAEwAAABkAAAAXAAAAFwAAABcAAAAXAAAAGQAAABkAAAATAAAAEwAAABkAAAAZAAAADAAAAAwAAAAMAAAADAAAABMAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAATAAAAEwAAABMAAAATAAAAGQAAABkAAAAZAAAAGQAAABkAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAEwAAABMAAAATAAAAEwAAABkAAAAZAAAAGQAAABkAAAAZAAAAFQAAABgAAAAZAAAAEwAAABMAAAATAAAAGQAAABkAAAATAAAAEwAAABkAAAAZAAAAEwAAABMAAAAZAAAAGAAAABgAAAAVAAAAGQAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAAZAAAAEwAAABMAAAATAAAAGQAAABgAAAAVAAAAFQAAABkAAAATAAAAEwAAABMAAAATAAAAGQAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABkAAAAYAAAAFQAAABUAAAAZAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABkAAAATAAAAEwAAABMAAAAZAAAAGAAAABUAAAAVAAAAGQAAABMAAAATAAAAEwAAABMAAAAZAAAAEwAAABMAAAAZAAAAGQAAABUAAAAZAAAAGQAAABgAAAAYAAAAFQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABUAAAAYAAAAFQAAABUAAAAYAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAGAAAABgAAAAYAAAAGAAAABUAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAZAAAAGQAAABgAAAAVAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABgAAAAYAAAAFQAAAA== - ind: "1,-1" tiles: FgAAABYAAAAWAAAAFgAAABkAAAAWAAAAFgAAABYAAAAWAAAAGQAAABgAAAAVAAAAGQAAAAAAAAAAAAAAAAAAABYAAAAWAAAAFgAAABYAAAAZAAAAFgAAABYAAAAWAAAAFgAAABkAAAAYAAAAFQAAABkAAAAAAAAAAAAAAAAAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAZAAAAGAAAABUAAAAZAAAAAAAAAAAAAAAAAAAAGQAAABkAAAAWAAAAFgAAABkAAAAWAAAAFgAAABYAAAAWAAAAGQAAABgAAAAVAAAAGQAAAAAAAAAAAAAAAAAAABYAAAAWAAAAFgAAABYAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAYAAAAFQAAABkAAAAAAAAAAAAAAAAAAAAWAAAAFgAAABYAAAAWAAAAFQAAABgAAAAVAAAAFQAAABUAAAAVAAAAGAAAABUAAAAZAAAAAAAAAAAAAAAAAAAAFgAAABYAAAAWAAAAFgAAABkAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAVAAAAGQAAAAAAAAAAAAAAAAAAABYAAAAWAAAAFgAAABYAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAYAAAAFQAAABkAAAAZAAAAGQAAABkAAAAWAAAAFgAAABYAAAAWAAAAGQAAABYAAAAWAAAAFgAAABYAAAAZAAAAGAAAABUAAAAZAAAAGAAAABgAAAAYAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAGQAAABgAAAAYAAAAGAAAABgAAAAVAAAAFQAAABYAAAAWAAAAFgAAABYAAAAZAAAAFgAAABYAAAAWAAAAFgAAABkAAAAYAAAAFQAAABkAAAAZAAAAGQAAABkAAAAWAAAAFgAAABYAAAAWAAAAGQAAABYAAAAWAAAAFgAAABYAAAAZAAAAGAAAABUAAAAZAAAAEwAAABMAAAATAAAAGQAAABYAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABgAAAAVAAAAGQAAABMAAAATAAAAEwAAABYAAAAWAAAAFgAAABkAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAFQAAABkAAAATAAAAEwAAABMAAAAWAAAAFgAAABYAAAAZAAAAGAAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAZAAAAEwAAABMAAAATAAAAFgAAABYAAAAWAAAAGQAAABgAAAAVAAAAFQAAABgAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAEwAAAA== - ind: "0,-2" @@ -77,7 +77,7 @@ grids: - ind: "-2,-2" tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAGQAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAA8AAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAPAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAADwAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAABkAAAAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAWAAAAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAFgAAABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAABYAAAAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAWAAAAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAFgAAABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAABYAAAAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABkAAAAZAAAAFQAAAA== - ind: "-2,-1" - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAGQAAABgAAAAVAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABkAAAAYAAAAGAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAAZAAAAGAAAABUAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAEwAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABgAAAAVAAAAGQAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAFQAAABkAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABgAAAAVAAAAFQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAVAAAAGQAAABkAAAAZAAAAEwAAABMAAAATAAAAGQAAABkAAAATAAAAEwAAABMAAAATAAAAGQAAABMAAAATAAAAEwAAABMAAAATAAAAGQAAABMAAAATAAAAEwAAABkAAAAZAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAAVAAAAFQAAABkAAAAZAAAAGQAAABkAAAAZAAAAEwAAABMAAAATAAAAEwAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAXAAAAFwAAABcAAAAXAAAAFwAAABMAAAATAAAAEwAAABMAAAAZAAAAEwAAABMAAAATAAAAGQAAABgAAAAZAAAAFwAAABcAAAAXAAAAFwAAABkAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABkAAAAYAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAEwAAABMAAAATAAAAEwAAABkAAAAZAAAAGQAAABkAAAAZAAAAEwAAABkAAAAXAAAAFwAAABcAAAAXAAAAFwAAABMAAAATAAAAEwAAABMAAAAZAAAAEwAAABMAAAATAAAAEwAAABMAAAAZAAAAFwAAABcAAAAXAAAAFwAAABkAAAATAAAAEwAAABMAAAATAAAAGQAAABMAAAATAAAAEwAAABMAAAATAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAEwAAABMAAAATAAAAEwAAABkAAAATAAAAEwAAABMAAAATAAAAEwAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAGQAAABgAAAAVAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABkAAAAYAAAAGAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAAZAAAAGAAAABUAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAEwAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABgAAAAVAAAAGQAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAFQAAABkAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABgAAAAVAAAAFQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAVAAAAGQAAABkAAAAZAAAAEwAAABMAAAATAAAAGQAAABkAAAATAAAAEwAAABMAAAATAAAAGQAAABMAAAATAAAAEwAAABMAAAATAAAAGQAAABMAAAATAAAAEwAAABkAAAAZAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAAVAAAAFQAAABkAAAAZAAAAGQAAABkAAAAZAAAAEwAAABMAAAATAAAAEwAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAXAAAAFwAAABcAAAAXAAAAFwAAABMAAAATAAAAEwAAABMAAAAZAAAAEwAAABMAAAATAAAAGQAAABgAAAAZAAAAFwAAABcAAAAXAAAAFwAAABkAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABkAAAAYAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAEwAAABMAAAATAAAAEwAAABkAAAAZAAAAGQAAABkAAAAZAAAAEwAAABkAAAAXAAAAFwAAABcAAAAXAAAAFwAAABMAAAATAAAAEwAAABMAAAAZAAAADAAAAAwAAAAMAAAADAAAABMAAAAZAAAAFwAAABcAAAAXAAAAFwAAABkAAAATAAAAEwAAABMAAAATAAAAGQAAAAwAAAATAAAAEwAAABMAAAATAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAEwAAABMAAAATAAAAEwAAABkAAAAMAAAADAAAAAwAAAATAAAAEwAAAA== - ind: "-3,0" tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAABMAAAATAAAAEwAAABkAAAAYAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAGQAAABkAAAATAAAAEwAAABMAAAAZAAAAGQAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABkAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAABkAAAAZAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAVAAAAFQAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAGQAAABkAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAAZAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAZAAAAGQAAABMAAAATAAAAEwAAABMAAAATAAAAGQAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAFQAAABUAAAATAAAAEwAAABMAAAATAAAAEwAAABUAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAABkAAAAZAAAAEwAAABMAAAATAAAAEwAAABMAAAAZAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAGQAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAGQAAAA== - ind: "-4,0" @@ -94,70 +94,70 @@ entities: - uid: 0 type: SuspicionHitscanSpawner components: - - parent: 856 + - parent: 855 pos: -15.5,-11.5 rot: -1.5707963267948966 rad type: Transform - uid: 1 type: SuspicionShotgunSpawner components: - - parent: 856 + - parent: 855 pos: -15.5,-14.5 rot: -1.5707963267948966 rad type: Transform - uid: 2 type: SuspicionShotgunMagazineSpawner components: - - parent: 856 + - parent: 855 pos: -23.5,-13.5 rot: -1.5707963267948966 rad type: Transform - uid: 3 type: SuspicionPistolMagazineSpawner components: - - parent: 856 + - parent: 855 pos: -35.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 4 type: SuspicionRifleMagazineSpawner components: - - parent: 856 + - parent: 855 pos: -35.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 5 type: SuspicionRifleMagazineSpawner components: - - parent: 856 + - parent: 855 pos: -35.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 6 type: SuspicionShotgunMagazineSpawner components: - - parent: 856 + - parent: 855 pos: -35.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 7 type: SuspicionShotgunMagazineSpawner components: - - parent: 856 + - parent: 855 pos: -35.5,-7.5 rot: -1.5707963267948966 rad type: Transform - uid: 8 type: SuspicionGrenadesSpawner components: - - parent: 856 + - parent: 855 pos: -11.5,18.5 rot: -1.5707963267948966 rad type: Transform - uid: 9 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -10.5,-3 rot: -1.5707963267948966 rad type: Transform @@ -170,14 +170,14 @@ entities: - uid: 10 type: SpawnPointStationEngineer components: - - parent: 856 + - parent: 855 pos: 33.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 11 type: SuspicionLaunchersSpawner components: - - parent: 856 + - parent: 855 pos: -12.5,18.5 rot: -1.5707963267948966 rad type: Transform @@ -186,35 +186,35 @@ entities: components: - name: Bar type: MetaData - - parent: 856 + - parent: 855 pos: -7.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 13 type: SuspicionShotgunSpawner components: - - parent: 856 + - parent: 855 pos: -12.5,20.5 rot: -1.5707963267948966 rad type: Transform - uid: 14 type: SuspicionSMGSpawner components: - - parent: 856 + - parent: 855 pos: -13.5,20.5 rot: -1.5707963267948966 rad type: Transform - uid: 15 type: BikeHornInstrument components: - - parent: 856 + - parent: 855 pos: -18.5,-9.5 rot: -1.5707963267948966 rad type: Transform - uid: 16 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: 1.5,3.5 rot: -1.5707963267948966 rad type: Transform @@ -225,231 +225,231 @@ entities: - uid: 17 type: SuspicionRevolverSpawner components: - - parent: 856 + - parent: 855 pos: -14.5,19.5 rot: -1.5707963267948966 rad type: Transform - uid: 18 type: SuspicionHitscanSpawner components: - - parent: 856 + - parent: 855 pos: -14.5,18.5 rot: -1.5707963267948966 rad type: Transform - uid: 19 type: SuspicionPistolSpawner components: - - parent: 856 + - parent: 855 pos: -10.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 20 type: SuspicionPistolSpawner components: - - parent: 856 + - parent: 855 pos: -5.5,24.5 rot: -1.5707963267948966 rad type: Transform - uid: 21 type: SuspicionPistolMagazineSpawner components: - - parent: 856 + - parent: 855 pos: -31.5,13.5 rot: -1.5707963267948966 rad type: Transform - uid: 22 type: SuspicionPistolMagazineSpawner components: - - parent: 856 + - parent: 855 pos: -29.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 23 type: SuspicionPistolMagazineSpawner components: - - parent: 856 + - parent: 855 pos: -9.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 24 type: SuspicionPistolMagazineSpawner components: - - parent: 856 + - parent: 855 pos: -10.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 25 type: SuspicionPistolMagazineSpawner components: - - parent: 856 + - parent: 855 pos: -3.5,0.5 rot: -1.5707963267948966 rad type: Transform - uid: 26 type: SuspicionShotgunMagazineSpawner components: - - parent: 856 + - parent: 855 pos: -29.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 27 type: SuspicionShotgunMagazineSpawner components: - - parent: 856 + - parent: 855 pos: -30.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 28 type: SuspicionShotgunSpawner components: - - parent: 856 + - parent: 855 pos: -29.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 29 type: SuspicionRifleMagazineSpawner components: - - parent: 856 + - parent: 855 pos: -7.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 30 type: SuspicionSMGSpawner components: - - parent: 856 + - parent: 855 pos: -7.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 31 type: SuspicionMagnumMagazineSpawner components: - - parent: 856 + - parent: 855 pos: 16.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 32 type: SuspicionRevolverSpawner components: - - parent: 856 + - parent: 855 pos: 15.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 33 type: SuspicionMagnumMagazineSpawner components: - - parent: 856 + - parent: 855 pos: 14.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 34 type: SuspicionGrenadesSpawner components: - - parent: 856 + - parent: 855 pos: -8.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 35 type: SuspicionGrenadesSpawner components: - - parent: 856 + - parent: 855 pos: 0.5,-15.5 rot: -1.5707963267948966 rad type: Transform - uid: 36 type: SuspicionHitscanSpawner components: - - parent: 856 + - parent: 855 pos: 25.5,0.5 rot: -1.5707963267948966 rad type: Transform - uid: 37 type: SuspicionGrenadesSpawner components: - - parent: 856 + - parent: 855 pos: 18.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 38 type: SuspicionGrenadesSpawner components: - - parent: 856 + - parent: 855 pos: 15.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 39 type: SuspicionRifleMagazineSpawner components: - - parent: 856 + - parent: 855 pos: -13.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 40 type: SuspicionSniperSpawner components: - - parent: 856 + - parent: 855 pos: -8.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 41 type: SuspicionShotgunSpawner components: - - parent: 856 + - parent: 855 pos: -7.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 42 type: SuspicionShotgunMagazineSpawner components: - - parent: 856 + - parent: 855 pos: -7.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 43 type: SuspicionShotgunMagazineSpawner components: - - parent: 856 + - parent: 855 pos: -6.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 44 type: FoodBananaCreamPie components: - - parent: 856 + - parent: 855 pos: -18.509874,-9.279623 rot: -1.5707963267948966 rad type: Transform - uid: 45 type: FoodBananaCreamPie components: - - parent: 856 + - parent: 855 pos: -18.947374,-9.467123 rot: -1.5707963267948966 rad type: Transform - uid: 46 type: FoodBanana components: - - parent: 856 + - parent: 855 pos: -19.463,-9.482748 rot: -1.5707963267948966 rad type: Transform - uid: 47 type: FoodBanana components: - - parent: 856 + - parent: 855 pos: -19.603624,-9.388998 rot: -1.5707963267948966 rad type: Transform - uid: 48 type: FoodBanana components: - - parent: 856 + - parent: 855 pos: -19.728624,-9.576498 rot: -1.5707963267948966 rad type: Transform - uid: 49 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -18.5,-7 rot: -1.5707963267948966 rad type: Transform @@ -462,28 +462,28 @@ entities: - uid: 50 type: Table components: - - parent: 856 + - parent: 855 pos: -19.5,-9.5 rot: -1.5707963267948966 rad type: Transform - uid: 51 type: BoneSaw components: - - parent: 856 + - parent: 855 pos: 19.49593,-21.552101 rot: -1.5707963267948966 rad type: Transform - uid: 52 type: ShoesCoder components: - - parent: 856 + - parent: 855 pos: 47.437466,-6.6893435 rot: -1.5707963267948966 rad type: Transform - uid: 53 type: JawsOfLife components: - - parent: 856 + - parent: 855 pos: 39.53893,-0.77325034 rot: -1.5707963267948966 rad type: Transform @@ -492,21 +492,21 @@ entities: - uid: 54 type: GlovesLatex components: - - parent: 856 + - parent: 855 pos: 22.086878,-4.4133806 rot: -1.5707963267948966 rad type: Transform - uid: 55 type: GlovesLatex components: - - parent: 856 + - parent: 855 pos: 21.618128,-4.4133806 rot: -1.5707963267948966 rad type: Transform - uid: 56 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: 5.5,5.5 rot: -1.5707963267948966 rad type: Transform @@ -517,49 +517,49 @@ entities: - uid: 57 type: ToyPhazon components: - - parent: 856 + - parent: 855 pos: 9.449931,16.636608 rot: -1.5707963267948966 rad type: Transform - uid: 58 type: Scalpel components: - - parent: 856 + - parent: 855 pos: 19.190952,-21.29313 rot: -1.5707963267948966 rad type: Transform - uid: 59 type: DrinkBottleRum components: - - parent: 856 + - parent: 855 pos: -15.694785,24.608267 rot: -1.5707963267948966 rad type: Transform - uid: 60 type: DisgustingSweptSoup components: - - parent: 856 + - parent: 855 pos: -14.96041,24.545767 rot: -1.5707963267948966 rad type: Transform - uid: 61 type: Retractor components: - - parent: 856 + - parent: 855 pos: 19.482815,-21.853302 rot: -1.5707963267948966 rad type: Transform - uid: 62 type: ToyMouse components: - - parent: 856 + - parent: 855 pos: 31.376545,-7.1625524 rot: -1.5707963267948966 rad type: Transform - uid: 63 type: SignSurgery components: - - parent: 856 + - parent: 855 pos: 18.296293,-18.5 rot: -1.5707963267948966 rad type: Transform @@ -568,35 +568,35 @@ entities: - uid: 64 type: Drill components: - - parent: 856 + - parent: 855 pos: 19.515043,-22.566078 rot: -1.5707963267948966 rad type: Transform - uid: 65 type: BedsheetMedical components: - - parent: 856 + - parent: 855 pos: 18.5,-20.5 rot: -1.5707963267948966 rad type: Transform - uid: 66 type: Bed components: - - parent: 856 + - parent: 855 pos: 18.5,-20.5 rot: -1.5707963267948966 rad type: Transform - uid: 67 type: Hemostat components: - - parent: 856 + - parent: 855 pos: 19.655668,-21.300453 rot: -1.5707963267948966 rad type: Transform - uid: 68 type: LockerCursed components: - - parent: 856 + - parent: 855 pos: -8.5,-25.5 rot: -1.5707963267948966 rad type: Transform @@ -609,7 +609,7 @@ entities: - uid: 69 type: PowerCellRecharger components: - - parent: 856 + - parent: 855 pos: 39.5,-1.5 rot: -1.5707963267948966 rad type: Transform @@ -622,7 +622,7 @@ entities: - uid: 70 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: 1.5,5.5 rot: -1.5707963267948966 rad type: Transform @@ -633,14 +633,14 @@ entities: - uid: 71 type: SuspicionPistolSpawner components: - - parent: 856 + - parent: 855 pos: 8.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 72 type: ToolboxGoldFilled components: - - parent: 856 + - parent: 855 pos: -3.454914,18.643616 rot: -1.5707963267948966 rad type: Transform @@ -651,217 +651,217 @@ entities: - uid: 73 type: DrinkGoldenCup components: - - parent: 856 + - parent: 855 pos: -3.470539,16.956116 rot: -1.5707963267948966 rad type: Transform - uid: 74 type: GoldStack components: - - parent: 856 + - parent: 855 pos: -2.579914,16.362366 rot: -1.5707963267948966 rad type: Transform - uid: 75 type: GoldStack components: - - parent: 856 + - parent: 855 pos: -2.439289,16.72174 rot: -1.5707963267948966 rad type: Transform - uid: 76 type: GoldStack components: - - parent: 856 + - parent: 855 pos: -2.283039,16.518616 rot: -1.5707963267948966 rad type: Transform - uid: 77 type: GoldStack components: - - parent: 856 + - parent: 855 pos: -2.798664,16.424866 rot: -1.5707963267948966 rad type: Transform - uid: 78 type: GoldStack components: - - parent: 856 + - parent: 855 pos: -2.611164,16.549866 rot: -1.5707963267948966 rad type: Transform - uid: 79 type: GoldStack components: - - parent: 856 + - parent: 855 pos: -2.673664,16.72174 rot: -1.5707963267948966 rad type: Transform - uid: 80 type: GoldStack components: - - parent: 856 + - parent: 855 pos: -2.861164,16.72174 rot: -1.5707963267948966 rad type: Transform - uid: 81 type: GoldStack components: - - parent: 856 + - parent: 855 pos: -3.064289,16.53424 rot: -1.5707963267948966 rad type: Transform - uid: 82 type: Bling components: - - parent: 856 + - parent: 855 pos: -2.861164,18.612366 rot: -1.5707963267948966 rad type: Transform - uid: 83 type: Bling components: - - parent: 856 + - parent: 855 pos: -2.564289,18.643616 rot: -1.5707963267948966 rad type: Transform - uid: 84 type: Table components: - - parent: 856 + - parent: 855 pos: -3.5,16.5 rot: -1.5707963267948966 rad type: Transform - uid: 85 type: Table components: - - parent: 856 + - parent: 855 pos: -2.5,16.5 rot: -1.5707963267948966 rad type: Transform - uid: 86 type: Table components: - - parent: 856 + - parent: 855 pos: -2.5,18.5 rot: -1.5707963267948966 rad type: Transform - uid: 87 type: Table components: - - parent: 856 + - parent: 855 pos: -3.5,18.5 rot: -1.5707963267948966 rad type: Transform - uid: 88 type: ReinforcedWindow components: - - parent: 856 + - parent: 855 pos: 28.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 89 type: ReinforcedWindow components: - - parent: 856 + - parent: 855 pos: 27.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 90 type: ReinforcedWindow components: - - parent: 856 + - parent: 855 pos: 26.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 91 type: LowWall components: - - parent: 856 + - parent: 855 pos: 28.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 92 type: LowWall components: - - parent: 856 + - parent: 855 pos: 27.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 93 type: LowWall components: - - parent: 856 + - parent: 855 pos: 26.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 94 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -22.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 95 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -23.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 96 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -24.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 97 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -25.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 98 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -25.5,-15.5 rot: -1.5707963267948966 rad type: Transform - uid: 99 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -25.5,-14.5 rot: -1.5707963267948966 rad type: Transform - uid: 100 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -25.5,-13.5 rot: -1.5707963267948966 rad type: Transform - uid: 101 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -25.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 102 type: Brutepack components: - - parent: 856 + - parent: 855 pos: 6.839255,-3.3712535 rot: -1.5707963267948966 rad type: Transform - uid: 103 type: LockerFreezer components: - - parent: 856 + - parent: 855 pos: -9.5,-4.5 rot: -1.5707963267948966 rad type: Transform @@ -874,37 +874,37 @@ entities: - uid: 104 type: RCD components: - - parent: 856 + - parent: 855 pos: 29.55875,-4.333219 type: Transform - uid: 105 type: RCD components: - - parent: 856 + - parent: 855 pos: 29.4025,-4.489469 type: Transform - uid: 106 type: WeldingFuelTank components: - - parent: 856 + - parent: 855 pos: -1.5,-11.5 type: Transform - uid: 107 type: WaterTankFull components: - - parent: 856 + - parent: 855 pos: 0.5,-11.5 type: Transform - uid: 108 type: Basketball components: - - parent: 856 + - parent: 855 pos: -1.5183675,-6.4951944 type: Transform - uid: 109 type: SignSomethingOld2 components: - - parent: 856 + - parent: 855 pos: 24.996767,-0.60842 rot: -1.5707963267948966 rad type: Transform @@ -913,7 +913,7 @@ entities: - uid: 110 type: SignSomethingOld components: - - parent: 856 + - parent: 855 pos: 17.158585,-23.619913 rot: -1.5707963267948966 rad type: Transform @@ -922,7 +922,7 @@ entities: - uid: 111 type: SignAtmos components: - - parent: 856 + - parent: 855 pos: 31.498556,7.5 rot: -1.5707963267948966 rad type: Transform @@ -931,108 +931,116 @@ entities: - uid: 112 type: Paper components: - - parent: 856 + - parent: 855 pos: 8.379866,25.982151 type: Transform - uid: 113 type: DrinkHotCoffee components: - - parent: 856 + - parent: 855 pos: 8.661116,25.513401 type: Transform - uid: 114 type: RandHandTele components: - - parent: 856 + - parent: 855 pos: 8.379866,26.654026 type: Transform - uid: 115 type: FlashlightLantern components: - - parent: 856 + - parent: 855 pos: 30.248352,-4.36431 type: Transform - containers: flashlight_cell_container: type: Content.Server.GameObjects.ContainerSlot + cellslot_cell_container: + type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 116 type: FlashlightLantern components: - - parent: 856 + - parent: 855 pos: 30.545227,-4.17681 type: Transform - containers: flashlight_cell_container: type: Content.Server.GameObjects.ContainerSlot + cellslot_cell_container: + type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 117 type: HatHardhatYellow components: - - parent: 856 + - parent: 855 pos: 31.357727,-4.36431 type: Transform - uid: 118 type: HatHardhatWhite components: - - parent: 856 + - parent: 855 pos: 31.623352,-4.14556 type: Transform - uid: 119 type: HatHardhatRed components: - - parent: 856 + - parent: 855 pos: 31.201477,-4.05181 type: Transform - uid: 120 type: VendingMachineDinnerware components: - - parent: 856 + - parent: 855 pos: -13.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 121 type: Chair components: - - parent: 856 + - parent: 855 pos: 10.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 122 type: Chair components: - - parent: 856 + - parent: 855 pos: 9.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 123 type: Chair components: - - parent: 856 + - parent: 855 pos: 8.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 124 type: Stunbaton components: - - parent: 856 + - parent: 855 pos: -14.484581,20.641253 rot: -1.5707963267948966 rad type: Transform - containers: stunbaton_cell_container: type: Content.Server.GameObjects.ContainerSlot + cellslot_cell_container: + type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 125 type: Stunbaton components: - - parent: 856 + - parent: 855 pos: -14.609581,20.969378 rot: -1.5707963267948966 rad type: Transform - containers: stunbaton_cell_container: type: Content.Server.GameObjects.ContainerSlot + cellslot_cell_container: + type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 126 type: PowerCellSmallStandard @@ -1042,7 +1050,7 @@ entities: - uid: 127 type: TaserGun components: - - parent: 856 + - parent: 855 pos: -14.515831,21.735003 rot: -1.5707963267948966 rad type: Transform @@ -1062,7 +1070,7 @@ entities: - uid: 129 type: TaserGun components: - - parent: 856 + - parent: 855 pos: -13.672081,21.719378 rot: -1.5707963267948966 rad type: Transform @@ -1077,28 +1085,28 @@ entities: - uid: 130 type: Table components: - - parent: 856 + - parent: 855 pos: -14.5,20.5 rot: -1.5707963267948966 rad type: Transform - uid: 131 type: Table components: - - parent: 856 + - parent: 855 pos: -13.5,21.5 rot: -1.5707963267948966 rad type: Transform - uid: 132 type: Table components: - - parent: 856 + - parent: 855 pos: -14.5,21.5 rot: -1.5707963267948966 rad type: Transform - uid: 133 type: SignEngineering components: - - parent: 856 + - parent: 855 pos: 30.305984,-0.5 rot: -1.5707963267948966 rad type: Transform @@ -1107,7 +1115,7 @@ entities: - uid: 134 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 41.000477,14 rot: -1.5707963267948966 rad type: Transform @@ -1120,7 +1128,7 @@ entities: - uid: 135 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -10,13.5 type: Transform - powerLoad: 0 @@ -1132,7 +1140,7 @@ entities: - uid: 136 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -26,-3.5 type: Transform - powerLoad: 0 @@ -1147,7 +1155,7 @@ entities: - name: Uhm desc: Uhm type: MetaData - - parent: 856 + - parent: 855 pos: 33.498077,11.399912 rot: 1.5707963267948966 rad type: Transform @@ -1156,7 +1164,7 @@ entities: - uid: 138 type: SignDirectionalEng components: - - parent: 856 + - parent: 855 pos: 5.987236,6.2578936 type: Transform - deadThreshold: 100 @@ -1164,7 +1172,7 @@ entities: - uid: 139 type: SignBridge components: - - parent: 856 + - parent: 855 pos: 5.6507263,22.5 type: Transform - deadThreshold: 100 @@ -1172,7 +1180,7 @@ entities: - uid: 140 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -25.939785,7 type: Transform - powerLoad: 0 @@ -1184,7 +1192,7 @@ entities: - uid: 141 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -15.231159,-17 rot: -1.5707963267948966 rad type: Transform @@ -1197,7 +1205,7 @@ entities: - uid: 142 type: SignRND components: - - parent: 856 + - parent: 855 pos: -5.506548,-18.5 rot: -1.5707963267948966 rad type: Transform @@ -1206,7 +1214,7 @@ entities: - uid: 143 type: SignMedical components: - - parent: 856 + - parent: 855 pos: 6.500677,2.5 rot: -1.5707963267948966 rad type: Transform @@ -1215,7 +1223,7 @@ entities: - uid: 144 type: SignGravity components: - - parent: 856 + - parent: 855 pos: 48.325787,-1.5 rot: -1.5707963267948966 rad type: Transform @@ -1224,7 +1232,7 @@ entities: - uid: 145 type: SignToolStorage components: - - parent: 856 + - parent: 855 pos: -26.694574,6.5 rot: -1.5707963267948966 rad type: Transform @@ -1233,7 +1241,7 @@ entities: - uid: 146 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 28.73304,7 rot: -1.5707963267948966 rad type: Transform @@ -1246,7 +1254,7 @@ entities: - uid: 147 type: SignEVA components: - - parent: 856 + - parent: 855 pos: 10.691145,6.5 rot: -1.5707963267948966 rad type: Transform @@ -1255,7 +1263,7 @@ entities: - uid: 148 type: SignChem components: - - parent: 856 + - parent: 855 pos: 14.317627,-3.5 rot: -1.5707963267948966 rad type: Transform @@ -1264,7 +1272,7 @@ entities: - uid: 149 type: SignCargoDock components: - - parent: 856 + - parent: 855 pos: 18.501179,14.5 rot: -1.5707963267948966 rad type: Transform @@ -1273,35 +1281,35 @@ entities: - uid: 150 type: solid_wall components: - - parent: 856 + - parent: 855 pos: 24.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 151 type: solid_wall components: - - parent: 856 + - parent: 855 pos: 18.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 152 type: LowWall components: - - parent: 856 + - parent: 855 pos: 21.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 153 type: LowWall components: - - parent: 856 + - parent: 855 pos: 21.5,16.5 rot: -1.5707963267948966 rad type: Transform - uid: 154 type: SignDirectionalEvac components: - - parent: 856 + - parent: 855 pos: -20.488556,6.5 rot: 1.5707963267948966 rad type: Transform @@ -1310,7 +1318,7 @@ entities: - uid: 155 type: SignDirectionalSupply components: - - parent: 856 + - parent: 855 pos: -25.704908,7.5 rot: 1.5707963267948966 rad type: Transform @@ -1319,33 +1327,33 @@ entities: - uid: 156 type: AirlockMaintCargo components: - - parent: 856 + - parent: 855 pos: -24.5,-12.5 type: Transform - uid: 157 type: ConveyorBelt components: - - parent: 856 + - parent: 855 pos: -23.5,-13.5 type: Transform - uid: 158 type: LargeBeaker components: - - parent: 856 + - parent: 855 pos: 18.611881,1.2455455 rot: 3.141592653589793 rad type: Transform - uid: 159 type: Beaker components: - - parent: 856 + - parent: 855 pos: 18.361881,1.6674205 rot: 3.141592653589793 rad type: Transform - uid: 160 type: DisposalBend components: - - parent: 856 + - parent: 855 pos: 17.5,-0.5 type: Transform - deadThreshold: 100 @@ -1357,7 +1365,7 @@ entities: - uid: 161 type: DisposalBend components: - - parent: 856 + - parent: 855 pos: 17.5,-1.5 rot: 3.141592653589793 rad type: Transform @@ -1370,7 +1378,7 @@ entities: - uid: 162 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 16.5,-1.5 type: Transform - deadThreshold: 100 @@ -1382,7 +1390,7 @@ entities: - uid: 163 type: ConveyorSwitch components: - - parent: 856 + - parent: 855 pos: -23.467268,-14.347846 rot: 3.141592653589793 rad type: Transform @@ -1392,7 +1400,7 @@ entities: - uid: 164 type: DisposalJunctionFlipped components: - - parent: 856 + - parent: 855 pos: 34.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -1405,7 +1413,7 @@ entities: - uid: 165 type: DisposalJunction components: - - parent: 856 + - parent: 855 pos: 24.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -1418,7 +1426,7 @@ entities: - uid: 166 type: DisposalJunction components: - - parent: 856 + - parent: 855 pos: 12.5,-1.5 rot: 1.5707963267948966 rad type: Transform @@ -1431,7 +1439,7 @@ entities: - uid: 167 type: DisposalJunctionFlipped components: - - parent: 856 + - parent: 855 pos: 12.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -1444,7 +1452,7 @@ entities: - uid: 168 type: DisposalJunction components: - - parent: 856 + - parent: 855 pos: 2.5,17.5 rot: -1.5707963267948966 rad type: Transform @@ -1457,7 +1465,7 @@ entities: - uid: 169 type: DisposalJunctionFlipped components: - - parent: 856 + - parent: 855 pos: 2.5,11.5 rot: -1.5707963267948966 rad type: Transform @@ -1470,7 +1478,7 @@ entities: - uid: 170 type: DisposalJunctionFlipped components: - - parent: 856 + - parent: 855 pos: -10.5,-15.5 rot: 3.141592653589793 rad type: Transform @@ -1483,7 +1491,7 @@ entities: - uid: 171 type: DisposalJunction components: - - parent: 856 + - parent: 855 pos: -17.5,-15.5 rot: 1.5707963267948966 rad type: Transform @@ -1496,7 +1504,7 @@ entities: - uid: 172 type: DisposalYJunction components: - - parent: 856 + - parent: 855 pos: -23.5,-10.5 rot: -1.5707963267948966 rad type: Transform @@ -1509,7 +1517,7 @@ entities: - uid: 173 type: DisposalJunctionFlipped components: - - parent: 856 + - parent: 855 pos: -27.5,-10.5 type: Transform - deadThreshold: 100 @@ -1521,7 +1529,7 @@ entities: - uid: 174 type: DisposalJunction components: - - parent: 856 + - parent: 855 pos: -28.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -1534,7 +1542,7 @@ entities: - uid: 175 type: DisposalJunction components: - - parent: 856 + - parent: 855 pos: -22.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -1547,7 +1555,7 @@ entities: - uid: 176 type: DisposalJunctionFlipped components: - - parent: 856 + - parent: 855 pos: -12.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -1560,7 +1568,7 @@ entities: - uid: 177 type: DisposalJunctionFlipped components: - - parent: 856 + - parent: 855 pos: 0.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -1573,7 +1581,7 @@ entities: - uid: 178 type: DisposalJunction components: - - parent: 856 + - parent: 855 pos: 2.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -1586,7 +1594,7 @@ entities: - uid: 179 type: DisposalJunctionFlipped components: - - parent: 856 + - parent: 855 pos: 3.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -1599,7 +1607,7 @@ entities: - uid: 180 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -17.5,-14.5 rot: 1.5707963267948966 rad type: Transform @@ -1612,7 +1620,7 @@ entities: - uid: 181 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -17.5,-13.5 rot: 1.5707963267948966 rad type: Transform @@ -1625,7 +1633,7 @@ entities: - uid: 182 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -17.5,-12.5 rot: 1.5707963267948966 rad type: Transform @@ -1638,7 +1646,7 @@ entities: - uid: 183 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -17.5,-11.5 rot: 1.5707963267948966 rad type: Transform @@ -1651,7 +1659,7 @@ entities: - uid: 184 type: DisposalTrunk components: - - parent: 856 + - parent: 855 pos: -17.5,-22.5 rot: 1.5707963267948966 rad type: Transform @@ -1664,7 +1672,7 @@ entities: - uid: 185 type: DisposalUnit components: - - parent: 856 + - parent: 855 pos: -17.5,-22.5 rot: 3.141592653589793 rad type: Transform @@ -1679,7 +1687,7 @@ entities: - uid: 186 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -16.5,-15.5 type: Transform - deadThreshold: 100 @@ -1691,7 +1699,7 @@ entities: - uid: 187 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -28.5,5.5 rot: -1.5707963267948966 rad type: Transform @@ -1704,7 +1712,7 @@ entities: - uid: 188 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -28.5,6.5 rot: -1.5707963267948966 rad type: Transform @@ -1717,7 +1725,7 @@ entities: - uid: 189 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -28.5,7.5 rot: -1.5707963267948966 rad type: Transform @@ -1730,7 +1738,7 @@ entities: - uid: 190 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -28.5,8.5 rot: -1.5707963267948966 rad type: Transform @@ -1743,7 +1751,7 @@ entities: - uid: 191 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -28.5,9.5 rot: -1.5707963267948966 rad type: Transform @@ -1756,14 +1764,14 @@ entities: - uid: 192 type: VendingMachineYouTool components: - - parent: 856 + - parent: 855 pos: -28.5,11.5 rot: -1.5707963267948966 rad type: Transform - uid: 193 type: DisposalUnit components: - - parent: 856 + - parent: 855 pos: -29.5,11.5 rot: -1.5707963267948966 rad type: Transform @@ -1778,7 +1786,7 @@ entities: - uid: 194 type: DisposalBend components: - - parent: 856 + - parent: 855 pos: -8.5,-15.5 rot: 3.141592653589793 rad type: Transform @@ -1791,7 +1799,7 @@ entities: - uid: 195 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -17.5,-16.5 rot: 1.5707963267948966 rad type: Transform @@ -1804,7 +1812,7 @@ entities: - uid: 196 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 0.5,17.5 type: Transform - deadThreshold: 100 @@ -1816,7 +1824,7 @@ entities: - uid: 197 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -0.5,17.5 type: Transform - deadThreshold: 100 @@ -1828,7 +1836,7 @@ entities: - uid: 198 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -1.5,17.5 type: Transform - deadThreshold: 100 @@ -1840,7 +1848,7 @@ entities: - uid: 199 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -2.5,17.5 type: Transform - deadThreshold: 100 @@ -1852,7 +1860,7 @@ entities: - uid: 200 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -3.5,17.5 type: Transform - deadThreshold: 100 @@ -1864,7 +1872,7 @@ entities: - uid: 201 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -4.5,17.5 type: Transform - deadThreshold: 100 @@ -1876,7 +1884,7 @@ entities: - uid: 202 type: DisposalTrunk components: - - parent: 856 + - parent: 855 pos: -5.5,17.5 type: Transform - deadThreshold: 100 @@ -1888,7 +1896,7 @@ entities: - uid: 203 type: DisposalUnit components: - - parent: 856 + - parent: 855 pos: -5.5,17.5 rot: -1.5707963267948966 rad type: Transform @@ -1903,7 +1911,7 @@ entities: - uid: 204 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -17.5,-17.5 rot: 1.5707963267948966 rad type: Transform @@ -1916,7 +1924,7 @@ entities: - uid: 205 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 4.5,11.5 rot: 3.141592653589793 rad type: Transform @@ -1929,7 +1937,7 @@ entities: - uid: 206 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 5.5,11.5 rot: 3.141592653589793 rad type: Transform @@ -1942,7 +1950,7 @@ entities: - uid: 207 type: DisposalTrunk components: - - parent: 856 + - parent: 855 pos: 6.5,11.5 rot: 3.141592653589793 rad type: Transform @@ -1955,7 +1963,7 @@ entities: - uid: 208 type: DisposalUnit components: - - parent: 856 + - parent: 855 pos: 6.5,11.5 rot: 3.141592653589793 rad type: Transform @@ -1970,7 +1978,7 @@ entities: - uid: 209 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -17.5,-18.5 rot: 1.5707963267948966 rad type: Transform @@ -1983,7 +1991,7 @@ entities: - uid: 210 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 24.5,5.5 rot: -1.5707963267948966 rad type: Transform @@ -1996,7 +2004,7 @@ entities: - uid: 211 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 24.5,6.5 rot: -1.5707963267948966 rad type: Transform @@ -2009,7 +2017,7 @@ entities: - uid: 212 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 24.5,7.5 rot: -1.5707963267948966 rad type: Transform @@ -2022,7 +2030,7 @@ entities: - uid: 213 type: DisposalTrunk components: - - parent: 856 + - parent: 855 pos: 24.5,8.5 rot: -1.5707963267948966 rad type: Transform @@ -2035,7 +2043,7 @@ entities: - uid: 214 type: DisposalUnit components: - - parent: 856 + - parent: 855 pos: 24.5,8.5 rot: -1.5707963267948966 rad type: Transform @@ -2050,7 +2058,7 @@ entities: - uid: 215 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 13.5,-1.5 type: Transform - deadThreshold: 100 @@ -2062,7 +2070,7 @@ entities: - uid: 216 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 14.5,-1.5 type: Transform - deadThreshold: 100 @@ -2074,7 +2082,7 @@ entities: - uid: 217 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 15.5,-1.5 type: Transform - deadThreshold: 100 @@ -2086,7 +2094,7 @@ entities: - uid: 218 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -17.5,-19.5 rot: 1.5707963267948966 rad type: Transform @@ -2099,13 +2107,13 @@ entities: - uid: 219 type: Recycler components: - - parent: 856 + - parent: 855 pos: -21.5,-13.5 type: Transform - uid: 220 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -17.5,-20.5 rot: 1.5707963267948966 rad type: Transform @@ -2118,7 +2126,7 @@ entities: - uid: 221 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 34.5,1.5 rot: 1.5707963267948966 rad type: Transform @@ -2131,7 +2139,7 @@ entities: - uid: 222 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 34.5,0.5 rot: 1.5707963267948966 rad type: Transform @@ -2144,7 +2152,7 @@ entities: - uid: 223 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 34.5,-0.5 rot: 1.5707963267948966 rad type: Transform @@ -2157,7 +2165,7 @@ entities: - uid: 224 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 34.5,-1.5 rot: 1.5707963267948966 rad type: Transform @@ -2170,7 +2178,7 @@ entities: - uid: 225 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 34.5,-2.5 rot: 1.5707963267948966 rad type: Transform @@ -2183,7 +2191,7 @@ entities: - uid: 226 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 34.5,-3.5 rot: 1.5707963267948966 rad type: Transform @@ -2196,7 +2204,7 @@ entities: - uid: 227 type: DisposalTrunk components: - - parent: 856 + - parent: 855 pos: 34.5,-4.5 rot: 1.5707963267948966 rad type: Transform @@ -2209,7 +2217,7 @@ entities: - uid: 228 type: DisposalUnit components: - - parent: 856 + - parent: 855 pos: 34.5,-4.5 rot: 3.141592653589793 rad type: Transform @@ -2224,7 +2232,7 @@ entities: - uid: 229 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 30.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -2237,7 +2245,7 @@ entities: - uid: 230 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 36.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -2250,7 +2258,7 @@ entities: - uid: 231 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 35.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -2263,7 +2271,7 @@ entities: - uid: 232 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 34.5,2.5 rot: 1.5707963267948966 rad type: Transform @@ -2276,7 +2284,7 @@ entities: - uid: 233 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 33.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -2289,7 +2297,7 @@ entities: - uid: 234 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 32.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -2302,7 +2310,7 @@ entities: - uid: 235 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 31.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -2315,7 +2323,7 @@ entities: - uid: 236 type: DisposalBend components: - - parent: 856 + - parent: 855 pos: 37.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -2328,7 +2336,7 @@ entities: - uid: 237 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 37.5,4.5 rot: -1.5707963267948966 rad type: Transform @@ -2341,7 +2349,7 @@ entities: - uid: 238 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 37.5,5.5 rot: -1.5707963267948966 rad type: Transform @@ -2354,7 +2362,7 @@ entities: - uid: 239 type: DisposalTrunk components: - - parent: 856 + - parent: 855 pos: 37.5,6.5 rot: -1.5707963267948966 rad type: Transform @@ -2367,7 +2375,7 @@ entities: - uid: 240 type: DisposalUnit components: - - parent: 856 + - parent: 855 pos: 37.5,6.5 rot: -1.5707963267948966 rad type: Transform @@ -2382,7 +2390,7 @@ entities: - uid: 241 type: DisposalBend components: - - parent: 856 + - parent: 855 pos: 2.5,29.5 rot: -1.5707963267948966 rad type: Transform @@ -2395,7 +2403,7 @@ entities: - uid: 242 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 2.5,5.5 rot: -1.5707963267948966 rad type: Transform @@ -2408,7 +2416,7 @@ entities: - uid: 243 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 2.5,6.5 rot: -1.5707963267948966 rad type: Transform @@ -2421,7 +2429,7 @@ entities: - uid: 244 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 2.5,7.5 rot: -1.5707963267948966 rad type: Transform @@ -2434,7 +2442,7 @@ entities: - uid: 245 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 2.5,8.5 rot: -1.5707963267948966 rad type: Transform @@ -2447,7 +2455,7 @@ entities: - uid: 246 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 2.5,9.5 rot: -1.5707963267948966 rad type: Transform @@ -2460,7 +2468,7 @@ entities: - uid: 247 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 2.5,10.5 rot: -1.5707963267948966 rad type: Transform @@ -2473,7 +2481,7 @@ entities: - uid: 248 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 3.5,11.5 rot: 3.141592653589793 rad type: Transform @@ -2486,7 +2494,7 @@ entities: - uid: 249 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 2.5,12.5 rot: -1.5707963267948966 rad type: Transform @@ -2499,7 +2507,7 @@ entities: - uid: 250 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 2.5,13.5 rot: -1.5707963267948966 rad type: Transform @@ -2512,7 +2520,7 @@ entities: - uid: 251 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 2.5,14.5 rot: -1.5707963267948966 rad type: Transform @@ -2525,7 +2533,7 @@ entities: - uid: 252 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 2.5,15.5 rot: -1.5707963267948966 rad type: Transform @@ -2538,7 +2546,7 @@ entities: - uid: 253 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 2.5,16.5 rot: -1.5707963267948966 rad type: Transform @@ -2551,7 +2559,7 @@ entities: - uid: 254 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 1.5,17.5 type: Transform - deadThreshold: 100 @@ -2563,7 +2571,7 @@ entities: - uid: 255 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 2.5,18.5 rot: -1.5707963267948966 rad type: Transform @@ -2576,7 +2584,7 @@ entities: - uid: 256 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 2.5,19.5 rot: -1.5707963267948966 rad type: Transform @@ -2589,7 +2597,7 @@ entities: - uid: 257 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 2.5,20.5 rot: -1.5707963267948966 rad type: Transform @@ -2602,7 +2610,7 @@ entities: - uid: 258 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 2.5,21.5 rot: -1.5707963267948966 rad type: Transform @@ -2615,7 +2623,7 @@ entities: - uid: 259 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 2.5,22.5 rot: -1.5707963267948966 rad type: Transform @@ -2628,7 +2636,7 @@ entities: - uid: 260 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 2.5,23.5 rot: -1.5707963267948966 rad type: Transform @@ -2641,7 +2649,7 @@ entities: - uid: 261 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 2.5,24.5 rot: -1.5707963267948966 rad type: Transform @@ -2654,7 +2662,7 @@ entities: - uid: 262 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 2.5,25.5 rot: -1.5707963267948966 rad type: Transform @@ -2667,7 +2675,7 @@ entities: - uid: 263 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 2.5,26.5 rot: -1.5707963267948966 rad type: Transform @@ -2680,7 +2688,7 @@ entities: - uid: 264 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 2.5,27.5 rot: -1.5707963267948966 rad type: Transform @@ -2693,14 +2701,14 @@ entities: - uid: 265 type: Window components: - - parent: 856 + - parent: 855 pos: 37.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 266 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 2.5,28.5 rot: -1.5707963267948966 rad type: Transform @@ -2713,7 +2721,7 @@ entities: - uid: 267 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -17.5,-21.5 rot: 1.5707963267948966 rad type: Transform @@ -2726,7 +2734,7 @@ entities: - uid: 268 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 1.5,29.5 type: Transform - deadThreshold: 100 @@ -2738,7 +2746,7 @@ entities: - uid: 269 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 0.5,29.5 type: Transform - deadThreshold: 100 @@ -2750,7 +2758,7 @@ entities: - uid: 270 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -0.5,29.5 type: Transform - deadThreshold: 100 @@ -2762,7 +2770,7 @@ entities: - uid: 271 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -1.5,29.5 type: Transform - deadThreshold: 100 @@ -2774,7 +2782,7 @@ entities: - uid: 272 type: DisposalTrunk components: - - parent: 856 + - parent: 855 pos: -2.5,29.5 type: Transform - deadThreshold: 100 @@ -2786,7 +2794,7 @@ entities: - uid: 273 type: DisposalUnit components: - - parent: 856 + - parent: 855 pos: -2.5,29.5 rot: 3.141592653589793 rad type: Transform @@ -2801,7 +2809,7 @@ entities: - uid: 274 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -18.5,-10.5 type: Transform - deadThreshold: 100 @@ -2813,7 +2821,7 @@ entities: - uid: 275 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 3.5,-8.5 rot: 1.5707963267948966 rad type: Transform @@ -2826,7 +2834,7 @@ entities: - uid: 276 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 3.5,-7.5 rot: 1.5707963267948966 rad type: Transform @@ -2839,7 +2847,7 @@ entities: - uid: 277 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 3.5,-6.5 rot: 1.5707963267948966 rad type: Transform @@ -2852,7 +2860,7 @@ entities: - uid: 278 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 3.5,-5.5 rot: 1.5707963267948966 rad type: Transform @@ -2865,7 +2873,7 @@ entities: - uid: 279 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 3.5,-4.5 rot: 1.5707963267948966 rad type: Transform @@ -2878,7 +2886,7 @@ entities: - uid: 280 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 3.5,-3.5 rot: 1.5707963267948966 rad type: Transform @@ -2891,7 +2899,7 @@ entities: - uid: 281 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 3.5,-2.5 rot: 1.5707963267948966 rad type: Transform @@ -2904,7 +2912,7 @@ entities: - uid: 282 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 3.5,-1.5 rot: 1.5707963267948966 rad type: Transform @@ -2917,7 +2925,7 @@ entities: - uid: 283 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 3.5,-0.5 rot: 1.5707963267948966 rad type: Transform @@ -2930,7 +2938,7 @@ entities: - uid: 284 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 3.5,0.5 rot: 1.5707963267948966 rad type: Transform @@ -2943,7 +2951,7 @@ entities: - uid: 285 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 3.5,1.5 rot: 1.5707963267948966 rad type: Transform @@ -2956,7 +2964,7 @@ entities: - uid: 286 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 3.5,2.5 rot: 1.5707963267948966 rad type: Transform @@ -2969,7 +2977,7 @@ entities: - uid: 287 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 3.5,-10.5 rot: 1.5707963267948966 rad type: Transform @@ -2982,7 +2990,7 @@ entities: - uid: 288 type: DisposalBend components: - - parent: 856 + - parent: 855 pos: 3.5,-11.5 rot: 1.5707963267948966 rad type: Transform @@ -2995,7 +3003,7 @@ entities: - uid: 289 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 5.5,-11.5 rot: 3.141592653589793 rad type: Transform @@ -3008,7 +3016,7 @@ entities: - uid: 290 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 6.5,-11.5 rot: 3.141592653589793 rad type: Transform @@ -3021,7 +3029,7 @@ entities: - uid: 291 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 7.5,-11.5 rot: 3.141592653589793 rad type: Transform @@ -3034,7 +3042,7 @@ entities: - uid: 292 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 8.5,-11.5 rot: 3.141592653589793 rad type: Transform @@ -3047,7 +3055,7 @@ entities: - uid: 293 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 4.5,-11.5 rot: 3.141592653589793 rad type: Transform @@ -3060,7 +3068,7 @@ entities: - uid: 294 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 9.5,-11.5 rot: 3.141592653589793 rad type: Transform @@ -3073,7 +3081,7 @@ entities: - uid: 295 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 10.5,-11.5 rot: 3.141592653589793 rad type: Transform @@ -3086,7 +3094,7 @@ entities: - uid: 296 type: DisposalTrunk components: - - parent: 856 + - parent: 855 pos: 11.5,-11.5 rot: 3.141592653589793 rad type: Transform @@ -3099,7 +3107,7 @@ entities: - uid: 297 type: DisposalUnit components: - - parent: 856 + - parent: 855 pos: 11.5,-11.5 rot: 3.141592653589793 rad type: Transform @@ -3114,7 +3122,7 @@ entities: - uid: 298 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -19.5,-10.5 type: Transform - deadThreshold: 100 @@ -3126,7 +3134,7 @@ entities: - uid: 299 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 12.5,1.5 rot: 1.5707963267948966 rad type: Transform @@ -3139,7 +3147,7 @@ entities: - uid: 300 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 12.5,0.5 rot: 1.5707963267948966 rad type: Transform @@ -3152,7 +3160,7 @@ entities: - uid: 301 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 12.5,-0.5 rot: 1.5707963267948966 rad type: Transform @@ -3165,7 +3173,7 @@ entities: - uid: 302 type: DisposalTrunk components: - - parent: 856 + - parent: 855 pos: 12.5,-2.5 rot: 1.5707963267948966 rad type: Transform @@ -3178,7 +3186,7 @@ entities: - uid: 303 type: DisposalUnit components: - - parent: 856 + - parent: 855 pos: 12.5,-2.5 rot: 3.141592653589793 rad type: Transform @@ -3193,21 +3201,21 @@ entities: - uid: 304 type: Window components: - - parent: 856 + - parent: 855 pos: 36.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 305 type: Window components: - - parent: 856 + - parent: 855 pos: 34.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 306 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 5.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3220,7 +3228,7 @@ entities: - uid: 307 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 6.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3233,7 +3241,7 @@ entities: - uid: 308 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 7.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3246,7 +3254,7 @@ entities: - uid: 309 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 8.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3259,7 +3267,7 @@ entities: - uid: 310 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 9.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3272,7 +3280,7 @@ entities: - uid: 311 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 10.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3285,7 +3293,7 @@ entities: - uid: 312 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 11.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3298,7 +3306,7 @@ entities: - uid: 313 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 12.5,2.5 rot: 1.5707963267948966 rad type: Transform @@ -3311,7 +3319,7 @@ entities: - uid: 314 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 13.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3324,7 +3332,7 @@ entities: - uid: 315 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 14.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3337,7 +3345,7 @@ entities: - uid: 316 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 15.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3350,7 +3358,7 @@ entities: - uid: 317 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 16.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3363,7 +3371,7 @@ entities: - uid: 318 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 17.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3376,7 +3384,7 @@ entities: - uid: 319 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 18.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3389,7 +3397,7 @@ entities: - uid: 320 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 19.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3402,7 +3410,7 @@ entities: - uid: 321 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 20.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3415,7 +3423,7 @@ entities: - uid: 322 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 21.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3428,7 +3436,7 @@ entities: - uid: 323 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 22.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3441,7 +3449,7 @@ entities: - uid: 324 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 23.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3454,7 +3462,7 @@ entities: - uid: 325 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 24.5,4.5 rot: -1.5707963267948966 rad type: Transform @@ -3467,7 +3475,7 @@ entities: - uid: 326 type: Firelock components: - - parent: 856 + - parent: 855 pos: -22.5,14.5 rot: 3.141592653589793 rad type: Transform @@ -3480,7 +3488,7 @@ entities: - uid: 327 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 26.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3493,7 +3501,7 @@ entities: - uid: 328 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 27.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3506,7 +3514,7 @@ entities: - uid: 329 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 28.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3519,7 +3527,7 @@ entities: - uid: 330 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 29.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3532,7 +3540,7 @@ entities: - uid: 331 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 4.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3545,7 +3553,7 @@ entities: - uid: 332 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 3.5,-9.5 rot: 1.5707963267948966 rad type: Transform @@ -3558,7 +3566,7 @@ entities: - uid: 333 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 2.5,4.5 rot: -1.5707963267948966 rad type: Transform @@ -3571,7 +3579,7 @@ entities: - uid: 334 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -20.5,-10.5 type: Transform - deadThreshold: 100 @@ -3583,7 +3591,7 @@ entities: - uid: 335 type: DisposalTrunk components: - - parent: 856 + - parent: 855 pos: 0.5,1.5 rot: 1.5707963267948966 rad type: Transform @@ -3596,7 +3604,7 @@ entities: - uid: 336 type: DisposalUnit components: - - parent: 856 + - parent: 855 pos: 0.5,1.5 rot: -1.5707963267948966 rad type: Transform @@ -3611,7 +3619,7 @@ entities: - uid: 337 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -27.5,-9.5 rot: -1.5707963267948966 rad type: Transform @@ -3624,7 +3632,7 @@ entities: - uid: 338 type: DisposalTrunk components: - - parent: 856 + - parent: 855 pos: -27.5,-8.5 rot: -1.5707963267948966 rad type: Transform @@ -3637,7 +3645,7 @@ entities: - uid: 339 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -21.5,-10.5 type: Transform - deadThreshold: 100 @@ -3649,7 +3657,7 @@ entities: - uid: 340 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -12.5,2.5 rot: 1.5707963267948966 rad type: Transform @@ -3662,7 +3670,7 @@ entities: - uid: 341 type: DisposalTrunk components: - - parent: 856 + - parent: 855 pos: -12.5,1.5 rot: 1.5707963267948966 rad type: Transform @@ -3675,7 +3683,7 @@ entities: - uid: 342 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -22.5,-10.5 type: Transform - deadThreshold: 100 @@ -3687,7 +3695,7 @@ entities: - uid: 343 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -23.5,-12.5 rot: -1.5707963267948966 rad type: Transform @@ -3700,7 +3708,7 @@ entities: - uid: 344 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -23.5,-11.5 rot: -1.5707963267948966 rad type: Transform @@ -3713,7 +3721,7 @@ entities: - uid: 345 type: DisposalBend components: - - parent: 856 + - parent: 855 pos: -32.5,3.5 type: Transform - deadThreshold: 100 @@ -3725,7 +3733,7 @@ entities: - uid: 346 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -22.5,4.5 rot: -1.5707963267948966 rad type: Transform @@ -3738,7 +3746,7 @@ entities: - uid: 347 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -22.5,5.5 rot: -1.5707963267948966 rad type: Transform @@ -3751,7 +3759,7 @@ entities: - uid: 348 type: DisposalTrunk components: - - parent: 856 + - parent: 855 pos: -22.5,6.5 rot: -1.5707963267948966 rad type: Transform @@ -3764,7 +3772,7 @@ entities: - uid: 349 type: DisposalBend components: - - parent: 856 + - parent: 855 pos: -17.5,-10.5 rot: -1.5707963267948966 rad type: Transform @@ -3777,7 +3785,7 @@ entities: - uid: 350 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -7.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3790,7 +3798,7 @@ entities: - uid: 351 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -6.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3803,7 +3811,7 @@ entities: - uid: 352 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -5.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3816,7 +3824,7 @@ entities: - uid: 353 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -4.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3829,7 +3837,7 @@ entities: - uid: 354 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -3.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3842,7 +3850,7 @@ entities: - uid: 355 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -2.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3855,7 +3863,7 @@ entities: - uid: 356 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -1.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3868,7 +3876,7 @@ entities: - uid: 357 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -0.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3881,7 +3889,7 @@ entities: - uid: 358 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 0.5,2.5 rot: 1.5707963267948966 rad type: Transform @@ -3894,7 +3902,7 @@ entities: - uid: 359 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 1.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3907,7 +3915,7 @@ entities: - uid: 360 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -8.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3920,7 +3928,7 @@ entities: - uid: 361 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -9.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3933,7 +3941,7 @@ entities: - uid: 362 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -10.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3946,7 +3954,7 @@ entities: - uid: 363 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -11.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3959,7 +3967,7 @@ entities: - uid: 364 type: DisposalUnit components: - - parent: 856 + - parent: 855 pos: -12.5,1.5 rot: -1.5707963267948966 rad type: Transform @@ -3974,7 +3982,7 @@ entities: - uid: 365 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -13.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -3987,7 +3995,7 @@ entities: - uid: 366 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -14.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -4000,7 +4008,7 @@ entities: - uid: 367 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -15.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -4013,7 +4021,7 @@ entities: - uid: 368 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -16.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -4026,7 +4034,7 @@ entities: - uid: 369 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -17.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -4039,7 +4047,7 @@ entities: - uid: 370 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -18.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -4052,7 +4060,7 @@ entities: - uid: 371 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -19.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -4065,7 +4073,7 @@ entities: - uid: 372 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -20.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -4078,7 +4086,7 @@ entities: - uid: 373 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -21.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -4091,7 +4099,7 @@ entities: - uid: 374 type: DisposalUnit components: - - parent: 856 + - parent: 855 pos: -22.5,6.5 rot: 3.141592653589793 rad type: Transform @@ -4106,7 +4114,7 @@ entities: - uid: 375 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -23.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -4119,7 +4127,7 @@ entities: - uid: 376 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -24.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -4132,7 +4140,7 @@ entities: - uid: 377 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -25.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -4145,7 +4153,7 @@ entities: - uid: 378 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -26.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -4158,7 +4166,7 @@ entities: - uid: 379 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -27.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -4171,7 +4179,7 @@ entities: - uid: 380 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -28.5,4.5 rot: -1.5707963267948966 rad type: Transform @@ -4184,7 +4192,7 @@ entities: - uid: 381 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -29.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -4197,7 +4205,7 @@ entities: - uid: 382 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -30.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -4210,7 +4218,7 @@ entities: - uid: 383 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -31.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -4223,7 +4231,7 @@ entities: - uid: 384 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -32.5,2.5 rot: -1.5707963267948966 rad type: Transform @@ -4236,7 +4244,7 @@ entities: - uid: 385 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -32.5,1.5 rot: -1.5707963267948966 rad type: Transform @@ -4249,7 +4257,7 @@ entities: - uid: 386 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -32.5,0.5 rot: -1.5707963267948966 rad type: Transform @@ -4262,7 +4270,7 @@ entities: - uid: 387 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -32.5,-0.5 rot: -1.5707963267948966 rad type: Transform @@ -4275,7 +4283,7 @@ entities: - uid: 388 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -32.5,-1.5 rot: -1.5707963267948966 rad type: Transform @@ -4288,7 +4296,7 @@ entities: - uid: 389 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -32.5,-2.5 rot: -1.5707963267948966 rad type: Transform @@ -4301,7 +4309,7 @@ entities: - uid: 390 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -32.5,-3.5 rot: -1.5707963267948966 rad type: Transform @@ -4314,7 +4322,7 @@ entities: - uid: 391 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -32.5,-4.5 rot: -1.5707963267948966 rad type: Transform @@ -4327,7 +4335,7 @@ entities: - uid: 392 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -32.5,-5.5 rot: -1.5707963267948966 rad type: Transform @@ -4340,7 +4348,7 @@ entities: - uid: 393 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -32.5,-6.5 rot: -1.5707963267948966 rad type: Transform @@ -4353,7 +4361,7 @@ entities: - uid: 394 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -32.5,-7.5 rot: -1.5707963267948966 rad type: Transform @@ -4366,7 +4374,7 @@ entities: - uid: 395 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -32.5,-8.5 rot: -1.5707963267948966 rad type: Transform @@ -4379,7 +4387,7 @@ entities: - uid: 396 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -32.5,-9.5 rot: -1.5707963267948966 rad type: Transform @@ -4392,7 +4400,7 @@ entities: - uid: 397 type: DisposalBend components: - - parent: 856 + - parent: 855 pos: -32.5,-10.5 rot: 1.5707963267948966 rad type: Transform @@ -4405,7 +4413,7 @@ entities: - uid: 398 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -31.5,-10.5 rot: 3.141592653589793 rad type: Transform @@ -4418,7 +4426,7 @@ entities: - uid: 399 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -30.5,-10.5 rot: 3.141592653589793 rad type: Transform @@ -4431,7 +4439,7 @@ entities: - uid: 400 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -29.5,-10.5 rot: 3.141592653589793 rad type: Transform @@ -4444,7 +4452,7 @@ entities: - uid: 401 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -28.5,-10.5 rot: 3.141592653589793 rad type: Transform @@ -4457,7 +4465,7 @@ entities: - uid: 402 type: DisposalUnit components: - - parent: 856 + - parent: 855 pos: -27.5,-8.5 rot: 1.5707963267948966 rad type: Transform @@ -4472,7 +4480,7 @@ entities: - uid: 403 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -26.5,-10.5 rot: 3.141592653589793 rad type: Transform @@ -4485,7 +4493,7 @@ entities: - uid: 404 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -25.5,-10.5 rot: 3.141592653589793 rad type: Transform @@ -4498,7 +4506,7 @@ entities: - uid: 405 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -24.5,-10.5 rot: 3.141592653589793 rad type: Transform @@ -4511,7 +4519,7 @@ entities: - uid: 406 type: DisposalUnit components: - - parent: 856 + - parent: 855 pos: -10.5,-17.5 rot: -1.5707963267948966 rad type: Transform @@ -4526,679 +4534,679 @@ entities: - uid: 407 type: AirlockMaintCommon components: - - parent: 856 + - parent: 855 pos: -24.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 408 type: Window components: - - parent: 856 + - parent: 855 pos: 32.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 409 type: ReinforcedWindow components: - - parent: 856 + - parent: 855 pos: 30.5,4.5 rot: -1.5707963267948966 rad type: Transform - uid: 410 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -23.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 411 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -22.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 412 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -21.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 413 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -20.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 414 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -19.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 415 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -19.5,-13.5 rot: -1.5707963267948966 rad type: Transform - uid: 416 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -19.5,-14.5 rot: -1.5707963267948966 rad type: Transform - uid: 417 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -19.5,-15.5 rot: -1.5707963267948966 rad type: Transform - uid: 418 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 9.5,13.5 rot: -1.5707963267948966 rad type: Transform - uid: 419 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 12.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 420 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 13.5,19.5 rot: -1.5707963267948966 rad type: Transform - uid: 421 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 1.5,16.5 rot: -1.5707963267948966 rad type: Transform - uid: 422 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 4.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 423 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -22.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 424 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -25.5,0.5 rot: -1.5707963267948966 rad type: Transform - uid: 425 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -17.5,3.5 rot: -1.5707963267948966 rad type: Transform - uid: 426 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -8.5,-1.5 rot: -1.5707963267948966 rad type: Transform - uid: 427 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -1.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 428 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -7.5,5.5 rot: -1.5707963267948966 rad type: Transform - uid: 429 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 19.5,3.5 rot: -1.5707963267948966 rad type: Transform - uid: 430 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 25.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 431 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 6.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 432 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 12.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 433 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 12.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 434 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 24.5,11.5 rot: -1.5707963267948966 rad type: Transform - uid: 435 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 27.5,13.5 rot: -1.5707963267948966 rad type: Transform - uid: 436 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 26.5,10.5 rot: -1.5707963267948966 rad type: Transform - uid: 437 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 28.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 438 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 27.5,0.5 rot: -1.5707963267948966 rad type: Transform - uid: 439 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 35.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 440 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 44.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 441 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 42.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 442 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 37.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 443 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 37.5,-7.5 rot: -1.5707963267948966 rad type: Transform - uid: 444 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 32.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 445 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 20.5,0.5 rot: -1.5707963267948966 rad type: Transform - uid: 446 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 21.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 447 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 25.5,-1.5 rot: -1.5707963267948966 rad type: Transform - uid: 448 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 27.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 449 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 27.5,-7.5 rot: -1.5707963267948966 rad type: Transform - uid: 450 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 24.5,-9.5 rot: -1.5707963267948966 rad type: Transform - uid: 451 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 27.5,-13.5 rot: -1.5707963267948966 rad type: Transform - uid: 452 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 26.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 453 type: solid_wall components: - - parent: 856 + - parent: 855 pos: 0.5,21.5 rot: -1.5707963267948966 rad type: Transform - uid: 454 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 21.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 455 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 21.5,-20.5 rot: -1.5707963267948966 rad type: Transform - uid: 456 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 22.5,-23.5 rot: -1.5707963267948966 rad type: Transform - uid: 457 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 18.5,-25.5 rot: -1.5707963267948966 rad type: Transform - uid: 458 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 14.5,-24.5 rot: -1.5707963267948966 rad type: Transform - uid: 459 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 14.5,-21.5 rot: -1.5707963267948966 rad type: Transform - uid: 460 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 12.5,-19.5 rot: -1.5707963267948966 rad type: Transform - uid: 461 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 7.5,-18.5 rot: -1.5707963267948966 rad type: Transform - uid: 462 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -10.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 463 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -0.5,-22.5 rot: -1.5707963267948966 rad type: Transform - uid: 464 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -2.5,-26.5 rot: -1.5707963267948966 rad type: Transform - uid: 465 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -5.5,-27.5 rot: -1.5707963267948966 rad type: Transform - uid: 466 type: Catwalk components: - - parent: 856 + - parent: 855 pos: -32.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 467 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -9.5,-25.5 rot: -1.5707963267948966 rad type: Transform - uid: 468 type: LowWall components: - - parent: 856 + - parent: 855 pos: -35.5,11.5 rot: -1.5707963267948966 rad type: Transform - uid: 469 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -11.5,-27.5 rot: -1.5707963267948966 rad type: Transform - uid: 470 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -11.5,-23.5 rot: -1.5707963267948966 rad type: Transform - uid: 471 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 0.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 472 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -0.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 473 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -0.5,-9.5 rot: -1.5707963267948966 rad type: Transform - uid: 474 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -2.5,-10.5 rot: -1.5707963267948966 rad type: Transform - uid: 475 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -6.5,-9.5 rot: -1.5707963267948966 rad type: Transform - uid: 476 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -16.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 477 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -11.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 478 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -8.5,-11.5 rot: -1.5707963267948966 rad type: Transform - uid: 479 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -9.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 480 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -8.5,-15.5 rot: -1.5707963267948966 rad type: Transform - uid: 481 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -12.5,-15.5 rot: -1.5707963267948966 rad type: Transform - uid: 482 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -18.5,-13.5 rot: -1.5707963267948966 rad type: Transform - uid: 483 type: SuspicionPistolMagazineSpawner components: - - parent: 856 + - parent: 855 pos: -35.5,0.5 rot: -1.5707963267948966 rad type: Transform - uid: 484 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -21.5,-10.5 rot: -1.5707963267948966 rad type: Transform - uid: 485 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -28.5,-11.5 rot: -1.5707963267948966 rad type: Transform - uid: 486 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -32.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 487 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -33.5,-11.5 rot: -1.5707963267948966 rad type: Transform - uid: 488 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -33.5,-7.5 rot: -1.5707963267948966 rad type: Transform - uid: 489 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -32.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 490 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -19.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 491 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -30.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 492 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -30.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 493 type: SpawnPointMime components: - - parent: 856 + - parent: 855 pos: -19.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 494 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -32.5,5.5 rot: -1.5707963267948966 rad type: Transform - uid: 495 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -35.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 496 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -36.5,10.5 rot: -1.5707963267948966 rad type: Transform - uid: 497 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 0.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 498 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -3.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 499 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -2.5,20.5 rot: -1.5707963267948966 rad type: Transform - uid: 500 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -4.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 501 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -7.5,23.5 rot: -1.5707963267948966 rad type: Transform - uid: 502 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -8.5,25.5 rot: -1.5707963267948966 rad type: Transform - uid: 503 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -38.60578,1.9956734 rot: 1.5707963267948966 rad type: Transform @@ -5211,84 +5219,84 @@ entities: - uid: 504 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -18.5,25.5 rot: -1.5707963267948966 rad type: Transform - uid: 505 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -18.5,19.5 rot: -1.5707963267948966 rad type: Transform - uid: 506 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -15.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 507 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -17.5,13.5 rot: -1.5707963267948966 rad type: Transform - uid: 508 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -21.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 509 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -23.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 510 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -25.5,13.5 rot: -1.5707963267948966 rad type: Transform - uid: 511 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -30.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 512 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -32.5,11.5 rot: -1.5707963267948966 rad type: Transform - uid: 513 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -31.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 514 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: -21.5,10.5 rot: -1.5707963267948966 rad type: Transform - uid: 515 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -16,-1.5 rot: 3.141592653589793 rad type: Transform @@ -5301,7 +5309,7 @@ entities: - uid: 516 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -20.5,-3 rot: 1.5707963267948966 rad type: Transform @@ -5314,7 +5322,7 @@ entities: - uid: 517 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -20.5,2 rot: -1.5707963267948966 rad type: Transform @@ -5327,35 +5335,35 @@ entities: - uid: 518 type: Catwalk components: - - parent: 856 + - parent: 855 pos: -15.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 519 type: Catwalk components: - - parent: 856 + - parent: 855 pos: -16.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 520 type: Catwalk components: - - parent: 856 + - parent: 855 pos: -15.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 521 type: Catwalk components: - - parent: 856 + - parent: 855 pos: -15.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 522 type: Catwalk components: - - parent: 856 + - parent: 855 pos: -16.5,-4.5 rot: -1.5707963267948966 rad type: Transform @@ -5364,224 +5372,224 @@ entities: components: - name: Hydroponics type: MetaData - - parent: 856 + - parent: 855 pos: -16.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 524 type: AirlockMaintCommonLocked components: - - parent: 856 + - parent: 855 pos: -16.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 525 type: AirlockMaintCommonLocked components: - - parent: 856 + - parent: 855 pos: -14.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 526 type: Table components: - - parent: 856 + - parent: 855 pos: -15.5,0.5 rot: -1.5707963267948966 rad type: Transform - uid: 527 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -14.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 528 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -21.5,-1.5 rot: -1.5707963267948966 rad type: Transform - uid: 529 type: SuspicionRifleSpawner components: - - parent: 856 + - parent: 855 pos: 5.5,16.5 rot: -1.5707963267948966 rad type: Transform - uid: 530 type: SuspicionMeleeSpawner components: - - parent: 856 + - parent: 855 pos: -4.5,20.5 rot: -1.5707963267948966 rad type: Transform - uid: 531 type: SuspicionPistolSpawner components: - - parent: 856 + - parent: 855 pos: -13.5,24.5 rot: -1.5707963267948966 rad type: Transform - uid: 532 type: SuspicionRifleSpawner components: - - parent: 856 + - parent: 855 pos: 6.5,28.5 rot: -1.5707963267948966 rad type: Transform - uid: 533 type: SuspicionRifleSpawner components: - - parent: 856 + - parent: 855 pos: 0.5,28.5 rot: -1.5707963267948966 rad type: Transform - uid: 534 type: SuspicionPistolSpawner components: - - parent: 856 + - parent: 855 pos: 6.5,20.5 rot: -1.5707963267948966 rad type: Transform - uid: 535 type: SuspicionRifleSpawner components: - - parent: 856 + - parent: 855 pos: -7.5,21.5 rot: -1.5707963267948966 rad type: Transform - uid: 536 type: SuspicionRifleSpawner components: - - parent: 856 + - parent: 855 pos: -7.5,20.5 rot: -1.5707963267948966 rad type: Transform - uid: 537 type: SuspicionPistolSpawner components: - - parent: 856 + - parent: 855 pos: -20.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 538 type: SuspicionPistolSpawner components: - - parent: 856 + - parent: 855 pos: -31.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 539 type: SuspicionPistolSpawner components: - - parent: 856 + - parent: 855 pos: -18.5,-11.5 rot: -1.5707963267948966 rad type: Transform - uid: 540 type: SuspicionRifleSpawner components: - - parent: 856 + - parent: 855 pos: -32.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 541 type: SuspicionRifleSpawner components: - - parent: 856 + - parent: 855 pos: -14.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 542 type: SuspicionRifleSpawner components: - - parent: 856 + - parent: 855 pos: -2.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 543 type: SuspicionRifleSpawner components: - - parent: 856 + - parent: 855 pos: 23.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 544 type: SuspicionMeleeSpawner components: - - parent: 856 + - parent: 855 pos: 22.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 545 type: SuspicionMeleeSpawner components: - - parent: 856 + - parent: 855 pos: 17.5,-20.5 rot: -1.5707963267948966 rad type: Transform - uid: 546 type: SuspicionMeleeSpawner components: - - parent: 856 + - parent: 855 pos: 18.5,-24.5 rot: -1.5707963267948966 rad type: Transform - uid: 547 type: SuspicionMeleeSpawner components: - - parent: 856 + - parent: 855 pos: 10.5,-13.5 rot: -1.5707963267948966 rad type: Transform - uid: 548 type: SuspicionMeleeSpawner components: - - parent: 856 + - parent: 855 pos: 15.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 549 type: SuspicionMeleeSpawner components: - - parent: 856 + - parent: 855 pos: 10.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 550 type: SuspicionMeleeSpawner components: - - parent: 856 + - parent: 855 pos: 6.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 551 type: SuspicionMeleeSpawner components: - - parent: 856 + - parent: 855 pos: -0.5,0.5 rot: -1.5707963267948966 rad type: Transform - uid: 552 type: SuspicionMeleeSpawner components: - - parent: 856 + - parent: 855 pos: -29.5,10.5 rot: -1.5707963267948966 rad type: Transform - uid: 553 type: SuspicionMeleeSpawner components: - - parent: 856 + - parent: 855 pos: -28.5,13.5 rot: -1.5707963267948966 rad type: Transform - uid: 554 type: SuspicionMeleeSpawner components: - - parent: 856 + - parent: 855 pos: -27.5,1.5 rot: -1.5707963267948966 rad type: Transform @@ -5590,7 +5598,7 @@ entities: components: - name: Cell 2 type: MetaData - - parent: 856 + - parent: 855 pos: 0.5,9.5 rot: -1.5707963267948966 rad type: Transform @@ -5599,28 +5607,28 @@ entities: components: - name: Cell 1 type: MetaData - - parent: 856 + - parent: 855 pos: -2.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 557 type: Catwalk components: - - parent: 856 + - parent: 855 pos: -1.5,21.5 rot: -1.5707963267948966 rad type: Transform - uid: 558 type: reinforced_wall components: - - parent: 856 + - parent: 855 pos: 13.5,25.5 rot: -1.5707963267948966 rad type: Transform - uid: 559 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 20,-17.5 rot: 3.141592653589793 rad type: Transform @@ -5635,7 +5643,7 @@ entities: - uid: 560 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 15.5,-18 rot: 1.5707963267948966 rad type: Transform @@ -5650,7 +5658,7 @@ entities: - uid: 561 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 17,-20.5 type: Transform - color: '#FFFFFFFF' @@ -5666,7 +5674,7 @@ entities: components: - name: Head of Security's Office type: MetaData - - parent: 856 + - parent: 855 pos: -8.5,18.5 rot: -1.5707963267948966 rad type: Transform @@ -5677,7 +5685,7 @@ entities: - uid: 563 type: AirlockExternalLocked components: - - parent: 856 + - parent: 855 pos: 14.5,14.5 rot: -1.5707963267948966 rad type: Transform @@ -5686,7 +5694,7 @@ entities: components: - name: Supply Shuttle Dock type: MetaData - - parent: 856 + - parent: 855 pos: 22.5,14.5 rot: -1.5707963267948966 rad type: Transform @@ -5698,7 +5706,7 @@ entities: components: - name: Supply Shuttle Dock type: MetaData - - parent: 856 + - parent: 855 pos: 22.5,16.5 rot: -1.5707963267948966 rad type: Transform @@ -5710,7 +5718,7 @@ entities: components: - name: Supply Shuttle Dock type: MetaData - - parent: 856 + - parent: 855 pos: 20.5,16.5 rot: -1.5707963267948966 rad type: Transform @@ -5722,7 +5730,7 @@ entities: components: - name: Supply Shuttle Dock type: MetaData - - parent: 856 + - parent: 855 pos: 20.5,14.5 rot: -1.5707963267948966 rad type: Transform @@ -5734,7 +5742,7 @@ entities: components: - name: Cargo Bay type: MetaData - - parent: 856 + - parent: 855 pos: 17.5,11.5 rot: -1.5707963267948966 rad type: Transform @@ -5743,7 +5751,7 @@ entities: components: - name: Cargo Bay type: MetaData - - parent: 856 + - parent: 855 pos: 17.5,10.5 rot: -1.5707963267948966 rad type: Transform @@ -5752,14 +5760,14 @@ entities: components: - name: Cargo Office type: MetaData - - parent: 856 + - parent: 855 pos: 13.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 571 type: AirlockMaintCommandLocked components: - - parent: 856 + - parent: 855 pos: 8.5,12.5 rot: -1.5707963267948966 rad type: Transform @@ -5771,7 +5779,7 @@ entities: components: - name: EVA type: MetaData - - parent: 856 + - parent: 855 pos: 9.5,6.5 rot: -1.5707963267948966 rad type: Transform @@ -5783,7 +5791,7 @@ entities: components: - name: EVA type: MetaData - - parent: 856 + - parent: 855 pos: 7.5,6.5 rot: -1.5707963267948966 rad type: Transform @@ -5795,7 +5803,7 @@ entities: components: - name: Bridge type: MetaData - - parent: 856 + - parent: 855 pos: 4.5,22.5 rot: -1.5707963267948966 rad type: Transform @@ -5804,7 +5812,7 @@ entities: components: - name: Bridge type: MetaData - - parent: 856 + - parent: 855 pos: 2.5,22.5 rot: -1.5707963267948966 rad type: Transform @@ -5813,7 +5821,7 @@ entities: components: - name: Armory type: MetaData - - parent: 856 + - parent: 855 pos: -10.5,20.5 rot: -1.5707963267948966 rad type: Transform @@ -5822,14 +5830,14 @@ entities: components: - name: Armory type: MetaData - - parent: 856 + - parent: 855 pos: -12.5,17.5 rot: -1.5707963267948966 rad type: Transform - uid: 578 type: ChairOfficeDark components: - - parent: 856 + - parent: 855 pos: -8.5,8.5 type: Transform - anchored: False @@ -5837,7 +5845,7 @@ entities: - uid: 579 type: ChairOfficeDark components: - - parent: 856 + - parent: 855 pos: -9.5,7.5 rot: -1.5707963267948966 rad type: Transform @@ -5846,49 +5854,49 @@ entities: - uid: 580 type: TableR components: - - parent: 856 + - parent: 855 pos: -8.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 581 type: TableR components: - - parent: 856 + - parent: 855 pos: -9.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 582 type: SuspicionHitscanSpawner components: - - parent: 856 + - parent: 855 pos: -27.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 583 type: SuspicionGrenadesSpawner components: - - parent: 856 + - parent: 855 pos: -20.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 584 type: AirlockMaintCommonLocked components: - - parent: 856 + - parent: 855 pos: 27.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 585 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -29.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 586 type: AirlockMaintCommonLocked components: - - parent: 856 + - parent: 855 pos: -16.5,-7.5 rot: -1.5707963267948966 rad type: Transform @@ -5900,14 +5908,14 @@ entities: components: - name: Showers type: MetaData - - parent: 856 + - parent: 855 pos: -21.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 588 type: StoolBar components: - - parent: 856 + - parent: 855 pos: -1.5,-4.5 rot: -1.5707963267948966 rad type: Transform @@ -5916,7 +5924,7 @@ entities: components: - name: Theatre type: MetaData - - parent: 856 + - parent: 855 pos: -20.5,-7.5 rot: -1.5707963267948966 rad type: Transform @@ -5926,7 +5934,7 @@ entities: - uid: 590 type: TableGlass components: - - parent: 856 + - parent: 855 pos: -0.5,-17.5 rot: -1.5707963267948966 rad type: Transform @@ -5935,7 +5943,7 @@ entities: components: - name: Tool Storage type: MetaData - - parent: 856 + - parent: 855 pos: -25.5,8.5 rot: -1.5707963267948966 rad type: Transform @@ -5947,7 +5955,7 @@ entities: components: - name: Tool Storage type: MetaData - - parent: 856 + - parent: 855 pos: -25.5,10.5 rot: -1.5707963267948966 rad type: Transform @@ -5955,48 +5963,29 @@ entities: - - Maintenance type: AccessReader - uid: 593 - type: ShotgunSawn + type: AirlockScienceLocked components: - - parent: 856 - pos: -6.502499,-6.7994537 + - name: Testing Area + type: MetaData + - parent: 855 + pos: -12.5,-20.5 rot: -1.5707963267948966 rad type: Transform - - maxAngle: 59.99999999999999 - type: PumpBarrel - - containers: - BoltActionBarrel-ammo-container: - type: Robust.Server.GameObjects.Components.Container.Container - BoltActionBarrel-chamber-container: - type: Content.Server.GameObjects.ContainerSlot - PumpBarrel-ammo-container: - type: Robust.Server.GameObjects.Components.Container.Container - PumpBarrel-chamber-container: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer - uid: 594 type: AirlockScienceLocked components: - name: Testing Area type: MetaData - - parent: 856 - pos: -12.5,-20.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 595 - type: AirlockScienceLocked - components: - - name: Testing Area - type: MetaData - - parent: 856 + - parent: 855 pos: -12.5,-19.5 rot: -1.5707963267948966 rad type: Transform -- uid: 596 +- uid: 595 type: AirlockCommandGlassLocked components: - name: Research Director's Office type: MetaData - - parent: 856 + - parent: 855 pos: -3.5,-21.5 rot: -1.5707963267948966 rad type: Transform @@ -6004,25 +5993,25 @@ entities: - - Research - Command type: AccessReader +- uid: 596 + type: AirlockCommandGlassLocked + components: + - name: Server Room + type: MetaData + - parent: 855 + pos: -8.5,-21.5 + rot: -1.5707963267948966 rad + type: Transform + - access: + - - Research + - Command + type: AccessReader - uid: 597 - type: AirlockCommandGlassLocked - components: - - name: Server Room - type: MetaData - - parent: 856 - pos: -8.5,-21.5 - rot: -1.5707963267948966 rad - type: Transform - - access: - - - Research - - Command - type: AccessReader -- uid: 598 type: AirlockCommandGlassLocked components: - name: Chief Medical Officer's Office type: MetaData - - parent: 856 + - parent: 855 pos: 20.5,-13.5 rot: -1.5707963267948966 rad type: Transform @@ -6030,22 +6019,31 @@ entities: - - Medical - Command type: AccessReader +- uid: 598 + type: AirlockMedicalGlassLocked + components: + - name: Chemistry + type: MetaData + - parent: 855 + pos: 17.5,-3.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 599 type: AirlockMedicalGlassLocked components: - name: Chemistry type: MetaData - - parent: 856 - pos: 17.5,-3.5 + - parent: 855 + pos: 7.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 600 - type: AirlockMedicalGlassLocked + type: AirlockEngineeringGlassLocked components: - - name: Chemistry + - name: Engineering type: MetaData - - parent: 856 - pos: 7.5,-6.5 + - parent: 855 + pos: 30.5,5.5 rot: -1.5707963267948966 rad type: Transform - uid: 601 @@ -6053,184 +6051,175 @@ entities: components: - name: Engineering type: MetaData - - parent: 856 - pos: 30.5,5.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 602 - type: AirlockEngineeringGlassLocked - components: - - name: Engineering - type: MetaData - - parent: 856 + - parent: 855 pos: 30.5,3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 603 +- uid: 602 type: AirlockMaintCommonLocked components: - - parent: 856 + - parent: 855 pos: -20.5,11.5 rot: -1.5707963267948966 rad type: Transform - access: - - Janitor type: AccessReader -- uid: 604 +- uid: 603 type: AirlockMaintCommonLocked components: - - parent: 856 + - parent: 855 pos: -32.5,2.5 rot: -1.5707963267948966 rad type: Transform +- uid: 604 + type: AirlockMaintIntLocked + components: + - parent: 855 + pos: -13.5,-13.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 605 type: AirlockMaintIntLocked components: - - parent: 856 - pos: -13.5,-13.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 606 - type: AirlockMaintIntLocked - components: - - parent: 856 + - parent: 855 pos: -12.5,-8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 607 +- uid: 606 type: AirlockMaintRnDLocked components: - - parent: 856 + - parent: 855 pos: -4.5,-11.5 rot: -1.5707963267948966 rad type: Transform +- uid: 607 + type: AirlockMaintCommonLocked + components: + - parent: 855 + pos: 5.5,14.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 608 type: AirlockMaintCommonLocked components: - - parent: 856 - pos: 5.5,14.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 609 - type: AirlockMaintCommonLocked - components: - - parent: 856 + - parent: 855 pos: -16.5,6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 610 +- uid: 609 type: AirlockSecurityGlassLocked components: - name: Brig type: MetaData - - parent: 856 + - parent: 855 pos: -6.5,6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 611 +- uid: 610 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -4.5,4.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 612 +- uid: 611 type: AirlockMaintEngiLocked components: - - parent: 856 + - parent: 855 pos: 28.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 613 +- uid: 612 type: AirlockServiceGlassLocked components: - name: Kitchen type: MetaData - - parent: 856 + - parent: 855 pos: -10.5,-1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 614 +- uid: 613 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -7.5,-7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 615 +- uid: 614 type: AirlockVaultLocked components: - name: Vault type: MetaData - - parent: 856 + - parent: 855 pos: 0.5,17.5 rot: -1.5707963267948966 rad type: Transform +- uid: 615 + type: AirlockMaintCommonLocked + components: + - parent: 855 + pos: 1.5,-7.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 616 type: AirlockMaintCommonLocked components: - - parent: 856 - pos: 1.5,-7.5 + - parent: 855 + pos: -23.5,-9.5 rot: -1.5707963267948966 rad type: Transform - uid: 617 type: AirlockMaintCommonLocked components: - - parent: 856 - pos: -23.5,-9.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 618 - type: AirlockMaintCommonLocked - components: - - parent: 856 + - parent: 855 pos: -34.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 619 +- uid: 618 type: Airlock components: - name: Custodial Closet type: MetaData - - parent: 856 + - parent: 855 pos: -22.5,9.5 rot: -1.5707963267948966 rad type: Transform - access: - - Janitor type: AccessReader -- uid: 620 +- uid: 619 type: AirlockExternalLocked components: - - parent: 856 + - parent: 855 pos: 15.5,16.5 rot: -1.5707963267948966 rad type: Transform -- uid: 621 +- uid: 620 type: AirlockMaintCommandLocked components: - - parent: 856 + - parent: 855 pos: 11.5,20.5 rot: -1.5707963267948966 rad type: Transform - access: - - HeadOfPersonnel type: AccessReader -- uid: 622 +- uid: 621 type: Catwalk components: - - parent: 856 + - parent: 855 pos: 26.5,9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 623 +- uid: 622 type: AirlockCommandGlassLocked components: - name: Chief Engineer's Office type: MetaData - - parent: 856 + - parent: 855 pos: 38.5,1.5 rot: -1.5707963267948966 rad type: Transform @@ -6238,111 +6227,120 @@ entities: - - Engineering - Command type: AccessReader -- uid: 624 +- uid: 623 type: AirlockMaintCommonLocked components: - - parent: 856 + - parent: 855 pos: -33.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 625 +- uid: 624 type: AirlockScienceGlassLocked components: - name: Research and Development type: MetaData - - parent: 856 + - parent: 855 pos: -3.5,-18.5 rot: -1.5707963267948966 rad type: Transform +- uid: 625 + type: AirlockScienceLocked + components: + - name: Science + type: MetaData + - parent: 855 + pos: 0.5,-20.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 626 type: AirlockScienceLocked components: - name: Science type: MetaData - - parent: 856 - pos: 0.5,-20.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 627 - type: AirlockScienceLocked - components: - - name: Science - type: MetaData - - parent: 856 + - parent: 855 pos: 0.5,-19.5 rot: -1.5707963267948966 rad type: Transform -- uid: 628 +- uid: 627 type: AirlockMaintRnDLocked components: - - parent: 856 + - parent: 855 pos: -11.5,-21.5 rot: -1.5707963267948966 rad type: Transform +- uid: 628 + type: AirlockMaintMedLocked + components: + - parent: 855 + pos: 20.5,-10.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 629 type: AirlockMaintMedLocked components: - - parent: 856 - pos: 20.5,-10.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 630 - type: AirlockMaintMedLocked - components: - - parent: 856 + - parent: 855 pos: 14.5,-18.5 rot: -1.5707963267948966 rad type: Transform -- uid: 631 +- uid: 630 type: AirlockMaintCommonLocked components: - - parent: 856 + - parent: 855 pos: 0.5,20.5 rot: -1.5707963267948966 rad type: Transform +- uid: 631 + type: AirlockSecurityGlassLocked + components: + - name: Reception Desk + type: MetaData + - parent: 855 + pos: -9.5,9.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 632 type: AirlockSecurityGlassLocked components: - - name: Reception Desk + - name: Security Equipment type: MetaData - - parent: 856 - pos: -9.5,9.5 + - parent: 855 + pos: -10.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 633 - type: AirlockSecurityGlassLocked + type: AirlockMedicalGlassLocked components: - - name: Security Equipment + - name: Cloning type: MetaData - - parent: 856 - pos: -10.5,15.5 + - parent: 855 + pos: 8.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 634 type: AirlockMedicalGlassLocked components: - - name: Cloning + - name: Surgery type: MetaData - - parent: 856 - pos: 8.5,-12.5 + - parent: 855 + pos: 19.5,-18.5 rot: -1.5707963267948966 rad type: Transform - uid: 635 type: AirlockMedicalGlassLocked components: - - name: Surgery + - name: Medical Storage type: MetaData - - parent: 856 - pos: 19.5,-18.5 + - parent: 855 + pos: 20.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 636 type: AirlockMedicalGlassLocked components: - - name: Medical Storage + - name: Medical Bay type: MetaData - - parent: 856 - pos: 20.5,-6.5 + - parent: 855 + pos: 11.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 637 @@ -6350,96 +6348,96 @@ entities: components: - name: Medical Bay type: MetaData - - parent: 856 - pos: 11.5,-6.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 638 - type: AirlockMedicalGlassLocked - components: - - name: Medical Bay - type: MetaData - - parent: 856 + - parent: 855 pos: 10.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 639 +- uid: 638 type: AirlockMaintCommandLocked components: - - parent: 856 + - parent: 855 pos: -1.5,22.5 rot: -1.5707963267948966 rad type: Transform +- uid: 639 + type: AirlockMaintCommonLocked + components: + - parent: 855 + pos: 21.5,2.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 640 type: AirlockMaintCommonLocked components: - - parent: 856 - pos: 21.5,2.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 641 - type: AirlockMaintCommonLocked - components: - - parent: 856 + - parent: 855 pos: 6.5,-19.5 rot: -1.5707963267948966 rad type: Transform -- uid: 642 +- uid: 641 type: AirlockCommandLocked components: - name: Captain's Office type: MetaData - - parent: 856 + - parent: 855 pos: 5.5,25.5 rot: -1.5707963267948966 rad type: Transform - access: - - Captain type: AccessReader +- uid: 642 + type: AirlockCommandGlassLocked + components: + - name: Heads of Staff Meeting Room + type: MetaData + - parent: 855 + pos: 1.5,25.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 643 type: AirlockCommandGlassLocked components: - name: Heads of Staff Meeting Room type: MetaData - - parent: 856 - pos: 1.5,25.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 644 - type: AirlockCommandGlassLocked - components: - - name: Heads of Staff Meeting Room - type: MetaData - - parent: 856 + - parent: 855 pos: 1.5,24.5 rot: -1.5707963267948966 rad type: Transform -- uid: 645 +- uid: 644 type: AirlockMaintRnDLocked components: - - parent: 856 + - parent: 855 pos: -16.5,-16.5 rot: -1.5707963267948966 rad type: Transform -- uid: 646 +- uid: 645 type: AirlockMaintCargoLocked components: - - parent: 856 + - parent: 855 pos: 25.5,9.5 rot: -1.5707963267948966 rad type: Transform +- uid: 646 + type: AirlockMaintEngiLocked + components: + - parent: 855 + pos: 43.5,0.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 647 type: AirlockMaintEngiLocked components: - - parent: 856 - pos: 43.5,0.5 + - parent: 855 + pos: 29.5,10.5 rot: -1.5707963267948966 rad type: Transform - uid: 648 - type: AirlockMaintEngiLocked + type: AirlockEngineeringLocked components: - - parent: 856 - pos: 29.5,10.5 + - name: Secure Storage + type: MetaData + - parent: 855 + pos: 40.5,10.5 rot: -1.5707963267948966 rad type: Transform - uid: 649 @@ -6447,53 +6445,53 @@ entities: components: - name: Secure Storage type: MetaData - - parent: 856 - pos: 40.5,10.5 + - parent: 855 + pos: 41.5,10.5 rot: -1.5707963267948966 rad type: Transform - uid: 650 - type: AirlockEngineeringLocked + type: AirlockEngineeringGlassLocked components: - - name: Secure Storage + - name: Atmospherics type: MetaData - - parent: 856 - pos: 41.5,10.5 + - parent: 855 + pos: 33.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 651 - type: AirlockEngineeringGlassLocked - components: - - name: Atmospherics - type: MetaData - - parent: 856 - pos: 33.5,7.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 652 type: AirlockEngineeringGlassLocked components: - name: Engineering Equipment type: MetaData - - parent: 856 + - parent: 855 pos: 33.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 653 +- uid: 652 type: AirlockEngineeringLocked components: - name: Gravity Generator type: MetaData - - parent: 856 + - parent: 855 pos: 49.5,-1.5 rot: -1.5707963267948966 rad type: Transform +- uid: 653 + type: AirlockSecurityGlassLocked + components: + - name: Brig + type: MetaData + - parent: 855 + pos: -6.5,9.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 654 type: AirlockSecurityGlassLocked components: - name: Brig type: MetaData - - parent: 856 - pos: -6.5,9.5 + - parent: 855 + pos: -5.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 655 @@ -6501,17 +6499,17 @@ entities: components: - name: Brig type: MetaData - - parent: 856 - pos: -5.5,9.5 + - parent: 855 + pos: -5.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 656 - type: AirlockSecurityGlassLocked + type: AirlockExternalLocked components: - - name: Brig + - name: Arrivals Shuttle Dock type: MetaData - - parent: 856 - pos: -5.5,6.5 + - parent: 855 + pos: -39.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 657 @@ -6519,40 +6517,40 @@ entities: components: - name: Arrivals Shuttle Dock type: MetaData - - parent: 856 - pos: -39.5,-3.5 + - parent: 855 + pos: -37.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 658 type: AirlockExternalLocked components: - - name: Arrivals Shuttle Dock + - name: Escape Shuttle Dock type: MetaData - - parent: 856 - pos: -37.5,-3.5 + - parent: 855 + pos: -41.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 659 - type: AirlockExternalLocked + type: LowWall components: - - name: Escape Shuttle Dock - type: MetaData - - parent: 856 - pos: -41.5,8.5 + - parent: 855 + pos: -36.5,11.5 rot: -1.5707963267948966 rad type: Transform - uid: 660 type: LowWall components: - - parent: 856 - pos: -36.5,11.5 + - parent: 855 + pos: -37.5,11.5 rot: -1.5707963267948966 rad type: Transform - uid: 661 - type: LowWall + type: AirlockExternalLocked components: - - parent: 856 - pos: -37.5,11.5 + - name: Escape Shuttle Dock + type: MetaData + - parent: 855 + pos: -39.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 662 @@ -6560,8 +6558,8 @@ entities: components: - name: Escape Shuttle Dock type: MetaData - - parent: 856 - pos: -39.5,8.5 + - parent: 855 + pos: -39.5,4.5 rot: -1.5707963267948966 rad type: Transform - uid: 663 @@ -6569,23 +6567,14 @@ entities: components: - name: Escape Shuttle Dock type: MetaData - - parent: 856 - pos: -39.5,4.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 664 - type: AirlockExternalLocked - components: - - name: Escape Shuttle Dock - type: MetaData - - parent: 856 + - parent: 855 pos: -41.5,4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 665 +- uid: 664 type: WardrobeWhite components: - - parent: 856 + - parent: 855 pos: 17.5,-22.5 rot: -1.5707963267948966 rad type: Transform @@ -6595,24 +6584,24 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 666 +- uid: 665 type: Table components: - - parent: 856 + - parent: 855 pos: 19.5,-22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 667 +- uid: 666 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -40.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 668 +- uid: 667 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -34.001373,10.342238 rot: 3.141592653589793 rad type: Transform @@ -6622,542 +6611,542 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 669 +- uid: 668 type: LowWall components: - - parent: 856 + - parent: 855 pos: -40.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 670 +- uid: 669 type: Table components: - - parent: 856 + - parent: 855 pos: 19.5,-21.5 rot: -1.5707963267948966 rad type: Transform +- uid: 670 + type: Window + components: + - parent: 855 + pos: 18.5,-18.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 671 type: Window components: - - parent: 856 - pos: 18.5,-18.5 + - parent: 855 + pos: 17.5,-18.5 rot: -1.5707963267948966 rad type: Transform - uid: 672 - type: Window + type: LowWall components: - - parent: 856 - pos: 17.5,-18.5 + - parent: 855 + pos: 18.5,-18.5 rot: -1.5707963267948966 rad type: Transform - uid: 673 type: LowWall components: - - parent: 856 - pos: 18.5,-18.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 674 - type: LowWall - components: - - parent: 856 + - parent: 855 pos: 17.5,-18.5 rot: -1.5707963267948966 rad type: Transform -- uid: 675 +- uid: 674 type: solid_wall components: - - parent: 856 + - parent: 855 pos: 16.5,-19.5 rot: -1.5707963267948966 rad type: Transform -- uid: 676 +- uid: 675 type: LowWall components: - - parent: 856 + - parent: 855 pos: -41.5,9.5 rot: -1.5707963267948966 rad type: Transform +- uid: 676 + type: solid_wall + components: + - parent: 855 + pos: 16.5,-20.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 677 type: solid_wall components: - - parent: 856 - pos: 16.5,-20.5 + - parent: 855 + pos: 16.5,-21.5 rot: -1.5707963267948966 rad type: Transform - uid: 678 type: solid_wall components: - - parent: 856 - pos: 16.5,-21.5 + - parent: 855 + pos: 16.5,-22.5 rot: -1.5707963267948966 rad type: Transform - uid: 679 type: solid_wall components: - - parent: 856 - pos: 16.5,-22.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 680 - type: solid_wall - components: - - parent: 856 + - parent: 855 pos: 16.5,-23.5 rot: -1.5707963267948966 rad type: Transform -- uid: 681 +- uid: 680 type: LowWall components: - - parent: 856 + - parent: 855 pos: -40.5,9.5 rot: -1.5707963267948966 rad type: Transform +- uid: 681 + type: solid_wall + components: + - parent: 855 + pos: 17.5,-23.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 682 type: solid_wall components: - - parent: 856 - pos: 17.5,-23.5 + - parent: 855 + pos: 20.5,-23.5 rot: -1.5707963267948966 rad type: Transform - uid: 683 type: solid_wall components: - - parent: 856 - pos: 20.5,-23.5 + - parent: 855 + pos: 20.5,-22.5 rot: -1.5707963267948966 rad type: Transform - uid: 684 type: solid_wall components: - - parent: 856 - pos: 20.5,-22.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 685 - type: solid_wall - components: - - parent: 856 + - parent: 855 pos: 20.5,-21.5 rot: -1.5707963267948966 rad type: Transform -- uid: 686 +- uid: 685 type: LowWall components: - - parent: 856 + - parent: 855 pos: -39.5,9.5 rot: -1.5707963267948966 rad type: Transform +- uid: 686 + type: solid_wall + components: + - parent: 855 + pos: 20.5,-20.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 687 type: solid_wall components: - - parent: 856 - pos: 20.5,-20.5 + - parent: 855 + pos: 20.5,-19.5 rot: -1.5707963267948966 rad type: Transform - uid: 688 type: solid_wall components: - - parent: 856 - pos: 20.5,-19.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 689 - type: solid_wall - components: - - parent: 856 + - parent: 855 pos: 13.5,-25.5 rot: -1.5707963267948966 rad type: Transform -- uid: 690 +- uid: 689 type: LowWall components: - - parent: 856 + - parent: 855 pos: -39.5,7.5 rot: -1.5707963267948966 rad type: Transform +- uid: 690 + type: solid_wall + components: + - parent: 855 + pos: 13.5,-24.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 691 type: solid_wall components: - - parent: 856 - pos: 13.5,-24.5 + - parent: 855 + pos: 13.5,-23.5 rot: -1.5707963267948966 rad type: Transform - uid: 692 type: solid_wall components: - - parent: 856 - pos: 13.5,-23.5 + - parent: 855 + pos: 13.5,-22.5 rot: -1.5707963267948966 rad type: Transform - uid: 693 type: solid_wall components: - - parent: 856 - pos: 13.5,-22.5 + - parent: 855 + pos: 13.5,-26.5 rot: -1.5707963267948966 rad type: Transform - uid: 694 type: solid_wall components: - - parent: 856 - pos: 13.5,-26.5 + - parent: 855 + pos: 14.5,-26.5 rot: -1.5707963267948966 rad type: Transform - uid: 695 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: 14.5,-26.5 + - parent: 855 + pos: -41.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 696 type: LowWall components: - - parent: 856 - pos: -41.5,7.5 + - parent: 855 + pos: -40.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 697 - type: LowWall + type: solid_wall components: - - parent: 856 - pos: -40.5,7.5 + - parent: 855 + pos: 15.5,-26.5 rot: -1.5707963267948966 rad type: Transform - uid: 698 type: solid_wall components: - - parent: 856 - pos: 15.5,-26.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 699 - type: solid_wall - components: - - parent: 856 + - parent: 855 pos: 16.5,-26.5 rot: -1.5707963267948966 rad type: Transform -- uid: 700 +- uid: 699 type: LowWall components: - - parent: 856 + - parent: 855 pos: -40.5,6.5 rot: -1.5707963267948966 rad type: Transform +- uid: 700 + type: solid_wall + components: + - parent: 855 + pos: 17.5,-26.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 701 type: solid_wall components: - - parent: 856 - pos: 17.5,-26.5 + - parent: 855 + pos: 18.5,-26.5 rot: -1.5707963267948966 rad type: Transform - uid: 702 type: solid_wall components: - - parent: 856 - pos: 18.5,-26.5 + - parent: 855 + pos: 19.5,-26.5 rot: -1.5707963267948966 rad type: Transform - uid: 703 type: solid_wall components: - - parent: 856 - pos: 19.5,-26.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 704 - type: solid_wall - components: - - parent: 856 + - parent: 855 pos: 20.5,-26.5 rot: -1.5707963267948966 rad type: Transform -- uid: 705 +- uid: 704 type: LowWall components: - - parent: 856 + - parent: 855 pos: -41.5,5.5 rot: -1.5707963267948966 rad type: Transform +- uid: 705 + type: solid_wall + components: + - parent: 855 + pos: 21.5,-26.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 706 type: solid_wall components: - - parent: 856 - pos: 21.5,-26.5 + - parent: 855 + pos: 22.5,-26.5 rot: -1.5707963267948966 rad type: Transform - uid: 707 type: solid_wall components: - - parent: 856 - pos: 22.5,-26.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 708 - type: solid_wall - components: - - parent: 856 + - parent: 855 pos: 23.5,-26.5 rot: -1.5707963267948966 rad type: Transform -- uid: 709 +- uid: 708 type: LowWall components: - - parent: 856 + - parent: 855 pos: -40.5,5.5 rot: -1.5707963267948966 rad type: Transform +- uid: 709 + type: solid_wall + components: + - parent: 855 + pos: 23.5,-25.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 710 type: solid_wall components: - - parent: 856 - pos: 23.5,-25.5 + - parent: 855 + pos: 23.5,-24.5 rot: -1.5707963267948966 rad type: Transform - uid: 711 type: solid_wall components: - - parent: 856 - pos: 23.5,-24.5 + - parent: 855 + pos: 23.5,-23.5 rot: -1.5707963267948966 rad type: Transform - uid: 712 type: solid_wall components: - - parent: 856 - pos: 23.5,-23.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 713 - type: solid_wall - components: - - parent: 856 + - parent: 855 pos: 23.5,-22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 714 +- uid: 713 type: LowWall components: - - parent: 856 + - parent: 855 pos: -39.5,5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 715 +- uid: 714 type: solid_wall components: - - parent: 856 + - parent: 855 pos: 45.5,9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 716 +- uid: 715 type: SpawnPointStationEngineer components: - - parent: 856 + - parent: 855 pos: 30.5,-2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 717 +- uid: 716 type: LowWall components: - - parent: 856 + - parent: 855 pos: -39.5,3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 718 +- uid: 717 type: SpawnPointChiefEngineer components: - - parent: 856 + - parent: 855 pos: 40.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 719 +- uid: 718 type: SpawnPointHeadOfPersonnel components: - - parent: 856 + - parent: 855 pos: 7.5,20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 720 +- uid: 719 type: SpawnPointCaptain components: - - parent: 856 + - parent: 855 pos: 9.5,25.5 rot: -1.5707963267948966 rad type: Transform -- uid: 721 +- uid: 720 type: LowWall components: - - parent: 856 + - parent: 855 pos: -41.5,3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 722 +- uid: 721 type: SpawnPointHeadOfSecurity components: - - parent: 856 + - parent: 855 pos: -6.5,20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 723 +- uid: 722 type: SpawnPointJanitor components: - - parent: 856 + - parent: 855 pos: -20.5,9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 724 +- uid: 723 type: SpawnPointClown components: - - parent: 856 + - parent: 855 pos: -18.5,-8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 725 +- uid: 724 type: SpawnPointBartender components: - - parent: 856 + - parent: 855 pos: -5.5,-5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 726 +- uid: 725 type: LowWall components: - - parent: 856 + - parent: 855 pos: -40.5,3.5 rot: -1.5707963267948966 rad type: Transform +- uid: 726 + type: SpawnPointScientist + components: + - parent: 855 + pos: -15.5,-19.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 727 type: SpawnPointScientist components: - - parent: 856 - pos: -15.5,-19.5 + - parent: 855 + pos: -4.5,-15.5 rot: -1.5707963267948966 rad type: Transform - uid: 728 type: SpawnPointScientist components: - - parent: 856 - pos: -4.5,-15.5 + - parent: 855 + pos: -0.5,-14.5 rot: -1.5707963267948966 rad type: Transform - uid: 729 type: SpawnPointScientist components: - - parent: 856 - pos: -0.5,-14.5 + - parent: 855 + pos: -8.5,-18.5 rot: -1.5707963267948966 rad type: Transform - uid: 730 type: SpawnPointScientist components: - - parent: 856 - pos: -8.5,-18.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 731 - type: SpawnPointScientist - components: - - parent: 856 + - parent: 855 pos: -9.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 732 +- uid: 731 type: SpawnPointResearchDirector components: - - parent: 856 + - parent: 855 pos: -5.5,-23.5 rot: -1.5707963267948966 rad type: Transform -- uid: 733 +- uid: 732 type: LowWall components: - - parent: 856 + - parent: 855 pos: -40.5,2.5 rot: -1.5707963267948966 rad type: Transform +- uid: 733 + type: solid_wall + components: + - parent: 855 + pos: 14.5,-12.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 734 type: SpawnPointMedicalDoctor components: - - parent: 856 - pos: 15.5,-15.5 + - parent: 855 + pos: 11.5,-9.5 rot: -1.5707963267948966 rad type: Transform - uid: 735 type: SpawnPointMedicalDoctor components: - - parent: 856 - pos: 11.5,-9.5 + - parent: 855 + pos: 16.5,-9.5 rot: -1.5707963267948966 rad type: Transform - uid: 736 type: SpawnPointMedicalDoctor components: - - parent: 856 - pos: 16.5,-9.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 737 - type: SpawnPointMedicalDoctor - components: - - parent: 856 + - parent: 855 pos: 22.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 738 +- uid: 737 type: LowWall components: - - parent: 856 + - parent: 855 pos: -40.5,1.5 rot: -1.5707963267948966 rad type: Transform +- uid: 738 + type: SpawnPointMedicalDoctor + components: + - parent: 855 + pos: 14.5,0.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 739 type: SpawnPointMedicalDoctor components: - - parent: 856 - pos: 14.5,0.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 740 - type: SpawnPointMedicalDoctor - components: - - parent: 856 + - parent: 855 pos: 6.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 741 +- uid: 740 type: SpawnPointChiefMedicalOfficer components: - - parent: 856 + - parent: 855 pos: 24.5,-14.5 rot: -1.5707963267948966 rad type: Transform +- uid: 741 + type: SpawnPointCargoTechnician + components: + - parent: 855 + pos: 21.5,11.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 742 type: SpawnPointCargoTechnician components: - - parent: 856 - pos: 21.5,11.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 743 - type: SpawnPointCargoTechnician - components: - - parent: 856 + - parent: 855 pos: 14.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 744 +- uid: 743 type: LowWall components: - - parent: 856 + - parent: 855 pos: -39.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 745 +- uid: 744 type: PottedPlantRandomPlastic components: - - parent: 856 + - parent: 855 pos: -12.5,7.5 rot: -1.5707963267948966 rad type: Transform @@ -7165,17 +7154,17 @@ entities: potted_plant_hide: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 746 +- uid: 745 type: ReinforcedWindow components: - - parent: 856 + - parent: 855 pos: -37.5,-2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 747 +- uid: 746 type: PottedPlantRandom components: - - parent: 856 + - parent: 855 pos: 21.5,-12.5 rot: -1.5707963267948966 rad type: Transform @@ -7183,10 +7172,10 @@ entities: potted_plant_hide: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 748 +- uid: 747 type: PottedPlantRandomPlastic components: - - parent: 856 + - parent: 855 pos: 29.5,-3.5 rot: -1.5707963267948966 rad type: Transform @@ -7194,10 +7183,10 @@ entities: potted_plant_hide: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 749 +- uid: 748 type: PottedPlantRandom components: - - parent: 856 + - parent: 855 pos: 12.5,1.5 rot: -1.5707963267948966 rad type: Transform @@ -7205,59 +7194,59 @@ entities: potted_plant_hide: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer +- uid: 749 + type: LowWall + components: + - parent: 855 + pos: -38.5,0.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 750 type: LowWall components: - - parent: 856 - pos: -38.5,0.5 + - parent: 855 + pos: -38.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 751 type: LowWall components: - - parent: 856 - pos: -38.5,-0.5 + - parent: 855 + pos: -38.5,-1.5 rot: -1.5707963267948966 rad type: Transform - uid: 752 type: LowWall components: - - parent: 856 - pos: -38.5,-1.5 + - parent: 855 + pos: -37.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 753 type: LowWall components: - - parent: 856 - pos: -37.5,-2.5 + - parent: 855 + pos: -38.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 754 type: LowWall components: - - parent: 856 - pos: -38.5,-2.5 + - parent: 855 + pos: -39.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 755 type: LowWall components: - - parent: 856 - pos: -39.5,-2.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 756 - type: LowWall - components: - - parent: 856 + - parent: 855 pos: -37.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 757 +- uid: 756 type: PottedPlantRandom components: - - parent: 856 + - parent: 855 pos: 5.5,21.5 rot: -1.5707963267948966 rad type: Transform @@ -7265,38 +7254,38 @@ entities: potted_plant_hide: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 758 +- uid: 757 type: LowWall components: - - parent: 856 + - parent: 855 pos: -39.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 759 +- uid: 758 type: reinforced_wall components: - - parent: 856 + - parent: 855 pos: 11.5,25.5 rot: -1.5707963267948966 rad type: Transform +- uid: 759 + type: Table + components: + - parent: 855 + pos: -5.5,-3.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 760 type: Table components: - - parent: 856 - pos: -5.5,-3.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 761 - type: Table - components: - - parent: 856 + - parent: 855 pos: -6.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 762 +- uid: 761 type: PottedPlantRandom components: - - parent: 856 + - parent: 855 pos: 1.5,-21.5 rot: -1.5707963267948966 rad type: Transform @@ -7304,10 +7293,10 @@ entities: potted_plant_hide: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 763 +- uid: 762 type: LockerEmergencyFilledRandom components: - - parent: 856 + - parent: 855 pos: 5.5,-21.5 rot: -1.5707963267948966 rad type: Transform @@ -7317,10 +7306,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 764 +- uid: 763 type: PottedPlantRandom components: - - parent: 856 + - parent: 855 pos: -24.5,11.5 rot: -1.5707963267948966 rad type: Transform @@ -7328,10 +7317,10 @@ entities: potted_plant_hide: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 765 +- uid: 764 type: LockerEmergencyFilledRandom components: - - parent: 856 + - parent: 855 pos: -23.5,11.5 rot: -1.5707963267948966 rad type: Transform @@ -7341,10 +7330,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 766 +- uid: 765 type: LockerEmergencyFilledRandom components: - - parent: 856 + - parent: 855 pos: 24.5,13.5 rot: -1.5707963267948966 rad type: Transform @@ -7354,10 +7343,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 767 +- uid: 766 type: PottedPlantRandom components: - - parent: 856 + - parent: 855 pos: 10.5,16.5 rot: -1.5707963267948966 rad type: Transform @@ -7365,10 +7354,10 @@ entities: potted_plant_hide: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 768 +- uid: 767 type: PottedPlantRandom components: - - parent: 856 + - parent: 855 pos: 7.5,23.5 rot: -1.5707963267948966 rad type: Transform @@ -7376,11 +7365,24 @@ entities: potted_plant_hide: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer +- uid: 768 + type: LockerEmergencyFilledRandom + components: + - parent: 855 + pos: -2.5,30.5 + rot: -1.5707963267948966 rad + type: Transform + - IsPlaceable: False + type: PlaceableSurface + - containers: + EntityStorageComponent: + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer - uid: 769 type: LockerEmergencyFilledRandom components: - - parent: 856 - pos: -2.5,30.5 + - parent: 855 + pos: 9.5,30.5 rot: -1.5707963267948966 rad type: Transform - IsPlaceable: False @@ -7392,20 +7394,7 @@ entities: - uid: 770 type: LockerEmergencyFilledRandom components: - - parent: 856 - pos: 9.5,30.5 - rot: -1.5707963267948966 rad - type: Transform - - IsPlaceable: False - type: PlaceableSurface - - containers: - EntityStorageComponent: - type: Robust.Server.GameObjects.Components.Container.Container - type: ContainerContainer -- uid: 771 - type: LockerEmergencyFilledRandom - components: - - parent: 856 + - parent: 855 pos: -0.5,14.5 rot: -1.5707963267948966 rad type: Transform @@ -7415,10 +7404,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 772 +- uid: 771 type: PottedPlantRD components: - - parent: 856 + - parent: 855 pos: -2.5,-22.5 rot: -1.5707963267948966 rad type: Transform @@ -7426,10 +7415,10 @@ entities: potted_plant_hide: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 773 +- uid: 772 type: LockerEmergencyFilledRandom components: - - parent: 856 + - parent: 855 pos: -21.5,-8.5 rot: -1.5707963267948966 rad type: Transform @@ -7439,10 +7428,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 774 +- uid: 773 type: PottedPlantRandom components: - - parent: 856 + - parent: 855 pos: -25.5,-8.5 rot: -1.5707963267948966 rad type: Transform @@ -7450,10 +7439,10 @@ entities: potted_plant_hide: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 775 +- uid: 774 type: PottedPlantRandom components: - - parent: 856 + - parent: 855 pos: -39.5,10.5 rot: -1.5707963267948966 rad type: Transform @@ -7461,10 +7450,10 @@ entities: potted_plant_hide: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 776 +- uid: 775 type: LockerFireFilled components: - - parent: 856 + - parent: 855 pos: -37.5,-6.5 rot: -1.5707963267948966 rad type: Transform @@ -7474,10 +7463,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 777 +- uid: 776 type: LockerFireFilled components: - - parent: 856 + - parent: 855 pos: -11.5,-11.5 rot: -1.5707963267948966 rad type: Transform @@ -7487,23 +7476,23 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer +- uid: 777 + type: LockerBombFilled + components: + - parent: 855 + pos: -17.5,-17.5 + rot: -1.5707963267948966 rad + type: Transform + - IsPlaceable: False + type: PlaceableSurface + - containers: + EntityStorageComponent: + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer - uid: 778 type: LockerBombFilled components: - - parent: 856 - pos: -17.5,-17.5 - rot: -1.5707963267948966 rad - type: Transform - - IsPlaceable: False - type: PlaceableSurface - - containers: - EntityStorageComponent: - type: Robust.Server.GameObjects.Components.Container.Container - type: ContainerContainer -- uid: 779 - type: LockerBombFilled - components: - - parent: 856 + - parent: 855 pos: -12.5,21.5 rot: -1.5707963267948966 rad type: Transform @@ -7513,10 +7502,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 780 +- uid: 779 type: LockerFireFilled components: - - parent: 856 + - parent: 855 pos: 13.5,21.5 rot: -1.5707963267948966 rad type: Transform @@ -7526,10 +7515,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 781 +- uid: 780 type: LockerEmergencyFilledRandom components: - - parent: 856 + - parent: 855 pos: 12.5,21.5 rot: -1.5707963267948966 rad type: Transform @@ -7539,10 +7528,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 782 +- uid: 781 type: LockerFireFilled components: - - parent: 856 + - parent: 855 pos: 28.5,12.5 rot: -1.5707963267948966 rad type: Transform @@ -7552,10 +7541,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 783 +- uid: 782 type: LockerEmergencyFilledRandom components: - - parent: 856 + - parent: 855 pos: 43.5,9.5 rot: -1.5707963267948966 rad type: Transform @@ -7565,23 +7554,23 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer +- uid: 783 + type: LockerFireFilled + components: + - parent: 855 + pos: 44.5,9.5 + rot: -1.5707963267948966 rad + type: Transform + - IsPlaceable: False + type: PlaceableSurface + - containers: + EntityStorageComponent: + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer - uid: 784 type: LockerFireFilled components: - - parent: 856 - pos: 44.5,9.5 - rot: -1.5707963267948966 rad - type: Transform - - IsPlaceable: False - type: PlaceableSurface - - containers: - EntityStorageComponent: - type: Robust.Server.GameObjects.Components.Container.Container - type: ContainerContainer -- uid: 785 - type: LockerFireFilled - components: - - parent: 856 + - parent: 855 pos: 23.5,0.5 rot: -1.5707963267948966 rad type: Transform @@ -7591,10 +7580,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 786 +- uid: 785 type: LockerEmergencyFilledRandom components: - - parent: 856 + - parent: 855 pos: 8.5,-18.5 rot: -1.5707963267948966 rad type: Transform @@ -7604,10 +7593,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 787 +- uid: 786 type: LockerFireFilled components: - - parent: 856 + - parent: 855 pos: 9.5,-18.5 rot: -1.5707963267948966 rad type: Transform @@ -7617,11 +7606,24 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer +- uid: 787 + type: LockerEmergencyFilledRandom + components: + - parent: 855 + pos: -15.5,-17.5 + rot: -1.5707963267948966 rad + type: Transform + - IsPlaceable: False + type: PlaceableSurface + - containers: + EntityStorageComponent: + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer - uid: 788 type: LockerEmergencyFilledRandom components: - - parent: 856 - pos: -15.5,-17.5 + - parent: 855 + pos: -7.5,-25.5 rot: -1.5707963267948966 rad type: Transform - IsPlaceable: False @@ -7633,8 +7635,8 @@ entities: - uid: 789 type: LockerEmergencyFilledRandom components: - - parent: 856 - pos: -7.5,-25.5 + - parent: 855 + pos: 26.5,12.5 rot: -1.5707963267948966 rad type: Transform - IsPlaceable: False @@ -7646,20 +7648,7 @@ entities: - uid: 790 type: LockerEmergencyFilledRandom components: - - parent: 856 - pos: 26.5,12.5 - rot: -1.5707963267948966 rad - type: Transform - - IsPlaceable: False - type: PlaceableSurface - - containers: - EntityStorageComponent: - type: Robust.Server.GameObjects.Components.Container.Container - type: ContainerContainer -- uid: 791 - type: LockerEmergencyFilledRandom - components: - - parent: 856 + - parent: 855 pos: 23.5,1.5 rot: -1.5707963267948966 rad type: Transform @@ -7669,10 +7658,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 792 +- uid: 791 type: LockerFireFilled components: - - parent: 856 + - parent: 855 pos: -14.5,-17.5 rot: -1.5707963267948966 rad type: Transform @@ -7682,11 +7671,24 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer +- uid: 792 + type: LockerEmergencyFilledRandom + components: + - parent: 855 + pos: -11.5,-10.5 + rot: -1.5707963267948966 rad + type: Transform + - IsPlaceable: False + type: PlaceableSurface + - containers: + EntityStorageComponent: + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer - uid: 793 type: LockerEmergencyFilledRandom components: - - parent: 856 - pos: -11.5,-10.5 + - parent: 855 + pos: -37.5,-7.5 rot: -1.5707963267948966 rad type: Transform - IsPlaceable: False @@ -7698,8 +7700,8 @@ entities: - uid: 794 type: LockerEmergencyFilledRandom components: - - parent: 856 - pos: -37.5,-7.5 + - parent: 855 + pos: -39.5,2.5 rot: -1.5707963267948966 rad type: Transform - IsPlaceable: False @@ -7711,20 +7713,7 @@ entities: - uid: 795 type: LockerEmergencyFilledRandom components: - - parent: 856 - pos: -39.5,2.5 - rot: -1.5707963267948966 rad - type: Transform - - IsPlaceable: False - type: PlaceableSurface - - containers: - EntityStorageComponent: - type: Robust.Server.GameObjects.Components.Container.Container - type: ContainerContainer -- uid: 796 - type: LockerEmergencyFilledRandom - components: - - parent: 856 + - parent: 855 pos: -34.5,10.5 rot: -1.5707963267948966 rad type: Transform @@ -7734,10 +7723,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 797 +- uid: 796 type: LockerCaptainFilled components: - - parent: 856 + - parent: 855 pos: 6.5,26.5 rot: -1.5707963267948966 rad type: Transform @@ -7747,10 +7736,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 798 +- uid: 797 type: WardrobeCargoFilled components: - - parent: 856 + - parent: 855 pos: 23.5,7.5 rot: -1.5707963267948966 rad type: Transform @@ -7760,10 +7749,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 799 +- uid: 798 type: PottedPlantRandom components: - - parent: 856 + - parent: 855 pos: 0.5,26.5 rot: -1.5707963267948966 rad type: Transform @@ -7771,10 +7760,10 @@ entities: potted_plant_hide: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 800 +- uid: 799 type: WardrobePrisonFilled components: - - parent: 856 + - parent: 855 pos: 0.5,14.5 rot: -1.5707963267948966 rad type: Transform @@ -7784,10 +7773,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 801 +- uid: 800 type: LockerL3JanitorFilled components: - - parent: 856 + - parent: 855 pos: -19.5,9.5 rot: -1.5707963267948966 rad type: Transform @@ -7797,10 +7786,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 802 +- uid: 801 type: LockerJanitorFilled components: - - parent: 856 + - parent: 855 pos: -19.5,10.5 rot: -1.5707963267948966 rad type: Transform @@ -7810,10 +7799,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 803 +- uid: 802 type: LockerChefFilled components: - - parent: 856 + - parent: 855 pos: -14.5,1.5 rot: -1.5707963267948966 rad type: Transform @@ -7823,11 +7812,11 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 804 +- uid: 803 type: WardrobeWhiteFilled components: - - parent: 856 - pos: 7.5,-16.5 + - parent: 855 + pos: 7.5,-15.5 rot: -1.5707963267948966 rad type: Transform - IsPlaceable: False @@ -7836,10 +7825,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 805 +- uid: 804 type: LockerMedicineFilled components: - - parent: 856 + - parent: 855 pos: 18.5,-2.5 rot: -1.5707963267948966 rad type: Transform @@ -7849,10 +7838,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 806 +- uid: 805 type: LockerL3VirologyFilled components: - - parent: 856 + - parent: 855 pos: 24.5,-7.5 rot: -1.5707963267948966 rad type: Transform @@ -7862,11 +7851,24 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer +- uid: 806 + type: LockerSecurityFilled + components: + - parent: 855 + pos: -12.5,13.5 + rot: -1.5707963267948966 rad + type: Transform + - IsPlaceable: False + type: PlaceableSurface + - containers: + EntityStorageComponent: + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer - uid: 807 type: LockerSecurityFilled components: - - parent: 856 - pos: -12.5,13.5 + - parent: 855 + pos: -13.5,13.5 rot: -1.5707963267948966 rad type: Transform - IsPlaceable: False @@ -7878,20 +7880,7 @@ entities: - uid: 808 type: LockerSecurityFilled components: - - parent: 856 - pos: -13.5,13.5 - rot: -1.5707963267948966 rad - type: Transform - - IsPlaceable: False - type: PlaceableSurface - - containers: - EntityStorageComponent: - type: Robust.Server.GameObjects.Components.Container.Container - type: ContainerContainer -- uid: 809 - type: LockerSecurityFilled - components: - - parent: 856 + - parent: 855 pos: -14.5,13.5 rot: -1.5707963267948966 rad type: Transform @@ -7901,10 +7890,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 810 +- uid: 809 type: WardrobeMedicalDoctorFilled components: - - parent: 856 + - parent: 855 pos: 23.5,-7.5 rot: -1.5707963267948966 rad type: Transform @@ -7914,10 +7903,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 811 +- uid: 810 type: LockerL3SecurityFilled components: - - parent: 856 + - parent: 855 pos: -11.5,21.5 rot: -1.5707963267948966 rad type: Transform @@ -7927,10 +7916,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 812 +- uid: 811 type: LockerChiefMedicalOfficerFilled components: - - parent: 856 + - parent: 855 pos: 21.5,-15.5 rot: -1.5707963267948966 rad type: Transform @@ -7940,17 +7929,17 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 813 +- uid: 812 type: TableGlass components: - - parent: 856 + - parent: 855 pos: -2.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 814 +- uid: 813 type: LockerHeadOfPersonnelFilled components: - - parent: 856 + - parent: 855 pos: 10.5,21.5 rot: -1.5707963267948966 rad type: Transform @@ -7960,17 +7949,17 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 815 +- uid: 814 type: LowWall components: - - parent: 856 + - parent: 855 pos: -38.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 816 +- uid: 815 type: WardrobeEngineeringFilled components: - - parent: 856 + - parent: 855 pos: 32.5,-4.5 rot: -1.5707963267948966 rad type: Transform @@ -7980,10 +7969,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 817 +- uid: 816 type: WardrobeAtmosphericsFilled components: - - parent: 856 + - parent: 855 pos: 36.5,10.5 rot: -1.5707963267948966 rad type: Transform @@ -7993,23 +7982,23 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer +- uid: 817 + type: LockerAtmosphericsFilled + components: + - parent: 855 + pos: 36.5,9.5 + rot: -1.5707963267948966 rad + type: Transform + - IsPlaceable: False + type: PlaceableSurface + - containers: + EntityStorageComponent: + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer - uid: 818 type: LockerAtmosphericsFilled components: - - parent: 856 - pos: 36.5,9.5 - rot: -1.5707963267948966 rad - type: Transform - - IsPlaceable: False - type: PlaceableSurface - - containers: - EntityStorageComponent: - type: Robust.Server.GameObjects.Components.Container.Container - type: ContainerContainer -- uid: 819 - type: LockerAtmosphericsFilled - components: - - parent: 856 + - parent: 855 pos: 36.5,8.5 rot: -1.5707963267948966 rad type: Transform @@ -8019,10 +8008,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 820 +- uid: 819 type: LockerChiefEngineerFilled components: - - parent: 856 + - parent: 855 pos: 37.5,-1.5 rot: -1.5707963267948966 rad type: Transform @@ -8032,23 +8021,23 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer +- uid: 820 + type: LockerEngineerFilled + components: + - parent: 855 + pos: 35.5,-1.5 + rot: -1.5707963267948966 rad + type: Transform + - IsPlaceable: False + type: PlaceableSurface + - containers: + EntityStorageComponent: + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer - uid: 821 type: LockerEngineerFilled components: - - parent: 856 - pos: 35.5,-1.5 - rot: -1.5707963267948966 rad - type: Transform - - IsPlaceable: False - type: PlaceableSurface - - containers: - EntityStorageComponent: - type: Robust.Server.GameObjects.Components.Container.Container - type: ContainerContainer -- uid: 822 - type: LockerEngineerFilled - components: - - parent: 856 + - parent: 855 pos: 35.5,-2.5 rot: -1.5707963267948966 rad type: Transform @@ -8058,10 +8047,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 823 +- uid: 822 type: LockerResearchDirectorFilled components: - - parent: 856 + - parent: 855 pos: -2.5,-24.5 rot: -1.5707963267948966 rad type: Transform @@ -8071,10 +8060,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 824 +- uid: 823 type: WardrobeScienceFilled components: - - parent: 856 + - parent: 855 pos: -11.5,-17.5 rot: -1.5707963267948966 rad type: Transform @@ -8084,10 +8073,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 825 +- uid: 824 type: LockerL3JanitorFilled components: - - parent: 856 + - parent: 855 pos: -13.5,-17.5 rot: -1.5707963267948966 rad type: Transform @@ -8097,10 +8086,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 826 +- uid: 825 type: LockerGeneric components: - - parent: 856 + - parent: 855 pos: -11.5,-12.5 rot: -1.5707963267948966 rad type: Transform @@ -8110,17 +8099,17 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 827 +- uid: 826 type: TableGlass components: - - parent: 856 + - parent: 855 pos: -1.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 828 +- uid: 827 type: soda_dispenser components: - - parent: 856 + - parent: 855 pos: -4.5,-6.5 rot: -1.5707963267948966 rad type: Transform @@ -8128,94 +8117,94 @@ entities: ReagentDispenser-reagentContainerContainer: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer +- uid: 828 + type: Catwalk + components: + - parent: 855 + pos: 47.5,-4.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 829 type: Catwalk components: - - parent: 856 - pos: 47.5,-4.5 + - parent: 855 + pos: 47.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 830 type: Catwalk components: - - parent: 856 - pos: 47.5,-5.5 + - parent: 855 + pos: 47.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 831 type: Catwalk components: - - parent: 856 - pos: 47.5,-6.5 + - parent: 855 + pos: 48.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 832 type: Catwalk components: - - parent: 856 - pos: 48.5,-6.5 + - parent: 855 + pos: 49.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 833 type: Catwalk components: - - parent: 856 - pos: 49.5,-6.5 + - parent: 855 + pos: 50.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 834 type: Catwalk components: - - parent: 856 - pos: 50.5,-6.5 + - parent: 855 + pos: 51.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 835 type: Catwalk components: - - parent: 856 - pos: 51.5,-6.5 + - parent: 855 + pos: 51.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 836 type: Catwalk components: - - parent: 856 - pos: 51.5,-5.5 + - parent: 855 + pos: 51.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 837 type: Catwalk components: - - parent: 856 - pos: 51.5,-4.5 + - parent: 855 + pos: 51.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 838 type: Catwalk components: - - parent: 856 - pos: 51.5,-3.5 + - parent: 855 + pos: 51.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 839 type: Catwalk components: - - parent: 856 - pos: 51.5,-2.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 840 - type: Catwalk - components: - - parent: 856 + - parent: 855 pos: 50.5,-2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 841 +- uid: 840 type: DisposalTrunk components: - - parent: 856 + - parent: 855 pos: -29.5,11.5 rot: -1.5707963267948966 rad type: Transform @@ -8225,12 +8214,25 @@ entities: DisposalEntry: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer +- uid: 841 + type: DisposalBend + components: + - parent: 855 + pos: -29.5,10.5 + rot: 1.5707963267948966 rad + type: Transform + - deadThreshold: 100 + type: Breakable + - containers: + DisposalBend: + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer - uid: 842 type: DisposalBend components: - - parent: 856 - pos: -29.5,10.5 - rot: 1.5707963267948966 rad + - parent: 855 + pos: -28.5,10.5 + rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Breakable @@ -8241,20 +8243,7 @@ entities: - uid: 843 type: DisposalBend components: - - parent: 856 - pos: -28.5,10.5 - rot: -1.5707963267948966 rad - type: Transform - - deadThreshold: 100 - type: Breakable - - containers: - DisposalBend: - type: Robust.Server.GameObjects.Components.Container.Container - type: ContainerContainer -- uid: 844 - type: DisposalBend - components: - - parent: 856 + - parent: 855 pos: -8.5,-14.5 type: Transform - deadThreshold: 100 @@ -8263,10 +8252,10 @@ entities: DisposalBend: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 845 +- uid: 844 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -7.5,-14.5 rot: 3.141592653589793 rad type: Transform @@ -8276,10 +8265,10 @@ entities: DisposalTransit: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 846 +- uid: 845 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: -6.5,-14.5 rot: 3.141592653589793 rad type: Transform @@ -8289,10 +8278,10 @@ entities: DisposalTransit: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 847 +- uid: 846 type: DisposalTrunk components: - - parent: 856 + - parent: 855 pos: -5.5,-14.5 rot: 3.141592653589793 rad type: Transform @@ -8302,10 +8291,10 @@ entities: DisposalEntry: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 848 +- uid: 847 type: DisposalUnit components: - - parent: 856 + - parent: 855 pos: -5.5,-14.5 rot: -1.5707963267948966 rad type: Transform @@ -8317,12 +8306,24 @@ entities: DisposalUnit: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer +- uid: 848 + type: DisposalPipe + components: + - parent: 855 + pos: -9.5,-15.5 + rot: 3.141592653589793 rad + type: Transform + - deadThreshold: 100 + type: Breakable + - containers: + DisposalTransit: + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer - uid: 849 type: DisposalPipe components: - - parent: 856 - pos: -9.5,-15.5 - rot: 3.141592653589793 rad + - parent: 855 + pos: -15.5,-15.5 type: Transform - deadThreshold: 100 type: Breakable @@ -8333,8 +8334,8 @@ entities: - uid: 850 type: DisposalPipe components: - - parent: 856 - pos: -15.5,-15.5 + - parent: 855 + pos: -13.5,-15.5 type: Transform - deadThreshold: 100 type: Breakable @@ -8345,8 +8346,8 @@ entities: - uid: 851 type: DisposalPipe components: - - parent: 856 - pos: -13.5,-15.5 + - parent: 855 + pos: -14.5,-15.5 type: Transform - deadThreshold: 100 type: Breakable @@ -8357,8 +8358,8 @@ entities: - uid: 852 type: DisposalPipe components: - - parent: 856 - pos: -14.5,-15.5 + - parent: 855 + pos: -12.5,-15.5 type: Transform - deadThreshold: 100 type: Breakable @@ -8369,8 +8370,8 @@ entities: - uid: 853 type: DisposalPipe components: - - parent: 856 - pos: -12.5,-15.5 + - parent: 855 + pos: -11.5,-15.5 type: Transform - deadThreshold: 100 type: Breakable @@ -8381,19 +8382,7 @@ entities: - uid: 854 type: DisposalPipe components: - - parent: 856 - pos: -11.5,-15.5 - type: Transform - - deadThreshold: 100 - type: Breakable - - containers: - DisposalTransit: - type: Robust.Server.GameObjects.Components.Container.Container - type: ContainerContainer -- uid: 855 - type: DisposalPipe - components: - - parent: 856 + - parent: 855 pos: -10.5,-16.5 rot: 1.5707963267948966 rad type: Transform @@ -8403,7 +8392,7 @@ entities: DisposalTransit: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 856 +- uid: 855 components: - name: Saltern Station type: MetaData @@ -19306,31 +19295,31 @@ entities: Y: 25 : 0 type: GridAtmosphere +- uid: 856 + type: Catwalk + components: + - parent: 855 + pos: 49.5,-2.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 857 type: Catwalk components: - - parent: 856 - pos: 49.5,-2.5 + - parent: 855 + pos: 48.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 858 type: Catwalk components: - - parent: 856 - pos: 48.5,-2.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 859 - type: Catwalk - components: - - parent: 856 + - parent: 855 pos: 47.5,-2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 860 +- uid: 859 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 52,-4.5 rot: 3.141592653589793 rad type: Transform @@ -19342,10 +19331,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 861 +- uid: 860 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 47,-4.5 type: Transform - color: '#FFFFFFFF' @@ -19356,241 +19345,241 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 862 +- uid: 861 type: LowWall components: - - parent: 856 + - parent: 855 pos: -38.5,-5.5 rot: -1.5707963267948966 rad type: Transform +- uid: 862 + type: reinforced_wall + components: + - parent: 855 + pos: 50.5,-1.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 863 type: reinforced_wall components: - - parent: 856 - pos: 50.5,-1.5 + - parent: 855 + pos: 48.5,-1.5 rot: -1.5707963267948966 rad type: Transform - uid: 864 - type: reinforced_wall + type: solid_wall components: - - parent: 856 - pos: 48.5,-1.5 + - parent: 855 + pos: 51.5,5.5 rot: -1.5707963267948966 rad type: Transform - uid: 865 type: solid_wall components: - - parent: 856 - pos: 51.5,5.5 + - parent: 855 + pos: 50.5,5.5 rot: -1.5707963267948966 rad type: Transform - uid: 866 type: solid_wall components: - - parent: 856 - pos: 50.5,5.5 + - parent: 855 + pos: 47.5,0.5 rot: -1.5707963267948966 rad type: Transform - uid: 867 type: solid_wall components: - - parent: 856 - pos: 47.5,0.5 + - parent: 855 + pos: 47.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 868 type: solid_wall components: - - parent: 856 - pos: 47.5,-0.5 + - parent: 855 + pos: 46.5,0.5 rot: -1.5707963267948966 rad type: Transform - uid: 869 type: solid_wall components: - - parent: 856 - pos: 46.5,0.5 + - parent: 855 + pos: 49.5,5.5 rot: -1.5707963267948966 rad type: Transform - uid: 870 type: solid_wall components: - - parent: 856 - pos: 49.5,5.5 + - parent: 855 + pos: 51.5,4.5 rot: -1.5707963267948966 rad type: Transform - uid: 871 - type: solid_wall + type: reinforced_wall components: - - parent: 856 - pos: 51.5,4.5 + - parent: 855 + pos: 47.5,-1.5 rot: -1.5707963267948966 rad type: Transform - uid: 872 type: reinforced_wall components: - - parent: 856 - pos: 47.5,-1.5 + - parent: 855 + pos: 51.5,-1.5 rot: -1.5707963267948966 rad type: Transform - uid: 873 type: reinforced_wall components: - - parent: 856 - pos: 51.5,-1.5 + - parent: 855 + pos: 52.5,-1.5 rot: -1.5707963267948966 rad type: Transform - uid: 874 type: reinforced_wall components: - - parent: 856 - pos: 52.5,-1.5 + - parent: 855 + pos: 52.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 875 type: reinforced_wall components: - - parent: 856 - pos: 52.5,-2.5 + - parent: 855 + pos: 52.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 876 type: reinforced_wall components: - - parent: 856 - pos: 52.5,-3.5 + - parent: 855 + pos: 52.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 877 type: reinforced_wall components: - - parent: 856 - pos: 52.5,-4.5 + - parent: 855 + pos: 52.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 878 type: reinforced_wall components: - - parent: 856 - pos: 52.5,-5.5 + - parent: 855 + pos: 52.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 879 type: reinforced_wall components: - - parent: 856 - pos: 52.5,-6.5 + - parent: 855 + pos: 52.5,-7.5 rot: -1.5707963267948966 rad type: Transform - uid: 880 type: reinforced_wall components: - - parent: 856 - pos: 52.5,-7.5 + - parent: 855 + pos: 51.5,-7.5 rot: -1.5707963267948966 rad type: Transform - uid: 881 type: reinforced_wall components: - - parent: 856 - pos: 51.5,-7.5 + - parent: 855 + pos: 50.5,-7.5 rot: -1.5707963267948966 rad type: Transform - uid: 882 type: reinforced_wall components: - - parent: 856 - pos: 50.5,-7.5 + - parent: 855 + pos: 49.5,-7.5 rot: -1.5707963267948966 rad type: Transform - uid: 883 type: reinforced_wall components: - - parent: 856 - pos: 49.5,-7.5 + - parent: 855 + pos: 48.5,-7.5 rot: -1.5707963267948966 rad type: Transform - uid: 884 type: reinforced_wall components: - - parent: 856 - pos: 48.5,-7.5 + - parent: 855 + pos: 47.5,-7.5 rot: -1.5707963267948966 rad type: Transform - uid: 885 type: reinforced_wall components: - - parent: 856 - pos: 47.5,-7.5 + - parent: 855 + pos: 46.5,-7.5 rot: -1.5707963267948966 rad type: Transform - uid: 886 type: reinforced_wall components: - - parent: 856 - pos: 46.5,-7.5 + - parent: 855 + pos: 46.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 887 type: reinforced_wall components: - - parent: 856 - pos: 46.5,-6.5 + - parent: 855 + pos: 46.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 888 type: reinforced_wall components: - - parent: 856 - pos: 46.5,-5.5 + - parent: 855 + pos: 46.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 889 type: reinforced_wall components: - - parent: 856 - pos: 46.5,-4.5 + - parent: 855 + pos: 46.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 890 type: reinforced_wall components: - - parent: 856 - pos: 46.5,-3.5 + - parent: 855 + pos: 46.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 891 type: reinforced_wall components: - - parent: 856 - pos: 46.5,-2.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 892 - type: reinforced_wall - components: - - parent: 856 + - parent: 855 pos: 46.5,-1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 893 +- uid: 892 type: GravityGenerator components: - - parent: 856 + - parent: 855 pos: 49.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 894 +- uid: 893 type: Table components: - - parent: 856 + - parent: 855 pos: -18.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 895 +- uid: 894 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: -12.5,-5 rot: -1.5707963267948966 rad type: Transform @@ -19602,25 +19591,25 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer +- uid: 895 + type: Poweredlight + components: + - parent: 855 + pos: -13.5,2 + rot: -1.5707963267948966 rad + type: Transform + - color: '#FFFFFFFF' + type: PointLight + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer - uid: 896 type: Poweredlight components: - - parent: 856 - pos: -13.5,2 - rot: -1.5707963267948966 rad - type: Transform - - color: '#FFFFFFFF' - type: PointLight - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 897 - type: Poweredlight - components: - - parent: 856 + - parent: 855 pos: -13.5,-2 rot: 1.5707963267948966 rad type: Transform @@ -19632,10 +19621,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 898 +- uid: 897 type: KitchenMicrowave components: - - parent: 856 + - parent: 855 pos: -14.5,-1.5 rot: -1.5707963267948966 rad type: Transform @@ -19643,474 +19632,472 @@ entities: microwave_entity_container: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 899 +- uid: 898 type: Table components: - - parent: 856 + - parent: 855 pos: -14.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 900 +- uid: 899 type: Table components: - - parent: 856 + - parent: 855 pos: -14.5,-1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 901 +- uid: 900 type: VendingMachineSnack components: - - parent: 856 + - parent: 855 pos: -8.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 902 +- uid: 901 type: VendingMachineCigs components: - - parent: 856 + - parent: 855 pos: -7.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 903 +- uid: 902 type: VendingMachineTheater components: - - parent: 856 + - parent: 855 pos: -17.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 904 +- uid: 903 type: SpawnPointSecurityOfficer components: - - parent: 856 + - parent: 855 pos: -11.5,8.5 rot: -1.5707963267948966 rad type: Transform +- uid: 904 + type: Table + components: + - parent: 855 + pos: -10.5,1.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 905 type: Table components: - - parent: 856 - pos: -10.5,1.5 + - parent: 855 + pos: -10.5,0.5 rot: -1.5707963267948966 rad type: Transform - uid: 906 type: Table components: - - parent: 856 - pos: -10.5,0.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 907 - type: Table - components: - - parent: 856 + - parent: 855 pos: -10.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 908 +- uid: 907 type: SpawnPointLatejoin components: - - parent: 856 + - parent: 855 pos: -36.5,-1.5 rot: -1.5707963267948966 rad type: Transform +- uid: 908 + type: Catwalk + components: + - parent: 855 + pos: -9.5,-7.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 909 type: Catwalk components: - - parent: 856 - pos: -9.5,-7.5 + - parent: 855 + pos: -17.5,-14.5 rot: -1.5707963267948966 rad type: Transform - uid: 910 type: Catwalk components: - - parent: 856 - pos: -17.5,-14.5 + - parent: 855 + pos: -23.5,-10.5 rot: -1.5707963267948966 rad type: Transform - uid: 911 - type: Catwalk + type: solid_wall components: - - parent: 856 - pos: -23.5,-10.5 + - parent: 855 + pos: -14.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 912 type: solid_wall components: - - parent: 856 - pos: -14.5,-5.5 + - parent: 855 + pos: -13.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 913 type: solid_wall components: - - parent: 856 - pos: -13.5,-5.5 + - parent: 855 + pos: -12.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 914 type: solid_wall components: - - parent: 856 - pos: -12.5,-5.5 + - parent: 855 + pos: -11.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 915 type: solid_wall components: - - parent: 856 - pos: -11.5,-5.5 + - parent: 855 + pos: -8.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 916 type: solid_wall components: - - parent: 856 - pos: -8.5,-2.5 + - parent: 855 + pos: -9.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 917 type: solid_wall components: - - parent: 856 - pos: -9.5,-2.5 + - parent: 855 + pos: -14.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 918 type: solid_wall components: - - parent: 856 - pos: -14.5,-2.5 + - parent: 855 + pos: -13.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 919 type: solid_wall components: - - parent: 856 - pos: -13.5,-2.5 + - parent: 855 + pos: -11.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 920 type: solid_wall components: - - parent: 856 - pos: -11.5,-2.5 + - parent: 855 + pos: -10.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 921 type: solid_wall components: - - parent: 856 - pos: -10.5,-2.5 + - parent: 855 + pos: -15.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 922 type: solid_wall components: - - parent: 856 - pos: -15.5,-2.5 + - parent: 855 + pos: -15.5,-1.5 rot: -1.5707963267948966 rad type: Transform - uid: 923 type: solid_wall components: - - parent: 856 - pos: -15.5,-1.5 + - parent: 855 + pos: -15.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 924 type: solid_wall components: - - parent: 856 - pos: -15.5,-0.5 + - parent: 855 + pos: -15.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 925 type: solid_wall components: - - parent: 856 - pos: -15.5,-3.5 + - parent: 855 + pos: -15.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 926 type: solid_wall components: - - parent: 856 - pos: -15.5,1.5 + - parent: 855 + pos: -12.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 927 type: solid_wall components: - - parent: 856 - pos: -12.5,2.5 + - parent: 855 + pos: -13.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 928 type: solid_wall components: - - parent: 856 - pos: -13.5,2.5 + - parent: 855 + pos: -14.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 929 type: solid_wall components: - - parent: 856 - pos: -14.5,2.5 + - parent: 855 + pos: -15.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 930 type: solid_wall components: - - parent: 856 - pos: -15.5,2.5 + - parent: 855 + pos: -20.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 931 type: solid_wall components: - - parent: 856 - pos: -20.5,-8.5 + - parent: 855 + pos: -17.5,-10.5 rot: -1.5707963267948966 rad type: Transform - uid: 932 type: solid_wall components: - - parent: 856 - pos: -17.5,-10.5 + - parent: 855 + pos: -18.5,-10.5 rot: -1.5707963267948966 rad type: Transform - uid: 933 type: solid_wall components: - - parent: 856 - pos: -18.5,-10.5 + - parent: 855 + pos: -19.5,-10.5 rot: -1.5707963267948966 rad type: Transform - uid: 934 type: solid_wall components: - - parent: 856 - pos: -19.5,-10.5 + - parent: 855 + pos: -20.5,-10.5 rot: -1.5707963267948966 rad type: Transform - uid: 935 type: solid_wall components: - - parent: 856 - pos: -20.5,-10.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 936 - type: solid_wall - components: - - parent: 856 + - parent: 855 pos: -20.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 937 +- uid: 936 type: Brutepack components: - - parent: 856 + - parent: 855 pos: 7.370505,-3.4650035 rot: -1.5707963267948966 rad type: Transform -- uid: 938 +- uid: 937 type: TrashSpawner components: - - parent: 856 + - parent: 855 pos: 7.5,13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 939 - type: SignBar +- uid: 938 + type: Rack components: - - parent: 856 - pos: -4.6859417,2.5 + - parent: 855 + pos: 30.5,-4.5 rot: -1.5707963267948966 rad type: Transform - - deadThreshold: 100 - type: Destructible -- uid: 940 +- uid: 939 type: SignSmoking components: - - parent: 856 + - parent: 855 pos: 23.462582,6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible +- uid: 940 + type: solid_wall + components: + - parent: 855 + pos: -16.5,-6.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 941 type: solid_wall components: - - parent: 856 - pos: -16.5,-6.5 + - parent: 855 + pos: -0.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 942 type: solid_wall components: - - parent: 856 - pos: -0.5,-6.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 943 - type: solid_wall - components: - - parent: 856 + - parent: 855 pos: 33.5,11.5 rot: 1.5707963267948966 rad type: Transform -- uid: 944 +- uid: 943 type: SignDirectionalBridge components: - - parent: 856 + - parent: 855 pos: 5.641159,-12.7475605 rot: 1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 945 +- uid: 944 type: Brutepack components: - - parent: 856 + - parent: 855 pos: 6.97988,-3.2306285 rot: -1.5707963267948966 rad type: Transform +- uid: 945 + type: solid_wall + components: + - parent: 855 + pos: -26.5,-12.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 946 type: solid_wall components: - - parent: 856 - pos: -26.5,-12.5 + - parent: 855 + pos: -27.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 947 type: solid_wall components: - - parent: 856 - pos: -27.5,-12.5 + - parent: 855 + pos: -28.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 948 type: solid_wall components: - - parent: 856 - pos: -28.5,-12.5 + - parent: 855 + pos: -29.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 949 type: solid_wall components: - - parent: 856 - pos: -29.5,-12.5 + - parent: 855 + pos: -30.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 950 type: solid_wall components: - - parent: 856 - pos: -30.5,-12.5 + - parent: 855 + pos: -31.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 951 type: solid_wall components: - - parent: 856 - pos: -31.5,-12.5 + - parent: 855 + pos: -32.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 952 type: solid_wall components: - - parent: 856 - pos: -32.5,-12.5 + - parent: 855 + pos: -33.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 953 type: solid_wall components: - - parent: 856 - pos: -33.5,-12.5 + - parent: 855 + pos: -34.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 954 type: solid_wall components: - - parent: 856 - pos: -34.5,-12.5 + - parent: 855 + pos: -34.5,-11.5 rot: -1.5707963267948966 rad type: Transform - uid: 955 type: solid_wall components: - - parent: 856 - pos: -34.5,-11.5 + - parent: 855 + pos: -34.5,-10.5 rot: -1.5707963267948966 rad type: Transform - uid: 956 type: solid_wall components: - - parent: 856 - pos: -34.5,-10.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 957 - type: solid_wall - components: - - parent: 856 + - parent: 855 pos: -34.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 958 +- uid: 957 type: Paper components: - - parent: 856 + - parent: 855 pos: 9.699392,17.630365 rot: 3.141592653589793 rad type: Transform -- uid: 959 +- uid: 958 type: ChairOfficeDark components: - - parent: 856 + - parent: 855 pos: 10.5,17.5 rot: 3.141592653589793 rad type: Transform - anchored: False type: Physics -- uid: 960 +- uid: 959 type: Chair components: - - parent: 856 + - parent: 855 pos: 8.5,17.5 type: Transform - anchored: False type: Physics +- uid: 960 + type: Table + components: + - parent: 855 + pos: 9.5,17.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 961 type: Table components: - - parent: 856 - pos: 9.5,17.5 + - parent: 855 + pos: 9.5,16.5 rot: -1.5707963267948966 rad type: Transform - uid: 962 type: Table components: - - parent: 856 - pos: 9.5,16.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 963 - type: Table - components: - - parent: 856 + - parent: 855 pos: 9.5,18.5 rot: -1.5707963267948966 rad type: Transform -- uid: 964 +- uid: 963 type: ComputerSupplyRequest components: - - parent: 856 + - parent: 855 pos: 8.5,31.5 rot: 3.141592653589793 rad type: Transform @@ -20132,118 +20119,118 @@ entities: - containers: board: entities: - - 4033 + - 4030 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 965 +- uid: 964 type: ChairOfficeDark components: - - parent: 856 + - parent: 855 pos: 0.5,31.5 rot: 1.5707963267948966 rad type: Transform - anchored: False type: Physics -- uid: 966 +- uid: 965 type: ComputerMedicalRecords components: - - parent: 856 + - parent: 855 pos: 0.5,32.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: BreakableConstruction +- uid: 966 + type: ChairOfficeDark + components: + - parent: 855 + pos: 7.5,31.5 + rot: 1.5707963267948966 rad + type: Transform + - anchored: False + type: Physics - uid: 967 type: ChairOfficeDark components: - - parent: 856 - pos: 7.5,31.5 - rot: 1.5707963267948966 rad + - parent: 855 + pos: -2.5,25.5 type: Transform - anchored: False type: Physics - uid: 968 type: ChairOfficeDark components: - - parent: 856 - pos: -2.5,25.5 + - parent: 855 + pos: -2.5,24.5 type: Transform - anchored: False type: Physics - uid: 969 type: ChairOfficeDark components: - - parent: 856 - pos: -2.5,24.5 + - parent: 855 + pos: -0.5,25.5 + rot: 3.141592653589793 rad type: Transform - anchored: False type: Physics - uid: 970 type: ChairOfficeDark components: - - parent: 856 - pos: -0.5,25.5 - rot: 3.141592653589793 rad - type: Transform - - anchored: False - type: Physics -- uid: 971 - type: ChairOfficeDark - components: - - parent: 856 + - parent: 855 pos: -0.5,24.5 rot: 3.141592653589793 rad type: Transform - anchored: False type: Physics -- uid: 972 +- uid: 971 type: TableWood components: - - parent: 856 + - parent: 855 pos: -1.5,24.5 rot: -1.5707963267948966 rad type: Transform -- uid: 973 +- uid: 972 type: TableWood components: - - parent: 856 + - parent: 855 pos: -1.5,25.5 rot: -1.5707963267948966 rad type: Transform -- uid: 974 +- uid: 973 type: Pen components: - - parent: 856 + - parent: 855 pos: -1.563138,24.568495 type: Transform -- uid: 975 +- uid: 974 type: Paper components: - - parent: 856 + - parent: 855 pos: -1.344388,25.58412 type: Transform -- uid: 976 +- uid: 975 type: ComputerPowerMonitoring components: - - parent: 856 + - parent: 855 pos: 7.5,32.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: BreakableConstruction -- uid: 977 +- uid: 976 type: ComputerAlert components: - - parent: 856 + - parent: 855 pos: 6.5,32.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: BreakableConstruction -- uid: 978 +- uid: 977 type: ComputerId components: - - parent: 856 + - parent: 855 pos: 7.5,21.5 rot: -1.5707963267948966 rad type: Transform @@ -20256,13 +20243,13 @@ entities: type: Content.Server.GameObjects.ContainerSlot board: entities: - - 3954 + - 3951 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 979 +- uid: 978 type: ComputerId components: - - parent: 856 + - parent: 855 pos: 8.5,23.5 rot: 1.5707963267948966 rad type: Transform @@ -20275,54 +20262,54 @@ entities: type: Content.Server.GameObjects.ContainerSlot board: entities: - - 3955 + - 3952 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 980 +- uid: 979 type: Table components: - - parent: 856 + - parent: 855 pos: 6.5,20.5 type: Transform -- uid: 981 +- uid: 980 type: WarpPoint components: - - parent: 856 + - parent: 855 pos: 3.5,29.5 rot: -1.5707963267948966 rad type: Transform - location: bridge type: WarpPoint -- uid: 982 +- uid: 981 type: WarpPoint components: - - parent: 856 + - parent: 855 pos: -6.5,13.5 rot: -1.5707963267948966 rad type: Transform - location: sec type: WarpPoint -- uid: 983 +- uid: 982 type: ChairWood components: - - parent: 856 + - parent: 855 pos: 7.5,25.5 type: Transform - anchored: False type: Physics -- uid: 984 +- uid: 983 type: ChairOfficeDark components: - - parent: 856 + - parent: 855 pos: 9.5,25.5 rot: 3.141592653589793 rad type: Transform - anchored: False type: Physics -- uid: 985 +- uid: 984 type: ComputerComms components: - - parent: 856 + - parent: 855 pos: 9.5,23.5 rot: 1.5707963267948966 rad type: Transform @@ -20331,102 +20318,102 @@ entities: - containers: board: entities: - - 4001 + - 3998 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 986 +- uid: 985 type: ChairOfficeDark components: - - parent: 856 + - parent: 855 pos: 3.5,31.5 rot: 1.5707963267948966 rad type: Transform - anchored: False type: Physics -- uid: 987 +- uid: 986 type: TableWood components: - - parent: 856 + - parent: 855 pos: 8.5,26.5 rot: -1.5707963267948966 rad type: Transform -- uid: 988 +- uid: 987 type: TableWood components: - - parent: 856 + - parent: 855 pos: 8.5,25.5 rot: -1.5707963267948966 rad type: Transform -- uid: 989 +- uid: 988 type: VendingMachineCigs components: - - parent: 856 + - parent: 855 pos: 6.5,23.5 rot: -1.5707963267948966 rad type: Transform -- uid: 990 +- uid: 989 type: VendingMachineCoffee components: - - parent: 856 + - parent: 855 pos: 0.5,23.5 rot: -1.5707963267948966 rad type: Transform -- uid: 991 +- uid: 990 type: VendingMachineCola components: - - parent: 856 + - parent: 855 pos: 1.5,21.5 rot: -1.5707963267948966 rad type: Transform -- uid: 992 +- uid: 991 type: WarpPoint components: - - parent: 856 + - parent: 855 pos: 34.5,4.5 rot: -1.5707963267948966 rad type: Transform - location: eng type: WarpPoint -- uid: 993 +- uid: 992 type: WarpPoint components: - - parent: 856 + - parent: 855 pos: 19.5,11.5 rot: -1.5707963267948966 rad type: Transform - location: cargo type: WarpPoint -- uid: 994 +- uid: 993 type: WarpPoint components: - - parent: 856 + - parent: 855 pos: 14.5,-9.5 rot: -1.5707963267948966 rad type: Transform - location: med type: WarpPoint -- uid: 995 +- uid: 994 type: WarpPoint components: - - parent: 856 + - parent: 855 pos: -6.5,-19.5 rot: -1.5707963267948966 rad type: Transform - location: sci type: WarpPoint -- uid: 996 +- uid: 995 type: WarpPoint components: - - parent: 856 + - parent: 855 pos: -4.5,-0.5 rot: -1.5707963267948966 rad type: Transform - location: bar type: WarpPoint -- uid: 997 +- uid: 996 type: ComputerComms components: - - parent: 856 + - parent: 855 pos: 3.5,32.5 rot: -1.5707963267948966 rad type: Transform @@ -20435,77 +20422,88 @@ entities: - containers: board: entities: - - 4041 + - 4038 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 998 +- uid: 997 type: Table components: - - parent: 856 + - parent: 855 pos: -15.5,-10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 999 +- uid: 998 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: 1.5,1.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 1000 +- uid: 999 type: Catwalk components: - - parent: 856 + - parent: 855 pos: 22.5,-18.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1001 +- uid: 1000 type: Chair components: - - parent: 856 + - parent: 855 pos: 22.5,-14.5 type: Transform - anchored: False type: Physics -- uid: 1002 +- uid: 1001 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: 0.5,2.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 1003 +- uid: 1002 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: 1.5,2.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 1004 +- uid: 1003 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -7.5,2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1005 - type: BarSign +- uid: 1004 + type: ApcExtensionCable components: - - parent: 856 - pos: 1,2.5 - rot: 1.5707963267948966 rad + - parent: 855 + pos: 3.5,30.5 + rot: 3.141592653589793 rad type: Transform + - deadThreshold: 100 + type: Destructible +- uid: 1005 + type: ApcExtensionCable + components: + - parent: 855 + pos: 3.5,28.5 + rot: 3.141592653589793 rad + type: Transform + - deadThreshold: 100 + type: Destructible - uid: 1006 type: ApcExtensionCable components: - - parent: 856 - pos: 3.5,30.5 + - parent: 855 + pos: 26.5,4.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 @@ -20513,49 +20511,49 @@ entities: - uid: 1007 type: ApcExtensionCable components: - - parent: 856 - pos: 3.5,28.5 - rot: 3.141592653589793 rad - type: Transform - - deadThreshold: 100 - type: Destructible -- uid: 1008 - type: ApcExtensionCable - components: - - parent: 856 - pos: 26.5,4.5 - rot: 3.141592653589793 rad - type: Transform - - deadThreshold: 100 - type: Destructible -- uid: 1009 - type: ApcExtensionCable - components: - - parent: 856 + - parent: 855 pos: 25.5,4.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 1010 +- uid: 1008 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -5.5,2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1011 +- uid: 1009 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -6.5,2.5 rot: -1.5707963267948966 rad type: Transform +- uid: 1010 + type: ApcExtensionCable + components: + - parent: 855 + pos: 27.5,4.5 + rot: 3.141592653589793 rad + type: Transform + - deadThreshold: 100 + type: Destructible +- uid: 1011 + type: ApcExtensionCable + components: + - parent: 855 + pos: 27.5,6.5 + rot: 3.141592653589793 rad + type: Transform + - deadThreshold: 100 + type: Destructible - uid: 1012 type: ApcExtensionCable components: - - parent: 856 - pos: 27.5,4.5 + - parent: 855 + pos: 27.5,5.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 @@ -20563,8 +20561,8 @@ entities: - uid: 1013 type: ApcExtensionCable components: - - parent: 856 - pos: 27.5,6.5 + - parent: 855 + pos: 3.5,29.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 @@ -20572,73 +20570,55 @@ entities: - uid: 1014 type: ApcExtensionCable components: - - parent: 856 - pos: 27.5,5.5 - rot: 3.141592653589793 rad - type: Transform - - deadThreshold: 100 - type: Destructible -- uid: 1015 - type: ApcExtensionCable - components: - - parent: 856 - pos: 3.5,29.5 - rot: 3.141592653589793 rad - type: Transform - - deadThreshold: 100 - type: Destructible -- uid: 1016 - type: ApcExtensionCable - components: - - parent: 856 + - parent: 855 pos: 16.5,-2.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 1017 +- uid: 1015 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -8.5,2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1018 +- uid: 1016 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: 22.5,-18.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 1019 +- uid: 1017 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: 16.5,-1.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 1020 +- uid: 1018 type: ReinforcedWindow components: - - parent: 856 + - parent: 855 pos: 9.5,-21.5 rot: 1.5707963267948966 rad type: Transform -- uid: 1021 +- uid: 1019 type: AirlockCommandGlassLocked components: - - parent: 856 + - parent: 855 pos: 2.5,27.5 rot: 1.5707963267948966 rad type: Transform -- uid: 1022 +- uid: 1020 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: -9.5,6.5 rot: -1.5707963267948966 rad type: Transform @@ -20646,10 +20626,10 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 1023 +- uid: 1021 type: Firelock components: - - parent: 856 + - parent: 855 pos: -22.5,13.5 rot: 3.141592653589793 rad type: Transform @@ -20659,89 +20639,89 @@ entities: type: Airtight - enabled: False type: Occluder -- uid: 1024 +- uid: 1022 type: ReinforcedWindow components: - - parent: 856 + - parent: 855 pos: 3.5,27.5 rot: 1.5707963267948966 rad type: Transform -- uid: 1025 +- uid: 1023 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -6.5,-26.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 1026 +- uid: 1024 type: Catwalk components: - - parent: 856 + - parent: 855 pos: 10.5,14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1027 +- uid: 1025 type: Catwalk components: - - parent: 856 + - parent: 855 pos: 12.5,14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1028 +- uid: 1026 type: Catwalk components: - - parent: 856 + - parent: 855 pos: 11.5,14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1029 +- uid: 1027 type: SpawnPointStationEngineer components: - - parent: 856 + - parent: 855 pos: 33.5,-2.5 rot: -1.5707963267948966 rad type: Transform +- uid: 1028 + type: SpawnPointAssistant + components: + - parent: 855 + pos: -27.5,10.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1029 + type: SpawnPointSecurityOfficer + components: + - parent: 855 + pos: -12.5,15.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 1030 type: SpawnPointAssistant components: - - parent: 856 - pos: -27.5,10.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1031 - type: SpawnPointSecurityOfficer - components: - - parent: 856 - pos: -12.5,15.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1032 - type: SpawnPointAssistant - components: - - parent: 856 + - parent: 855 pos: -27.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1033 +- uid: 1031 type: Table components: - - parent: 856 + - parent: 855 pos: 39.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1034 +- uid: 1032 type: ReinforcedWindow components: - - parent: 856 + - parent: 855 pos: 11.5,-21.5 rot: 1.5707963267948966 rad type: Transform -- uid: 1035 +- uid: 1033 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: 5.5,4.5 rot: -1.5707963267948966 rad type: Transform @@ -20749,10 +20729,10 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 1036 +- uid: 1034 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: 5.5,3.5 rot: -1.5707963267948966 rad type: Transform @@ -20760,10 +20740,10 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 1037 +- uid: 1035 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: 1.5,4.5 rot: -1.5707963267948966 rad type: Transform @@ -20771,31 +20751,31 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 1038 +- uid: 1036 type: TableR components: - - parent: 856 + - parent: 855 pos: 0.5,-14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1039 +- uid: 1037 type: TableR components: - - parent: 856 + - parent: 855 pos: 0.5,-15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1040 +- uid: 1038 type: ReinforcedWindow components: - - parent: 856 + - parent: 855 pos: 10.5,-21.5 rot: 1.5707963267948966 rad type: Transform -- uid: 1041 +- uid: 1039 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -38.5,11 rot: -1.5707963267948966 rad type: Transform @@ -20807,59 +20787,59 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1042 +- uid: 1040 type: SpawnPointSecurityOfficer components: - - parent: 856 + - parent: 855 pos: -13.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1043 +- uid: 1041 type: SpawnPointSecurityOfficer components: - - parent: 856 + - parent: 855 pos: -2.5,12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1044 +- uid: 1042 type: KitchenSpike components: - - parent: 856 + - parent: 855 pos: -9.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1045 +- uid: 1043 type: SpawnPointStationEngineer components: - - parent: 856 + - parent: 855 pos: 41.5,4.5 rot: -1.5707963267948966 rad type: Transform +- uid: 1044 + type: TableR + components: + - parent: 855 + pos: 6.5,28.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1045 + type: TableR + components: + - parent: 855 + pos: -2.5,28.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 1046 type: TableR components: - - parent: 856 - pos: 6.5,28.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1047 - type: TableR - components: - - parent: 856 - pos: -2.5,28.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1048 - type: TableR - components: - - parent: 856 + - parent: 855 pos: 5.5,28.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1049 +- uid: 1047 type: Protolathe components: - - parent: 856 + - parent: 855 pos: -3.5,-12.5 type: Transform - protolatherecipes: @@ -20876,10 +20856,10 @@ entities: - Crowbar - Multitool type: ProtolatheDatabase -- uid: 1050 +- uid: 1048 type: Autolathe components: - - parent: 856 + - parent: 855 pos: -5.5,-12.5 type: Transform - recipes: @@ -20896,97 +20876,97 @@ entities: - Crowbar - Multitool type: LatheDatabase -- uid: 1051 +- uid: 1049 type: ChairOfficeLight components: - - parent: 856 + - parent: 855 pos: -8.5,-18.5 rot: 1.5707963267948966 rad type: Transform - anchored: False type: Physics -- uid: 1052 +- uid: 1050 type: ChairOfficeLight components: - - parent: 856 + - parent: 855 pos: -9.5,-17.5 type: Transform - anchored: False type: Physics -- uid: 1053 +- uid: 1051 type: Table components: - - parent: 856 + - parent: 855 pos: -8.5,-17.5 type: Transform -- uid: 1054 +- uid: 1052 type: VendingMachineCoffee components: - - parent: 856 + - parent: 855 pos: -7.5,-17.5 type: Transform -- uid: 1055 +- uid: 1053 type: ChairOfficeLight components: - - parent: 856 + - parent: 855 pos: -5.5,-23.5 type: Transform - anchored: False type: Physics -- uid: 1056 +- uid: 1054 type: ChairOfficeLight components: - - parent: 856 + - parent: 855 pos: -0.5,-14.5 type: Transform - anchored: False type: Physics -- uid: 1057 +- uid: 1055 type: BaseResearchAndDevelopmentPointSource components: - - parent: 856 + - parent: 855 pos: -5.5,-17.5 rot: -1.5707963267948966 rad type: Transform +- uid: 1056 + type: TableR + components: + - parent: 855 + pos: -7.5,7.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1057 + type: TableR + components: + - parent: 855 + pos: -7.5,8.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 1058 type: TableR components: - - parent: 856 - pos: -7.5,7.5 + - parent: 855 + pos: 9.5,28.5 rot: -1.5707963267948966 rad type: Transform - uid: 1059 type: TableR components: - - parent: 856 - pos: -7.5,8.5 + - parent: 855 + pos: 8.5,28.5 rot: -1.5707963267948966 rad type: Transform - uid: 1060 type: TableR components: - - parent: 856 - pos: 9.5,28.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1061 - type: TableR - components: - - parent: 856 - pos: 8.5,28.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1062 - type: TableR - components: - - parent: 856 + - parent: 855 pos: 7.5,28.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1063 +- uid: 1061 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: -6.5,-26 rot: 1.5707963267948966 rad type: Transform @@ -20998,10 +20978,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1064 +- uid: 1062 type: ComputerResearchAndDevelopment components: - - parent: 856 + - parent: 855 pos: -5.5,-15.5 type: Transform - deadThreshold: 100 @@ -21009,31 +20989,60 @@ entities: - containers: board: entities: - - 4018 + - 4015 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 1065 +- uid: 1063 type: LowWall components: - - parent: 856 + - parent: 855 pos: -38.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1066 +- uid: 1064 type: SignScience components: - - parent: 856 + - parent: 855 pos: -8.494434,-16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible +- uid: 1065 + type: Poweredlight + components: + - parent: 855 + pos: -13,-25.5 + rot: 3.141592653589793 rad + type: Transform + - color: '#FFFFFFFF' + type: PointLight + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 1066 + type: Poweredlight + components: + - parent: 855 + pos: -13,-21.5 + rot: 3.141592653589793 rad + type: Transform + - color: '#FFFFFFFF' + type: PointLight + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer - uid: 1067 type: Poweredlight components: - - parent: 856 - pos: -13,-25.5 - rot: 3.141592653589793 rad + - parent: 855 + pos: -18,-21.5 type: Transform - color: '#FFFFFFFF' type: PointLight @@ -21046,36 +21055,7 @@ entities: - uid: 1068 type: Poweredlight components: - - parent: 856 - pos: -13,-21.5 - rot: 3.141592653589793 rad - type: Transform - - color: '#FFFFFFFF' - type: PointLight - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 1069 - type: Poweredlight - components: - - parent: 856 - pos: -18,-21.5 - type: Transform - - color: '#FFFFFFFF' - type: PointLight - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 1070 - type: Poweredlight - components: - - parent: 856 + - parent: 855 pos: -18,-25.5 type: Transform - color: '#FFFFFFFF' @@ -21086,18 +21066,18 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1071 +- uid: 1069 type: ResearchAndDevelopmentServer components: - - parent: 856 + - parent: 855 pos: -8.5,-23.5 type: Transform - points: 136000 type: ResearchServer -- uid: 1072 +- uid: 1070 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: -7,-23.5 type: Transform - color: '#FFFFFFFF' @@ -21108,12 +21088,42 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer +- uid: 1071 + type: Poweredlight + components: + - parent: 855 + pos: -2,-23.5 + rot: 3.141592653589793 rad + type: Transform + - color: '#FFFFFFFF' + type: PointLight + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 1072 + type: Poweredlight + components: + - parent: 855 + pos: -1.5,-21 + rot: 1.5707963267948966 rad + type: Transform + - color: '#FFFFFFFF' + type: PointLight + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer - uid: 1073 type: Poweredlight components: - - parent: 856 - pos: -2,-23.5 - rot: 3.141592653589793 rad + - parent: 855 + pos: -9.5,-17 + rot: -1.5707963267948966 rad type: Transform - color: '#FFFFFFFF' type: PointLight @@ -21126,8 +21136,8 @@ entities: - uid: 1074 type: Poweredlight components: - - parent: 856 - pos: -1.5,-21 + - parent: 855 + pos: -9.5,-21 rot: 1.5707963267948966 rad type: Transform - color: '#FFFFFFFF' @@ -21141,8 +21151,8 @@ entities: - uid: 1075 type: Poweredlight components: - - parent: 856 - pos: -9.5,-17 + - parent: 855 + pos: -1.5,-13 rot: -1.5707963267948966 rad type: Transform - color: '#FFFFFFFF' @@ -21156,9 +21166,8 @@ entities: - uid: 1076 type: Poweredlight components: - - parent: 856 - pos: -9.5,-21 - rot: 1.5707963267948966 rad + - parent: 855 + pos: -6,-14.5 type: Transform - color: '#FFFFFFFF' type: PointLight @@ -21171,36 +21180,7 @@ entities: - uid: 1077 type: Poweredlight components: - - parent: 856 - pos: -1.5,-13 - rot: -1.5707963267948966 rad - type: Transform - - color: '#FFFFFFFF' - type: PointLight - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 1078 - type: Poweredlight - components: - - parent: 856 - pos: -6,-14.5 - type: Transform - - color: '#FFFFFFFF' - type: PointLight - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 1079 - type: Poweredlight - components: - - parent: 856 + - parent: 855 pos: -1.5,-18 rot: 1.5707963267948966 rad type: Transform @@ -21212,168 +21192,168 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer +- uid: 1078 + type: ReinforcedWindow + components: + - parent: 855 + pos: -6.5,-29.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1079 + type: ReinforcedWindow + components: + - parent: 855 + pos: -6.5,-30.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 1080 type: ReinforcedWindow components: - - parent: 856 - pos: -6.5,-29.5 + - parent: 855 + pos: -7.5,-30.5 rot: -1.5707963267948966 rad type: Transform - uid: 1081 type: ReinforcedWindow components: - - parent: 856 - pos: -6.5,-30.5 + - parent: 855 + pos: -8.5,-30.5 rot: -1.5707963267948966 rad type: Transform - uid: 1082 type: ReinforcedWindow components: - - parent: 856 - pos: -7.5,-30.5 + - parent: 855 + pos: -9.5,-30.5 rot: -1.5707963267948966 rad type: Transform - uid: 1083 type: ReinforcedWindow components: - - parent: 856 - pos: -8.5,-30.5 + - parent: 855 + pos: -10.5,-30.5 rot: -1.5707963267948966 rad type: Transform - uid: 1084 type: ReinforcedWindow components: - - parent: 856 - pos: -9.5,-30.5 + - parent: 855 + pos: -10.5,-29.5 rot: -1.5707963267948966 rad type: Transform - uid: 1085 - type: ReinforcedWindow + type: LowWall components: - - parent: 856 - pos: -10.5,-30.5 + - parent: 855 + pos: -8.5,-30.5 rot: -1.5707963267948966 rad type: Transform - uid: 1086 - type: ReinforcedWindow + type: LowWall components: - - parent: 856 - pos: -10.5,-29.5 + - parent: 855 + pos: -6.5,-30.5 rot: -1.5707963267948966 rad type: Transform - uid: 1087 type: LowWall components: - - parent: 856 - pos: -8.5,-30.5 + - parent: 855 + pos: -7.5,-30.5 rot: -1.5707963267948966 rad type: Transform - uid: 1088 type: LowWall components: - - parent: 856 - pos: -6.5,-30.5 + - parent: 855 + pos: -6.5,-29.5 rot: -1.5707963267948966 rad type: Transform - uid: 1089 type: LowWall components: - - parent: 856 - pos: -7.5,-30.5 + - parent: 855 + pos: -9.5,-30.5 rot: -1.5707963267948966 rad type: Transform - uid: 1090 type: LowWall components: - - parent: 856 - pos: -6.5,-29.5 + - parent: 855 + pos: -10.5,-30.5 rot: -1.5707963267948966 rad type: Transform - uid: 1091 type: LowWall components: - - parent: 856 - pos: -9.5,-30.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1092 - type: LowWall - components: - - parent: 856 - pos: -10.5,-30.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1093 - type: LowWall - components: - - parent: 856 + - parent: 855 pos: -10.5,-29.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1094 +- uid: 1092 type: Table components: - - parent: 856 + - parent: 855 pos: -4.5,-24.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1095 +- uid: 1093 type: Table components: - - parent: 856 + - parent: 855 pos: -4.5,-23.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1096 +- uid: 1094 type: SpawnPointAssistant components: - - parent: 856 + - parent: 855 pos: -23.5,-2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1097 +- uid: 1095 type: SpawnPointAssistant components: - - parent: 856 + - parent: 855 pos: -29.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1098 +- uid: 1096 type: SpawnPointLatejoin components: - - parent: 856 + - parent: 855 pos: -36.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1099 +- uid: 1097 type: SpawnPointChef components: - - parent: 856 + - parent: 855 pos: -12.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1100 +- uid: 1098 type: WarpPoint components: - - parent: 856 + - parent: 855 pos: -36.5,6.5 rot: -1.5707963267948966 rad type: Transform - location: escape type: WarpPoint -- uid: 1101 +- uid: 1099 type: WarpPoint components: - - parent: 856 + - parent: 855 pos: -24.5,-3.5 rot: -1.5707963267948966 rad type: Transform - location: dorms type: WarpPoint -- uid: 1102 +- uid: 1100 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 25,-14.5 rot: 3.141592653589793 rad type: Transform @@ -21385,63 +21365,63 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1103 +- uid: 1101 type: ChairOfficeLight components: - - parent: 856 + - parent: 855 pos: 24.5,-14.5 rot: 3.141592653589793 rad type: Transform - anchored: False type: Physics -- uid: 1104 +- uid: 1102 type: Table components: - - parent: 856 + - parent: 855 pos: 23.5,-15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1105 +- uid: 1103 type: Table components: - - parent: 856 + - parent: 855 pos: 23.5,-14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1106 +- uid: 1104 type: Table components: - - parent: 856 + - parent: 855 pos: 23.5,-13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1107 +- uid: 1105 type: ComputerMedicalRecords components: - - parent: 856 + - parent: 855 pos: 24.5,-15.5 rot: 1.5707963267948966 rad type: Transform - deadThreshold: 100 type: BreakableConstruction -- uid: 1108 +- uid: 1106 type: Beaker components: - - parent: 856 + - parent: 855 pos: 15.48139,-0.43026757 rot: 1.5707963267948966 rad type: Transform -- uid: 1109 +- uid: 1107 type: LargeBeaker components: - - parent: 856 + - parent: 855 pos: 14.528265,-0.44589257 rot: 1.5707963267948966 rad type: Transform -- uid: 1110 +- uid: 1108 type: DisposalTrunk components: - - parent: 856 + - parent: 855 pos: 18.5,-0.5 rot: 3.141592653589793 rad type: Transform @@ -21451,10 +21431,10 @@ entities: DisposalEntry: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 1111 +- uid: 1109 type: DisposalUnit components: - - parent: 856 + - parent: 855 pos: 18.5,-0.5 type: Transform - entryDelay: 0 @@ -21465,151 +21445,164 @@ entities: DisposalUnit: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer +- uid: 1110 + type: SpawnPointBotanist + components: + - parent: 855 + pos: -17.5,-0.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1111 + type: Scythe + components: + - parent: 855 + pos: -20.5,-1.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 1112 - type: Medkit + type: Hatchet components: - - parent: 856 - pos: 6.5068817,-9.984968 - rot: 1.5707963267948966 rad + - parent: 855 + pos: -20.5,-2.5 + rot: -1.5707963267948966 rad type: Transform - - containers: - storagebase: - type: Robust.Server.GameObjects.Components.Container.Container - type: ContainerContainer - uid: 1113 - type: Medkit + type: Catwalk components: - - parent: 856 - pos: 6.5225067,-9.141218 - rot: 1.5707963267948966 rad + - parent: 855 + pos: -11.5,-22.5 + rot: -1.5707963267948966 rad type: Transform - - containers: - storagebase: - type: Robust.Server.GameObjects.Components.Container.Container - type: ContainerContainer - uid: 1114 - type: Medkit + type: Catwalk components: - - parent: 856 - pos: 6.5693817,-8.359968 - rot: 1.5707963267948966 rad + - parent: 855 + pos: -11.5,-23.5 + rot: -1.5707963267948966 rad type: Transform - - containers: - storagebase: - type: Robust.Server.GameObjects.Components.Container.Container - type: ContainerContainer - uid: 1115 type: Catwalk components: - - parent: 856 - pos: -11.5,-22.5 + - parent: 855 + pos: -11.5,-24.5 rot: -1.5707963267948966 rad type: Transform - uid: 1116 type: Catwalk components: - - parent: 856 - pos: -11.5,-23.5 + - parent: 855 + pos: -11.5,-25.5 rot: -1.5707963267948966 rad type: Transform - uid: 1117 type: Catwalk components: - - parent: 856 - pos: -11.5,-24.5 + - parent: 855 + pos: -11.5,-26.5 rot: -1.5707963267948966 rad type: Transform - uid: 1118 type: Catwalk components: - - parent: 856 - pos: -11.5,-25.5 + - parent: 855 + pos: -0.5,-26.5 rot: -1.5707963267948966 rad type: Transform - uid: 1119 type: Catwalk components: - - parent: 856 - pos: -11.5,-26.5 + - parent: 855 + pos: -0.5,-25.5 rot: -1.5707963267948966 rad type: Transform - uid: 1120 type: Catwalk components: - - parent: 856 - pos: -0.5,-26.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1121 - type: Catwalk - components: - - parent: 856 - pos: -0.5,-25.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1122 - type: Catwalk - components: - - parent: 856 + - parent: 855 pos: -0.5,-24.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1123 +- uid: 1121 type: HVWire components: - - parent: 856 + - parent: 855 pos: -6.5,-26.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 1124 +- uid: 1122 type: HVWire components: - - parent: 856 + - parent: 855 pos: -4.5,-26.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 1125 +- uid: 1123 type: Catwalk components: - - parent: 856 + - parent: 855 pos: -9.5,-26.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1126 +- uid: 1124 type: Catwalk components: - - parent: 856 + - parent: 855 pos: -8.5,-26.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1127 +- uid: 1125 type: Catwalk components: - - parent: 856 + - parent: 855 pos: -7.5,-26.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1128 - type: Medkit +- uid: 1126 + type: MiniHoe components: - - parent: 856 - pos: 6.5537567,-7.609968 + - parent: 855 + pos: -20.5,-1.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1127 + type: Poweredlight + components: + - parent: 855 + pos: 23.5,-8 rot: 1.5707963267948966 rad type: Transform + - color: '#FFFFFFFF' + type: PointLight + - powerLoad: 0 + type: PowerReceiver - containers: - storagebase: - type: Robust.Server.GameObjects.Components.Container.Container + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 1128 + type: Poweredlight + components: + - parent: 855 + pos: 23.5,-4 + rot: -1.5707963267948966 rad + type: Transform + - color: '#FFFFFFFF' + type: PointLight + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 1129 type: Poweredlight components: - - parent: 856 - pos: 23.5,-8 - rot: 1.5707963267948966 rad + - parent: 855 + pos: 7,-14.5 type: Transform - color: '#FFFFFFFF' type: PointLight @@ -21622,36 +21615,7 @@ entities: - uid: 1130 type: Poweredlight components: - - parent: 856 - pos: 23.5,-4 - rot: -1.5707963267948966 rad - type: Transform - - color: '#FFFFFFFF' - type: PointLight - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 1131 - type: Poweredlight - components: - - parent: 856 - pos: 7,-14.5 - type: Transform - - color: '#FFFFFFFF' - type: PointLight - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 1132 - type: Poweredlight - components: - - parent: 856 + - parent: 855 pos: 20,-11.5 rot: 3.141592653589793 rad type: Transform @@ -21663,158 +21627,159 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1133 +- uid: 1131 type: Window components: - - parent: 856 + - parent: 855 pos: 17.5,-12.5 rot: -1.5707963267948966 rad type: Transform +- uid: 1132 + type: Window + components: + - parent: 855 + pos: 16.5,-12.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1133 + type: solid_wall + components: + - parent: 855 + pos: 16.5,-17.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 1134 - type: Window - components: - - parent: 856 - pos: 16.5,-12.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1135 - type: Window - components: - - parent: 856 - pos: 15.5,-12.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1136 type: LowWall components: - - parent: 856 + - parent: 855 pos: 17.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1137 +- uid: 1135 type: LowWall components: - - parent: 856 + - parent: 855 pos: 16.5,-12.5 rot: -1.5707963267948966 rad type: Transform +- uid: 1136 + type: solid_wall + components: + - parent: 855 + pos: 16.5,-16.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1137 + type: WardrobeWhiteFilled + components: + - parent: 855 + pos: 7.5,-14.5 + rot: -1.5707963267948966 rad + type: Transform + - IsPlaceable: False + type: PlaceableSurface + - containers: + EntityStorageComponent: + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer - uid: 1138 type: LowWall components: - - parent: 856 - pos: 15.5,-12.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1139 - type: MedicalScanner - components: - - parent: 856 - pos: 16.5,-11.5 - rot: -1.5707963267948966 rad - type: Transform - - containers: - MedicalScanner-bodyContainer: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 1140 - type: LowWall - components: - - parent: 856 + - parent: 855 pos: -38.5,-7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1141 - type: Table +- uid: 1139 + type: CloningPod components: - - parent: 856 - pos: 30.5,-4.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1142 - type: MedicalScanner - components: - - parent: 856 - pos: 16.5,-13.5 - rot: -1.5707963267948966 rad - type: Transform - - containers: - MedicalScanner-bodyContainer: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 1143 - type: Beaker - components: - - parent: 856 - pos: 15.07514,-0.38339257 - rot: 1.5707963267948966 rad - type: Transform -- uid: 1144 - type: Table - components: - - parent: 856 + - parent: 855 pos: 9.5,-13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1145 + - containers: + CloningPod-bodyContainer: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 1140 + type: VendingMachineSeeds + components: + - parent: 855 + pos: -18.5,-2.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1141 + type: Beaker + components: + - parent: 855 + pos: 15.07514,-0.38339257 + rot: 1.5707963267948966 rad + type: Transform +- uid: 1142 + type: VendingMachineMedical + components: + - parent: 855 + pos: 13.5,-11.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1143 type: Catwalk components: - - parent: 856 + - parent: 855 pos: 29.5,-6.5 rot: -1.5707963267948966 rad type: Transform +- uid: 1144 + type: Catwalk + components: + - parent: 855 + pos: 33.5,-6.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1145 + type: LockerBotanistFilled + components: + - parent: 855 + pos: -19.5,-2.5 + rot: -1.5707963267948966 rad + type: Transform + - IsPlaceable: False + type: PlaceableSurface + - containers: + EntityStorageComponent: + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer - uid: 1146 type: Table components: - - parent: 856 - pos: 10.5,-13.5 + - parent: 855 + pos: -20.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 1147 type: Catwalk components: - - parent: 856 - pos: 33.5,-6.5 + - parent: 855 + pos: 28.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1148 type: Table components: - - parent: 856 - pos: 6.5,-7.5 + - parent: 855 + pos: -20.5,-1.5 rot: -1.5707963267948966 rad type: Transform - uid: 1149 - type: Table + type: SeedExtractor components: - - parent: 856 - pos: 6.5,-8.5 + - parent: 855 + pos: -17.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 1150 - type: Catwalk - components: - - parent: 856 - pos: 28.5,-6.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1151 - type: Table - components: - - parent: 856 - pos: 6.5,-9.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1152 - type: Table - components: - - parent: 856 - pos: 6.5,-10.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1153 type: CrateMedical components: - - parent: 856 + - parent: 855 pos: 24.5,-4.5 rot: -1.5707963267948966 rad type: Transform @@ -21824,45 +21789,45 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 1154 +- uid: 1151 type: Table components: - - parent: 856 + - parent: 855 pos: 23.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1155 +- uid: 1152 type: Table components: - - parent: 856 + - parent: 855 pos: 22.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1156 +- uid: 1153 type: Table components: - - parent: 856 + - parent: 855 pos: 21.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1157 - type: VendingMachineMedical +- uid: 1154 + type: WaterTankFull components: - - parent: 856 - pos: 6.5,-11.5 + - parent: 855 + pos: -17.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1158 +- uid: 1155 type: VendingMachineMedical components: - - parent: 856 + - parent: 855 pos: 19.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1159 +- uid: 1156 type: LockerMedical components: - - parent: 856 + - parent: 855 pos: 22.5,-7.5 rot: -1.5707963267948966 rad type: Transform @@ -21872,17 +21837,17 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 1160 +- uid: 1157 type: Catwalk components: - - parent: 856 + - parent: 855 pos: 27.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1161 +- uid: 1158 type: LockerMedical components: - - parent: 856 + - parent: 855 pos: 21.5,-7.5 rot: -1.5707963267948966 rad type: Transform @@ -21892,62 +21857,62 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 1162 +- uid: 1159 type: WarpPoint components: - - parent: 856 + - parent: 855 pos: 49.5,-2.5 rot: -1.5707963267948966 rad type: Transform - location: grav type: WarpPoint -- uid: 1163 +- uid: 1160 type: WarpPoint components: - - parent: 856 + - parent: 855 pos: 9.5,19.5 rot: -1.5707963267948966 rad type: Transform - location: hop type: WarpPoint -- uid: 1164 +- uid: 1161 type: WarpPoint components: - - parent: 856 + - parent: 855 pos: 16.5,0.5 rot: -1.5707963267948966 rad type: Transform - location: chem type: WarpPoint -- uid: 1165 +- uid: 1162 type: WarpPoint components: - - parent: 856 + - parent: 855 pos: 7.5,25.5 rot: -1.5707963267948966 rad type: Transform - location: cap type: WarpPoint -- uid: 1166 +- uid: 1163 type: WarpPoint components: - - parent: 856 + - parent: 855 pos: 8.5,10.5 rot: -1.5707963267948966 rad type: Transform - location: eva type: WarpPoint -- uid: 1167 +- uid: 1164 type: Table components: - - parent: 856 + - parent: 855 pos: 13.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1168 +- uid: 1165 type: LockerChemistry components: - - parent: 856 + - parent: 855 pos: 18.5,-1.5 rot: -1.5707963267948966 rad type: Transform @@ -21957,10 +21922,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 1169 +- uid: 1166 type: LockerElectricalSupplies components: - - parent: 856 + - parent: 855 pos: 39.5,9.5 rot: -1.5707963267948966 rad type: Transform @@ -21970,42 +21935,42 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 1170 +- uid: 1167 type: Catwalk components: - - parent: 856 + - parent: 855 pos: 47.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1171 +- uid: 1168 type: Table components: - - parent: 856 + - parent: 855 pos: -12.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1172 +- uid: 1169 type: Chair components: - - parent: 856 + - parent: 855 pos: 28.5,1.5 rot: -1.5707963267948966 rad type: Transform - anchored: False type: Physics -- uid: 1173 +- uid: 1170 type: Chair components: - - parent: 856 + - parent: 855 pos: 26.5,1.5 rot: -1.5707963267948966 rad type: Transform - anchored: False type: Physics -- uid: 1174 +- uid: 1171 type: LockerHeadOfSecurityFilled components: - - parent: 856 + - parent: 855 pos: -9.5,21.5 rot: -1.5707963267948966 rad type: Transform @@ -22015,31 +21980,31 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 1175 +- uid: 1172 type: Table components: - - parent: 856 + - parent: 855 pos: 15.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1176 +- uid: 1173 type: TableGlassR components: - - parent: 856 + - parent: 855 pos: 14.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1177 +- uid: 1174 type: TableGlassR components: - - parent: 856 + - parent: 855 pos: 18.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1178 +- uid: 1175 type: chem_master components: - - parent: 856 + - parent: 855 pos: 15.5,1.5 rot: -1.5707963267948966 rad type: Transform @@ -22047,31 +22012,31 @@ entities: ChemMaster-reagentContainerContainer: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1179 +- uid: 1176 type: TableGlassR components: - - parent: 856 + - parent: 855 pos: 18.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1180 +- uid: 1177 type: TableGlassR components: - - parent: 856 + - parent: 855 pos: 15.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1181 +- uid: 1178 type: TableR components: - - parent: 856 + - parent: 855 pos: 14.5,-2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1182 +- uid: 1179 type: chem_dispenser components: - - parent: 856 + - parent: 855 pos: 14.5,1.5 rot: -1.5707963267948966 rad type: Transform @@ -22079,105 +22044,105 @@ entities: ReagentDispenser-reagentContainerContainer: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1183 +- uid: 1180 type: ComputerMedicalRecords components: - - parent: 856 + - parent: 855 pos: 6.5,-5.5 rot: 1.5707963267948966 rad type: Transform - deadThreshold: 100 type: BreakableConstruction -- uid: 1184 +- uid: 1181 type: ChairOfficeLight components: - - parent: 856 + - parent: 855 pos: 6.5,-4.5 rot: 1.5707963267948966 rad type: Transform - anchored: False type: Physics +- uid: 1182 + type: Table + components: + - parent: 855 + pos: 6.5,-3.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1183 + type: Table + components: + - parent: 855 + pos: 7.5,-3.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1184 + type: Table + components: + - parent: 855 + pos: 8.5,-3.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 1185 type: Table components: - - parent: 856 - pos: 6.5,-3.5 + - parent: 855 + pos: 8.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 1186 type: Table components: - - parent: 856 - pos: 7.5,-3.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1187 - type: Table - components: - - parent: 856 - pos: 8.5,-3.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1188 - type: Table - components: - - parent: 856 - pos: 8.5,-4.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1189 - type: Table - components: - - parent: 856 + - parent: 855 pos: 8.5,-5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1190 +- uid: 1187 type: LowWall components: - - parent: 856 + - parent: 855 pos: -38.5,-8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1191 +- uid: 1188 type: LowWall components: - - parent: 856 + - parent: 855 pos: -37.5,-8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1192 +- uid: 1189 type: SpawnPointSecurityOfficer components: - - parent: 856 + - parent: 855 pos: -7.5,12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1193 +- uid: 1190 type: SpawnPointStationEngineer components: - - parent: 856 + - parent: 855 pos: 33.5,4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1194 +- uid: 1191 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -34.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1195 +- uid: 1192 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -38.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1196 +- uid: 1193 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -35,0.5 rot: 3.141592653589793 rad type: Transform @@ -22189,19 +22154,19 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1197 +- uid: 1194 type: EmergencyLight components: - - parent: 856 + - parent: 855 pos: -35.166924,-3.5 rot: 3.141592653589793 rad type: Transform - startingCharge: 30000 type: Battery -- uid: 1198 +- uid: 1195 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -22,0.5 rot: 3.141592653589793 rad type: Transform @@ -22213,47 +22178,47 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1199 +- uid: 1196 type: SignShipDock components: - - parent: 856 + - parent: 855 pos: -33.298416,6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 1200 +- uid: 1197 type: Window components: - - parent: 856 + - parent: 855 + pos: -18.5,2.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1198 + type: Window + components: + - parent: 855 + pos: -19.5,2.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1199 + type: LowWall + components: + - parent: 855 + pos: -19.5,2.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1200 + type: LowWall + components: + - parent: 855 pos: -18.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 1201 - type: Window - components: - - parent: 856 - pos: -19.5,2.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1202 - type: LowWall - components: - - parent: 856 - pos: -19.5,2.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1203 - type: LowWall - components: - - parent: 856 - pos: -18.5,2.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1204 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -22,2.5 rot: 3.141592653589793 rad type: Transform @@ -22265,10 +22230,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1205 +- uid: 1202 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: -29.5,15 rot: 1.5707963267948966 rad type: Transform @@ -22280,24 +22245,24 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1206 +- uid: 1203 type: TableCarpet components: - - parent: 856 + - parent: 855 pos: -0.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1207 +- uid: 1204 type: TableCarpet components: - - parent: 856 + - parent: 855 pos: -0.5,-1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1208 +- uid: 1205 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: -34,-0.5 rot: 3.141592653589793 rad type: Transform @@ -22309,10 +22274,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1209 +- uid: 1206 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: -18,-4.5 type: Transform - color: '#FFFFFFFF' @@ -22323,26 +22288,26 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1210 +- uid: 1207 type: Pen components: - - parent: 856 + - parent: 855 pos: 9.652517,18.48974 rot: 3.141592653589793 rad type: Transform -- uid: 1211 +- uid: 1208 type: ChairOfficeDark components: - - parent: 856 + - parent: 855 pos: -6.5,20.5 rot: 3.141592653589793 rad type: Transform - anchored: False type: Physics -- uid: 1212 +- uid: 1209 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -1.5,15 rot: -1.5707963267948966 rad type: Transform @@ -22354,50 +22319,50 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1213 +- uid: 1210 type: Table components: - - parent: 856 + - parent: 855 pos: 10.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1214 +- uid: 1211 type: Table components: - - parent: 856 + - parent: 855 pos: -7.5,21.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1215 +- uid: 1212 type: ChairOfficeDark components: - - parent: 856 + - parent: 855 pos: -11.5,8.5 rot: 3.141592653589793 rad type: Transform - anchored: False type: Physics -- uid: 1216 +- uid: 1213 type: Chair components: - - parent: 856 + - parent: 855 pos: -13.5,8.5 type: Transform - anchored: False type: Physics -- uid: 1217 +- uid: 1214 type: Food4NoRaisins components: - - parent: 856 + - parent: 855 pos: -1.7489221,25.142187 rot: 3.141592653589793 rad type: Transform - fillingSteps: 0 type: SolutionContainer -- uid: 1218 +- uid: 1215 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: -29.5,-9 rot: -1.5707963267948966 rad type: Transform @@ -22409,17 +22374,17 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1219 +- uid: 1216 type: TableR components: - - parent: 856 + - parent: 855 pos: 1.5,28.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1220 +- uid: 1217 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -27,1.5 rot: 3.141592653589793 rad type: Transform @@ -22431,24 +22396,24 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1221 +- uid: 1218 type: CrowbarRed components: - - parent: 856 + - parent: 855 pos: -38.496082,2.6274996 rot: 1.5707963267948966 rad type: Transform -- uid: 1222 +- uid: 1219 type: ChairWood components: - - parent: 856 + - parent: 855 pos: -30.5,0.5 rot: 1.5707963267948966 rad type: Transform -- uid: 1223 +- uid: 1220 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -20.5,3 rot: 1.5707963267948966 rad type: Transform @@ -22460,10 +22425,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1224 +- uid: 1221 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -30.5,3 rot: 1.5707963267948966 rad type: Transform @@ -22475,10 +22440,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1225 +- uid: 1222 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -32.5,6 rot: -1.5707963267948966 rad type: Transform @@ -22490,10 +22455,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1226 +- uid: 1223 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -23,8.5 rot: 3.141592653589793 rad type: Transform @@ -22505,10 +22470,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1227 +- uid: 1224 type: LockerWeldingSupplies components: - - parent: 856 + - parent: 855 pos: 38.5,9.5 rot: -1.5707963267948966 rad type: Transform @@ -22518,25 +22483,25 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 1228 +- uid: 1225 type: Welder components: - - parent: 856 + - parent: 855 pos: -29.434454,8.191761 rot: -1.5707963267948966 rad type: Transform -- uid: 1229 +- uid: 1226 type: ComputerPowerMonitoring components: - - parent: 856 + - parent: 855 pos: 29.5,-1.5 type: Transform - deadThreshold: 100 type: BreakableConstruction -- uid: 1230 +- uid: 1227 type: LockerToolFilled components: - - parent: 856 + - parent: 855 pos: 35.5,-0.5 rot: -1.5707963267948966 rad type: Transform @@ -22546,17 +22511,17 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 1231 +- uid: 1228 type: Multitool components: - - parent: 856 + - parent: 855 pos: -29.340704,7.4573865 rot: -1.5707963267948966 rad type: Transform -- uid: 1232 +- uid: 1229 type: LockerToolFilled components: - - parent: 856 + - parent: 855 pos: 35.5,0.5 rot: -1.5707963267948966 rad type: Transform @@ -22566,10 +22531,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 1233 +- uid: 1230 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -30,9.5 type: Transform - color: '#FFFFFFFF' @@ -22580,10 +22545,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1234 +- uid: 1231 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: -19,9.5 type: Transform - color: '#FFFFFFFF' @@ -22594,24 +22559,24 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1235 +- uid: 1232 type: Table components: - - parent: 856 + - parent: 855 pos: 10.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1236 +- uid: 1233 type: Table components: - - parent: 856 + - parent: 855 pos: 10.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1237 +- uid: 1234 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: -14.5,-16 rot: -1.5707963267948966 rad type: Transform @@ -22623,10 +22588,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1238 +- uid: 1235 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: -7,-12.5 type: Transform - color: '#FFFFFFFF' @@ -22637,10 +22602,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1239 +- uid: 1236 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: -11,-10.5 type: Transform - color: '#FFFFFFFF' @@ -22651,10 +22616,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1240 +- uid: 1237 type: LockerToolFilled components: - - parent: 856 + - parent: 855 pos: -27.5,11.5 rot: -1.5707963267948966 rad type: Transform @@ -22664,10 +22629,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 1241 +- uid: 1238 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -27.5,12 rot: -1.5707963267948966 rad type: Transform @@ -22679,47 +22644,47 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1242 +- uid: 1239 type: VendingMachineCola components: - - parent: 856 + - parent: 855 pos: -34.5,2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1243 +- uid: 1240 type: VendingMachineSnack components: - - parent: 856 + - parent: 855 pos: -22.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1244 +- uid: 1241 type: S components: - - parent: 856 + - parent: 855 pos: 13.715853,24.118322 rot: -1.5707963267948966 rad type: Transform -- uid: 1245 +- uid: 1242 type: Table components: - - parent: 856 + - parent: 855 pos: 18.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1246 +- uid: 1243 type: SalternApc components: - - parent: 856 + - parent: 855 pos: -5.5120974,-7.5 rot: 1.5707963267948966 rad type: Transform - - startingCharge: 11999.17 + - startingCharge: 11999.336 type: Battery -- uid: 1247 +- uid: 1244 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -3,-6.5 rot: 3.141592653589793 rad type: Transform @@ -22731,95 +22696,140 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1248 +- uid: 1245 type: Table components: - - parent: 856 + - parent: 855 pos: -29.5,9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1249 +- uid: 1246 type: Table components: - - parent: 856 + - parent: 855 pos: -29.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1250 +- uid: 1247 type: LowWall components: - - parent: 856 + - parent: 855 pos: -36.5,-8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1251 +- uid: 1248 type: LowWall components: - - parent: 856 + - parent: 855 pos: -35.5,-8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1252 +- uid: 1249 type: Catwalk components: - - parent: 856 + - parent: 855 pos: -0.5,-23.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1253 +- uid: 1250 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -2.5,-15.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 1254 +- uid: 1251 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: 6.5,-0.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 1255 +- uid: 1252 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -33.5,9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1256 +- uid: 1253 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: 6.5,0.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 1257 +- uid: 1254 type: Chair components: - - parent: 856 + - parent: 855 pos: -8.5,20.5 type: Transform - anchored: False type: Physics -- uid: 1258 +- uid: 1255 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -33.5,2.5 rot: -1.5707963267948966 rad type: Transform +- uid: 1256 + type: PoweredSmallLight + components: + - parent: 855 + pos: -19,16.5 + rot: 3.141592653589793 rad + type: Transform + - color: '#FFFFFFFF' + type: PointLight + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 1257 + type: PoweredSmallLight + components: + - parent: 855 + pos: -14.5,26 + rot: 1.5707963267948966 rad + type: Transform + - color: '#FFFFFFFF' + type: PointLight + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 1258 + type: PoweredSmallLight + components: + - parent: 855 + pos: -19,22.5 + rot: 3.141592653589793 rad + type: Transform + - color: '#FFFFFFFF' + type: PointLight + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer - uid: 1259 type: PoweredSmallLight components: - - parent: 856 - pos: -19,16.5 + - parent: 855 + pos: -18,9.5 rot: 3.141592653589793 rad type: Transform - color: '#FFFFFFFF' @@ -22833,52 +22843,7 @@ entities: - uid: 1260 type: PoweredSmallLight components: - - parent: 856 - pos: -14.5,26 - rot: 1.5707963267948966 rad - type: Transform - - color: '#FFFFFFFF' - type: PointLight - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 1261 - type: PoweredSmallLight - components: - - parent: 856 - pos: -19,22.5 - rot: 3.141592653589793 rad - type: Transform - - color: '#FFFFFFFF' - type: PointLight - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 1262 - type: PoweredSmallLight - components: - - parent: 856 - pos: -18,9.5 - rot: 3.141592653589793 rad - type: Transform - - color: '#FFFFFFFF' - type: PointLight - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 1263 - type: PoweredSmallLight - components: - - parent: 856 + - parent: 855 pos: -0.5,-12 rot: -1.5707963267948966 rad type: Transform @@ -22890,16 +22855,16 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1264 +- uid: 1261 type: Paper components: - - parent: 856 + - parent: 855 pos: 8.598616,26.075901 type: Transform -- uid: 1265 +- uid: 1262 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -11,8.5 rot: 3.141592653589793 rad type: Transform @@ -22911,10 +22876,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1266 +- uid: 1263 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -18.5,6 rot: -1.5707963267948966 rad type: Transform @@ -22926,10 +22891,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1267 +- uid: 1264 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -11.5,6 rot: -1.5707963267948966 rad type: Transform @@ -22941,10 +22906,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1268 +- uid: 1265 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -1.5,6 rot: -1.5707963267948966 rad type: Transform @@ -22956,38 +22921,38 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1269 +- uid: 1266 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -33.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1270 +- uid: 1267 type: VendingMachineEngivend components: - - parent: 856 + - parent: 855 pos: 31.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1271 +- uid: 1268 type: Table components: - - parent: 856 + - parent: 855 pos: 25.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1272 +- uid: 1269 type: Table components: - - parent: 856 + - parent: 855 pos: 29.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1273 +- uid: 1270 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 6.0308504,2 type: Transform - powerLoad: 0 @@ -22996,10 +22961,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1274 +- uid: 1271 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -0.5,-5 rot: 1.5707963267948966 rad type: Transform @@ -23011,11 +22976,48 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer +- uid: 1272 + type: Poweredlight + components: + - parent: 855 + pos: 2,-9.5 + type: Transform + - color: '#FFFFFFFF' + type: PointLight + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 1273 + type: Poweredlight + components: + - parent: 855 + pos: 2,-4.5 + type: Transform + - color: '#FFFFFFFF' + type: PointLight + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 1274 + type: SignDirectionalSci + components: + - parent: 855 + pos: 1.3437586,6.2515917 + rot: -1.5707963267948966 rad + type: Transform + - deadThreshold: 100 + type: Destructible - uid: 1275 type: Poweredlight components: - - parent: 856 - pos: 2,-9.5 + - parent: 855 + pos: 2,7.5 type: Transform - color: '#FFFFFFFF' type: PointLight @@ -23028,8 +23030,8 @@ entities: - uid: 1276 type: Poweredlight components: - - parent: 856 - pos: 2,-4.5 + - parent: 855 + pos: 2,12.5 type: Transform - color: '#FFFFFFFF' type: PointLight @@ -23040,19 +23042,26 @@ entities: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 1277 - type: SignDirectionalSci - components: - - parent: 856 - pos: 1.3437586,6.2515917 - rot: -1.5707963267948966 rad - type: Transform - - deadThreshold: 100 - type: Destructible -- uid: 1278 type: Poweredlight components: - - parent: 856 - pos: 2,7.5 + - parent: 855 + pos: -1.5,10 + rot: 1.5707963267948966 rad + type: Transform + - color: '#FFFFFFFF' + type: PointLight + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 1278 + type: PoweredSmallLight + components: + - parent: 855 + pos: -1,8.5 + rot: 3.141592653589793 rad type: Transform - color: '#FFFFFFFF' type: PointLight @@ -23063,10 +23072,11 @@ entities: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 1279 - type: Poweredlight + type: PoweredSmallLight components: - - parent: 856 - pos: 2,12.5 + - parent: 855 + pos: -4,8.5 + rot: 3.141592653589793 rad type: Transform - color: '#FFFFFFFF' type: PointLight @@ -23079,9 +23089,9 @@ entities: - uid: 1280 type: Poweredlight components: - - parent: 856 - pos: -1.5,10 - rot: 1.5707963267948966 rad + - parent: 855 + pos: -5,7.5 + rot: 3.141592653589793 rad type: Transform - color: '#FFFFFFFF' type: PointLight @@ -23092,11 +23102,10 @@ entities: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 1281 - type: PoweredSmallLight + type: Poweredlight components: - - parent: 856 - pos: -1,8.5 - rot: 3.141592653589793 rad + - parent: 855 + pos: -10,7.5 type: Transform - color: '#FFFFFFFF' type: PointLight @@ -23107,14 +23116,12 @@ entities: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 1282 - type: PoweredSmallLight + type: Poweredlight components: - - parent: 856 - pos: -4,8.5 - rot: 3.141592653589793 rad + - parent: 855 + pos: -1.5,19 + rot: -1.5707963267948966 rad type: Transform - - color: '#FFFFFFFF' - type: PointLight - powerLoad: 0 type: PowerReceiver - containers: @@ -23124,8 +23131,8 @@ entities: - uid: 1283 type: Poweredlight components: - - parent: 856 - pos: -5,7.5 + - parent: 855 + pos: -5,16.5 rot: 3.141592653589793 rad type: Transform - color: '#FFFFFFFF' @@ -23139,49 +23146,7 @@ entities: - uid: 1284 type: Poweredlight components: - - parent: 856 - pos: -10,7.5 - type: Transform - - color: '#FFFFFFFF' - type: PointLight - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 1285 - type: Poweredlight - components: - - parent: 856 - pos: -1.5,19 - rot: -1.5707963267948966 rad - type: Transform - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 1286 - type: Poweredlight - components: - - parent: 856 - pos: -5,16.5 - rot: 3.141592653589793 rad - type: Transform - - color: '#FFFFFFFF' - type: PointLight - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 1287 - type: Poweredlight - components: - - parent: 856 + - parent: 855 pos: -6.0158176,18 rot: -1.5707963267948966 rad type: Transform @@ -23191,10 +23156,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1288 +- uid: 1285 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -15,20.5 type: Transform - color: '#FFFFFFFF' @@ -23205,10 +23170,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1289 +- uid: 1286 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -7.5,22 rot: -1.5707963267948966 rad type: Transform @@ -23220,31 +23185,31 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1290 +- uid: 1287 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -34.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1291 +- uid: 1288 type: reinforced_wall components: - - parent: 856 + - parent: 855 pos: -10.5,22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1292 +- uid: 1289 type: reinforced_wall components: - - parent: 856 + - parent: 855 pos: -10.5,21.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1293 +- uid: 1290 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: -7.5,26 rot: 1.5707963267948966 rad type: Transform @@ -23256,17 +23221,17 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1294 +- uid: 1291 type: AirlockMaintCommonLocked components: - - parent: 856 + - parent: 855 pos: 1.5,-23.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1295 +- uid: 1292 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: -4,17.5 rot: 3.141592653589793 rad type: Transform @@ -23278,11 +23243,55 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer +- uid: 1293 + type: Poweredlight + components: + - parent: 855 + pos: -3,25.5 + type: Transform + - color: '#FFFFFFFF' + type: PointLight + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 1294 + type: Poweredlight + components: + - parent: 855 + pos: 10,30.5 + rot: 3.141592653589793 rad + type: Transform + - color: '#FFFFFFFF' + type: PointLight + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 1295 + type: Poweredlight + components: + - parent: 855 + pos: -3,30.5 + type: Transform + - color: '#FFFFFFFF' + type: PointLight + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer - uid: 1296 type: Poweredlight components: - - parent: 856 - pos: -3,25.5 + - parent: 855 + pos: 5.5,28 + rot: 1.5707963267948966 rad type: Transform - color: '#FFFFFFFF' type: PointLight @@ -23295,9 +23304,9 @@ entities: - uid: 1297 type: Poweredlight components: - - parent: 856 - pos: 10,30.5 - rot: 3.141592653589793 rad + - parent: 855 + pos: 1.5,28 + rot: 1.5707963267948966 rad type: Transform - color: '#FFFFFFFF' type: PointLight @@ -23310,8 +23319,9 @@ entities: - uid: 1298 type: Poweredlight components: - - parent: 856 - pos: -3,30.5 + - parent: 855 + pos: 10,25.5 + rot: 3.141592653589793 rad type: Transform - color: '#FFFFFFFF' type: PointLight @@ -23324,9 +23334,9 @@ entities: - uid: 1299 type: Poweredlight components: - - parent: 856 - pos: 5.5,28 - rot: 1.5707963267948966 rad + - parent: 855 + pos: 5,23.5 + rot: 3.141592653589793 rad type: Transform - color: '#FFFFFFFF' type: PointLight @@ -23339,9 +23349,8 @@ entities: - uid: 1300 type: Poweredlight components: - - parent: 856 - pos: 1.5,28 - rot: 1.5707963267948966 rad + - parent: 855 + pos: 2,23.5 type: Transform - color: '#FFFFFFFF' type: PointLight @@ -23354,9 +23363,9 @@ entities: - uid: 1301 type: Poweredlight components: - - parent: 856 - pos: 10,25.5 - rot: 3.141592653589793 rad + - parent: 855 + pos: 5.5,16 + rot: 1.5707963267948966 rad type: Transform - color: '#FFFFFFFF' type: PointLight @@ -23369,9 +23378,9 @@ entities: - uid: 1302 type: Poweredlight components: - - parent: 856 - pos: 5,23.5 - rot: 3.141592653589793 rad + - parent: 855 + pos: 1.5,16 + rot: 1.5707963267948966 rad type: Transform - color: '#FFFFFFFF' type: PointLight @@ -23384,8 +23393,9 @@ entities: - uid: 1303 type: Poweredlight components: - - parent: 856 - pos: 2,23.5 + - parent: 855 + pos: 8.5,16 + rot: 1.5707963267948966 rad type: Transform - color: '#FFFFFFFF' type: PointLight @@ -23396,41 +23406,25 @@ entities: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 1304 - type: Poweredlight + type: solid_wall components: - - parent: 856 - pos: 5.5,16 - rot: 1.5707963267948966 rad + - parent: 855 + pos: -34.5,0.5 + rot: -1.5707963267948966 rad type: Transform - - color: '#FFFFFFFF' - type: PointLight - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer - uid: 1305 - type: Poweredlight + type: solid_wall components: - - parent: 856 - pos: 1.5,16 - rot: 1.5707963267948966 rad + - parent: 855 + pos: -34.5,-0.5 + rot: -1.5707963267948966 rad type: Transform - - color: '#FFFFFFFF' - type: PointLight - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer - uid: 1306 type: Poweredlight components: - - parent: 856 - pos: 8.5,16 - rot: 1.5707963267948966 rad + - parent: 855 + pos: 8.5,22 + rot: -1.5707963267948966 rad type: Transform - color: '#FFFFFFFF' type: PointLight @@ -23443,64 +23437,35 @@ entities: - uid: 1307 type: solid_wall components: - - parent: 856 - pos: -34.5,0.5 + - parent: 855 + pos: -34.5,-1.5 rot: -1.5707963267948966 rad type: Transform - uid: 1308 type: solid_wall components: - - parent: 856 - pos: -34.5,-0.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1309 - type: Poweredlight - components: - - parent: 856 - pos: 8.5,22 - rot: -1.5707963267948966 rad - type: Transform - - color: '#FFFFFFFF' - type: PointLight - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 1310 - type: solid_wall - components: - - parent: 856 - pos: -34.5,-1.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1311 - type: solid_wall - components: - - parent: 856 + - parent: 855 pos: -34.5,-2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1312 +- uid: 1309 type: solid_wall components: - - parent: 856 + - parent: 855 pos: 8.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1313 +- uid: 1310 type: solid_wall components: - - parent: 856 + - parent: 855 pos: 7.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1314 +- uid: 1311 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: 17,15.5 type: Transform - color: '#FFFFFFFF' @@ -23511,10 +23476,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1315 +- uid: 1312 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: 14,16.5 type: Transform - color: '#FFFFFFFF' @@ -23525,10 +23490,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1316 +- uid: 1313 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: 8.5,15 rot: 1.5707963267948966 rad type: Transform @@ -23540,11 +23505,56 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer +- uid: 1314 + type: Poweredlight + components: + - parent: 855 + pos: 6,9.5 + type: Transform + - color: '#FFFFFFFF' + type: PointLight + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 1315 + type: Poweredlight + components: + - parent: 855 + pos: 11,9.5 + rot: 3.141592653589793 rad + type: Transform + - color: '#FFFFFFFF' + type: PointLight + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 1316 + type: Poweredlight + components: + - parent: 855 + pos: 13.5,3 + rot: 1.5707963267948966 rad + type: Transform + - color: '#FFFFFFFF' + type: PointLight + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer - uid: 1317 type: Poweredlight components: - - parent: 856 - pos: 6,9.5 + - parent: 855 + pos: 18.5,3 + rot: 1.5707963267948966 rad type: Transform - color: '#FFFFFFFF' type: PointLight @@ -23557,9 +23567,9 @@ entities: - uid: 1318 type: Poweredlight components: - - parent: 856 - pos: 11,9.5 - rot: 3.141592653589793 rad + - parent: 855 + pos: 23.5,3 + rot: 1.5707963267948966 rad type: Transform - color: '#FFFFFFFF' type: PointLight @@ -23572,9 +23582,9 @@ entities: - uid: 1319 type: Poweredlight components: - - parent: 856 - pos: 13.5,3 - rot: 1.5707963267948966 rad + - parent: 855 + pos: 17,7.5 + rot: 3.141592653589793 rad type: Transform - color: '#FFFFFFFF' type: PointLight @@ -23587,9 +23597,8 @@ entities: - uid: 1320 type: Poweredlight components: - - parent: 856 - pos: 18.5,3 - rot: 1.5707963267948966 rad + - parent: 855 + pos: 12,10.5 type: Transform - color: '#FFFFFFFF' type: PointLight @@ -23602,9 +23611,9 @@ entities: - uid: 1321 type: Poweredlight components: - - parent: 856 - pos: 23.5,3 - rot: 1.5707963267948966 rad + - parent: 855 + pos: 15.5,13 + rot: -1.5707963267948966 rad type: Transform - color: '#FFFFFFFF' type: PointLight @@ -23617,9 +23626,8 @@ entities: - uid: 1322 type: Poweredlight components: - - parent: 856 - pos: 17,7.5 - rot: 3.141592653589793 rad + - parent: 855 + pos: 18,8.5 type: Transform - color: '#FFFFFFFF' type: PointLight @@ -23632,50 +23640,7 @@ entities: - uid: 1323 type: Poweredlight components: - - parent: 856 - pos: 12,10.5 - type: Transform - - color: '#FFFFFFFF' - type: PointLight - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 1324 - type: Poweredlight - components: - - parent: 856 - pos: 15.5,13 - rot: -1.5707963267948966 rad - type: Transform - - color: '#FFFFFFFF' - type: PointLight - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 1325 - type: Poweredlight - components: - - parent: 856 - pos: 18,8.5 - type: Transform - - color: '#FFFFFFFF' - type: PointLight - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 1326 - type: Poweredlight - components: - - parent: 856 + - parent: 855 pos: 18,13.5 type: Transform - color: '#FFFFFFFF' @@ -23686,24 +23651,24 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1327 +- uid: 1324 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -34.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1328 +- uid: 1325 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -34.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1329 +- uid: 1326 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 5.5,-22 rot: 1.5707963267948966 rad type: Transform @@ -23715,10 +23680,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1330 +- uid: 1327 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 1.5,-22 rot: 1.5707963267948966 rad type: Transform @@ -23730,10 +23695,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1331 +- uid: 1328 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 6,-17.5 rot: 3.141592653589793 rad type: Transform @@ -23745,10 +23710,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1332 +- uid: 1329 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 1,-17.5 type: Transform - color: '#FFFFFFFF' @@ -23759,19 +23724,19 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1333 +- uid: 1330 type: SignCargo components: - - parent: 856 + - parent: 855 pos: 16.688538,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 1334 +- uid: 1331 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 13,-3.5 rot: 3.141592653589793 rad type: Transform @@ -23783,17 +23748,17 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1335 +- uid: 1332 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -34.5,-5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1336 +- uid: 1333 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 12.5,2 rot: -1.5707963267948966 rad type: Transform @@ -23805,26 +23770,26 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1337 +- uid: 1334 type: SignDirectionalMed components: - - parent: 856 + - parent: 855 pos: 5.768486,-12.5 rot: 1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 1338 +- uid: 1335 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -31.5,-2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1339 +- uid: 1336 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 6,-4.5 type: Transform - color: '#FFFFFFFF' @@ -23835,10 +23800,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1340 +- uid: 1337 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 6.5,-12 rot: 1.5707963267948966 rad type: Transform @@ -23850,10 +23815,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1341 +- uid: 1338 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 9.5,-17 rot: 1.5707963267948966 rad type: Transform @@ -23865,10 +23830,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1342 +- uid: 1339 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 12,-12.5 type: Transform - color: '#FFFFFFFF' @@ -23879,42 +23844,42 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1343 +- uid: 1340 type: solid_wall components: - - parent: 856 + - parent: 855 pos: 51.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1344 +- uid: 1341 type: solid_wall components: - - parent: 856 + - parent: 855 pos: 47.5,5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1345 +- uid: 1342 type: ChairOfficeLight components: - - parent: 856 + - parent: 855 pos: 10.5,-16.5 rot: 3.141592653589793 rad type: Transform - anchored: False type: Physics -- uid: 1346 +- uid: 1343 type: ChairOfficeLight components: - - parent: 856 + - parent: 855 pos: 14.5,0.5 rot: 3.141592653589793 rad type: Transform - anchored: False type: Physics -- uid: 1347 +- uid: 1344 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 15.5,2 rot: -1.5707963267948966 rad type: Transform @@ -23926,10 +23891,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1348 +- uid: 1345 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 19,-0.5 rot: 3.141592653589793 rad type: Transform @@ -23941,10 +23906,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1349 +- uid: 1346 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 20,-8.5 rot: 3.141592653589793 rad type: Transform @@ -23956,10 +23921,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1350 +- uid: 1347 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 12.518894,-11 rot: 1.5707963267948966 rad type: Transform @@ -23969,10 +23934,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1351 +- uid: 1348 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 25,11.5 rot: 3.141592653589793 rad type: Transform @@ -23984,17 +23949,17 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1352 +- uid: 1349 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -31.5,-1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1353 +- uid: 1350 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: 30.5,-6 rot: 1.5707963267948966 rad type: Transform @@ -24006,10 +23971,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1354 +- uid: 1351 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: 25.5,-1 rot: 1.5707963267948966 rad type: Transform @@ -24021,10 +23986,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1355 +- uid: 1352 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: 9.5,-18 rot: 1.5707963267948966 rad type: Transform @@ -24036,40 +24001,40 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1356 +- uid: 1353 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -31.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1357 +- uid: 1354 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -31.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1358 +- uid: 1355 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -32.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 1359 +- uid: 1356 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -31.5,2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1360 +- uid: 1357 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: 12.5,-19 rot: 1.5707963267948966 rad type: Transform @@ -24081,24 +24046,24 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1361 +- uid: 1358 type: solid_wall components: - - parent: 856 + - parent: 855 pos: 45.5,6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1362 +- uid: 1359 type: solid_wall components: - - parent: 856 + - parent: 855 pos: 45.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1363 +- uid: 1360 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: 25.5,-19 rot: -1.5707963267948966 rad type: Transform @@ -24110,10 +24075,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1364 +- uid: 1361 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: 28,-15.5 type: Transform - color: '#FFFFFFFF' @@ -24124,45 +24089,45 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1365 +- uid: 1362 type: Catwalk components: - - parent: 856 + - parent: 855 pos: 7.5,-19.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1366 +- uid: 1363 type: Catwalk components: - - parent: 856 + - parent: 855 pos: 14.5,-19.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1367 +- uid: 1364 type: Catwalk components: - - parent: 856 + - parent: 855 pos: 21.5,-10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1368 +- uid: 1365 type: Catwalk components: - - parent: 856 + - parent: 855 pos: 26.5,-10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1369 +- uid: 1366 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -30.5,2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1370 +- uid: 1367 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: 28,-10.5 type: Transform - color: '#FFFFFFFF' @@ -24173,18 +24138,63 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1371 +- uid: 1368 type: Window components: - - parent: 856 + - parent: 855 pos: -25.5,9.5 rot: -1.5707963267948966 rad type: Transform +- uid: 1369 + type: PoweredSmallLight + components: + - parent: 855 + pos: 24,0.5 + type: Transform + - color: '#FFFFFFFF' + type: PointLight + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 1370 + type: PoweredSmallLight + components: + - parent: 855 + pos: 26,-4.5 + rot: 3.141592653589793 rad + type: Transform + - color: '#FFFFFFFF' + type: PointLight + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 1371 + type: PoweredSmallLight + components: + - parent: 855 + pos: 35.5,-6 + rot: 1.5707963267948966 rad + type: Transform + - color: '#FFFFFFFF' + type: PointLight + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer - uid: 1372 type: PoweredSmallLight components: - - parent: 856 - pos: 24,0.5 + - parent: 855 + pos: 38.5,-3 + rot: 1.5707963267948966 rad type: Transform - color: '#FFFFFFFF' type: PointLight @@ -24197,52 +24207,7 @@ entities: - uid: 1373 type: PoweredSmallLight components: - - parent: 856 - pos: 26,-4.5 - rot: 3.141592653589793 rad - type: Transform - - color: '#FFFFFFFF' - type: PointLight - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 1374 - type: PoweredSmallLight - components: - - parent: 856 - pos: 35.5,-6 - rot: 1.5707963267948966 rad - type: Transform - - color: '#FFFFFFFF' - type: PointLight - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 1375 - type: PoweredSmallLight - components: - - parent: 856 - pos: 38.5,-3 - rot: 1.5707963267948966 rad - type: Transform - - color: '#FFFFFFFF' - type: PointLight - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 1376 - type: PoweredSmallLight - components: - - parent: 856 + - parent: 855 pos: 26,11.5 rot: 3.141592653589793 rad type: Transform @@ -24254,10 +24219,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1377 +- uid: 1374 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -35,-4.5 rot: 3.141592653589793 rad type: Transform @@ -24269,11 +24234,49 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer +- uid: 1375 + type: Poweredlight + components: + - parent: 855 + pos: 25,1.5 + type: Transform + - color: '#FFFFFFFF' + type: PointLight + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 1376 + type: Poweredlight + components: + - parent: 855 + pos: 30,1.5 + rot: 3.141592653589793 rad + type: Transform + - color: '#FFFFFFFF' + type: PointLight + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 1377 + type: SignEngineering + components: + - parent: 855 + pos: 26.30795,7.5 + rot: -1.5707963267948966 rad + type: Transform + - deadThreshold: 100 + type: Destructible - uid: 1378 type: Poweredlight components: - - parent: 856 - pos: 25,1.5 + - parent: 855 + pos: 31,0.5 type: Transform - color: '#FFFFFFFF' type: PointLight @@ -24286,9 +24289,9 @@ entities: - uid: 1379 type: Poweredlight components: - - parent: 856 - pos: 30,1.5 - rot: 3.141592653589793 rad + - parent: 855 + pos: 31.5,2 + rot: 1.5707963267948966 rad type: Transform - color: '#FFFFFFFF' type: PointLight @@ -24299,19 +24302,25 @@ entities: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 1380 - type: SignEngineering + type: Poweredlight components: - - parent: 856 - pos: 26.30795,7.5 + - parent: 855 + pos: 35.5,7 rot: -1.5707963267948966 rad type: Transform - - deadThreshold: 100 - type: Destructible + - color: '#FFFFFFFF' + type: PointLight + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer - uid: 1381 type: Poweredlight components: - - parent: 856 - pos: 31,0.5 + - parent: 855 + pos: 29,-2.5 type: Transform - color: '#FFFFFFFF' type: PointLight @@ -24324,51 +24333,7 @@ entities: - uid: 1382 type: Poweredlight components: - - parent: 856 - pos: 31.5,2 - rot: 1.5707963267948966 rad - type: Transform - - color: '#FFFFFFFF' - type: PointLight - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 1383 - type: Poweredlight - components: - - parent: 856 - pos: 35.5,7 - rot: -1.5707963267948966 rad - type: Transform - - color: '#FFFFFFFF' - type: PointLight - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 1384 - type: Poweredlight - components: - - parent: 856 - pos: 29,-2.5 - type: Transform - - color: '#FFFFFFFF' - type: PointLight - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 1385 - type: Poweredlight - components: - - parent: 856 + - parent: 855 pos: 36,-2.5 rot: 3.141592653589793 rad type: Transform @@ -24380,24 +24345,24 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1386 +- uid: 1383 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -27.5,2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1387 +- uid: 1384 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -26.5,2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1388 +- uid: 1385 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 30,12.5 type: Transform - color: '#FFFFFFFF' @@ -24408,10 +24373,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1389 +- uid: 1386 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 37,12.5 rot: 3.141592653589793 rad type: Transform @@ -24423,10 +24388,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1390 +- uid: 1387 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 36.5,8 rot: 1.5707963267948966 rad type: Transform @@ -24438,10 +24403,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1391 +- uid: 1388 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: 44,-1.5 type: Transform - color: '#FFFFFFFF' @@ -24452,26 +24417,26 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1392 +- uid: 1389 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -4.5,5.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 1393 +- uid: 1390 type: reinforced_wall components: - - parent: 856 + - parent: 855 pos: 12.5,25.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1394 +- uid: 1391 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 30.5,8 rot: 1.5707963267948966 rad type: Transform @@ -24483,10 +24448,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1395 +- uid: 1392 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 38.5,-2 rot: 1.5707963267948966 rad type: Transform @@ -24498,10 +24463,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1396 +- uid: 1393 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 37,2.5 type: Transform - color: '#FFFFFFFF' @@ -24512,74 +24477,74 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1397 +- uid: 1394 type: SignDirectionalEng components: - - parent: 856 + - parent: 855 pos: 18.507353,6.5 type: Transform - deadThreshold: 100 type: Destructible -- uid: 1398 +- uid: 1395 type: WaterTankFull components: - - parent: 856 + - parent: 855 pos: 35.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1399 +- uid: 1396 type: WaterTankFull components: - - parent: 856 + - parent: 855 pos: -19.5,7.5 rot: -1.5707963267948966 rad type: Transform +- uid: 1397 + type: ReinforcedWindow + components: + - parent: 855 + pos: 51.5,2.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1398 + type: solid_wall + components: + - parent: 855 + pos: -26.5,1.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1399 + type: TableGlass + components: + - parent: 855 + pos: -2.5,-13.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 1400 type: ReinforcedWindow components: - - parent: 856 - pos: 51.5,2.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1401 - type: solid_wall - components: - - parent: 856 - pos: -26.5,1.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1402 - type: TableGlass - components: - - parent: 856 - pos: -2.5,-13.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1403 - type: ReinforcedWindow - components: - - parent: 856 + - parent: 855 pos: 51.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1404 +- uid: 1401 type: AirlockCommandGlassLocked components: - - parent: 856 + - parent: 855 pos: 4.5,27.5 rot: 1.5707963267948966 rad type: Transform -- uid: 1405 +- uid: 1402 type: LowWall components: - - parent: 856 + - parent: 855 pos: 3.5,27.5 rot: 1.5707963267948966 rad type: Transform -- uid: 1406 +- uid: 1403 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: 6.5,20.5 rot: 1.5707963267948966 rad type: Transform @@ -24587,1247 +24552,1257 @@ entities: type: Physics - airBlocked: False type: Airtight +- uid: 1404 + type: ReinforcedWindow + components: + - parent: 855 + pos: 5.5,-23.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1405 + type: ReinforcedWindow + components: + - parent: 855 + pos: 5.5,-24.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1406 + type: ReinforcedWindow + components: + - parent: 855 + pos: 4.5,-24.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 1407 type: ReinforcedWindow components: - - parent: 856 - pos: 5.5,-23.5 + - parent: 855 + pos: 3.5,-24.5 rot: -1.5707963267948966 rad type: Transform - uid: 1408 type: ReinforcedWindow components: - - parent: 856 - pos: 5.5,-24.5 + - parent: 855 + pos: 2.5,-24.5 rot: -1.5707963267948966 rad type: Transform - uid: 1409 - type: ReinforcedWindow + type: Window components: - - parent: 856 - pos: 4.5,-24.5 + - parent: 855 + pos: -1.5,27.5 rot: -1.5707963267948966 rad type: Transform - uid: 1410 - type: ReinforcedWindow + type: Window components: - - parent: 856 - pos: 3.5,-24.5 + - parent: 855 + pos: -0.5,27.5 rot: -1.5707963267948966 rad type: Transform - uid: 1411 type: ReinforcedWindow components: - - parent: 856 - pos: 2.5,-24.5 + - parent: 855 + pos: 3.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 1412 - type: Window + type: ReinforcedWindow components: - - parent: 856 - pos: -1.5,27.5 + - parent: 855 + pos: 10.5,29.5 rot: -1.5707963267948966 rad type: Transform - uid: 1413 - type: Window + type: ReinforcedWindow components: - - parent: 856 - pos: -0.5,27.5 + - parent: 855 + pos: 9.5,32.5 rot: -1.5707963267948966 rad type: Transform - uid: 1414 type: ReinforcedWindow components: - - parent: 856 - pos: 3.5,22.5 + - parent: 855 + pos: 9.5,31.5 rot: -1.5707963267948966 rad type: Transform - uid: 1415 type: ReinforcedWindow components: - - parent: 856 - pos: 10.5,29.5 + - parent: 855 + pos: 8.5,32.5 rot: -1.5707963267948966 rad type: Transform - uid: 1416 type: ReinforcedWindow components: - - parent: 856 - pos: 9.5,32.5 + - parent: 855 + pos: 8.5,33.5 rot: -1.5707963267948966 rad type: Transform - uid: 1417 type: ReinforcedWindow components: - - parent: 856 - pos: 9.5,31.5 + - parent: 855 + pos: 7.5,33.5 rot: -1.5707963267948966 rad type: Transform - uid: 1418 type: ReinforcedWindow components: - - parent: 856 - pos: 8.5,32.5 + - parent: 855 + pos: 6.5,33.5 rot: -1.5707963267948966 rad type: Transform - uid: 1419 type: ReinforcedWindow components: - - parent: 856 - pos: 8.5,33.5 + - parent: 855 + pos: 5.5,33.5 rot: -1.5707963267948966 rad type: Transform - uid: 1420 type: ReinforcedWindow components: - - parent: 856 - pos: 7.5,33.5 + - parent: 855 + pos: 4.5,33.5 rot: -1.5707963267948966 rad type: Transform - uid: 1421 type: ReinforcedWindow components: - - parent: 856 - pos: 6.5,33.5 + - parent: 855 + pos: 3.5,33.5 rot: -1.5707963267948966 rad type: Transform - uid: 1422 type: ReinforcedWindow components: - - parent: 856 - pos: 5.5,33.5 + - parent: 855 + pos: 2.5,33.5 rot: -1.5707963267948966 rad type: Transform - uid: 1423 type: ReinforcedWindow components: - - parent: 856 - pos: 4.5,33.5 + - parent: 855 + pos: 1.5,33.5 rot: -1.5707963267948966 rad type: Transform - uid: 1424 type: ReinforcedWindow components: - - parent: 856 - pos: 3.5,33.5 + - parent: 855 + pos: 0.5,33.5 rot: -1.5707963267948966 rad type: Transform - uid: 1425 type: ReinforcedWindow components: - - parent: 856 - pos: 2.5,33.5 + - parent: 855 + pos: -0.5,33.5 rot: -1.5707963267948966 rad type: Transform - uid: 1426 type: ReinforcedWindow components: - - parent: 856 - pos: 1.5,33.5 + - parent: 855 + pos: -1.5,33.5 rot: -1.5707963267948966 rad type: Transform - uid: 1427 type: ReinforcedWindow components: - - parent: 856 - pos: 0.5,33.5 + - parent: 855 + pos: -1.5,32.5 rot: -1.5707963267948966 rad type: Transform - uid: 1428 type: ReinforcedWindow components: - - parent: 856 - pos: -0.5,33.5 + - parent: 855 + pos: -3.5,29.5 rot: -1.5707963267948966 rad type: Transform - uid: 1429 type: ReinforcedWindow components: - - parent: 856 - pos: -1.5,33.5 + - parent: 855 + pos: -2.5,32.5 rot: -1.5707963267948966 rad type: Transform - uid: 1430 type: ReinforcedWindow components: - - parent: 856 - pos: -1.5,32.5 + - parent: 855 + pos: -2.5,31.5 rot: -1.5707963267948966 rad type: Transform - uid: 1431 - type: ReinforcedWindow + type: Window components: - - parent: 856 - pos: -3.5,29.5 + - parent: 855 + pos: -7.5,18.5 rot: -1.5707963267948966 rad type: Transform - uid: 1432 - type: ReinforcedWindow + type: Window components: - - parent: 856 - pos: -2.5,32.5 + - parent: 855 + pos: -10.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 1433 type: ReinforcedWindow components: - - parent: 856 - pos: -2.5,31.5 + - parent: 855 + pos: -7.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 1434 - type: Window + type: ReinforcedWindow components: - - parent: 856 - pos: -7.5,18.5 + - parent: 855 + pos: -8.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 1435 - type: Window + type: ReinforcedWindow components: - - parent: 856 - pos: -10.5,14.5 + - parent: 855 + pos: -3.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 1436 type: ReinforcedWindow components: - - parent: 856 - pos: -7.5,9.5 + - parent: 855 + pos: -0.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 1437 type: ReinforcedWindow components: - - parent: 856 - pos: -8.5,9.5 + - parent: 855 + pos: 0.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1438 type: ReinforcedWindow components: - - parent: 856 - pos: -3.5,9.5 + - parent: 855 + pos: -0.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1439 type: ReinforcedWindow components: - - parent: 856 - pos: -0.5,9.5 + - parent: 855 + pos: -2.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1440 type: ReinforcedWindow components: - - parent: 856 - pos: 0.5,6.5 + - parent: 855 + pos: -3.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1441 - type: ReinforcedWindow + type: solid_wall components: - - parent: 856 - pos: -0.5,6.5 + - parent: 855 + pos: -28.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 1442 - type: ReinforcedWindow + type: solid_wall components: - - parent: 856 - pos: -2.5,6.5 + - parent: 855 + pos: -29.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 1443 type: ReinforcedWindow components: - - parent: 856 - pos: -3.5,6.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1444 - type: solid_wall - components: - - parent: 856 - pos: -28.5,2.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1445 - type: solid_wall - components: - - parent: 856 - pos: -29.5,2.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1446 - type: ReinforcedWindow - components: - - parent: 856 + - parent: 855 pos: -35.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1447 +- uid: 1444 type: ReinforcedWindow components: - - parent: 856 + - parent: 855 pos: -36.5,11.5 rot: -1.5707963267948966 rad type: Transform +- uid: 1445 + type: ReinforcedWindow + components: + - parent: 855 + pos: -37.5,11.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1446 + type: solid_wall + components: + - parent: 855 + pos: -39.5,11.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1447 + type: solid_wall + components: + - parent: 855 + pos: -25.5,1.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 1448 type: ReinforcedWindow components: - - parent: 856 - pos: -37.5,11.5 + - parent: 855 + pos: -40.5,10.5 rot: -1.5707963267948966 rad type: Transform - uid: 1449 - type: solid_wall + type: ReinforcedWindow components: - - parent: 856 - pos: -39.5,11.5 + - parent: 855 + pos: -41.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 1450 - type: solid_wall + type: ReinforcedWindow components: - - parent: 856 - pos: -25.5,1.5 + - parent: 855 + pos: -40.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 1451 type: ReinforcedWindow components: - - parent: 856 - pos: -40.5,10.5 + - parent: 855 + pos: -39.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 1452 type: ReinforcedWindow components: - - parent: 856 - pos: -41.5,9.5 + - parent: 855 + pos: -39.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 1453 type: ReinforcedWindow components: - - parent: 856 - pos: -40.5,9.5 + - parent: 855 + pos: -41.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 1454 type: ReinforcedWindow components: - - parent: 856 - pos: -39.5,9.5 + - parent: 855 + pos: -40.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 1455 type: ReinforcedWindow components: - - parent: 856 - pos: -39.5,7.5 + - parent: 855 + pos: -40.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1456 type: ReinforcedWindow components: - - parent: 856 - pos: -41.5,7.5 + - parent: 855 + pos: -41.5,5.5 rot: -1.5707963267948966 rad type: Transform - uid: 1457 type: ReinforcedWindow components: - - parent: 856 - pos: -40.5,7.5 + - parent: 855 + pos: -40.5,5.5 rot: -1.5707963267948966 rad type: Transform - uid: 1458 type: ReinforcedWindow components: - - parent: 856 - pos: -40.5,6.5 + - parent: 855 + pos: -39.5,5.5 rot: -1.5707963267948966 rad type: Transform - uid: 1459 type: ReinforcedWindow components: - - parent: 856 - pos: -41.5,5.5 + - parent: 855 + pos: -39.5,3.5 rot: -1.5707963267948966 rad type: Transform - uid: 1460 type: ReinforcedWindow components: - - parent: 856 - pos: -40.5,5.5 + - parent: 855 + pos: -41.5,3.5 rot: -1.5707963267948966 rad type: Transform - uid: 1461 type: ReinforcedWindow components: - - parent: 856 - pos: -39.5,5.5 + - parent: 855 + pos: -40.5,3.5 rot: -1.5707963267948966 rad type: Transform - uid: 1462 type: ReinforcedWindow components: - - parent: 856 - pos: -39.5,3.5 + - parent: 855 + pos: -40.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 1463 type: ReinforcedWindow components: - - parent: 856 - pos: -41.5,3.5 + - parent: 855 + pos: -40.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 1464 type: ReinforcedWindow components: - - parent: 856 - pos: -40.5,3.5 + - parent: 855 + pos: -39.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 1465 type: ReinforcedWindow components: - - parent: 856 - pos: -40.5,2.5 + - parent: 855 + pos: -38.5,0.5 rot: -1.5707963267948966 rad type: Transform - uid: 1466 type: ReinforcedWindow components: - - parent: 856 - pos: -40.5,1.5 + - parent: 855 + pos: -38.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 1467 type: ReinforcedWindow components: - - parent: 856 - pos: -39.5,1.5 + - parent: 855 + pos: -38.5,-1.5 rot: -1.5707963267948966 rad type: Transform - uid: 1468 - type: ReinforcedWindow + type: solid_wall components: - - parent: 856 - pos: -38.5,0.5 + - parent: 855 + pos: -38.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 1469 type: ReinforcedWindow components: - - parent: 856 - pos: -38.5,-0.5 + - parent: 855 + pos: -39.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 1470 type: ReinforcedWindow components: - - parent: 856 - pos: -38.5,-1.5 + - parent: 855 + pos: -38.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 1471 - type: solid_wall + type: ReinforcedWindow components: - - parent: 856 - pos: -38.5,1.5 + - parent: 855 + pos: -39.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 1472 type: ReinforcedWindow components: - - parent: 856 - pos: -39.5,-2.5 + - parent: 855 + pos: -37.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 1473 type: ReinforcedWindow components: - - parent: 856 - pos: -38.5,-2.5 + - parent: 855 + pos: -38.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 1474 type: ReinforcedWindow components: - - parent: 856 - pos: -39.5,-4.5 + - parent: 855 + pos: -38.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 1475 type: ReinforcedWindow components: - - parent: 856 - pos: -37.5,-4.5 + - parent: 855 + pos: -38.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1476 type: ReinforcedWindow components: - - parent: 856 - pos: -38.5,-4.5 + - parent: 855 + pos: -38.5,-7.5 rot: -1.5707963267948966 rad type: Transform - uid: 1477 type: ReinforcedWindow components: - - parent: 856 - pos: -38.5,-5.5 + - parent: 855 + pos: -38.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1478 type: ReinforcedWindow components: - - parent: 856 - pos: -38.5,-6.5 + - parent: 855 + pos: -37.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1479 type: ReinforcedWindow components: - - parent: 856 - pos: -38.5,-7.5 + - parent: 855 + pos: -36.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1480 type: ReinforcedWindow components: - - parent: 856 - pos: -38.5,-8.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1481 - type: ReinforcedWindow - components: - - parent: 856 - pos: -37.5,-8.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1482 - type: ReinforcedWindow - components: - - parent: 856 - pos: -36.5,-8.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1483 - type: ReinforcedWindow - components: - - parent: 856 + - parent: 855 pos: -35.5,-8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1484 +- uid: 1481 type: LowWall components: - - parent: 856 + - parent: 855 pos: -27.5,6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1485 +- uid: 1482 type: solid_wall components: - - parent: 856 + - parent: 855 pos: 25.5,-6.5 rot: 1.5707963267948966 rad type: Transform -- uid: 1486 +- uid: 1483 type: LowWall components: - - parent: 856 + - parent: 855 pos: -29.5,6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1487 +- uid: 1484 type: Window components: - - parent: 856 + - parent: 855 pos: -29.5,6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1488 +- uid: 1485 type: Window components: - - parent: 856 + - parent: 855 pos: -28.5,6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1489 +- uid: 1486 type: Window components: - - parent: 856 + - parent: 855 pos: -27.5,6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1490 +- uid: 1487 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -7.5,-25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 1491 +- uid: 1488 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -7.5,-26.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible +- uid: 1489 + type: Window + components: + - parent: 855 + pos: -2.5,-21.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1490 + type: Window + components: + - parent: 855 + pos: -4.5,-21.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1491 + type: Window + components: + - parent: 855 + pos: -5.5,-21.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 1492 type: Window components: - - parent: 856 - pos: -2.5,-21.5 + - parent: 855 + pos: -4.5,-18.5 rot: -1.5707963267948966 rad type: Transform - uid: 1493 type: Window components: - - parent: 856 - pos: -4.5,-21.5 + - parent: 855 + pos: -2.5,-18.5 rot: -1.5707963267948966 rad type: Transform - uid: 1494 type: Window components: - - parent: 856 - pos: -5.5,-21.5 + - parent: 855 + pos: 0.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 1495 type: Window components: - - parent: 856 - pos: -4.5,-18.5 + - parent: 855 + pos: 5.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1496 type: Window components: - - parent: 856 - pos: -2.5,-18.5 + - parent: 855 + pos: 5.5,-9.5 rot: -1.5707963267948966 rad type: Transform - uid: 1497 type: Window components: - - parent: 856 - pos: 0.5,-16.5 + - parent: 855 + pos: 5.5,-10.5 rot: -1.5707963267948966 rad type: Transform - uid: 1498 type: Window components: - - parent: 856 - pos: 5.5,-8.5 + - parent: 855 + pos: 7.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 1499 type: Window components: - - parent: 856 - pos: 5.5,-9.5 + - parent: 855 + pos: 10.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 1500 type: Window components: - - parent: 856 - pos: 5.5,-10.5 + - parent: 855 + pos: 11.5,-13.5 rot: -1.5707963267948966 rad type: Transform - uid: 1501 type: Window components: - - parent: 856 - pos: 7.5,-12.5 + - parent: 855 + pos: 11.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 1502 - type: Window + type: LowWall components: - - parent: 856 - pos: 10.5,-12.5 + - parent: 855 + pos: 11.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 1503 - type: Window + type: LowWall components: - - parent: 856 + - parent: 855 pos: 11.5,-13.5 rot: -1.5707963267948966 rad type: Transform - uid: 1504 - type: Window + type: LowWall components: - - parent: 856 - pos: 11.5,-16.5 + - parent: 855 + pos: 7.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 1505 type: LowWall components: - - parent: 856 - pos: 11.5,-16.5 + - parent: 855 + pos: 10.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 1506 - type: LowWall + type: Window components: - - parent: 856 - pos: 11.5,-13.5 + - parent: 855 + pos: 20.5,-15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1507 type: LowWall components: - - parent: 856 - pos: 7.5,-12.5 + - parent: 855 + pos: 20.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 1508 type: LowWall components: - - parent: 856 - pos: 10.5,-12.5 + - parent: 855 + pos: 20.5,-15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1509 - type: Window + type: Table components: - - parent: 856 - pos: 20.5,-15.5 + - parent: 855 + pos: 6.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 1510 - type: LowWall + type: Window components: - - parent: 856 - pos: 20.5,-12.5 + - parent: 855 + pos: 18.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 1511 - type: LowWall + type: Window components: - - parent: 856 - pos: 20.5,-15.5 + - parent: 855 + pos: 16.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 1512 - type: Table + type: Window components: - - parent: 856 - pos: 6.5,7.5 + - parent: 855 + pos: 13.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 1513 type: Window components: - - parent: 856 - pos: 18.5,-3.5 + - parent: 855 + pos: 13.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 1514 type: Window components: - - parent: 856 - pos: 16.5,-3.5 + - parent: 855 + pos: 12.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1515 type: Window components: - - parent: 856 - pos: 13.5,-4.5 + - parent: 855 + pos: 6.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1516 type: Window components: - - parent: 856 - pos: 13.5,-5.5 + - parent: 855 + pos: 9.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1517 type: Window components: - - parent: 856 - pos: 12.5,-6.5 + - parent: 855 + pos: 8.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1518 type: Window components: - - parent: 856 - pos: 6.5,-6.5 + - parent: 855 + pos: 7.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 1519 type: Window components: - - parent: 856 - pos: 9.5,-6.5 + - parent: 855 + pos: 8.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 1520 type: Window components: - - parent: 856 - pos: 8.5,-6.5 + - parent: 855 + pos: 9.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 1521 type: Window components: - - parent: 856 - pos: 7.5,2.5 + - parent: 855 + pos: 10.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 1522 type: Window components: - - parent: 856 - pos: 8.5,2.5 + - parent: 855 + pos: 11.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 1523 type: Window components: - - parent: 856 - pos: 9.5,2.5 + - parent: 855 + pos: 13.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 1524 type: Window components: - - parent: 856 - pos: 10.5,2.5 + - parent: 855 + pos: 13.5,-1.5 rot: -1.5707963267948966 rad type: Transform - uid: 1525 type: Window components: - - parent: 856 - pos: 11.5,2.5 + - parent: 855 + pos: 13.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 1526 type: Window components: - - parent: 856 - pos: 13.5,1.5 + - parent: 855 + pos: 22.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1527 type: Window components: - - parent: 856 - pos: 13.5,-1.5 + - parent: 855 + pos: 21.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1528 type: Window components: - - parent: 856 - pos: 13.5,-0.5 + - parent: 855 + pos: 20.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1529 type: Window components: - - parent: 856 - pos: 22.5,6.5 + - parent: 855 + pos: 19.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1530 type: Window components: - - parent: 856 - pos: 21.5,6.5 + - parent: 855 + pos: 14.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1531 - type: Window + type: ReinforcedWindow components: - - parent: 856 - pos: 20.5,6.5 + - parent: 855 + pos: 8.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1532 - type: Window + type: ReinforcedWindow components: - - parent: 856 - pos: 19.5,6.5 + - parent: 855 + pos: 6.5,19.5 rot: -1.5707963267948966 rad type: Transform - uid: 1533 - type: Window + type: ReinforcedWindow components: - - parent: 856 - pos: 14.5,8.5 + - parent: 855 + pos: 6.5,18.5 rot: -1.5707963267948966 rad type: Transform - uid: 1534 type: ReinforcedWindow components: - - parent: 856 - pos: 8.5,6.5 + - parent: 855 + pos: 14.5,20.5 rot: -1.5707963267948966 rad type: Transform - uid: 1535 type: ReinforcedWindow components: - - parent: 856 - pos: 6.5,19.5 + - parent: 855 + pos: 14.5,19.5 rot: -1.5707963267948966 rad type: Transform - uid: 1536 type: ReinforcedWindow components: - - parent: 856 - pos: 6.5,18.5 + - parent: 855 + pos: 14.5,18.5 rot: -1.5707963267948966 rad type: Transform - uid: 1537 - type: ReinforcedWindow + type: LowWall components: - - parent: 856 + - parent: 855 pos: 14.5,20.5 rot: -1.5707963267948966 rad type: Transform - uid: 1538 - type: ReinforcedWindow + type: LowWall components: - - parent: 856 + - parent: 855 pos: 14.5,19.5 rot: -1.5707963267948966 rad type: Transform - uid: 1539 - type: ReinforcedWindow + type: LowWall components: - - parent: 856 + - parent: 855 pos: 14.5,18.5 rot: -1.5707963267948966 rad type: Transform - uid: 1540 - type: LowWall - components: - - parent: 856 - pos: 14.5,20.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1541 - type: LowWall - components: - - parent: 856 - pos: 14.5,19.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1542 - type: LowWall - components: - - parent: 856 - pos: 14.5,18.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1543 type: Chair components: - - parent: 856 + - parent: 855 pos: -3.5,-23.5 rot: 3.141592653589793 rad type: Transform - anchored: False type: Physics -- uid: 1544 +- uid: 1541 type: Chair components: - - parent: 856 + - parent: 855 pos: 38.5,-0.5 type: Transform - anchored: False type: Physics -- uid: 1545 +- uid: 1542 type: Table components: - - parent: 856 + - parent: 855 pos: 39.5,-1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1546 +- uid: 1543 type: VendingMachineYouTool components: - - parent: 856 + - parent: 855 pos: 31.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1547 +- uid: 1544 type: ReinforcedWindow components: - - parent: 856 + - parent: 855 pos: 21.5,16.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1548 +- uid: 1545 type: SignArmory components: - - parent: 856 + - parent: 855 pos: -13.678196,17.5 type: Transform - deadThreshold: 100 type: Destructible -- uid: 1549 +- uid: 1546 type: SignConference components: - - parent: 856 + - parent: 855 pos: -2.6767635,22.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 1550 +- uid: 1547 type: SignDirectionalBridge components: - - parent: 856 + - parent: 855 pos: 1.3437586,6.5 rot: 1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 1551 +- uid: 1548 type: WeldingFuelTank components: - - parent: 856 + - parent: 855 pos: 33.5,12.5 rot: 1.5707963267948966 rad type: Transform -- uid: 1552 - type: Table +- uid: 1549 + type: MedicalScanner components: - - parent: 856 - pos: 29.5,-4.5 + - parent: 855 + pos: 9.5,-16.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1553 + - containers: + MedicalScanner-bodyContainer: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 1550 type: ComputerAlert components: - - parent: 856 + - parent: 855 pos: 29.5,-2.5 type: Transform - deadThreshold: 100 type: BreakableConstruction -- uid: 1554 +- uid: 1551 type: ReinforcedWindow components: - - parent: 856 + - parent: 855 pos: 23.5,16.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1555 +- uid: 1552 type: ReinforcedWindow components: - - parent: 856 + - parent: 855 pos: 23.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1556 +- uid: 1553 type: ReinforcedWindow components: - - parent: 856 + - parent: 855 pos: 23.5,14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1557 +- uid: 1554 type: ReinforcedWindow components: - - parent: 856 + - parent: 855 pos: 21.5,14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1558 +- uid: 1555 type: SignSmoking components: - - parent: 856 + - parent: 855 pos: -1.2919803,-7.6148567 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 1559 +- uid: 1556 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -1.5,-7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1560 +- uid: 1557 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -20.5,-16.5 rot: -1.5707963267948966 rad type: Transform +- uid: 1558 + type: ReinforcedWindow + components: + - parent: 855 + pos: 36.5,14.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1559 + type: ReinforcedWindow + components: + - parent: 855 + pos: 36.5,15.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1560 + type: ReinforcedWindow + components: + - parent: 855 + pos: 35.5,15.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 1561 type: ReinforcedWindow components: - - parent: 856 - pos: 36.5,14.5 + - parent: 855 + pos: 34.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1562 type: ReinforcedWindow components: - - parent: 856 - pos: 36.5,15.5 + - parent: 855 + pos: 33.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1563 type: ReinforcedWindow components: - - parent: 856 - pos: 35.5,15.5 + - parent: 855 + pos: 32.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1564 type: ReinforcedWindow components: - - parent: 856 - pos: 34.5,15.5 + - parent: 855 + pos: 31.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1565 type: ReinforcedWindow components: - - parent: 856 - pos: 33.5,15.5 + - parent: 855 + pos: 30.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1566 type: ReinforcedWindow components: - - parent: 856 - pos: 32.5,15.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1567 - type: ReinforcedWindow - components: - - parent: 856 - pos: 31.5,15.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1568 - type: ReinforcedWindow - components: - - parent: 856 - pos: 30.5,15.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1569 - type: ReinforcedWindow - components: - - parent: 856 + - parent: 855 pos: 30.5,14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1570 +- uid: 1567 type: Window components: - - parent: 856 + - parent: 855 pos: 34.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1571 +- uid: 1568 type: Window components: - - parent: 856 + - parent: 855 pos: 32.5,7.5 rot: -1.5707963267948966 rad type: Transform +- uid: 1569 + type: Catwalk + components: + - parent: 855 + pos: -16.5,-15.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1570 + type: Catwalk + components: + - parent: 855 + pos: -13.5,-14.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1571 + type: ShotgunSawn + components: + - parent: 855 + pos: -6.488487,-6.7298017 + rot: -1.5707963267948966 rad + type: Transform + - containers: + BoltActionBarrel-ammo-container: + type: Robust.Server.GameObjects.Components.Container.Container + BoltActionBarrel-chamber-container: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer - uid: 1572 type: Catwalk components: - - parent: 856 - pos: -16.5,-15.5 + - parent: 855 + pos: -8.5,-10.5 rot: -1.5707963267948966 rad type: Transform - uid: 1573 type: Catwalk components: - - parent: 856 - pos: -13.5,-14.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1574 - type: Table - components: - - parent: 856 - pos: 31.5,-4.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1575 - type: Catwalk - components: - - parent: 856 - pos: -8.5,-10.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1576 - type: Catwalk - components: - - parent: 856 + - parent: 855 pos: -9.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1577 +- uid: 1574 type: Catwalk components: - - parent: 856 + - parent: 855 pos: -9.5,-8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1578 +- uid: 1575 type: SignHead components: - - parent: 856 + - parent: 855 pos: -9.687853,18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 1579 +- uid: 1576 type: ChairOfficeDark components: - - parent: 856 + - parent: 855 pos: 30.5,-2.5 rot: 3.141592653589793 rad type: Transform - anchored: False type: Physics -- uid: 1580 +- uid: 1577 type: Catwalk components: - - parent: 856 + - parent: 855 pos: 0.5,-7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1581 +- uid: 1578 type: CrateGeneric components: - - parent: 856 + - parent: 855 pos: 39.5,13.5 rot: -1.5707963267948966 rad type: Transform @@ -25837,10 +25812,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 1582 +- uid: 1579 type: CrateGeneric components: - - parent: 856 + - parent: 855 pos: 38.5,13.5 rot: -1.5707963267948966 rad type: Transform @@ -25850,334 +25825,334 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 1583 +- uid: 1580 type: Table components: - - parent: 856 + - parent: 855 pos: 6.5,8.5 rot: -1.5707963267948966 rad type: Transform +- uid: 1581 + type: Catwalk + components: + - parent: 855 + pos: -32.5,-6.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1582 + type: Catwalk + components: + - parent: 855 + pos: -33.5,-6.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1583 + type: Catwalk + components: + - parent: 855 + pos: -32.5,0.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 1584 type: Catwalk components: - - parent: 856 - pos: -32.5,-6.5 + - parent: 855 + pos: -32.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 1585 type: Catwalk components: - - parent: 856 - pos: -33.5,-6.5 + - parent: 855 + pos: -15.5,11.5 rot: -1.5707963267948966 rad type: Transform - uid: 1586 type: Catwalk components: - - parent: 856 - pos: -32.5,0.5 + - parent: 855 + pos: -16.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 1587 type: Catwalk components: - - parent: 856 - pos: -32.5,1.5 + - parent: 855 + pos: -20.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 1588 type: Catwalk components: - - parent: 856 - pos: -15.5,11.5 + - parent: 855 + pos: -16.5,11.5 rot: -1.5707963267948966 rad type: Transform - uid: 1589 type: Catwalk components: - - parent: 856 - pos: -16.5,7.5 + - parent: 855 + pos: -4.5,23.5 rot: -1.5707963267948966 rad type: Transform - uid: 1590 type: Catwalk components: - - parent: 856 - pos: -20.5,12.5 + - parent: 855 + pos: -4.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 1591 type: Catwalk components: - - parent: 856 - pos: -16.5,11.5 + - parent: 855 + pos: -4.5,21.5 rot: -1.5707963267948966 rad type: Transform - uid: 1592 type: Catwalk components: - - parent: 856 - pos: -4.5,23.5 + - parent: 855 + pos: -0.5,20.5 rot: -1.5707963267948966 rad type: Transform - uid: 1593 type: Catwalk components: - - parent: 856 - pos: -4.5,22.5 + - parent: 855 + pos: 6.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 1594 type: Catwalk components: - - parent: 856 - pos: -4.5,21.5 + - parent: 855 + pos: 8.5,13.5 rot: -1.5707963267948966 rad type: Transform - uid: 1595 type: Catwalk components: - - parent: 856 - pos: -0.5,20.5 + - parent: 855 + pos: 12.5,20.5 rot: -1.5707963267948966 rad type: Transform - uid: 1596 - type: Catwalk + type: AirlockMaintEngiLocked components: - - parent: 856 - pos: 6.5,14.5 + - parent: 855 + pos: 33.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 1597 type: Catwalk components: - - parent: 856 - pos: 8.5,13.5 + - parent: 855 + pos: 27.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1598 type: Catwalk components: - - parent: 856 - pos: 12.5,20.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1599 - type: AirlockMaintEngiLocked - components: - - parent: 856 - pos: 33.5,-5.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1600 - type: Catwalk - components: - - parent: 856 - pos: 27.5,8.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1601 - type: Catwalk - components: - - parent: 856 + - parent: 855 pos: 21.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1602 +- uid: 1599 type: ReinforcedWindow components: - - parent: 856 + - parent: 855 pos: 51.5,3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1603 +- uid: 1600 type: SignSmoking components: - - parent: 856 + - parent: 855 pos: 42.70487,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 1604 +- uid: 1601 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -22.5,1.5 rot: -1.5707963267948966 rad type: Transform +- uid: 1602 + type: reinforced_wall + components: + - parent: 855 + pos: 39.5,10.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1603 + type: reinforced_wall + components: + - parent: 855 + pos: 38.5,10.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1604 + type: reinforced_wall + components: + - parent: 855 + pos: 37.5,10.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 1605 type: reinforced_wall components: - - parent: 856 - pos: 39.5,10.5 + - parent: 855 + pos: 37.5,11.5 rot: -1.5707963267948966 rad type: Transform - uid: 1606 type: reinforced_wall components: - - parent: 856 - pos: 38.5,10.5 + - parent: 855 + pos: 37.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 1607 type: reinforced_wall components: - - parent: 856 - pos: 37.5,10.5 + - parent: 855 + pos: 37.5,13.5 rot: -1.5707963267948966 rad type: Transform - uid: 1608 type: reinforced_wall components: - - parent: 856 - pos: 37.5,11.5 + - parent: 855 + pos: 37.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 1609 type: reinforced_wall components: - - parent: 856 - pos: 37.5,12.5 + - parent: 855 + pos: 38.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 1610 type: reinforced_wall components: - - parent: 856 - pos: 37.5,13.5 + - parent: 855 + pos: 39.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 1611 type: reinforced_wall components: - - parent: 856 - pos: 37.5,14.5 + - parent: 855 + pos: 40.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 1612 type: reinforced_wall components: - - parent: 856 - pos: 38.5,14.5 + - parent: 855 + pos: 41.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 1613 type: reinforced_wall components: - - parent: 856 - pos: 39.5,14.5 + - parent: 855 + pos: 42.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 1614 type: reinforced_wall components: - - parent: 856 - pos: 40.5,14.5 + - parent: 855 + pos: 43.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 1615 type: reinforced_wall components: - - parent: 856 - pos: 41.5,14.5 + - parent: 855 + pos: 44.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 1616 type: reinforced_wall components: - - parent: 856 - pos: 42.5,14.5 + - parent: 855 + pos: 44.5,13.5 rot: -1.5707963267948966 rad type: Transform - uid: 1617 type: reinforced_wall components: - - parent: 856 - pos: 43.5,14.5 + - parent: 855 + pos: 44.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 1618 type: reinforced_wall components: - - parent: 856 - pos: 44.5,14.5 + - parent: 855 + pos: 44.5,11.5 rot: -1.5707963267948966 rad type: Transform - uid: 1619 type: reinforced_wall components: - - parent: 856 - pos: 44.5,13.5 + - parent: 855 + pos: 44.5,10.5 rot: -1.5707963267948966 rad type: Transform - uid: 1620 type: reinforced_wall components: - - parent: 856 - pos: 44.5,12.5 + - parent: 855 + pos: 43.5,10.5 rot: -1.5707963267948966 rad type: Transform - uid: 1621 type: reinforced_wall components: - - parent: 856 - pos: 44.5,11.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1622 - type: reinforced_wall - components: - - parent: 856 - pos: 44.5,10.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1623 - type: reinforced_wall - components: - - parent: 856 - pos: 43.5,10.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1624 - type: reinforced_wall - components: - - parent: 856 + - parent: 855 pos: 42.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1625 +- uid: 1622 type: LowWall components: - - parent: 856 + - parent: 855 pos: 40.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1626 +- uid: 1623 type: LowWall components: - - parent: 856 + - parent: 855 pos: 39.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1627 +- uid: 1624 type: LowWall components: - - parent: 856 + - parent: 855 pos: 36.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1628 +- uid: 1625 type: Table components: - - parent: 856 + - parent: 855 pos: -4.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1629 +- uid: 1626 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: -12.5,-6 rot: 1.5707963267948966 rad type: Transform @@ -26189,10 +26164,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 1630 +- uid: 1627 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: -25.5,-10 rot: 1.5707963267948966 rad type: Transform @@ -26204,1534 +26179,1534 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer +- uid: 1628 + type: solid_wall + components: + - parent: 855 + pos: -21.5,-0.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1629 + type: solid_wall + components: + - parent: 855 + pos: 37.5,9.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1630 + type: solid_wall + components: + - parent: 855 + pos: 37.5,8.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 1631 type: solid_wall components: - - parent: 856 - pos: -21.5,-0.5 + - parent: 855 + pos: 37.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 1632 type: solid_wall components: - - parent: 856 - pos: 37.5,9.5 + - parent: 855 + pos: 36.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 1633 type: solid_wall components: - - parent: 856 - pos: 37.5,8.5 + - parent: 855 + pos: 35.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 1634 type: solid_wall components: - - parent: 856 - pos: 37.5,7.5 + - parent: 855 + pos: -8.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 1635 type: solid_wall components: - - parent: 856 - pos: 36.5,7.5 + - parent: 855 + pos: 36.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1636 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: 35.5,7.5 + - parent: 855 + pos: 51.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 1637 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: -8.5,-3.5 + - parent: 855 + pos: 51.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 1638 type: solid_wall components: - - parent: 856 - pos: 36.5,6.5 + - parent: 855 + pos: 41.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 1639 - type: LowWall + type: solid_wall components: - - parent: 856 - pos: 51.5,1.5 + - parent: 855 + pos: 41.5,0.5 rot: -1.5707963267948966 rad type: Transform - uid: 1640 - type: LowWall + type: solid_wall components: - - parent: 856 - pos: 51.5,2.5 + - parent: 855 + pos: 41.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 1641 type: solid_wall components: - - parent: 856 - pos: 41.5,1.5 + - parent: 855 + pos: 41.5,-1.5 rot: -1.5707963267948966 rad type: Transform - uid: 1642 type: solid_wall components: - - parent: 856 - pos: 41.5,0.5 + - parent: 855 + pos: 41.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 1643 type: solid_wall components: - - parent: 856 - pos: 41.5,-0.5 + - parent: 855 + pos: 40.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 1644 type: solid_wall components: - - parent: 856 - pos: 41.5,-1.5 + - parent: 855 + pos: 39.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 1645 type: solid_wall components: - - parent: 856 - pos: 41.5,-2.5 + - parent: 855 + pos: 38.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 1646 type: solid_wall components: - - parent: 856 - pos: 40.5,-2.5 + - parent: 855 + pos: 37.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 1647 type: solid_wall components: - - parent: 856 - pos: 39.5,-2.5 + - parent: 855 + pos: 36.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 1648 type: solid_wall components: - - parent: 856 - pos: 38.5,-2.5 + - parent: 855 + pos: 36.5,-1.5 rot: -1.5707963267948966 rad type: Transform - uid: 1649 type: solid_wall components: - - parent: 856 - pos: 37.5,-2.5 + - parent: 855 + pos: 36.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 1650 type: solid_wall components: - - parent: 856 - pos: 36.5,-2.5 + - parent: 855 + pos: 36.5,0.5 rot: -1.5707963267948966 rad type: Transform - uid: 1651 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: 36.5,-1.5 + - parent: 855 + pos: 37.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 1652 type: solid_wall components: - - parent: 856 - pos: 36.5,1.5 + - parent: 855 + pos: 36.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 1653 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: 36.5,0.5 + - parent: 855 + pos: 51.5,3.5 rot: -1.5707963267948966 rad type: Transform - uid: 1654 - type: LowWall + type: solid_wall components: - - parent: 856 - pos: 37.5,1.5 + - parent: 855 + pos: 35.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 1655 type: solid_wall components: - - parent: 856 - pos: 36.5,2.5 + - parent: 855 + pos: 31.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 1656 - type: LowWall + type: solid_wall components: - - parent: 856 - pos: 51.5,3.5 + - parent: 855 + pos: 42.5,0.5 rot: -1.5707963267948966 rad type: Transform - uid: 1657 type: solid_wall components: - - parent: 856 - pos: 35.5,1.5 + - parent: 855 + pos: 45.5,0.5 rot: -1.5707963267948966 rad type: Transform - uid: 1658 type: solid_wall components: - - parent: 856 - pos: 31.5,1.5 + - parent: 855 + pos: 44.5,0.5 rot: -1.5707963267948966 rad type: Transform - uid: 1659 - type: solid_wall + type: WaterTankFull components: - - parent: 856 - pos: 42.5,0.5 + - parent: 855 + pos: 10.5,-18.5 rot: -1.5707963267948966 rad type: Transform - uid: 1660 type: solid_wall components: - - parent: 856 - pos: 45.5,0.5 + - parent: 855 + pos: 44.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 1661 type: solid_wall components: - - parent: 856 - pos: 44.5,0.5 + - parent: 855 + pos: 44.5,-1.5 rot: -1.5707963267948966 rad type: Transform - uid: 1662 - type: WaterTankFull + type: solid_wall components: - - parent: 856 - pos: 10.5,-18.5 + - parent: 855 + pos: 44.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 1663 type: solid_wall components: - - parent: 856 - pos: 44.5,-0.5 + - parent: 855 + pos: 44.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 1664 type: solid_wall components: - - parent: 856 - pos: 44.5,-1.5 + - parent: 855 + pos: 44.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 1665 type: solid_wall components: - - parent: 856 - pos: 44.5,-2.5 + - parent: 855 + pos: 44.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 1666 type: solid_wall components: - - parent: 856 - pos: 44.5,-3.5 + - parent: 855 + pos: 43.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 1667 type: solid_wall components: - - parent: 856 - pos: 44.5,-4.5 + - parent: 855 + pos: 42.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 1668 type: solid_wall components: - - parent: 856 - pos: 44.5,-5.5 + - parent: 855 + pos: 41.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 1669 type: solid_wall components: - - parent: 856 - pos: 43.5,-5.5 + - parent: 855 + pos: 40.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 1670 type: solid_wall components: - - parent: 856 - pos: 42.5,-5.5 + - parent: 855 + pos: 39.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 1671 type: solid_wall components: - - parent: 856 - pos: 41.5,-5.5 + - parent: 855 + pos: 39.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1672 type: solid_wall components: - - parent: 856 - pos: 40.5,-5.5 + - parent: 855 + pos: 39.5,-7.5 rot: -1.5707963267948966 rad type: Transform - uid: 1673 type: solid_wall components: - - parent: 856 - pos: 39.5,-5.5 + - parent: 855 + pos: 39.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1674 type: solid_wall components: - - parent: 856 - pos: 39.5,-6.5 + - parent: 855 + pos: 38.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1675 type: solid_wall components: - - parent: 856 - pos: 39.5,-7.5 + - parent: 855 + pos: 37.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1676 type: solid_wall components: - - parent: 856 - pos: 39.5,-8.5 + - parent: 855 + pos: 36.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1677 type: solid_wall components: - - parent: 856 - pos: 38.5,-8.5 + - parent: 855 + pos: 35.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1678 type: solid_wall components: - - parent: 856 - pos: 37.5,-8.5 + - parent: 855 + pos: 34.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1679 type: solid_wall components: - - parent: 856 - pos: 36.5,-8.5 + - parent: 855 + pos: 33.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1680 type: solid_wall components: - - parent: 856 - pos: 35.5,-8.5 + - parent: 855 + pos: 32.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1681 type: solid_wall components: - - parent: 856 - pos: 34.5,-8.5 + - parent: 855 + pos: 31.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1682 type: solid_wall components: - - parent: 856 - pos: 33.5,-8.5 + - parent: 855 + pos: 30.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1683 type: solid_wall components: - - parent: 856 - pos: 32.5,-8.5 + - parent: 855 + pos: 29.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1684 type: solid_wall components: - - parent: 856 - pos: 31.5,-8.5 + - parent: 855 + pos: 28.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1685 type: solid_wall components: - - parent: 856 - pos: 30.5,-8.5 + - parent: 855 + pos: 28.5,-7.5 rot: -1.5707963267948966 rad type: Transform - uid: 1686 type: solid_wall components: - - parent: 856 - pos: 29.5,-8.5 + - parent: 855 + pos: 28.5,-9.5 rot: -1.5707963267948966 rad type: Transform - uid: 1687 type: solid_wall components: - - parent: 856 - pos: 28.5,-8.5 + - parent: 855 + pos: 28.5,-10.5 rot: -1.5707963267948966 rad type: Transform - uid: 1688 type: solid_wall components: - - parent: 856 - pos: 28.5,-7.5 + - parent: 855 + pos: 28.5,-11.5 rot: -1.5707963267948966 rad type: Transform - uid: 1689 type: solid_wall components: - - parent: 856 - pos: 28.5,-9.5 + - parent: 855 + pos: 28.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 1690 type: solid_wall components: - - parent: 856 - pos: 28.5,-10.5 + - parent: 855 + pos: 28.5,-13.5 rot: -1.5707963267948966 rad type: Transform - uid: 1691 type: solid_wall components: - - parent: 856 - pos: 28.5,-11.5 + - parent: 855 + pos: 28.5,-14.5 rot: -1.5707963267948966 rad type: Transform - uid: 1692 type: solid_wall components: - - parent: 856 - pos: 28.5,-12.5 + - parent: 855 + pos: 28.5,-15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1693 type: solid_wall components: - - parent: 856 - pos: 28.5,-13.5 + - parent: 855 + pos: 28.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 1694 type: solid_wall components: - - parent: 856 - pos: 28.5,-14.5 + - parent: 855 + pos: 28.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 1695 type: solid_wall components: - - parent: 856 - pos: 28.5,-15.5 + - parent: 855 + pos: 28.5,-18.5 rot: -1.5707963267948966 rad type: Transform - uid: 1696 type: solid_wall components: - - parent: 856 - pos: 28.5,-16.5 + - parent: 855 + pos: 28.5,-19.5 rot: -1.5707963267948966 rad type: Transform - uid: 1697 type: solid_wall components: - - parent: 856 - pos: 28.5,-17.5 + - parent: 855 + pos: 27.5,-19.5 rot: -1.5707963267948966 rad type: Transform - uid: 1698 type: solid_wall components: - - parent: 856 - pos: 28.5,-18.5 + - parent: 855 + pos: 26.5,-19.5 rot: -1.5707963267948966 rad type: Transform - uid: 1699 type: solid_wall components: - - parent: 856 - pos: 28.5,-19.5 + - parent: 855 + pos: 25.5,-19.5 rot: -1.5707963267948966 rad type: Transform - uid: 1700 type: solid_wall components: - - parent: 856 - pos: 27.5,-19.5 + - parent: 855 + pos: 24.5,-19.5 rot: -1.5707963267948966 rad type: Transform - uid: 1701 type: solid_wall components: - - parent: 856 - pos: 26.5,-19.5 + - parent: 855 + pos: 23.5,-19.5 rot: -1.5707963267948966 rad type: Transform - uid: 1702 type: solid_wall components: - - parent: 856 - pos: 25.5,-19.5 + - parent: 855 + pos: 23.5,-20.5 rot: -1.5707963267948966 rad type: Transform - uid: 1703 type: solid_wall components: - - parent: 856 - pos: 24.5,-19.5 + - parent: 855 + pos: 23.5,-21.5 rot: -1.5707963267948966 rad type: Transform - uid: 1704 type: solid_wall components: - - parent: 856 - pos: 23.5,-19.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1705 - type: solid_wall - components: - - parent: 856 - pos: 23.5,-20.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1706 - type: solid_wall - components: - - parent: 856 - pos: 23.5,-21.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1707 - type: solid_wall - components: - - parent: 856 + - parent: 855 pos: 45.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1708 +- uid: 1705 type: SignCloning components: - - parent: 856 + - parent: 855 pos: 7.326743,-12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 1709 +- uid: 1706 type: solid_wall components: - - parent: 856 + - parent: 855 pos: 0.5,-28.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1710 +- uid: 1707 type: solid_wall components: - - parent: 856 + - parent: 855 pos: 0.5,-27.5 rot: -1.5707963267948966 rad type: Transform +- uid: 1708 + type: solid_wall + components: + - parent: 855 + pos: 0.5,-26.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1709 + type: ReinforcedWindow + components: + - parent: 855 + pos: 51.5,0.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1710 + type: LowWall + components: + - parent: 855 + pos: 51.5,0.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 1711 type: solid_wall components: - - parent: 856 - pos: 0.5,-26.5 + - parent: 855 + pos: 18.5,-23.5 rot: -1.5707963267948966 rad type: Transform - uid: 1712 - type: ReinforcedWindow + type: solid_wall components: - - parent: 856 - pos: 51.5,0.5 + - parent: 855 + pos: 19.5,-23.5 rot: -1.5707963267948966 rad type: Transform - uid: 1713 - type: LowWall + type: solid_wall components: - - parent: 856 - pos: 51.5,0.5 + - parent: 855 + pos: 13.5,-21.5 rot: -1.5707963267948966 rad type: Transform - uid: 1714 type: solid_wall components: - - parent: 856 - pos: 18.5,-23.5 + - parent: 855 + pos: 12.5,-21.5 rot: -1.5707963267948966 rad type: Transform - uid: 1715 type: solid_wall components: - - parent: 856 - pos: 19.5,-23.5 + - parent: 855 + pos: 1.5,-24.5 rot: -1.5707963267948966 rad type: Transform - uid: 1716 type: solid_wall components: - - parent: 856 - pos: 13.5,-21.5 + - parent: 855 + pos: 0.5,-24.5 rot: -1.5707963267948966 rad type: Transform - uid: 1717 type: solid_wall components: - - parent: 856 - pos: 12.5,-21.5 + - parent: 855 + pos: 0.5,-25.5 rot: -1.5707963267948966 rad type: Transform - uid: 1718 type: solid_wall components: - - parent: 856 - pos: 1.5,-24.5 + - parent: 855 + pos: 8.5,-21.5 rot: -1.5707963267948966 rad type: Transform - uid: 1719 type: solid_wall components: - - parent: 856 - pos: 0.5,-24.5 + - parent: 855 + pos: 7.5,-21.5 rot: -1.5707963267948966 rad type: Transform - uid: 1720 type: solid_wall components: - - parent: 856 - pos: 0.5,-25.5 + - parent: 855 + pos: 6.5,-21.5 rot: -1.5707963267948966 rad type: Transform - uid: 1721 type: solid_wall components: - - parent: 856 - pos: 8.5,-21.5 + - parent: 855 + pos: 6.5,-22.5 rot: -1.5707963267948966 rad type: Transform - uid: 1722 type: solid_wall components: - - parent: 856 - pos: 7.5,-21.5 + - parent: 855 + pos: 5.5,-22.5 rot: -1.5707963267948966 rad type: Transform - uid: 1723 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: 6.5,-21.5 + - parent: 855 + pos: 5.5,-23.5 rot: -1.5707963267948966 rad type: Transform - uid: 1724 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: 6.5,-22.5 + - parent: 855 + pos: 5.5,-24.5 rot: -1.5707963267948966 rad type: Transform - uid: 1725 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: 5.5,-22.5 + - parent: 855 + pos: 4.5,-24.5 rot: -1.5707963267948966 rad type: Transform - uid: 1726 type: LowWall components: - - parent: 856 - pos: 5.5,-23.5 + - parent: 855 + pos: 3.5,-24.5 rot: -1.5707963267948966 rad type: Transform - uid: 1727 type: LowWall components: - - parent: 856 - pos: 5.5,-24.5 + - parent: 855 + pos: 2.5,-24.5 rot: -1.5707963267948966 rad type: Transform - uid: 1728 type: LowWall components: - - parent: 856 - pos: 4.5,-24.5 + - parent: 855 + pos: 9.5,-21.5 rot: -1.5707963267948966 rad type: Transform - uid: 1729 type: LowWall components: - - parent: 856 - pos: 3.5,-24.5 + - parent: 855 + pos: 10.5,-21.5 rot: -1.5707963267948966 rad type: Transform - uid: 1730 type: LowWall components: - - parent: 856 - pos: 2.5,-24.5 + - parent: 855 + pos: 11.5,-21.5 rot: -1.5707963267948966 rad type: Transform - uid: 1731 - type: LowWall + type: solid_wall components: - - parent: 856 - pos: 9.5,-21.5 + - parent: 855 + pos: 45.5,10.5 rot: -1.5707963267948966 rad type: Transform - uid: 1732 type: LowWall components: - - parent: 856 - pos: 10.5,-21.5 + - parent: 855 + pos: 34.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 1733 type: LowWall components: - - parent: 856 - pos: 11.5,-21.5 + - parent: 855 + pos: 32.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 1734 type: solid_wall components: - - parent: 856 - pos: 45.5,10.5 + - parent: 855 + pos: 31.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 1735 - type: LowWall + type: solid_wall components: - - parent: 856 - pos: 34.5,7.5 + - parent: 855 + pos: 30.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 1736 - type: LowWall + type: solid_wall components: - - parent: 856 - pos: 32.5,7.5 + - parent: 855 + pos: 29.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 1737 type: solid_wall components: - - parent: 856 - pos: 31.5,7.5 + - parent: 855 + pos: 29.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1738 type: solid_wall components: - - parent: 856 - pos: 30.5,7.5 + - parent: 855 + pos: 29.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 1739 type: solid_wall components: - - parent: 856 - pos: 29.5,7.5 + - parent: 855 + pos: 28.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 1740 type: solid_wall components: - - parent: 856 - pos: 29.5,8.5 + - parent: 855 + pos: 30.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1741 type: solid_wall components: - - parent: 856 - pos: 29.5,9.5 + - parent: 855 + pos: 30.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 1742 type: solid_wall components: - - parent: 856 - pos: 28.5,7.5 + - parent: 855 + pos: 30.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 1743 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: 30.5,6.5 + - parent: 855 + pos: 32.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 1744 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: 30.5,2.5 + - parent: 855 + pos: 34.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 1745 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: 30.5,1.5 + - parent: 855 + pos: 30.5,4.5 rot: -1.5707963267948966 rad type: Transform - uid: 1746 type: LowWall components: - - parent: 856 - pos: 32.5,1.5 + - parent: 855 + pos: 30.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 1747 type: LowWall components: - - parent: 856 - pos: 34.5,1.5 + - parent: 855 + pos: 30.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1748 type: LowWall components: - - parent: 856 - pos: 30.5,4.5 + - parent: 855 + pos: 31.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1749 type: LowWall components: - - parent: 856 - pos: 30.5,14.5 + - parent: 855 + pos: 32.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1750 type: LowWall components: - - parent: 856 - pos: 30.5,15.5 + - parent: 855 + pos: 33.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1751 type: LowWall components: - - parent: 856 - pos: 31.5,15.5 + - parent: 855 + pos: 34.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1752 type: LowWall components: - - parent: 856 - pos: 32.5,15.5 + - parent: 855 + pos: 35.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1753 type: LowWall components: - - parent: 856 - pos: 33.5,15.5 + - parent: 855 + pos: 36.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1754 type: LowWall components: - - parent: 856 - pos: 34.5,15.5 + - parent: 855 + pos: 36.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 1755 - type: LowWall + type: solid_wall components: - - parent: 856 - pos: 35.5,15.5 + - parent: 855 + pos: 29.5,11.5 rot: -1.5707963267948966 rad type: Transform - uid: 1756 - type: LowWall + type: solid_wall components: - - parent: 856 - pos: 36.5,15.5 + - parent: 855 + pos: 29.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 1757 - type: LowWall + type: solid_wall components: - - parent: 856 - pos: 36.5,14.5 + - parent: 855 + pos: 29.5,13.5 rot: -1.5707963267948966 rad type: Transform - uid: 1758 type: solid_wall components: - - parent: 856 - pos: 29.5,11.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1759 - type: solid_wall - components: - - parent: 856 - pos: 29.5,12.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1760 - type: solid_wall - components: - - parent: 856 - pos: 29.5,13.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1761 - type: solid_wall - components: - - parent: 856 + - parent: 855 pos: 29.5,14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1762 +- uid: 1759 type: LowWall components: - - parent: 856 + - parent: 855 pos: 19.5,16.5 rot: -1.5707963267948966 rad type: Transform +- uid: 1760 + type: LowWall + components: + - parent: 855 + pos: 21.5,14.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1761 + type: LowWall + components: + - parent: 855 + pos: 23.5,14.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1762 + type: solid_wall + components: + - parent: 855 + pos: 25.5,14.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 1763 type: LowWall components: - - parent: 856 - pos: 21.5,14.5 + - parent: 855 + pos: 19.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 1764 - type: LowWall + type: ReinforcedWindow components: - - parent: 856 - pos: 23.5,14.5 + - parent: 855 + pos: 21.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1765 type: solid_wall components: - - parent: 856 - pos: 25.5,14.5 + - parent: 855 + pos: 25.5,13.5 rot: -1.5707963267948966 rad type: Transform - uid: 1766 - type: LowWall + type: solid_wall components: - - parent: 856 - pos: 19.5,14.5 + - parent: 855 + pos: 25.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 1767 - type: ReinforcedWindow + type: solid_wall components: - - parent: 856 - pos: 21.5,15.5 + - parent: 855 + pos: 25.5,11.5 rot: -1.5707963267948966 rad type: Transform - uid: 1768 type: solid_wall components: - - parent: 856 - pos: 25.5,13.5 + - parent: 855 + pos: 25.5,10.5 rot: -1.5707963267948966 rad type: Transform - uid: 1769 type: solid_wall components: - - parent: 856 - pos: 25.5,12.5 + - parent: 855 + pos: 25.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1770 type: solid_wall components: - - parent: 856 - pos: 25.5,11.5 + - parent: 855 + pos: 25.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 1771 type: solid_wall components: - - parent: 856 - pos: 25.5,10.5 + - parent: 855 + pos: 26.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 1772 type: solid_wall components: - - parent: 856 - pos: 25.5,8.5 + - parent: 855 + pos: 24.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 1773 type: solid_wall components: - - parent: 856 - pos: 25.5,7.5 + - parent: 855 + pos: 24.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1774 type: solid_wall components: - - parent: 856 - pos: 26.5,7.5 + - parent: 855 + pos: 23.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1775 type: solid_wall components: - - parent: 856 - pos: 24.5,7.5 + - parent: 855 + pos: 18.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1776 type: solid_wall components: - - parent: 856 - pos: 24.5,6.5 + - parent: 855 + pos: 17.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1777 type: solid_wall components: - - parent: 856 - pos: 23.5,6.5 + - parent: 855 + pos: 17.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 1778 type: solid_wall components: - - parent: 856 - pos: 18.5,6.5 + - parent: 855 + pos: 17.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1779 type: solid_wall components: - - parent: 856 - pos: 17.5,6.5 + - parent: 855 + pos: 17.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 1780 type: solid_wall components: - - parent: 856 - pos: 17.5,7.5 + - parent: 855 + pos: 16.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1781 type: solid_wall components: - - parent: 856 - pos: 17.5,8.5 + - parent: 855 + pos: 12.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1782 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: 17.5,9.5 + - parent: 855 + pos: 19.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1783 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: 16.5,8.5 + - parent: 855 + pos: 20.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1784 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: 12.5,8.5 + - parent: 855 + pos: 21.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1785 type: LowWall components: - - parent: 856 - pos: 19.5,6.5 + - parent: 855 + pos: 22.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1786 type: LowWall components: - - parent: 856 - pos: 20.5,6.5 + - parent: 855 + pos: 23.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1787 type: LowWall components: - - parent: 856 - pos: 21.5,6.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1788 - type: LowWall - components: - - parent: 856 - pos: 22.5,6.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1789 - type: LowWall - components: - - parent: 856 - pos: 23.5,15.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1790 - type: LowWall - components: - - parent: 856 + - parent: 855 pos: 23.5,16.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1791 +- uid: 1788 type: SignDirectionalBridge components: - - parent: 856 + - parent: 855 pos: -20.49181,6.256847 type: Transform - deadThreshold: 100 type: Destructible -- uid: 1792 +- uid: 1789 type: SignDirectionalSec components: - - parent: 856 + - parent: 855 pos: 5.9947615,6.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 1793 +- uid: 1790 type: LowWall components: - - parent: 856 + - parent: 855 pos: 19.5,15.5 rot: -1.5707963267948966 rad type: Transform +- uid: 1791 + type: solid_wall + components: + - parent: 855 + pos: -0.5,-7.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1792 + type: solid_wall + components: + - parent: 855 + pos: -19.5,-16.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1793 + type: solid_wall + components: + - parent: 855 + pos: -21.5,-16.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 1794 type: solid_wall components: - - parent: 856 - pos: -0.5,-7.5 + - parent: 855 + pos: 17.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 1795 type: solid_wall components: - - parent: 856 - pos: -19.5,-16.5 + - parent: 855 + pos: 17.5,13.5 rot: -1.5707963267948966 rad type: Transform - uid: 1796 type: solid_wall components: - - parent: 856 - pos: -21.5,-16.5 + - parent: 855 + pos: 17.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 1797 type: solid_wall components: - - parent: 856 - pos: 17.5,12.5 + - parent: 855 + pos: 17.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1798 type: solid_wall components: - - parent: 856 - pos: 17.5,13.5 + - parent: 855 + pos: 16.5,16.5 rot: -1.5707963267948966 rad type: Transform - uid: 1799 type: solid_wall components: - - parent: 856 - pos: 17.5,14.5 + - parent: 855 + pos: 17.5,16.5 rot: -1.5707963267948966 rad type: Transform - uid: 1800 type: solid_wall components: - - parent: 856 - pos: 17.5,15.5 + - parent: 855 + pos: 16.5,13.5 rot: -1.5707963267948966 rad type: Transform - uid: 1801 type: solid_wall components: - - parent: 856 - pos: 16.5,16.5 + - parent: 855 + pos: 15.5,13.5 rot: -1.5707963267948966 rad type: Transform - uid: 1802 type: solid_wall components: - - parent: 856 - pos: 17.5,16.5 + - parent: 855 + pos: 14.5,13.5 rot: -1.5707963267948966 rad type: Transform - uid: 1803 type: solid_wall components: - - parent: 856 - pos: 16.5,13.5 + - parent: 855 + pos: 13.5,13.5 rot: -1.5707963267948966 rad type: Transform - uid: 1804 type: solid_wall components: - - parent: 856 - pos: 15.5,13.5 + - parent: 855 + pos: 12.5,13.5 rot: -1.5707963267948966 rad type: Transform - uid: 1805 type: solid_wall components: - - parent: 856 - pos: 14.5,13.5 + - parent: 855 + pos: 11.5,13.5 rot: -1.5707963267948966 rad type: Transform - uid: 1806 - type: solid_wall + type: reinforced_wall components: - - parent: 856 - pos: 13.5,13.5 + - parent: 855 + pos: 11.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 1807 - type: solid_wall + type: reinforced_wall components: - - parent: 856 - pos: 12.5,13.5 + - parent: 855 + pos: 10.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 1808 - type: solid_wall + type: reinforced_wall components: - - parent: 856 - pos: 11.5,13.5 + - parent: 855 + pos: 9.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 1809 type: reinforced_wall components: - - parent: 856 - pos: 11.5,12.5 + - parent: 855 + pos: 7.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 1810 type: reinforced_wall components: - - parent: 856 - pos: 10.5,12.5 + - parent: 855 + pos: 6.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 1811 type: reinforced_wall components: - - parent: 856 - pos: 9.5,12.5 + - parent: 855 + pos: 5.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 1812 type: reinforced_wall components: - - parent: 856 - pos: 7.5,12.5 + - parent: 855 + pos: 5.5,11.5 rot: -1.5707963267948966 rad type: Transform - uid: 1813 type: reinforced_wall components: - - parent: 856 - pos: 6.5,12.5 + - parent: 855 + pos: 5.5,10.5 rot: -1.5707963267948966 rad type: Transform - uid: 1814 type: reinforced_wall components: - - parent: 856 - pos: 5.5,12.5 + - parent: 855 + pos: 5.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 1815 type: reinforced_wall components: - - parent: 856 - pos: 5.5,11.5 + - parent: 855 + pos: 5.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1816 type: reinforced_wall components: - - parent: 856 - pos: 5.5,10.5 + - parent: 855 + pos: 5.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 1817 type: reinforced_wall components: - - parent: 856 - pos: 5.5,9.5 + - parent: 855 + pos: 5.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1818 type: reinforced_wall components: - - parent: 856 - pos: 5.5,8.5 + - parent: 855 + pos: 11.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1819 type: reinforced_wall components: - - parent: 856 - pos: 5.5,7.5 + - parent: 855 + pos: 11.5,11.5 rot: -1.5707963267948966 rad type: Transform - uid: 1820 type: reinforced_wall components: - - parent: 856 - pos: 5.5,6.5 + - parent: 855 + pos: 11.5,10.5 rot: -1.5707963267948966 rad type: Transform - uid: 1821 type: reinforced_wall components: - - parent: 856 - pos: 11.5,6.5 + - parent: 855 + pos: 11.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 1822 type: reinforced_wall components: - - parent: 856 - pos: 11.5,11.5 + - parent: 855 + pos: 11.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1823 type: reinforced_wall components: - - parent: 856 - pos: 11.5,10.5 + - parent: 855 + pos: 11.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 1824 type: reinforced_wall components: - - parent: 856 - pos: 11.5,9.5 + - parent: 855 + pos: 10.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1825 type: reinforced_wall components: - - parent: 856 - pos: 11.5,8.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1826 - type: reinforced_wall - components: - - parent: 856 - pos: 11.5,7.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1827 - type: reinforced_wall - components: - - parent: 856 - pos: 10.5,6.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1828 - type: reinforced_wall - components: - - parent: 856 + - parent: 855 pos: 6.5,6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1829 +- uid: 1826 type: LowWall components: - - parent: 856 + - parent: 855 pos: 8.5,6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1830 +- uid: 1827 type: solid_wall components: - - parent: 856 + - parent: 855 pos: 14.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1831 +- uid: 1828 type: solid_wall components: - - parent: 856 + - parent: 855 pos: 14.5,16.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1832 +- uid: 1829 type: solid_wall components: - - parent: 856 + - parent: 855 pos: 14.5,17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1833 +- uid: 1830 type: ReinforcedWindow components: - - parent: 856 + - parent: 855 pos: 19.5,14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1834 +- uid: 1831 type: ReinforcedWindow components: - - parent: 856 + - parent: 855 pos: 19.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1835 +- uid: 1832 type: ReinforcedWindow components: - - parent: 856 + - parent: 855 pos: 19.5,16.5 rot: -1.5707963267948966 rad type: Transform +- uid: 1833 + type: solid_wall + components: + - parent: 855 + pos: 14.5,21.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1834 + type: solid_wall + components: + - parent: 855 + pos: -17.5,2.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1835 + type: solid_wall + components: + - parent: 855 + pos: -20.5,2.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 1836 type: solid_wall components: - - parent: 856 - pos: 14.5,21.5 + - parent: 855 + pos: -21.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 1837 type: solid_wall components: - - parent: 856 - pos: -17.5,2.5 + - parent: 855 + pos: 11.5,21.5 rot: -1.5707963267948966 rad type: Transform - uid: 1838 type: solid_wall components: - - parent: 856 - pos: -20.5,2.5 + - parent: 855 + pos: 11.5,19.5 rot: -1.5707963267948966 rad type: Transform - uid: 1839 type: solid_wall components: - - parent: 856 - pos: -21.5,2.5 + - parent: 855 + pos: 11.5,18.5 rot: -1.5707963267948966 rad type: Transform - uid: 1840 type: solid_wall components: - - parent: 856 - pos: 11.5,21.5 + - parent: 855 + pos: 11.5,17.5 rot: -1.5707963267948966 rad type: Transform - uid: 1841 type: solid_wall components: - - parent: 856 - pos: 11.5,19.5 + - parent: 855 + pos: 11.5,16.5 rot: -1.5707963267948966 rad type: Transform - uid: 1842 type: solid_wall components: - - parent: 856 - pos: 11.5,18.5 + - parent: 855 + pos: 11.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1843 type: solid_wall components: - - parent: 856 - pos: 11.5,17.5 + - parent: 855 + pos: 10.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1844 type: solid_wall components: - - parent: 856 - pos: 11.5,16.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1845 - type: solid_wall - components: - - parent: 856 - pos: 11.5,15.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1846 - type: solid_wall - components: - - parent: 856 - pos: 10.5,15.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1847 - type: solid_wall - components: - - parent: 856 + - parent: 855 pos: 9.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1848 +- uid: 1845 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -24.5,-9 rot: 1.5707963267948966 rad type: Transform @@ -27743,3828 +27718,3828 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer +- uid: 1846 + type: solid_wall + components: + - parent: 855 + pos: -21.5,0.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1847 + type: solid_wall + components: + - parent: 855 + pos: 6.5,15.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1848 + type: solid_wall + components: + - parent: 855 + pos: 5.5,15.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 1849 type: solid_wall components: - - parent: 856 - pos: -21.5,0.5 + - parent: 855 + pos: 6.5,16.5 rot: -1.5707963267948966 rad type: Transform - uid: 1850 type: solid_wall components: - - parent: 856 - pos: 6.5,15.5 + - parent: 855 + pos: 5.5,13.5 rot: -1.5707963267948966 rad type: Transform - uid: 1851 type: solid_wall components: - - parent: 856 - pos: 5.5,15.5 + - parent: 855 + pos: 6.5,21.5 rot: -1.5707963267948966 rad type: Transform - uid: 1852 - type: solid_wall + type: reinforced_wall components: - - parent: 856 - pos: 6.5,16.5 + - parent: 855 + pos: 10.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 1853 - type: solid_wall + type: reinforced_wall components: - - parent: 856 - pos: 5.5,13.5 + - parent: 855 + pos: 9.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 1854 - type: solid_wall + type: reinforced_wall components: - - parent: 856 - pos: 6.5,21.5 + - parent: 855 + pos: 8.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 1855 type: reinforced_wall components: - - parent: 856 - pos: 10.5,22.5 + - parent: 855 + pos: 7.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 1856 type: reinforced_wall components: - - parent: 856 - pos: 9.5,22.5 + - parent: 855 + pos: 6.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 1857 type: reinforced_wall components: - - parent: 856 - pos: 8.5,22.5 + - parent: 855 + pos: 5.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 1858 type: reinforced_wall components: - - parent: 856 - pos: 7.5,22.5 + - parent: 855 + pos: 10.5,23.5 rot: -1.5707963267948966 rad type: Transform - uid: 1859 type: reinforced_wall components: - - parent: 856 - pos: 6.5,22.5 + - parent: 855 + pos: 10.5,24.5 rot: -1.5707963267948966 rad type: Transform - uid: 1860 type: reinforced_wall components: - - parent: 856 - pos: 5.5,22.5 + - parent: 855 + pos: 10.5,25.5 rot: -1.5707963267948966 rad type: Transform - uid: 1861 type: reinforced_wall components: - - parent: 856 - pos: 10.5,23.5 + - parent: 855 + pos: 10.5,26.5 rot: -1.5707963267948966 rad type: Transform - uid: 1862 type: reinforced_wall components: - - parent: 856 - pos: 10.5,24.5 + - parent: 855 + pos: 10.5,27.5 rot: -1.5707963267948966 rad type: Transform - uid: 1863 type: reinforced_wall components: - - parent: 856 - pos: 10.5,25.5 + - parent: 855 + pos: 10.5,28.5 rot: -1.5707963267948966 rad type: Transform - uid: 1864 type: reinforced_wall components: - - parent: 856 - pos: 10.5,26.5 + - parent: 855 + pos: 10.5,30.5 rot: -1.5707963267948966 rad type: Transform - uid: 1865 type: reinforced_wall components: - - parent: 856 - pos: 10.5,27.5 + - parent: 855 + pos: 10.5,31.5 rot: -1.5707963267948966 rad type: Transform - uid: 1866 type: reinforced_wall components: - - parent: 856 - pos: 10.5,28.5 + - parent: 855 + pos: -3.5,31.5 rot: -1.5707963267948966 rad type: Transform - uid: 1867 type: reinforced_wall components: - - parent: 856 - pos: 10.5,30.5 + - parent: 855 + pos: -3.5,30.5 rot: -1.5707963267948966 rad type: Transform - uid: 1868 type: reinforced_wall components: - - parent: 856 - pos: 10.5,31.5 + - parent: 855 + pos: -3.5,28.5 rot: -1.5707963267948966 rad type: Transform - uid: 1869 type: reinforced_wall components: - - parent: 856 - pos: -3.5,31.5 + - parent: 855 + pos: -3.5,27.5 rot: -1.5707963267948966 rad type: Transform - uid: 1870 type: reinforced_wall components: - - parent: 856 - pos: -3.5,30.5 + - parent: 855 + pos: -3.5,26.5 rot: -1.5707963267948966 rad type: Transform - uid: 1871 type: reinforced_wall components: - - parent: 856 - pos: -3.5,28.5 + - parent: 855 + pos: -3.5,25.5 rot: -1.5707963267948966 rad type: Transform - uid: 1872 type: reinforced_wall components: - - parent: 856 - pos: -3.5,27.5 + - parent: 855 + pos: 1.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 1873 type: reinforced_wall components: - - parent: 856 - pos: -3.5,26.5 + - parent: 855 + pos: 0.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 1874 type: reinforced_wall components: - - parent: 856 - pos: -3.5,25.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1875 - type: reinforced_wall - components: - - parent: 856 - pos: 1.5,22.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1876 - type: reinforced_wall - components: - - parent: 856 - pos: 0.5,22.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 1877 - type: reinforced_wall - components: - - parent: 856 + - parent: 855 pos: -0.5,22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1878 +- uid: 1875 type: AirlockCommandLocked components: - name: Head of Personnel's Office type: MetaData - - parent: 856 + - parent: 855 pos: 6.5,17.5 rot: -1.5707963267948966 rad type: Transform - access: - - HeadOfPersonnel type: AccessReader -- uid: 1879 +- uid: 1876 type: reinforced_wall components: - - parent: 856 + - parent: 855 pos: -2.5,22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1880 +- uid: 1877 type: reinforced_wall components: - - parent: 856 + - parent: 855 pos: -3.5,22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1881 +- uid: 1878 type: reinforced_wall components: - - parent: 856 + - parent: 855 pos: -3.5,23.5 rot: -1.5707963267948966 rad type: Transform -- uid: 1882 +- uid: 1879 type: reinforced_wall components: - - parent: 856 + - parent: 855 pos: -3.5,24.5 rot: -1.5707963267948966 rad type: Transform +- uid: 1880 + type: solid_wall + components: + - parent: 855 + pos: 1.5,26.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1881 + type: solid_wall + components: + - parent: 855 + pos: 1.5,27.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 1882 + type: solid_wall + components: + - parent: 855 + pos: 0.5,27.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 1883 type: solid_wall components: - - parent: 856 - pos: 1.5,26.5 + - parent: 855 + pos: -2.5,27.5 rot: -1.5707963267948966 rad type: Transform - uid: 1884 type: solid_wall components: - - parent: 856 - pos: 1.5,27.5 + - parent: 855 + pos: 1.5,23.5 rot: -1.5707963267948966 rad type: Transform - uid: 1885 type: solid_wall components: - - parent: 856 - pos: 0.5,27.5 + - parent: 855 + pos: 5.5,23.5 rot: -1.5707963267948966 rad type: Transform - uid: 1886 type: solid_wall components: - - parent: 856 - pos: -2.5,27.5 + - parent: 855 + pos: 5.5,24.5 rot: -1.5707963267948966 rad type: Transform - uid: 1887 type: solid_wall components: - - parent: 856 - pos: 1.5,23.5 + - parent: 855 + pos: 5.5,26.5 rot: -1.5707963267948966 rad type: Transform - uid: 1888 type: solid_wall components: - - parent: 856 - pos: 5.5,23.5 + - parent: 855 + pos: 5.5,27.5 rot: -1.5707963267948966 rad type: Transform - uid: 1889 type: solid_wall components: - - parent: 856 - pos: 5.5,24.5 + - parent: 855 + pos: 6.5,27.5 rot: -1.5707963267948966 rad type: Transform - uid: 1890 type: solid_wall components: - - parent: 856 - pos: 5.5,26.5 + - parent: 855 + pos: 7.5,27.5 rot: -1.5707963267948966 rad type: Transform - uid: 1891 type: solid_wall components: - - parent: 856 - pos: 5.5,27.5 + - parent: 855 + pos: 8.5,27.5 rot: -1.5707963267948966 rad type: Transform - uid: 1892 type: solid_wall components: - - parent: 856 - pos: 6.5,27.5 + - parent: 855 + pos: 9.5,27.5 rot: -1.5707963267948966 rad type: Transform - uid: 1893 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: 7.5,27.5 + - parent: 855 + pos: 3.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 1894 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: 8.5,27.5 + - parent: 855 + pos: -1.5,27.5 rot: -1.5707963267948966 rad type: Transform - uid: 1895 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: 9.5,27.5 + - parent: 855 + pos: -0.5,27.5 rot: -1.5707963267948966 rad type: Transform - uid: 1896 type: LowWall components: - - parent: 856 - pos: 3.5,22.5 + - parent: 855 + pos: -3.5,29.5 rot: -1.5707963267948966 rad type: Transform - uid: 1897 type: LowWall components: - - parent: 856 - pos: -1.5,27.5 + - parent: 855 + pos: 10.5,29.5 rot: -1.5707963267948966 rad type: Transform - uid: 1898 type: LowWall components: - - parent: 856 - pos: -0.5,27.5 + - parent: 855 + pos: 9.5,31.5 rot: -1.5707963267948966 rad type: Transform - uid: 1899 type: LowWall components: - - parent: 856 - pos: -3.5,29.5 + - parent: 855 + pos: 9.5,32.5 rot: -1.5707963267948966 rad type: Transform - uid: 1900 type: LowWall components: - - parent: 856 - pos: 10.5,29.5 + - parent: 855 + pos: 8.5,32.5 rot: -1.5707963267948966 rad type: Transform - uid: 1901 type: LowWall components: - - parent: 856 - pos: 9.5,31.5 + - parent: 855 + pos: 8.5,33.5 rot: -1.5707963267948966 rad type: Transform - uid: 1902 type: LowWall components: - - parent: 856 - pos: 9.5,32.5 + - parent: 855 + pos: 7.5,33.5 rot: -1.5707963267948966 rad type: Transform - uid: 1903 type: LowWall components: - - parent: 856 - pos: 8.5,32.5 + - parent: 855 + pos: 6.5,33.5 rot: -1.5707963267948966 rad type: Transform - uid: 1904 type: LowWall components: - - parent: 856 - pos: 8.5,33.5 + - parent: 855 + pos: 5.5,33.5 rot: -1.5707963267948966 rad type: Transform - uid: 1905 type: LowWall components: - - parent: 856 - pos: 7.5,33.5 + - parent: 855 + pos: 4.5,33.5 rot: -1.5707963267948966 rad type: Transform - uid: 1906 type: LowWall components: - - parent: 856 - pos: 6.5,33.5 + - parent: 855 + pos: 3.5,33.5 rot: -1.5707963267948966 rad type: Transform - uid: 1907 type: LowWall components: - - parent: 856 - pos: 5.5,33.5 + - parent: 855 + pos: 2.5,33.5 rot: -1.5707963267948966 rad type: Transform - uid: 1908 type: LowWall components: - - parent: 856 - pos: 4.5,33.5 + - parent: 855 + pos: 1.5,33.5 rot: -1.5707963267948966 rad type: Transform - uid: 1909 type: LowWall components: - - parent: 856 - pos: 3.5,33.5 + - parent: 855 + pos: 0.5,33.5 rot: -1.5707963267948966 rad type: Transform - uid: 1910 type: LowWall components: - - parent: 856 - pos: 2.5,33.5 + - parent: 855 + pos: -0.5,33.5 rot: -1.5707963267948966 rad type: Transform - uid: 1911 type: LowWall components: - - parent: 856 - pos: 1.5,33.5 + - parent: 855 + pos: -1.5,33.5 rot: -1.5707963267948966 rad type: Transform - uid: 1912 type: LowWall components: - - parent: 856 - pos: 0.5,33.5 + - parent: 855 + pos: -1.5,32.5 rot: -1.5707963267948966 rad type: Transform - uid: 1913 type: LowWall components: - - parent: 856 - pos: -0.5,33.5 + - parent: 855 + pos: -2.5,31.5 rot: -1.5707963267948966 rad type: Transform - uid: 1914 type: LowWall components: - - parent: 856 - pos: -1.5,33.5 + - parent: 855 + pos: -2.5,32.5 rot: -1.5707963267948966 rad type: Transform - uid: 1915 type: LowWall components: - - parent: 856 - pos: -1.5,32.5 + - parent: 855 + pos: 6.5,19.5 rot: -1.5707963267948966 rad type: Transform - uid: 1916 type: LowWall components: - - parent: 856 - pos: -2.5,31.5 + - parent: 855 + pos: 6.5,18.5 rot: -1.5707963267948966 rad type: Transform - uid: 1917 - type: LowWall + type: reinforced_wall components: - - parent: 856 - pos: -2.5,32.5 + - parent: 855 + pos: 1.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1918 - type: LowWall + type: reinforced_wall components: - - parent: 856 - pos: 6.5,19.5 + - parent: 855 + pos: 0.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1919 - type: LowWall + type: reinforced_wall components: - - parent: 856 - pos: 6.5,18.5 + - parent: 855 + pos: -0.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1920 type: reinforced_wall components: - - parent: 856 - pos: 1.5,15.5 + - parent: 855 + pos: -1.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1921 type: reinforced_wall components: - - parent: 856 - pos: 0.5,15.5 + - parent: 855 + pos: -2.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1922 type: reinforced_wall components: - - parent: 856 - pos: -0.5,15.5 + - parent: 855 + pos: -3.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1923 type: reinforced_wall components: - - parent: 856 - pos: -1.5,15.5 + - parent: 855 + pos: -4.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1924 type: reinforced_wall components: - - parent: 856 - pos: -2.5,15.5 + - parent: 855 + pos: -4.5,16.5 rot: -1.5707963267948966 rad type: Transform - uid: 1925 type: reinforced_wall components: - - parent: 856 - pos: -3.5,15.5 + - parent: 855 + pos: -4.5,17.5 rot: -1.5707963267948966 rad type: Transform - uid: 1926 type: reinforced_wall components: - - parent: 856 - pos: -4.5,15.5 + - parent: 855 + pos: -4.5,18.5 rot: -1.5707963267948966 rad type: Transform - uid: 1927 type: reinforced_wall components: - - parent: 856 - pos: -4.5,16.5 + - parent: 855 + pos: -4.5,19.5 rot: -1.5707963267948966 rad type: Transform - uid: 1928 type: reinforced_wall components: - - parent: 856 - pos: -4.5,17.5 + - parent: 855 + pos: -5.5,19.5 rot: -1.5707963267948966 rad type: Transform - uid: 1929 - type: reinforced_wall + type: LowWall components: - - parent: 856 - pos: -4.5,18.5 + - parent: 855 + pos: -7.5,18.5 rot: -1.5707963267948966 rad type: Transform - uid: 1930 type: reinforced_wall components: - - parent: 856 - pos: -4.5,19.5 + - parent: 855 + pos: -3.5,19.5 rot: -1.5707963267948966 rad type: Transform - uid: 1931 type: reinforced_wall components: - - parent: 856 - pos: -5.5,19.5 + - parent: 855 + pos: -2.5,19.5 rot: -1.5707963267948966 rad type: Transform - uid: 1932 - type: LowWall + type: reinforced_wall components: - - parent: 856 - pos: -7.5,18.5 + - parent: 855 + pos: -1.5,19.5 rot: -1.5707963267948966 rad type: Transform - uid: 1933 type: reinforced_wall components: - - parent: 856 - pos: -3.5,19.5 + - parent: 855 + pos: -0.5,19.5 rot: -1.5707963267948966 rad type: Transform - uid: 1934 type: reinforced_wall components: - - parent: 856 - pos: -2.5,19.5 + - parent: 855 + pos: 0.5,19.5 rot: -1.5707963267948966 rad type: Transform - uid: 1935 type: reinforced_wall components: - - parent: 856 - pos: -1.5,19.5 + - parent: 855 + pos: 0.5,18.5 rot: -1.5707963267948966 rad type: Transform - uid: 1936 type: reinforced_wall components: - - parent: 856 - pos: -0.5,19.5 + - parent: 855 + pos: 0.5,16.5 rot: -1.5707963267948966 rad type: Transform - uid: 1937 type: reinforced_wall components: - - parent: 856 - pos: 0.5,19.5 + - parent: 855 + pos: -5.5,20.5 rot: -1.5707963267948966 rad type: Transform - uid: 1938 type: reinforced_wall components: - - parent: 856 - pos: 0.5,18.5 + - parent: 855 + pos: -5.5,21.5 rot: -1.5707963267948966 rad type: Transform - uid: 1939 type: reinforced_wall components: - - parent: 856 - pos: 0.5,16.5 + - parent: 855 + pos: -5.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 1940 type: reinforced_wall components: - - parent: 856 - pos: -5.5,20.5 + - parent: 855 + pos: -6.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 1941 type: reinforced_wall components: - - parent: 856 - pos: -5.5,21.5 + - parent: 855 + pos: -7.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 1942 type: reinforced_wall components: - - parent: 856 - pos: -5.5,22.5 + - parent: 855 + pos: -8.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 1943 type: reinforced_wall components: - - parent: 856 - pos: -6.5,22.5 + - parent: 855 + pos: -9.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 1944 - type: reinforced_wall + type: Window components: - - parent: 856 - pos: -7.5,22.5 + - parent: 855 + pos: 40.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 1945 type: reinforced_wall components: - - parent: 856 - pos: -8.5,22.5 + - parent: 855 + pos: -11.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 1946 type: reinforced_wall components: - - parent: 856 - pos: -9.5,22.5 + - parent: 855 + pos: -12.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 1947 - type: Window + type: reinforced_wall components: - - parent: 856 - pos: 40.5,1.5 + - parent: 855 + pos: -13.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 1948 type: reinforced_wall components: - - parent: 856 - pos: -11.5,22.5 + - parent: 855 + pos: -14.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 1949 type: reinforced_wall components: - - parent: 856 - pos: -12.5,22.5 + - parent: 855 + pos: -15.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 1950 type: reinforced_wall components: - - parent: 856 - pos: -13.5,22.5 + - parent: 855 + pos: -16.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 1951 type: reinforced_wall components: - - parent: 856 - pos: -14.5,22.5 + - parent: 855 + pos: -16.5,23.5 rot: -1.5707963267948966 rad type: Transform - uid: 1952 type: reinforced_wall components: - - parent: 856 - pos: -15.5,22.5 + - parent: 855 + pos: -15.5,23.5 rot: -1.5707963267948966 rad type: Transform - uid: 1953 type: reinforced_wall components: - - parent: 856 - pos: -16.5,22.5 + - parent: 855 + pos: -14.5,23.5 rot: -1.5707963267948966 rad type: Transform - uid: 1954 type: reinforced_wall components: - - parent: 856 - pos: -16.5,23.5 + - parent: 855 + pos: -13.5,23.5 rot: -1.5707963267948966 rad type: Transform - uid: 1955 type: reinforced_wall components: - - parent: 856 - pos: -15.5,23.5 + - parent: 855 + pos: -12.5,23.5 rot: -1.5707963267948966 rad type: Transform - uid: 1956 type: reinforced_wall components: - - parent: 856 - pos: -14.5,23.5 + - parent: 855 + pos: -11.5,23.5 rot: -1.5707963267948966 rad type: Transform - uid: 1957 type: reinforced_wall components: - - parent: 856 - pos: -13.5,23.5 + - parent: 855 + pos: -10.5,23.5 rot: -1.5707963267948966 rad type: Transform - uid: 1958 - type: reinforced_wall + type: Window components: - - parent: 856 - pos: -12.5,23.5 + - parent: 855 + pos: 39.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 1959 type: reinforced_wall components: - - parent: 856 - pos: -11.5,23.5 + - parent: 855 + pos: -16.5,21.5 rot: -1.5707963267948966 rad type: Transform - uid: 1960 type: reinforced_wall components: - - parent: 856 - pos: -10.5,23.5 + - parent: 855 + pos: -16.5,20.5 rot: -1.5707963267948966 rad type: Transform - uid: 1961 - type: Window + type: reinforced_wall components: - - parent: 856 - pos: 39.5,1.5 + - parent: 855 + pos: -16.5,19.5 rot: -1.5707963267948966 rad type: Transform - uid: 1962 type: reinforced_wall components: - - parent: 856 - pos: -16.5,21.5 + - parent: 855 + pos: -16.5,18.5 rot: -1.5707963267948966 rad type: Transform - uid: 1963 type: reinforced_wall components: - - parent: 856 - pos: -16.5,20.5 + - parent: 855 + pos: -16.5,17.5 rot: -1.5707963267948966 rad type: Transform - uid: 1964 type: reinforced_wall components: - - parent: 856 - pos: -16.5,19.5 + - parent: 855 + pos: -15.5,21.5 rot: -1.5707963267948966 rad type: Transform - uid: 1965 type: reinforced_wall components: - - parent: 856 - pos: -16.5,18.5 + - parent: 855 + pos: -15.5,20.5 rot: -1.5707963267948966 rad type: Transform - uid: 1966 type: reinforced_wall components: - - parent: 856 - pos: -16.5,17.5 + - parent: 855 + pos: -15.5,19.5 rot: -1.5707963267948966 rad type: Transform - uid: 1967 type: reinforced_wall components: - - parent: 856 - pos: -15.5,21.5 + - parent: 855 + pos: -15.5,18.5 rot: -1.5707963267948966 rad type: Transform - uid: 1968 type: reinforced_wall components: - - parent: 856 - pos: -15.5,20.5 + - parent: 855 + pos: -15.5,17.5 rot: -1.5707963267948966 rad type: Transform - uid: 1969 type: reinforced_wall components: - - parent: 856 - pos: -15.5,19.5 + - parent: 855 + pos: -14.5,17.5 rot: -1.5707963267948966 rad type: Transform - uid: 1970 type: reinforced_wall components: - - parent: 856 - pos: -15.5,18.5 + - parent: 855 + pos: -13.5,17.5 rot: -1.5707963267948966 rad type: Transform - uid: 1971 type: reinforced_wall components: - - parent: 856 - pos: -15.5,17.5 + - parent: 855 + pos: -11.5,17.5 rot: -1.5707963267948966 rad type: Transform - uid: 1972 type: reinforced_wall components: - - parent: 856 - pos: -14.5,17.5 + - parent: 855 + pos: -10.5,17.5 rot: -1.5707963267948966 rad type: Transform - uid: 1973 type: reinforced_wall components: - - parent: 856 - pos: -13.5,17.5 + - parent: 855 + pos: -10.5,18.5 rot: -1.5707963267948966 rad type: Transform - uid: 1974 type: reinforced_wall components: - - parent: 856 - pos: -11.5,17.5 + - parent: 855 + pos: -10.5,19.5 rot: -1.5707963267948966 rad type: Transform - uid: 1975 type: reinforced_wall components: - - parent: 856 - pos: -10.5,17.5 + - parent: 855 + pos: -14.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1976 type: reinforced_wall components: - - parent: 856 - pos: -10.5,18.5 + - parent: 855 + pos: -14.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 1977 type: reinforced_wall components: - - parent: 856 - pos: -10.5,19.5 + - parent: 855 + pos: -14.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1978 type: reinforced_wall components: - - parent: 856 - pos: -14.5,8.5 + - parent: 855 + pos: -13.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1979 type: reinforced_wall components: - - parent: 856 - pos: -14.5,7.5 + - parent: 855 + pos: -12.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1980 type: reinforced_wall components: - - parent: 856 - pos: -14.5,6.5 + - parent: 855 + pos: -11.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1981 type: reinforced_wall components: - - parent: 856 - pos: -13.5,6.5 + - parent: 855 + pos: -10.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 1982 type: reinforced_wall components: - - parent: 856 - pos: -12.5,6.5 + - parent: 855 + pos: -10.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 1983 type: reinforced_wall components: - - parent: 856 - pos: -11.5,6.5 + - parent: 855 + pos: -10.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 1984 type: reinforced_wall components: - - parent: 856 - pos: -10.5,6.5 + - parent: 855 + pos: -10.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 1985 type: reinforced_wall components: - - parent: 856 - pos: -10.5,7.5 + - parent: 855 + pos: -14.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 1986 type: reinforced_wall components: - - parent: 856 - pos: -10.5,8.5 + - parent: 855 + pos: -15.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 1987 type: reinforced_wall components: - - parent: 856 - pos: -10.5,9.5 + - parent: 855 + pos: -15.5,13.5 rot: -1.5707963267948966 rad type: Transform - uid: 1988 type: reinforced_wall components: - - parent: 856 - pos: -14.5,12.5 + - parent: 855 + pos: -15.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 1989 type: reinforced_wall components: - - parent: 856 - pos: -15.5,12.5 + - parent: 855 + pos: -15.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 1990 - type: reinforced_wall + type: AirlockMaintSecLocked components: - - parent: 856 - pos: -15.5,13.5 + - parent: 855 + pos: -14.5,11.5 rot: -1.5707963267948966 rad type: Transform - uid: 1991 type: reinforced_wall components: - - parent: 856 - pos: -15.5,14.5 + - parent: 855 + pos: -14.5,10.5 rot: -1.5707963267948966 rad type: Transform - uid: 1992 type: reinforced_wall components: - - parent: 856 - pos: -15.5,15.5 + - parent: 855 + pos: -14.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 1993 - type: AirlockMaintSecLocked + type: solid_wall components: - - parent: 856 - pos: -14.5,11.5 + - parent: 855 + pos: -6.5,18.5 rot: -1.5707963267948966 rad type: Transform - uid: 1994 - type: reinforced_wall + type: LowWall components: - - parent: 856 - pos: -14.5,10.5 + - parent: 855 + pos: -10.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 1995 - type: reinforced_wall + type: solid_wall components: - - parent: 856 - pos: -14.5,9.5 + - parent: 855 + pos: -9.5,18.5 rot: -1.5707963267948966 rad type: Transform - uid: 1996 type: solid_wall components: - - parent: 856 - pos: -6.5,18.5 + - parent: 855 + pos: -10.5,16.5 rot: -1.5707963267948966 rad type: Transform - uid: 1997 - type: LowWall + type: solid_wall components: - - parent: 856 - pos: -10.5,14.5 + - parent: 855 + pos: -10.5,13.5 rot: -1.5707963267948966 rad type: Transform - uid: 1998 type: solid_wall components: - - parent: 856 - pos: -9.5,18.5 + - parent: 855 + pos: -10.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 1999 type: solid_wall components: - - parent: 856 - pos: -10.5,16.5 + - parent: 855 + pos: -11.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 2000 type: solid_wall components: - - parent: 856 - pos: -10.5,13.5 + - parent: 855 + pos: -12.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 2001 type: solid_wall components: - - parent: 856 - pos: -10.5,12.5 + - parent: 855 + pos: -13.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 2002 type: solid_wall components: - - parent: 856 - pos: -11.5,12.5 + - parent: 855 + pos: -5.5,18.5 rot: -1.5707963267948966 rad type: Transform - uid: 2003 - type: solid_wall + type: reinforced_wall components: - - parent: 856 - pos: -12.5,12.5 + - parent: 855 + pos: 1.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 2004 - type: solid_wall + type: reinforced_wall components: - - parent: 856 - pos: -13.5,12.5 + - parent: 855 + pos: 1.5,13.5 rot: -1.5707963267948966 rad type: Transform - uid: 2005 - type: solid_wall + type: reinforced_wall components: - - parent: 856 - pos: -5.5,18.5 + - parent: 855 + pos: 1.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 2006 type: reinforced_wall components: - - parent: 856 - pos: 1.5,14.5 + - parent: 855 + pos: 1.5,11.5 rot: -1.5707963267948966 rad type: Transform - uid: 2007 type: reinforced_wall components: - - parent: 856 - pos: 1.5,13.5 + - parent: 855 + pos: 1.5,10.5 rot: -1.5707963267948966 rad type: Transform - uid: 2008 type: reinforced_wall components: - - parent: 856 - pos: 1.5,12.5 + - parent: 855 + pos: 1.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 2009 type: reinforced_wall components: - - parent: 856 - pos: 1.5,11.5 + - parent: 855 + pos: 1.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 2010 type: reinforced_wall components: - - parent: 856 - pos: 1.5,10.5 + - parent: 855 + pos: 1.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 2011 type: reinforced_wall components: - - parent: 856 - pos: 1.5,9.5 + - parent: 855 + pos: 1.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2012 type: reinforced_wall components: - - parent: 856 - pos: 1.5,8.5 + - parent: 855 + pos: -4.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2013 type: reinforced_wall components: - - parent: 856 - pos: 1.5,7.5 + - parent: 855 + pos: -1.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2014 type: reinforced_wall components: - - parent: 856 - pos: 1.5,6.5 + - parent: 855 + pos: -7.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2015 - type: reinforced_wall + type: solid_wall components: - - parent: 856 - pos: -4.5,6.5 + - parent: 855 + pos: -4.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 2016 - type: reinforced_wall + type: solid_wall components: - - parent: 856 - pos: -1.5,6.5 + - parent: 855 + pos: -4.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 2017 - type: reinforced_wall + type: solid_wall components: - - parent: 856 - pos: -7.5,6.5 + - parent: 855 + pos: -4.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 2018 type: solid_wall components: - - parent: 856 - pos: -4.5,7.5 + - parent: 855 + pos: -1.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 2019 type: solid_wall components: - - parent: 856 - pos: -4.5,8.5 + - parent: 855 + pos: -1.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 2020 type: solid_wall components: - - parent: 856 - pos: -4.5,9.5 + - parent: 855 + pos: -1.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 2021 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: -1.5,9.5 + - parent: 855 + pos: -0.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 2022 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: -1.5,7.5 + - parent: 855 + pos: -3.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 2023 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: -1.5,8.5 + - parent: 855 + pos: -7.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 2024 type: LowWall components: - - parent: 856 - pos: -0.5,9.5 + - parent: 855 + pos: -8.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 2025 - type: LowWall + type: solid_wall components: - - parent: 856 - pos: -3.5,9.5 + - parent: 855 + pos: -15.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2026 - type: LowWall + type: solid_wall components: - - parent: 856 - pos: -7.5,9.5 + - parent: 855 + pos: -17.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2027 - type: LowWall + type: solid_wall components: - - parent: 856 - pos: -8.5,9.5 + - parent: 855 + pos: -18.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2028 type: solid_wall components: - - parent: 856 - pos: -15.5,6.5 + - parent: 855 + pos: -18.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 2029 type: solid_wall components: - - parent: 856 - pos: -17.5,6.5 + - parent: 855 + pos: -18.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 2030 type: solid_wall components: - - parent: 856 - pos: -18.5,6.5 + - parent: 855 + pos: -18.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 2031 type: solid_wall components: - - parent: 856 - pos: -18.5,7.5 + - parent: 855 + pos: -18.5,10.5 rot: -1.5707963267948966 rad type: Transform - uid: 2032 type: solid_wall components: - - parent: 856 - pos: -18.5,8.5 + - parent: 855 + pos: -18.5,11.5 rot: -1.5707963267948966 rad type: Transform - uid: 2033 type: solid_wall components: - - parent: 856 - pos: -18.5,9.5 + - parent: 855 + pos: -19.5,11.5 rot: -1.5707963267948966 rad type: Transform - uid: 2034 type: solid_wall components: - - parent: 856 - pos: -18.5,10.5 + - parent: 855 + pos: -18.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 2035 type: solid_wall components: - - parent: 856 - pos: -18.5,11.5 + - parent: 855 + pos: -19.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 2036 type: solid_wall components: - - parent: 856 - pos: -19.5,11.5 + - parent: 855 + pos: -19.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 2037 type: solid_wall components: - - parent: 856 - pos: -18.5,14.5 + - parent: 855 + pos: -19.5,16.5 rot: -1.5707963267948966 rad type: Transform - uid: 2038 type: solid_wall components: - - parent: 856 - pos: -19.5,14.5 + - parent: 855 + pos: -19.5,17.5 rot: -1.5707963267948966 rad type: Transform - uid: 2039 type: solid_wall components: - - parent: 856 - pos: -19.5,15.5 + - parent: 855 + pos: -19.5,18.5 rot: -1.5707963267948966 rad type: Transform - uid: 2040 type: solid_wall components: - - parent: 856 - pos: -19.5,16.5 + - parent: 855 + pos: -19.5,19.5 rot: -1.5707963267948966 rad type: Transform - uid: 2041 type: solid_wall components: - - parent: 856 - pos: -19.5,17.5 + - parent: 855 + pos: -19.5,20.5 rot: -1.5707963267948966 rad type: Transform - uid: 2042 type: solid_wall components: - - parent: 856 - pos: -19.5,18.5 + - parent: 855 + pos: -19.5,21.5 rot: -1.5707963267948966 rad type: Transform - uid: 2043 type: solid_wall components: - - parent: 856 - pos: -19.5,19.5 + - parent: 855 + pos: -19.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 2044 type: solid_wall components: - - parent: 856 - pos: -19.5,20.5 + - parent: 855 + pos: -19.5,23.5 rot: -1.5707963267948966 rad type: Transform - uid: 2045 type: solid_wall components: - - parent: 856 - pos: -19.5,21.5 + - parent: 855 + pos: -19.5,24.5 rot: -1.5707963267948966 rad type: Transform - uid: 2046 type: solid_wall components: - - parent: 856 - pos: -19.5,22.5 + - parent: 855 + pos: -19.5,25.5 rot: -1.5707963267948966 rad type: Transform - uid: 2047 type: solid_wall components: - - parent: 856 - pos: -19.5,23.5 + - parent: 855 + pos: -19.5,26.5 rot: -1.5707963267948966 rad type: Transform - uid: 2048 type: solid_wall components: - - parent: 856 - pos: -19.5,24.5 + - parent: 855 + pos: -18.5,26.5 rot: -1.5707963267948966 rad type: Transform - uid: 2049 type: solid_wall components: - - parent: 856 - pos: -19.5,25.5 + - parent: 855 + pos: -17.5,26.5 rot: -1.5707963267948966 rad type: Transform - uid: 2050 type: solid_wall components: - - parent: 856 - pos: -19.5,26.5 + - parent: 855 + pos: -16.5,26.5 rot: -1.5707963267948966 rad type: Transform - uid: 2051 type: solid_wall components: - - parent: 856 - pos: -18.5,26.5 + - parent: 855 + pos: -15.5,26.5 rot: -1.5707963267948966 rad type: Transform - uid: 2052 type: solid_wall components: - - parent: 856 - pos: -17.5,26.5 + - parent: 855 + pos: -14.5,26.5 rot: -1.5707963267948966 rad type: Transform - uid: 2053 type: solid_wall components: - - parent: 856 - pos: -16.5,26.5 + - parent: 855 + pos: -13.5,26.5 rot: -1.5707963267948966 rad type: Transform - uid: 2054 type: solid_wall components: - - parent: 856 - pos: -15.5,26.5 + - parent: 855 + pos: -12.5,26.5 rot: -1.5707963267948966 rad type: Transform - uid: 2055 type: solid_wall components: - - parent: 856 - pos: -14.5,26.5 + - parent: 855 + pos: -11.5,26.5 rot: -1.5707963267948966 rad type: Transform - uid: 2056 type: solid_wall components: - - parent: 856 - pos: -13.5,26.5 + - parent: 855 + pos: -10.5,26.5 rot: -1.5707963267948966 rad type: Transform - uid: 2057 type: solid_wall components: - - parent: 856 - pos: -12.5,26.5 + - parent: 855 + pos: -9.5,26.5 rot: -1.5707963267948966 rad type: Transform - uid: 2058 type: solid_wall components: - - parent: 856 - pos: -11.5,26.5 + - parent: 855 + pos: -8.5,26.5 rot: -1.5707963267948966 rad type: Transform - uid: 2059 type: solid_wall components: - - parent: 856 - pos: -10.5,26.5 + - parent: 855 + pos: -7.5,26.5 rot: -1.5707963267948966 rad type: Transform - uid: 2060 type: solid_wall components: - - parent: 856 - pos: -9.5,26.5 + - parent: 855 + pos: -6.5,26.5 rot: -1.5707963267948966 rad type: Transform - uid: 2061 type: solid_wall components: - - parent: 856 - pos: -8.5,26.5 + - parent: 855 + pos: -6.5,25.5 rot: -1.5707963267948966 rad type: Transform - uid: 2062 type: solid_wall components: - - parent: 856 - pos: -7.5,26.5 + - parent: 855 + pos: -4.5,25.5 rot: -1.5707963267948966 rad type: Transform - uid: 2063 type: solid_wall components: - - parent: 856 - pos: -6.5,26.5 + - parent: 855 + pos: -5.5,25.5 rot: -1.5707963267948966 rad type: Transform - uid: 2064 type: solid_wall components: - - parent: 856 - pos: -6.5,25.5 + - parent: 855 + pos: -20.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 2065 type: solid_wall components: - - parent: 856 - pos: -4.5,25.5 + - parent: 855 + pos: -21.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 2066 type: solid_wall components: - - parent: 856 - pos: -5.5,25.5 + - parent: 855 + pos: -22.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 2067 type: solid_wall components: - - parent: 856 - pos: -20.5,15.5 + - parent: 855 + pos: -23.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 2068 type: solid_wall components: - - parent: 856 - pos: -21.5,15.5 + - parent: 855 + pos: -24.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 2069 type: solid_wall components: - - parent: 856 - pos: -22.5,15.5 + - parent: 855 + pos: -25.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 2070 type: solid_wall components: - - parent: 856 - pos: -23.5,15.5 + - parent: 855 + pos: -26.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 2071 type: solid_wall components: - - parent: 856 - pos: -24.5,15.5 + - parent: 855 + pos: -27.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 2072 type: solid_wall components: - - parent: 856 - pos: -25.5,15.5 + - parent: 855 + pos: -28.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 2073 type: solid_wall components: - - parent: 856 - pos: -26.5,15.5 + - parent: 855 + pos: -29.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 2074 type: solid_wall components: - - parent: 856 - pos: -27.5,15.5 + - parent: 855 + pos: -30.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 2075 type: solid_wall components: - - parent: 856 - pos: -28.5,15.5 + - parent: 855 + pos: -31.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 2076 type: solid_wall components: - - parent: 856 - pos: -29.5,15.5 + - parent: 855 + pos: -32.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 2077 type: solid_wall components: - - parent: 856 - pos: -30.5,15.5 + - parent: 855 + pos: -33.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 2078 type: solid_wall components: - - parent: 856 - pos: -31.5,15.5 + - parent: 855 + pos: -33.5,14.5 rot: -1.5707963267948966 rad type: Transform - uid: 2079 type: solid_wall components: - - parent: 856 - pos: -32.5,15.5 + - parent: 855 + pos: -33.5,13.5 rot: -1.5707963267948966 rad type: Transform - uid: 2080 type: solid_wall components: - - parent: 856 - pos: -33.5,15.5 + - parent: 855 + pos: -33.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 2081 type: solid_wall components: - - parent: 856 - pos: -33.5,14.5 + - parent: 855 + pos: -33.5,11.5 rot: -1.5707963267948966 rad type: Transform - uid: 2082 type: solid_wall components: - - parent: 856 - pos: -33.5,13.5 + - parent: 855 + pos: -33.5,10.5 rot: -1.5707963267948966 rad type: Transform - uid: 2083 type: solid_wall components: - - parent: 856 - pos: -33.5,12.5 + - parent: 855 + pos: -21.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 2084 type: solid_wall components: - - parent: 856 - pos: -33.5,11.5 + - parent: 855 + pos: -33.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 2085 type: solid_wall components: - - parent: 856 - pos: -33.5,10.5 + - parent: 855 + pos: -33.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2086 type: solid_wall components: - - parent: 856 - pos: -21.5,1.5 + - parent: 855 + pos: -32.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2087 type: solid_wall components: - - parent: 856 - pos: -33.5,7.5 + - parent: 855 + pos: -31.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2088 type: solid_wall components: - - parent: 856 - pos: -33.5,6.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 2089 - type: solid_wall - components: - - parent: 856 - pos: -32.5,6.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 2090 - type: solid_wall - components: - - parent: 856 - pos: -31.5,6.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 2091 - type: solid_wall - components: - - parent: 856 + - parent: 855 pos: -30.5,6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2092 +- uid: 2089 type: LowWall components: - - parent: 856 + - parent: 855 pos: -28.5,6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2093 +- uid: 2090 type: Catwalk components: - - parent: 856 + - parent: 855 pos: 0.5,-23.5 rot: -1.5707963267948966 rad type: Transform +- uid: 2091 + type: ApcExtensionCable + components: + - parent: 855 + pos: -7.5,-24.5 + rot: -1.5707963267948966 rad + type: Transform + - deadThreshold: 100 + type: Destructible +- uid: 2092 + type: solid_wall + components: + - parent: 855 + pos: -26.5,6.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 2093 + type: solid_wall + components: + - parent: 855 + pos: -26.5,7.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 2094 type: ApcExtensionCable components: - - parent: 856 - pos: -7.5,-24.5 - rot: -1.5707963267948966 rad + - parent: 855 + pos: 1.5,6.5 + rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible - uid: 2095 type: solid_wall components: - - parent: 856 - pos: -26.5,6.5 + - parent: 855 + pos: -30.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 2096 type: solid_wall components: - - parent: 856 - pos: -26.5,7.5 + - parent: 855 + pos: -30.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 2097 - type: ApcExtensionCable + type: solid_wall components: - - parent: 856 - pos: 1.5,6.5 - rot: 3.141592653589793 rad + - parent: 855 + pos: -30.5,9.5 + rot: -1.5707963267948966 rad type: Transform - - deadThreshold: 100 - type: Destructible - uid: 2098 type: solid_wall components: - - parent: 856 - pos: -30.5,7.5 + - parent: 855 + pos: -30.5,10.5 rot: -1.5707963267948966 rad type: Transform - uid: 2099 type: solid_wall components: - - parent: 856 - pos: -30.5,8.5 + - parent: 855 + pos: -30.5,11.5 rot: -1.5707963267948966 rad type: Transform - uid: 2100 type: solid_wall components: - - parent: 856 - pos: -30.5,9.5 + - parent: 855 + pos: -30.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 2101 type: solid_wall components: - - parent: 856 - pos: -30.5,10.5 + - parent: 855 + pos: -28.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 2102 type: solid_wall components: - - parent: 856 - pos: -30.5,11.5 + - parent: 855 + pos: -27.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 2103 type: solid_wall components: - - parent: 856 - pos: -30.5,12.5 + - parent: 855 + pos: -26.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 2104 type: solid_wall components: - - parent: 856 - pos: -28.5,12.5 + - parent: 855 + pos: -25.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 2105 type: solid_wall components: - - parent: 856 - pos: -27.5,12.5 + - parent: 855 + pos: -24.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 2106 type: solid_wall components: - - parent: 856 - pos: -26.5,12.5 + - parent: 855 + pos: -23.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 2107 type: solid_wall components: - - parent: 856 - pos: -25.5,12.5 + - parent: 855 + pos: -22.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 2108 type: solid_wall components: - - parent: 856 - pos: -24.5,12.5 + - parent: 855 + pos: -29.5,12.5 rot: -1.5707963267948966 rad type: Transform - uid: 2109 type: solid_wall components: - - parent: 856 - pos: -23.5,12.5 + - parent: 855 + pos: -22.5,11.5 rot: -1.5707963267948966 rad type: Transform - uid: 2110 type: solid_wall components: - - parent: 856 - pos: -22.5,12.5 + - parent: 855 + pos: -22.5,11.5 rot: -1.5707963267948966 rad type: Transform - uid: 2111 type: solid_wall components: - - parent: 856 - pos: -29.5,12.5 + - parent: 855 + pos: -21.5,11.5 rot: -1.5707963267948966 rad type: Transform - uid: 2112 type: solid_wall components: - - parent: 856 - pos: -22.5,11.5 + - parent: 855 + pos: -22.5,10.5 rot: -1.5707963267948966 rad type: Transform - uid: 2113 type: solid_wall components: - - parent: 856 - pos: -22.5,11.5 + - parent: 855 + pos: -22.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 2114 type: solid_wall components: - - parent: 856 - pos: -21.5,11.5 + - parent: 855 + pos: -22.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 2115 type: solid_wall components: - - parent: 856 - pos: -22.5,10.5 + - parent: 855 + pos: -21.5,7.5 rot: -1.5707963267948966 rad type: Transform - uid: 2116 type: solid_wall components: - - parent: 856 - pos: -22.5,8.5 + - parent: 855 + pos: -21.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2117 type: solid_wall components: - - parent: 856 - pos: -22.5,7.5 + - parent: 855 + pos: -20.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2118 type: solid_wall components: - - parent: 856 - pos: -21.5,7.5 + - parent: 855 + pos: -19.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2119 type: solid_wall components: - - parent: 856 - pos: -21.5,6.5 + - parent: 855 + pos: -25.5,11.5 rot: -1.5707963267948966 rad type: Transform - uid: 2120 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: -20.5,6.5 + - parent: 855 + pos: -25.5,9.5 rot: -1.5707963267948966 rad type: Transform - uid: 2121 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: -19.5,6.5 + - parent: 855 + pos: -2.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2122 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: -25.5,11.5 + - parent: 855 + pos: -3.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2123 type: LowWall components: - - parent: 856 - pos: -25.5,9.5 + - parent: 855 + pos: -0.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2124 type: LowWall components: - - parent: 856 - pos: -2.5,6.5 + - parent: 855 + pos: 0.5,6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2125 type: LowWall components: - - parent: 856 - pos: -3.5,6.5 + - parent: 855 + pos: 14.5,8.5 rot: -1.5707963267948966 rad type: Transform - uid: 2126 - type: LowWall + type: solid_wall components: - - parent: 856 - pos: -0.5,6.5 + - parent: 855 + pos: 30.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 2127 - type: LowWall + type: solid_wall components: - - parent: 856 - pos: 0.5,6.5 + - parent: 855 + pos: 30.5,0.5 rot: -1.5707963267948966 rad type: Transform - uid: 2128 - type: LowWall + type: solid_wall components: - - parent: 856 - pos: 14.5,8.5 + - parent: 855 + pos: 29.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 2129 type: solid_wall components: - - parent: 856 - pos: 30.5,-0.5 + - parent: 855 + pos: 28.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 2130 type: solid_wall components: - - parent: 856 - pos: 30.5,0.5 + - parent: 855 + pos: 27.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 2131 type: solid_wall components: - - parent: 856 - pos: 29.5,-0.5 + - parent: 855 + pos: 26.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 2132 type: solid_wall components: - - parent: 856 - pos: 28.5,-0.5 + - parent: 855 + pos: 25.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 2133 type: solid_wall components: - - parent: 856 - pos: 27.5,-0.5 + - parent: 855 + pos: 24.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 2134 type: solid_wall components: - - parent: 856 - pos: 26.5,-0.5 + - parent: 855 + pos: 24.5,0.5 rot: -1.5707963267948966 rad type: Transform - uid: 2135 type: solid_wall components: - - parent: 856 - pos: 25.5,-0.5 + - parent: 855 + pos: 24.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 2136 type: solid_wall components: - - parent: 856 - pos: 24.5,-0.5 + - parent: 855 + pos: 24.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 2137 type: solid_wall components: - - parent: 856 - pos: 24.5,0.5 + - parent: 855 + pos: 23.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 2138 type: solid_wall components: - - parent: 856 - pos: 24.5,1.5 + - parent: 855 + pos: 22.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 2139 type: solid_wall components: - - parent: 856 - pos: 24.5,2.5 + - parent: 855 + pos: 19.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 2140 type: solid_wall components: - - parent: 856 - pos: 23.5,2.5 + - parent: 855 + pos: 18.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 2141 type: solid_wall components: - - parent: 856 - pos: 22.5,2.5 + - parent: 855 + pos: 17.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 2142 type: solid_wall components: - - parent: 856 - pos: 19.5,2.5 + - parent: 855 + pos: 16.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 2143 type: solid_wall components: - - parent: 856 - pos: 18.5,2.5 + - parent: 855 + pos: 15.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 2144 type: solid_wall components: - - parent: 856 - pos: 17.5,2.5 + - parent: 855 + pos: 14.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 2145 type: solid_wall components: - - parent: 856 - pos: 16.5,2.5 + - parent: 855 + pos: 13.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 2146 type: solid_wall components: - - parent: 856 - pos: 15.5,2.5 + - parent: 855 + pos: 12.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 2147 type: solid_wall components: - - parent: 856 - pos: 14.5,2.5 + - parent: 855 + pos: 6.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 2148 type: solid_wall components: - - parent: 856 - pos: 13.5,2.5 + - parent: 855 + pos: 5.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 2149 type: solid_wall components: - - parent: 856 - pos: 12.5,2.5 + - parent: 855 + pos: 5.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 2150 type: solid_wall components: - - parent: 856 - pos: 6.5,2.5 + - parent: 855 + pos: 20.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 2151 type: solid_wall components: - - parent: 856 - pos: 5.5,2.5 + - parent: 855 + pos: 19.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 2152 type: solid_wall components: - - parent: 856 - pos: 5.5,1.5 + - parent: 855 + pos: 19.5,0.5 rot: -1.5707963267948966 rad type: Transform - uid: 2153 type: solid_wall components: - - parent: 856 - pos: 20.5,2.5 + - parent: 855 + pos: 19.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 2154 type: solid_wall components: - - parent: 856 - pos: 19.5,1.5 + - parent: 855 + pos: 19.5,-1.5 rot: -1.5707963267948966 rad type: Transform - uid: 2155 type: solid_wall components: - - parent: 856 - pos: 19.5,0.5 + - parent: 855 + pos: 19.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 2156 type: solid_wall components: - - parent: 856 - pos: 19.5,-0.5 + - parent: 855 + pos: 13.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 2157 type: solid_wall components: - - parent: 856 - pos: 19.5,-1.5 + - parent: 855 + pos: 13.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 2158 type: solid_wall components: - - parent: 856 - pos: 19.5,-2.5 + - parent: 855 + pos: 14.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 2159 type: solid_wall components: - - parent: 856 - pos: 13.5,-2.5 + - parent: 855 + pos: 13.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2160 type: solid_wall components: - - parent: 856 - pos: 13.5,-3.5 + - parent: 855 + pos: 5.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 2161 type: solid_wall components: - - parent: 856 - pos: 14.5,-3.5 + - parent: 855 + pos: 5.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 2162 type: solid_wall components: - - parent: 856 - pos: 13.5,-6.5 + - parent: 855 + pos: 5.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 2163 type: solid_wall components: - - parent: 856 - pos: 5.5,-3.5 + - parent: 855 + pos: 5.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2164 type: solid_wall components: - - parent: 856 - pos: 5.5,-4.5 + - parent: 855 + pos: 5.5,-7.5 rot: -1.5707963267948966 rad type: Transform - uid: 2165 type: solid_wall components: - - parent: 856 - pos: 5.5,-5.5 + - parent: 855 + pos: 5.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 2166 type: solid_wall components: - - parent: 856 - pos: 5.5,-6.5 + - parent: 855 + pos: 5.5,-11.5 rot: -1.5707963267948966 rad type: Transform - uid: 2167 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: 5.5,-7.5 + - parent: 855 + pos: 5.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 2168 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: 5.5,-12.5 + - parent: 855 + pos: 5.5,-9.5 rot: -1.5707963267948966 rad type: Transform - uid: 2169 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: 5.5,-11.5 + - parent: 855 + pos: 5.5,-10.5 rot: -1.5707963267948966 rad type: Transform - uid: 2170 type: LowWall components: - - parent: 856 - pos: 5.5,-8.5 + - parent: 855 + pos: 13.5,-1.5 rot: -1.5707963267948966 rad type: Transform - uid: 2171 type: LowWall components: - - parent: 856 - pos: 5.5,-9.5 + - parent: 855 + pos: 13.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 2172 type: LowWall components: - - parent: 856 - pos: 5.5,-10.5 + - parent: 855 + pos: 13.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 2173 type: LowWall components: - - parent: 856 - pos: 13.5,-1.5 + - parent: 855 + pos: 16.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 2174 type: LowWall components: - - parent: 856 - pos: 13.5,1.5 + - parent: 855 + pos: 11.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 2175 type: LowWall components: - - parent: 856 - pos: 13.5,-0.5 + - parent: 855 + pos: 10.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 2176 type: LowWall components: - - parent: 856 - pos: 16.5,-3.5 + - parent: 855 + pos: 9.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 2177 type: LowWall components: - - parent: 856 - pos: 11.5,2.5 + - parent: 855 + pos: 8.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 2178 type: LowWall components: - - parent: 856 - pos: 10.5,2.5 + - parent: 855 + pos: 7.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 2179 type: LowWall components: - - parent: 856 - pos: 9.5,2.5 + - parent: 855 + pos: 6.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2180 type: LowWall components: - - parent: 856 - pos: 8.5,2.5 + - parent: 855 + pos: 9.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2181 type: LowWall components: - - parent: 856 - pos: 7.5,2.5 + - parent: 855 + pos: 8.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2182 type: LowWall components: - - parent: 856 - pos: 6.5,-6.5 + - parent: 855 + pos: 13.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 2183 type: LowWall components: - - parent: 856 - pos: 9.5,-6.5 + - parent: 855 + pos: 13.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 2184 type: LowWall components: - - parent: 856 - pos: 8.5,-6.5 + - parent: 855 + pos: 12.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2185 type: LowWall components: - - parent: 856 - pos: 13.5,-5.5 + - parent: 855 + pos: 18.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 2186 - type: LowWall + type: solid_wall components: - - parent: 856 - pos: 13.5,-4.5 + - parent: 855 + pos: 19.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 2187 - type: LowWall + type: solid_wall components: - - parent: 856 - pos: 12.5,-6.5 + - parent: 855 + pos: 20.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 2188 - type: LowWall + type: solid_wall components: - - parent: 856 - pos: 18.5,-3.5 + - parent: 855 + pos: 21.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 2189 type: solid_wall components: - - parent: 856 - pos: 19.5,-3.5 + - parent: 855 + pos: 22.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 2190 type: solid_wall components: - - parent: 856 - pos: 20.5,-3.5 + - parent: 855 + pos: 23.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 2191 type: solid_wall components: - - parent: 856 - pos: 21.5,-3.5 + - parent: 855 + pos: 24.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 2192 type: solid_wall components: - - parent: 856 - pos: 22.5,-3.5 + - parent: 855 + pos: 25.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 2193 type: solid_wall components: - - parent: 856 - pos: 23.5,-3.5 + - parent: 855 + pos: 25.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 2194 type: solid_wall components: - - parent: 856 - pos: 24.5,-3.5 + - parent: 855 + pos: 25.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 2195 type: solid_wall components: - - parent: 856 - pos: 25.5,-3.5 + - parent: 855 + pos: 25.5,-7.5 rot: -1.5707963267948966 rad type: Transform - uid: 2196 type: solid_wall components: - - parent: 856 - pos: 25.5,-4.5 + - parent: 855 + pos: 25.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 2197 type: solid_wall components: - - parent: 856 - pos: 25.5,-5.5 + - parent: 855 + pos: 24.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 2198 type: solid_wall components: - - parent: 856 - pos: 25.5,-7.5 + - parent: 855 + pos: 23.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 2199 type: solid_wall components: - - parent: 856 - pos: 25.5,-8.5 + - parent: 855 + pos: 22.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 2200 type: solid_wall components: - - parent: 856 - pos: 24.5,-8.5 + - parent: 855 + pos: 21.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 2201 type: solid_wall components: - - parent: 856 - pos: 23.5,-8.5 + - parent: 855 + pos: 20.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 2202 type: solid_wall components: - - parent: 856 - pos: 22.5,-8.5 + - parent: 855 + pos: 20.5,-7.5 rot: -1.5707963267948966 rad type: Transform - uid: 2203 type: solid_wall components: - - parent: 856 - pos: 21.5,-8.5 + - parent: 855 + pos: 16.5,-18.5 rot: -1.5707963267948966 rad type: Transform - uid: 2204 type: solid_wall components: - - parent: 856 - pos: 20.5,-8.5 + - parent: 855 + pos: 20.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 2205 type: solid_wall components: - - parent: 856 - pos: 20.5,-7.5 + - parent: 855 + pos: 20.5,-9.5 rot: -1.5707963267948966 rad type: Transform - uid: 2206 - type: solid_wall + type: Window components: - - parent: 856 - pos: 16.5,-18.5 + - parent: 855 + pos: 20.5,-14.5 rot: -1.5707963267948966 rad type: Transform - uid: 2207 type: solid_wall components: - - parent: 856 - pos: 20.5,-4.5 + - parent: 855 + pos: 20.5,-11.5 rot: -1.5707963267948966 rad type: Transform - uid: 2208 type: solid_wall components: - - parent: 856 - pos: 20.5,-9.5 + - parent: 855 + pos: 21.5,-11.5 rot: -1.5707963267948966 rad type: Transform - uid: 2209 - type: Window + type: solid_wall components: - - parent: 856 - pos: 20.5,-14.5 + - parent: 855 + pos: 22.5,-11.5 rot: -1.5707963267948966 rad type: Transform - uid: 2210 type: solid_wall components: - - parent: 856 - pos: 20.5,-11.5 + - parent: 855 + pos: 23.5,-11.5 rot: -1.5707963267948966 rad type: Transform - uid: 2211 type: solid_wall components: - - parent: 856 - pos: 21.5,-11.5 + - parent: 855 + pos: 24.5,-11.5 rot: -1.5707963267948966 rad type: Transform - uid: 2212 type: solid_wall components: - - parent: 856 - pos: 22.5,-11.5 + - parent: 855 + pos: 25.5,-11.5 rot: -1.5707963267948966 rad type: Transform - uid: 2213 type: solid_wall components: - - parent: 856 - pos: 23.5,-11.5 + - parent: 855 + pos: 25.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 2214 type: solid_wall components: - - parent: 856 - pos: 24.5,-11.5 + - parent: 855 + pos: 25.5,-13.5 rot: -1.5707963267948966 rad type: Transform - uid: 2215 type: solid_wall components: - - parent: 856 - pos: 25.5,-11.5 + - parent: 855 + pos: 25.5,-14.5 rot: -1.5707963267948966 rad type: Transform - uid: 2216 type: solid_wall components: - - parent: 856 - pos: 25.5,-12.5 + - parent: 855 + pos: 25.5,-15.5 rot: -1.5707963267948966 rad type: Transform - uid: 2217 type: solid_wall components: - - parent: 856 - pos: 25.5,-13.5 + - parent: 855 + pos: 25.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 2218 type: solid_wall components: - - parent: 856 - pos: 25.5,-14.5 + - parent: 855 + pos: 24.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 2219 type: solid_wall components: - - parent: 856 - pos: 25.5,-15.5 + - parent: 855 + pos: 23.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 2220 type: solid_wall components: - - parent: 856 - pos: 25.5,-16.5 + - parent: 855 + pos: 22.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 2221 type: solid_wall components: - - parent: 856 - pos: 24.5,-16.5 + - parent: 855 + pos: 21.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 2222 type: solid_wall components: - - parent: 856 - pos: 23.5,-16.5 + - parent: 855 + pos: 20.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 2223 - type: solid_wall + type: Window components: - - parent: 856 - pos: 22.5,-16.5 + - parent: 855 + pos: 20.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 2224 type: solid_wall components: - - parent: 856 - pos: 21.5,-16.5 + - parent: 855 + pos: 15.5,-18.5 rot: -1.5707963267948966 rad type: Transform - uid: 2225 type: solid_wall components: - - parent: 856 - pos: 20.5,-16.5 + - parent: 855 + pos: 20.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 2226 - type: Window + type: solid_wall components: - - parent: 856 - pos: 20.5,-5.5 + - parent: 855 + pos: 20.5,-18.5 rot: -1.5707963267948966 rad type: Transform - uid: 2227 type: solid_wall components: - - parent: 856 - pos: 15.5,-18.5 + - parent: 855 + pos: 46.5,5.5 rot: -1.5707963267948966 rad type: Transform - uid: 2228 type: solid_wall components: - - parent: 856 - pos: 20.5,-17.5 + - parent: 855 + pos: 45.5,5.5 rot: -1.5707963267948966 rad type: Transform - uid: 2229 type: solid_wall components: - - parent: 856 - pos: 20.5,-18.5 + - parent: 855 + pos: 48.5,5.5 rot: -1.5707963267948966 rad type: Transform - uid: 2230 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: 46.5,5.5 + - parent: 855 + pos: 20.5,-14.5 rot: -1.5707963267948966 rad type: Transform - uid: 2231 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: 45.5,5.5 + - parent: 855 + pos: 20.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 2232 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: 48.5,5.5 + - parent: 855 + pos: 11.5,-14.5 rot: -1.5707963267948966 rad type: Transform - uid: 2233 type: LowWall components: - - parent: 856 - pos: 20.5,-14.5 + - parent: 855 + pos: 11.5,-15.5 rot: -1.5707963267948966 rad type: Transform - uid: 2234 type: LowWall components: - - parent: 856 - pos: 20.5,-5.5 + - parent: 855 + pos: 9.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 2235 - type: LowWall + type: Window components: - - parent: 856 - pos: 11.5,-14.5 + - parent: 855 + pos: 9.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 2236 - type: LowWall - components: - - parent: 856 - pos: 11.5,-15.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 2237 - type: LowWall - components: - - parent: 856 - pos: 9.5,-12.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 2238 - type: Window - components: - - parent: 856 - pos: 9.5,-12.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 2239 type: solid_wall components: - - parent: 856 + - parent: 855 pos: 11.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2240 +- uid: 2237 type: Window components: - - parent: 856 + - parent: 855 pos: 11.5,-15.5 rot: -1.5707963267948966 rad type: Transform +- uid: 2238 + type: solid_wall + components: + - parent: 855 + pos: 6.5,-12.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 2239 + type: Window + components: + - parent: 855 + pos: 20.5,-12.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 2240 + type: solid_wall + components: + - parent: 855 + pos: 6.5,-13.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 2241 type: solid_wall components: - - parent: 856 - pos: 6.5,-12.5 + - parent: 855 + pos: 6.5,-14.5 rot: -1.5707963267948966 rad type: Transform - uid: 2242 - type: Window + type: solid_wall components: - - parent: 856 - pos: 20.5,-12.5 + - parent: 855 + pos: 6.5,-15.5 rot: -1.5707963267948966 rad type: Transform - uid: 2243 type: solid_wall components: - - parent: 856 - pos: 6.5,-13.5 + - parent: 855 + pos: 6.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 2244 type: solid_wall components: - - parent: 856 - pos: 6.5,-14.5 + - parent: 855 + pos: 6.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 2245 type: solid_wall components: - - parent: 856 - pos: 6.5,-15.5 + - parent: 855 + pos: 7.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 2246 type: solid_wall components: - - parent: 856 - pos: 6.5,-16.5 + - parent: 855 + pos: 8.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 2247 type: solid_wall components: - - parent: 856 - pos: 6.5,-17.5 + - parent: 855 + pos: 9.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 2248 type: solid_wall components: - - parent: 856 - pos: 7.5,-17.5 + - parent: 855 + pos: 10.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 2249 type: solid_wall components: - - parent: 856 - pos: 8.5,-17.5 + - parent: 855 + pos: 11.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 2250 - type: solid_wall + type: Window components: - - parent: 856 - pos: 9.5,-17.5 + - parent: 855 + pos: 11.5,-14.5 rot: -1.5707963267948966 rad type: Transform - uid: 2251 type: solid_wall components: - - parent: 856 - pos: 10.5,-17.5 + - parent: 855 + pos: 11.5,-18.5 rot: -1.5707963267948966 rad type: Transform - uid: 2252 type: solid_wall components: - - parent: 856 - pos: 11.5,-17.5 + - parent: 855 + pos: 12.5,-18.5 rot: -1.5707963267948966 rad type: Transform - uid: 2253 - type: Window + type: solid_wall components: - - parent: 856 - pos: 11.5,-14.5 + - parent: 855 + pos: 13.5,-18.5 rot: -1.5707963267948966 rad type: Transform - uid: 2254 type: solid_wall components: - - parent: 856 - pos: 11.5,-18.5 + - parent: 855 + pos: 6.5,-18.5 rot: -1.5707963267948966 rad type: Transform - uid: 2255 type: solid_wall components: - - parent: 856 - pos: 12.5,-18.5 + - parent: 855 + pos: 6.5,-20.5 rot: -1.5707963267948966 rad type: Transform - uid: 2256 type: solid_wall components: - - parent: 856 - pos: 13.5,-18.5 + - parent: 855 + pos: 28.5,-1.5 rot: -1.5707963267948966 rad type: Transform - uid: 2257 type: solid_wall components: - - parent: 856 - pos: 6.5,-18.5 + - parent: 855 + pos: 28.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 2258 type: solid_wall components: - - parent: 856 - pos: 6.5,-20.5 + - parent: 855 + pos: 28.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 2259 type: solid_wall components: - - parent: 856 - pos: 28.5,-1.5 + - parent: 855 + pos: 28.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 2260 type: solid_wall components: - - parent: 856 - pos: 28.5,-2.5 + - parent: 855 + pos: 28.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 2261 type: solid_wall components: - - parent: 856 - pos: 28.5,-3.5 + - parent: 855 + pos: 29.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 2262 type: solid_wall components: - - parent: 856 - pos: 28.5,-4.5 + - parent: 855 + pos: 30.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 2263 type: solid_wall components: - - parent: 856 - pos: 28.5,-5.5 + - parent: 855 + pos: 31.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 2264 type: solid_wall components: - - parent: 856 - pos: 29.5,-5.5 + - parent: 855 + pos: 32.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 2265 type: solid_wall components: - - parent: 856 - pos: 30.5,-5.5 + - parent: 855 + pos: 34.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 2266 type: solid_wall components: - - parent: 856 - pos: 31.5,-5.5 + - parent: 855 + pos: 35.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 2267 type: solid_wall components: - - parent: 856 - pos: 32.5,-5.5 + - parent: 855 + pos: 36.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 2268 type: solid_wall components: - - parent: 856 - pos: 34.5,-5.5 + - parent: 855 + pos: 36.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 2269 type: solid_wall components: - - parent: 856 - pos: 35.5,-5.5 + - parent: 855 + pos: 36.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 2270 type: solid_wall components: - - parent: 856 - pos: 36.5,-5.5 + - parent: 855 + pos: 1.5,1.5 rot: -1.5707963267948966 rad type: Transform - uid: 2271 type: solid_wall components: - - parent: 856 - pos: 36.5,-4.5 + - parent: 855 + pos: 1.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 2272 type: solid_wall components: - - parent: 856 - pos: 36.5,-3.5 + - parent: 855 + pos: 0.5,2.5 rot: -1.5707963267948966 rad type: Transform - uid: 2273 type: solid_wall components: - - parent: 856 - pos: 1.5,1.5 + - parent: 855 + pos: 1.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 2274 type: solid_wall components: - - parent: 856 - pos: 1.5,2.5 + - parent: 855 + pos: 1.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 2275 type: solid_wall components: - - parent: 856 - pos: 0.5,2.5 + - parent: 855 + pos: 1.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 2276 type: solid_wall components: - - parent: 856 - pos: 1.5,-3.5 + - parent: 855 + pos: 1.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2277 type: solid_wall components: - - parent: 856 - pos: 1.5,-4.5 + - parent: 855 + pos: 0.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 2278 type: solid_wall components: - - parent: 856 - pos: 1.5,-5.5 + - parent: 855 + pos: -0.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 2279 type: solid_wall components: - - parent: 856 - pos: 1.5,-6.5 + - parent: 855 + pos: -1.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 2280 type: solid_wall components: - - parent: 856 - pos: 0.5,-5.5 + - parent: 855 + pos: -2.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 2281 type: solid_wall components: - - parent: 856 - pos: -0.5,-5.5 + - parent: 855 + pos: 1.5,-9.5 rot: -1.5707963267948966 rad type: Transform - uid: 2282 type: solid_wall components: - - parent: 856 - pos: -1.5,-5.5 + - parent: 855 + pos: 1.5,-10.5 rot: -1.5707963267948966 rad type: Transform - uid: 2283 type: solid_wall components: - - parent: 856 - pos: -2.5,-5.5 + - parent: 855 + pos: 1.5,-11.5 rot: -1.5707963267948966 rad type: Transform - uid: 2284 type: solid_wall components: - - parent: 856 - pos: 1.5,-9.5 + - parent: 855 + pos: 1.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 2285 type: solid_wall components: - - parent: 856 - pos: 1.5,-10.5 + - parent: 855 + pos: 1.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 2286 type: solid_wall components: - - parent: 856 - pos: 1.5,-11.5 + - parent: 855 + pos: 0.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 2287 type: solid_wall components: - - parent: 856 - pos: 1.5,-12.5 + - parent: 855 + pos: -0.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 2288 type: solid_wall components: - - parent: 856 - pos: 1.5,-8.5 + - parent: 855 + pos: -1.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 2289 type: solid_wall components: - - parent: 856 - pos: 0.5,-12.5 + - parent: 855 + pos: -2.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 2290 type: solid_wall components: - - parent: 856 - pos: -0.5,-12.5 + - parent: 855 + pos: 0.5,-13.5 rot: -1.5707963267948966 rad type: Transform - uid: 2291 type: solid_wall components: - - parent: 856 - pos: -1.5,-12.5 + - parent: 855 + pos: -5.5,-18.5 rot: -1.5707963267948966 rad type: Transform - uid: 2292 type: solid_wall components: - - parent: 856 - pos: -2.5,-12.5 + - parent: 855 + pos: 0.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 2293 type: solid_wall components: - - parent: 856 - pos: 0.5,-13.5 + - parent: 855 + pos: 0.5,-18.5 rot: -1.5707963267948966 rad type: Transform - uid: 2294 type: solid_wall components: - - parent: 856 - pos: -5.5,-18.5 + - parent: 855 + pos: -0.5,-18.5 rot: -1.5707963267948966 rad type: Transform - uid: 2295 type: solid_wall components: - - parent: 856 - pos: 0.5,-17.5 + - parent: 855 + pos: -6.5,-18.5 rot: -1.5707963267948966 rad type: Transform - uid: 2296 type: solid_wall components: - - parent: 856 - pos: 0.5,-18.5 + - parent: 855 + pos: -1.5,-18.5 rot: -1.5707963267948966 rad type: Transform - uid: 2297 type: solid_wall components: - - parent: 856 - pos: -0.5,-18.5 + - parent: 855 + pos: -2.5,-11.5 rot: -1.5707963267948966 rad type: Transform - uid: 2298 type: solid_wall components: - - parent: 856 - pos: -6.5,-18.5 + - parent: 855 + pos: -3.5,-11.5 rot: -1.5707963267948966 rad type: Transform - uid: 2299 - type: solid_wall + type: AirlockServiceLocked components: - - parent: 856 - pos: -1.5,-18.5 + - name: Freezer + type: MetaData + - parent: 855 + pos: -12.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 2300 type: solid_wall components: - - parent: 856 - pos: -2.5,-11.5 + - parent: 855 + pos: -5.5,-11.5 rot: -1.5707963267948966 rad type: Transform - uid: 2301 type: solid_wall components: - - parent: 856 - pos: -3.5,-11.5 + - parent: 855 + pos: -6.5,-11.5 rot: -1.5707963267948966 rad type: Transform - uid: 2302 - type: AirlockServiceLocked + type: solid_wall components: - - name: Freezer - type: MetaData - - parent: 856 - pos: -12.5,-2.5 + - parent: 855 + pos: -6.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 2303 type: solid_wall components: - - parent: 856 - pos: -5.5,-11.5 + - parent: 855 + pos: -6.5,-13.5 rot: -1.5707963267948966 rad type: Transform - uid: 2304 type: solid_wall components: - - parent: 856 - pos: -6.5,-11.5 + - parent: 855 + pos: -6.5,-14.5 rot: -1.5707963267948966 rad type: Transform - uid: 2305 type: solid_wall components: - - parent: 856 - pos: -6.5,-12.5 + - parent: 855 + pos: -6.5,-15.5 rot: -1.5707963267948966 rad type: Transform - uid: 2306 type: solid_wall components: - - parent: 856 - pos: -6.5,-13.5 + - parent: 855 + pos: -6.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 2307 type: solid_wall components: - - parent: 856 - pos: -6.5,-14.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 2308 - type: solid_wall - components: - - parent: 856 - pos: -6.5,-15.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 2309 - type: solid_wall - components: - - parent: 856 - pos: -6.5,-16.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 2310 - type: solid_wall - components: - - parent: 856 + - parent: 855 pos: -6.5,-17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2311 +- uid: 2308 type: LowWall components: - - parent: 856 + - parent: 855 pos: -2.5,-18.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2312 +- uid: 2309 type: LowWall components: - - parent: 856 + - parent: 855 pos: -4.5,-18.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2313 +- uid: 2310 type: LowWall components: - - parent: 856 + - parent: 855 pos: 0.5,-16.5 rot: -1.5707963267948966 rad type: Transform +- uid: 2311 + type: solid_wall + components: + - parent: 855 + pos: -7.5,-21.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 2312 + type: solid_wall + components: + - parent: 855 + pos: 1.5,-22.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 2313 + type: solid_wall + components: + - parent: 855 + pos: 0.5,-22.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 2314 type: solid_wall components: - - parent: 856 - pos: -7.5,-21.5 + - parent: 855 + pos: 0.5,-21.5 rot: -1.5707963267948966 rad type: Transform - uid: 2315 type: solid_wall components: - - parent: 856 - pos: 1.5,-22.5 + - parent: 855 + pos: -0.5,-21.5 rot: -1.5707963267948966 rad type: Transform - uid: 2316 type: solid_wall components: - - parent: 856 - pos: 0.5,-22.5 + - parent: 855 + pos: -1.5,-21.5 rot: -1.5707963267948966 rad type: Transform - uid: 2317 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: 0.5,-21.5 + - parent: 855 + pos: -4.5,-21.5 rot: -1.5707963267948966 rad type: Transform - uid: 2318 type: solid_wall components: - - parent: 856 - pos: -0.5,-21.5 + - parent: 855 + pos: -1.5,-22.5 rot: -1.5707963267948966 rad type: Transform - uid: 2319 type: solid_wall components: - - parent: 856 - pos: -1.5,-21.5 + - parent: 855 + pos: -1.5,-23.5 rot: -1.5707963267948966 rad type: Transform - uid: 2320 - type: LowWall + type: solid_wall components: - - parent: 856 - pos: -4.5,-21.5 + - parent: 855 + pos: -1.5,-24.5 rot: -1.5707963267948966 rad type: Transform - uid: 2321 type: solid_wall components: - - parent: 856 - pos: -1.5,-22.5 + - parent: 855 + pos: -1.5,-25.5 rot: -1.5707963267948966 rad type: Transform - uid: 2322 type: solid_wall components: - - parent: 856 - pos: -1.5,-23.5 + - parent: 855 + pos: -2.5,-25.5 rot: -1.5707963267948966 rad type: Transform - uid: 2323 type: solid_wall components: - - parent: 856 - pos: -1.5,-24.5 + - parent: 855 + pos: -3.5,-25.5 rot: -1.5707963267948966 rad type: Transform - uid: 2324 type: solid_wall components: - - parent: 856 - pos: -1.5,-25.5 + - parent: 855 + pos: -4.5,-25.5 rot: -1.5707963267948966 rad type: Transform - uid: 2325 type: solid_wall components: - - parent: 856 - pos: -2.5,-25.5 + - parent: 855 + pos: -5.5,-25.5 rot: -1.5707963267948966 rad type: Transform - uid: 2326 type: solid_wall components: - - parent: 856 - pos: -3.5,-25.5 + - parent: 855 + pos: -6.5,-25.5 rot: -1.5707963267948966 rad type: Transform - uid: 2327 type: solid_wall components: - - parent: 856 - pos: -4.5,-25.5 + - parent: 855 + pos: -6.5,-24.5 rot: -1.5707963267948966 rad type: Transform - uid: 2328 type: solid_wall components: - - parent: 856 - pos: -5.5,-25.5 + - parent: 855 + pos: -6.5,-23.5 rot: -1.5707963267948966 rad type: Transform - uid: 2329 type: solid_wall components: - - parent: 856 - pos: -6.5,-25.5 + - parent: 855 + pos: -6.5,-22.5 rot: -1.5707963267948966 rad type: Transform - uid: 2330 type: solid_wall components: - - parent: 856 - pos: -6.5,-24.5 + - parent: 855 + pos: -6.5,-21.5 rot: -1.5707963267948966 rad type: Transform - uid: 2331 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: -6.5,-23.5 + - parent: 855 + pos: -2.5,-21.5 rot: -1.5707963267948966 rad type: Transform - uid: 2332 - type: solid_wall + type: LowWall components: - - parent: 856 - pos: -6.5,-22.5 + - parent: 855 + pos: -5.5,-21.5 rot: -1.5707963267948966 rad type: Transform - uid: 2333 type: solid_wall components: - - parent: 856 - pos: -6.5,-21.5 + - parent: 855 + pos: -9.5,-21.5 rot: -1.5707963267948966 rad type: Transform - uid: 2334 - type: LowWall + type: reinforced_wall components: - - parent: 856 - pos: -2.5,-21.5 + - parent: 855 + pos: -12.5,-27.5 rot: -1.5707963267948966 rad type: Transform - uid: 2335 - type: LowWall + type: reinforced_wall components: - - parent: 856 - pos: -5.5,-21.5 + - parent: 855 + pos: -13.5,-27.5 rot: -1.5707963267948966 rad type: Transform - uid: 2336 - type: solid_wall + type: reinforced_wall components: - - parent: 856 - pos: -9.5,-21.5 + - parent: 855 + pos: -14.5,-27.5 rot: -1.5707963267948966 rad type: Transform - uid: 2337 type: reinforced_wall components: - - parent: 856 - pos: -12.5,-27.5 + - parent: 855 + pos: -15.5,-27.5 rot: -1.5707963267948966 rad type: Transform - uid: 2338 type: reinforced_wall components: - - parent: 856 - pos: -13.5,-27.5 + - parent: 855 + pos: -16.5,-27.5 rot: -1.5707963267948966 rad type: Transform - uid: 2339 type: reinforced_wall components: - - parent: 856 - pos: -14.5,-27.5 + - parent: 855 + pos: -17.5,-27.5 rot: -1.5707963267948966 rad type: Transform - uid: 2340 type: reinforced_wall components: - - parent: 856 - pos: -15.5,-27.5 + - parent: 855 + pos: -18.5,-27.5 rot: -1.5707963267948966 rad type: Transform - uid: 2341 type: reinforced_wall components: - - parent: 856 - pos: -16.5,-27.5 + - parent: 855 + pos: -18.5,-26.5 rot: -1.5707963267948966 rad type: Transform - uid: 2342 type: reinforced_wall components: - - parent: 856 - pos: -17.5,-27.5 + - parent: 855 + pos: -18.5,-25.5 rot: -1.5707963267948966 rad type: Transform - uid: 2343 type: reinforced_wall components: - - parent: 856 - pos: -18.5,-27.5 + - parent: 855 + pos: -18.5,-24.5 rot: -1.5707963267948966 rad type: Transform - uid: 2344 type: reinforced_wall components: - - parent: 856 - pos: -18.5,-26.5 + - parent: 855 + pos: -18.5,-23.5 rot: -1.5707963267948966 rad type: Transform - uid: 2345 type: reinforced_wall components: - - parent: 856 - pos: -18.5,-25.5 + - parent: 855 + pos: -17.5,-23.5 rot: -1.5707963267948966 rad type: Transform - uid: 2346 type: reinforced_wall components: - - parent: 856 - pos: -18.5,-24.5 + - parent: 855 + pos: -13.5,-23.5 rot: -1.5707963267948966 rad type: Transform - uid: 2347 type: reinforced_wall components: - - parent: 856 - pos: -18.5,-23.5 + - parent: 855 + pos: -12.5,-23.5 rot: -1.5707963267948966 rad type: Transform - uid: 2348 type: reinforced_wall components: - - parent: 856 - pos: -17.5,-23.5 + - parent: 855 + pos: -12.5,-24.5 rot: -1.5707963267948966 rad type: Transform - uid: 2349 type: reinforced_wall components: - - parent: 856 - pos: -13.5,-23.5 + - parent: 855 + pos: -12.5,-25.5 rot: -1.5707963267948966 rad type: Transform - uid: 2350 type: reinforced_wall components: - - parent: 856 - pos: -12.5,-23.5 + - parent: 855 + pos: -12.5,-26.5 rot: -1.5707963267948966 rad type: Transform - uid: 2351 - type: reinforced_wall + type: solid_wall components: - - parent: 856 - pos: -12.5,-24.5 + - parent: 855 + pos: -12.5,-28.5 rot: -1.5707963267948966 rad type: Transform - uid: 2352 - type: reinforced_wall + type: solid_wall components: - - parent: 856 - pos: -12.5,-25.5 + - parent: 855 + pos: -11.5,-28.5 rot: -1.5707963267948966 rad type: Transform - uid: 2353 - type: reinforced_wall + type: solid_wall components: - - parent: 856 - pos: -12.5,-26.5 + - parent: 855 + pos: -10.5,-28.5 rot: -1.5707963267948966 rad type: Transform - uid: 2354 type: solid_wall components: - - parent: 856 - pos: -12.5,-28.5 + - parent: 855 + pos: -6.5,-28.5 rot: -1.5707963267948966 rad type: Transform - uid: 2355 type: solid_wall components: - - parent: 856 - pos: -11.5,-28.5 + - parent: 855 + pos: -5.5,-28.5 rot: -1.5707963267948966 rad type: Transform - uid: 2356 type: solid_wall components: - - parent: 856 - pos: -10.5,-28.5 + - parent: 855 + pos: -4.5,-28.5 rot: -1.5707963267948966 rad type: Transform - uid: 2357 type: solid_wall components: - - parent: 856 - pos: -6.5,-28.5 + - parent: 855 + pos: -3.5,-28.5 rot: -1.5707963267948966 rad type: Transform - uid: 2358 type: solid_wall components: - - parent: 856 - pos: -5.5,-28.5 + - parent: 855 + pos: -2.5,-28.5 rot: -1.5707963267948966 rad type: Transform - uid: 2359 type: solid_wall components: - - parent: 856 - pos: -4.5,-28.5 + - parent: 855 + pos: -1.5,-28.5 rot: -1.5707963267948966 rad type: Transform - uid: 2360 type: solid_wall components: - - parent: 856 - pos: -3.5,-28.5 + - parent: 855 + pos: -0.5,-28.5 rot: -1.5707963267948966 rad type: Transform - uid: 2361 type: solid_wall components: - - parent: 856 - pos: -2.5,-28.5 + - parent: 855 + pos: -10.5,-21.5 rot: -1.5707963267948966 rad type: Transform - uid: 2362 type: solid_wall components: - - parent: 856 - pos: -1.5,-28.5 + - parent: 855 + pos: -10.5,-22.5 rot: -1.5707963267948966 rad type: Transform - uid: 2363 type: solid_wall components: - - parent: 856 - pos: -0.5,-28.5 + - parent: 855 + pos: -10.5,-23.5 rot: -1.5707963267948966 rad type: Transform - uid: 2364 type: solid_wall components: - - parent: 856 - pos: -10.5,-21.5 + - parent: 855 + pos: -10.5,-24.5 rot: -1.5707963267948966 rad type: Transform - uid: 2365 type: solid_wall components: - - parent: 856 - pos: -10.5,-22.5 + - parent: 855 + pos: -10.5,-25.5 rot: -1.5707963267948966 rad type: Transform - uid: 2366 type: solid_wall components: - - parent: 856 - pos: -10.5,-23.5 + - parent: 855 + pos: -12.5,-22.5 rot: -1.5707963267948966 rad type: Transform - uid: 2367 type: solid_wall components: - - parent: 856 - pos: -10.5,-24.5 + - parent: 855 + pos: -12.5,-21.5 rot: -1.5707963267948966 rad type: Transform - uid: 2368 type: solid_wall components: - - parent: 856 - pos: -10.5,-25.5 + - parent: 855 + pos: -12.5,-18.5 rot: -1.5707963267948966 rad type: Transform - uid: 2369 type: solid_wall components: - - parent: 856 - pos: -12.5,-22.5 + - parent: 855 + pos: -12.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 2370 type: solid_wall components: - - parent: 856 - pos: -12.5,-21.5 + - parent: 855 + pos: -12.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 2371 type: solid_wall components: - - parent: 856 - pos: -12.5,-18.5 + - parent: 855 + pos: -11.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 2372 type: solid_wall components: - - parent: 856 - pos: -12.5,-17.5 + - parent: 855 + pos: -10.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 2373 type: solid_wall components: - - parent: 856 - pos: -12.5,-16.5 + - parent: 855 + pos: -9.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 2374 type: solid_wall components: - - parent: 856 - pos: -11.5,-16.5 + - parent: 855 + pos: -8.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 2375 type: solid_wall components: - - parent: 856 - pos: -10.5,-16.5 + - parent: 855 + pos: -7.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 2376 type: solid_wall components: - - parent: 856 - pos: -9.5,-16.5 + - parent: 855 + pos: -13.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 2377 type: solid_wall components: - - parent: 856 - pos: -8.5,-16.5 + - parent: 855 + pos: -14.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 2378 type: solid_wall components: - - parent: 856 - pos: -7.5,-16.5 + - parent: 855 + pos: -15.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 2379 type: solid_wall components: - - parent: 856 - pos: -13.5,-16.5 + - parent: 855 + pos: -17.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 2380 type: solid_wall components: - - parent: 856 - pos: -14.5,-16.5 + - parent: 855 + pos: -18.5,-16.5 rot: -1.5707963267948966 rad type: Transform - uid: 2381 type: solid_wall components: - - parent: 856 - pos: -15.5,-16.5 + - parent: 855 + pos: -18.5,-17.5 rot: -1.5707963267948966 rad type: Transform - uid: 2382 type: solid_wall components: - - parent: 856 - pos: -17.5,-16.5 + - parent: 855 + pos: -18.5,-18.5 rot: -1.5707963267948966 rad type: Transform - uid: 2383 type: solid_wall components: - - parent: 856 - pos: -18.5,-16.5 + - parent: 855 + pos: -18.5,-19.5 rot: -1.5707963267948966 rad type: Transform - uid: 2384 type: solid_wall components: - - parent: 856 - pos: -18.5,-17.5 + - parent: 855 + pos: -18.5,-20.5 rot: -1.5707963267948966 rad type: Transform - uid: 2385 type: solid_wall components: - - parent: 856 - pos: -18.5,-18.5 + - parent: 855 + pos: -18.5,-21.5 rot: -1.5707963267948966 rad type: Transform - uid: 2386 type: solid_wall components: - - parent: 856 - pos: -18.5,-19.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 2387 - type: solid_wall - components: - - parent: 856 - pos: -18.5,-20.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 2388 - type: solid_wall - components: - - parent: 856 - pos: -18.5,-21.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 2389 - type: solid_wall - components: - - parent: 856 + - parent: 855 pos: -18.5,-22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2390 +- uid: 2387 type: ChairWood components: - - parent: 856 + - parent: 855 pos: -7.5,-0.5 type: Transform -- uid: 2391 +- uid: 2388 type: ChairWood components: - - parent: 856 + - parent: 855 pos: -5.5,-0.5 rot: 3.141592653589793 rad type: Transform -- uid: 2392 +- uid: 2389 type: VendingMachineCoffee components: - - parent: 856 + - parent: 855 pos: 5.5,-13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2393 +- uid: 2390 type: ToolboxElectricalFilled components: - - parent: 856 + - parent: 855 pos: 8.259691,28.555487 rot: -1.5707963267948966 rad type: Transform @@ -31572,201 +31547,201 @@ entities: storagebase: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer +- uid: 2391 + type: solid_wall + components: + - parent: 855 + pos: -16.5,-13.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 2392 + type: solid_wall + components: + - parent: 855 + pos: -15.5,-13.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 2393 + type: solid_wall + components: + - parent: 855 + pos: -14.5,-13.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 2394 type: solid_wall components: - - parent: 856 - pos: -16.5,-13.5 + - parent: 855 + pos: -12.5,-13.5 rot: -1.5707963267948966 rad type: Transform - uid: 2395 type: solid_wall components: - - parent: 856 - pos: -15.5,-13.5 + - parent: 855 + pos: -11.5,-13.5 rot: -1.5707963267948966 rad type: Transform - uid: 2396 type: solid_wall components: - - parent: 856 - pos: -14.5,-13.5 + - parent: 855 + pos: -10.5,-13.5 rot: -1.5707963267948966 rad type: Transform - uid: 2397 type: solid_wall components: - - parent: 856 - pos: -12.5,-13.5 + - parent: 855 + pos: -10.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 2398 type: solid_wall components: - - parent: 856 - pos: -11.5,-13.5 + - parent: 855 + pos: -10.5,-11.5 rot: -1.5707963267948966 rad type: Transform - uid: 2399 type: solid_wall components: - - parent: 856 - pos: -10.5,-13.5 + - parent: 855 + pos: -10.5,-10.5 rot: -1.5707963267948966 rad type: Transform - uid: 2400 type: solid_wall components: - - parent: 856 - pos: -10.5,-12.5 + - parent: 855 + pos: -10.5,-9.5 rot: -1.5707963267948966 rad type: Transform - uid: 2401 type: solid_wall components: - - parent: 856 - pos: -10.5,-11.5 + - parent: 855 + pos: -10.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 2402 type: solid_wall components: - - parent: 856 - pos: -10.5,-10.5 + - parent: 855 + pos: -11.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 2403 type: solid_wall components: - - parent: 856 - pos: -10.5,-9.5 + - parent: 855 + pos: -13.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 2404 type: solid_wall components: - - parent: 856 - pos: -10.5,-8.5 + - parent: 855 + pos: -14.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 2405 type: solid_wall components: - - parent: 856 - pos: -11.5,-8.5 + - parent: 855 + pos: -15.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 2406 type: solid_wall components: - - parent: 856 - pos: -13.5,-8.5 + - parent: 855 + pos: -16.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 2407 type: solid_wall components: - - parent: 856 - pos: -14.5,-8.5 + - parent: 855 + pos: -16.5,-9.5 rot: -1.5707963267948966 rad type: Transform - uid: 2408 type: solid_wall components: - - parent: 856 - pos: -15.5,-8.5 + - parent: 855 + pos: -16.5,-10.5 rot: -1.5707963267948966 rad type: Transform - uid: 2409 type: solid_wall components: - - parent: 856 - pos: -16.5,-8.5 + - parent: 855 + pos: -16.5,-11.5 rot: -1.5707963267948966 rad type: Transform - uid: 2410 type: solid_wall components: - - parent: 856 - pos: -16.5,-9.5 + - parent: 855 + pos: -16.5,-12.5 rot: -1.5707963267948966 rad type: Transform - uid: 2411 type: solid_wall components: - - parent: 856 - pos: -16.5,-10.5 + - parent: 855 + pos: -9.5,-24.5 rot: -1.5707963267948966 rad type: Transform - uid: 2412 type: solid_wall components: - - parent: 856 - pos: -16.5,-11.5 + - parent: 855 + pos: -8.5,-24.5 rot: -1.5707963267948966 rad type: Transform - uid: 2413 type: solid_wall components: - - parent: 856 - pos: -16.5,-12.5 + - parent: 855 + pos: -7.5,-24.5 rot: -1.5707963267948966 rad type: Transform - uid: 2414 type: solid_wall components: - - parent: 856 - pos: -9.5,-24.5 + - parent: 855 + pos: -2.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2415 type: solid_wall components: - - parent: 856 - pos: -8.5,-24.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 2416 - type: solid_wall - components: - - parent: 856 - pos: -7.5,-24.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 2417 - type: solid_wall - components: - - parent: 856 - pos: -2.5,-6.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 2418 - type: solid_wall - components: - - parent: 856 + - parent: 855 pos: -2.5,-7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2419 +- uid: 2416 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -1.5,6.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 2420 +- uid: 2417 type: Table components: - - parent: 856 + - parent: 855 pos: -3.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2421 +- uid: 2418 type: BlockGameArcade components: - - parent: 856 + - parent: 855 pos: -6.5,1.5 rot: -1.5707963267948966 rad type: Transform @@ -31775,35 +31750,58 @@ entities: - containers: board: entities: - - 2423 + - 2420 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 2422 +- uid: 2419 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -8.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2423 +- uid: 2420 type: BlockGameArcadeComputerCircuitboard components: - - parent: 2421 + - parent: 2418 type: Transform -- uid: 2424 +- uid: 2421 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -3.5,6.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible +- uid: 2422 + type: ApcExtensionCable + components: + - parent: 855 + pos: -2.5,6.5 + rot: 3.141592653589793 rad + type: Transform + - deadThreshold: 100 + type: Destructible +- uid: 2423 + type: solid_wall + components: + - parent: 855 + pos: -6.5,-7.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 2424 + type: solid_wall + components: + - parent: 855 + pos: -8.5,-5.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 2425 type: ApcExtensionCable components: - - parent: 856 - pos: -2.5,6.5 + - parent: 855 + pos: -4.5,6.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 @@ -31811,65 +31809,42 @@ entities: - uid: 2426 type: solid_wall components: - - parent: 856 - pos: -6.5,-7.5 + - parent: 855 + pos: -9.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 2427 type: solid_wall components: - - parent: 856 - pos: -8.5,-5.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 2428 - type: ApcExtensionCable - components: - - parent: 856 - pos: -4.5,6.5 - rot: 3.141592653589793 rad - type: Transform - - deadThreshold: 100 - type: Destructible -- uid: 2429 - type: solid_wall - components: - - parent: 856 - pos: -9.5,-5.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 2430 - type: solid_wall - components: - - parent: 856 + - parent: 855 pos: -10.5,-5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2431 +- uid: 2428 type: Table components: - - parent: 856 + - parent: 855 pos: -15.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2432 +- uid: 2429 type: Table components: - - parent: 856 + - parent: 855 pos: -15.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2433 +- uid: 2430 type: Table components: - - parent: 856 + - parent: 855 pos: -29.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2434 +- uid: 2431 type: DisposalTrunk components: - - parent: 856 + - parent: 855 pos: -10.5,-17.5 rot: 1.5707963267948966 rad type: Transform @@ -31879,68 +31854,68 @@ entities: DisposalEntry: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 2435 +- uid: 2432 type: VendingMachineSovietSoda components: - - parent: 856 + - parent: 855 pos: -11.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2436 +- uid: 2433 type: ChairOfficeDark components: - - parent: 856 + - parent: 855 pos: 40.5,-0.5 rot: 3.141592653589793 rad type: Transform - anchored: False type: Physics -- uid: 2437 +- uid: 2434 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -10.5,2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2438 +- uid: 2435 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -4.5,2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2439 +- uid: 2436 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -9.5,2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2440 +- uid: 2437 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -11.5,2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2441 +- uid: 2438 type: Table components: - - parent: 856 + - parent: 855 pos: 26.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2442 +- uid: 2439 type: Multitool components: - - parent: 856 + - parent: 855 pos: 6.259919,28.557344 rot: -1.5707963267948966 rad type: Transform -- uid: 2443 +- uid: 2440 type: Medkit components: - - parent: 856 + - parent: 855 pos: -0.959059,28.524237 rot: -1.5707963267948966 rad type: Transform @@ -31948,275 +31923,275 @@ entities: storagebase: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 2444 +- uid: 2441 type: VendingMachineCola components: - - parent: 856 + - parent: 855 pos: 29.5,6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2445 +- uid: 2442 type: Table components: - - parent: 856 + - parent: 855 pos: 28.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2446 +- uid: 2443 type: Table components: - - parent: 856 + - parent: 855 pos: 20.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2447 +- uid: 2444 type: Table components: - - parent: 856 + - parent: 855 pos: 19.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2448 +- uid: 2445 type: WeldingFuelTank components: - - parent: 856 + - parent: 855 pos: -26.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2449 +- uid: 2446 type: WeldingFuelTank components: - - parent: 856 + - parent: 855 pos: 35.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2450 +- uid: 2447 type: WeldingFuelTank components: - - parent: 856 + - parent: 855 pos: -15.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2451 +- uid: 2448 type: DrinkMugMoebius components: - - parent: 856 + - parent: 855 pos: -8.476567,-17.420076 rot: -1.5707963267948966 rad type: Transform -- uid: 2452 +- uid: 2449 type: TableWood components: - - parent: 856 + - parent: 855 pos: -3.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2453 +- uid: 2450 type: ChairWood components: - - parent: 856 + - parent: 855 pos: -0.5,-2.5 rot: 1.5707963267948966 rad type: Transform -- uid: 2454 +- uid: 2451 type: ChairWood components: - - parent: 856 + - parent: 855 pos: -0.5,0.5 rot: -1.5707963267948966 rad type: Transform +- uid: 2452 + type: solid_wall + components: + - parent: 855 + pos: -21.5,-9.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 2453 + type: solid_wall + components: + - parent: 855 + pos: -22.5,-9.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 2454 + type: Paper + components: + - parent: 855 + pos: 9.543142,17.067865 + rot: 3.141592653589793 rad + type: Transform - uid: 2455 type: solid_wall components: - - parent: 856 - pos: -21.5,-9.5 + - parent: 855 + pos: -24.5,-9.5 rot: -1.5707963267948966 rad type: Transform - uid: 2456 type: solid_wall components: - - parent: 856 - pos: -22.5,-9.5 + - parent: 855 + pos: -25.5,-9.5 rot: -1.5707963267948966 rad type: Transform - uid: 2457 - type: Paper + type: solid_wall components: - - parent: 856 - pos: 9.543142,17.067865 - rot: 3.141592653589793 rad + - parent: 855 + pos: -26.5,-9.5 + rot: -1.5707963267948966 rad type: Transform - uid: 2458 type: solid_wall components: - - parent: 856 - pos: -24.5,-9.5 + - parent: 855 + pos: -27.5,-9.5 rot: -1.5707963267948966 rad type: Transform - uid: 2459 type: solid_wall components: - - parent: 856 - pos: -25.5,-9.5 + - parent: 855 + pos: -28.5,-9.5 rot: -1.5707963267948966 rad type: Transform - uid: 2460 type: solid_wall components: - - parent: 856 - pos: -26.5,-9.5 + - parent: 855 + pos: -29.5,-9.5 rot: -1.5707963267948966 rad type: Transform - uid: 2461 type: solid_wall components: - - parent: 856 - pos: -27.5,-9.5 + - parent: 855 + pos: -30.5,-9.5 rot: -1.5707963267948966 rad type: Transform - uid: 2462 type: solid_wall components: - - parent: 856 - pos: -28.5,-9.5 + - parent: 855 + pos: -31.5,-9.5 rot: -1.5707963267948966 rad type: Transform - uid: 2463 type: solid_wall components: - - parent: 856 - pos: -29.5,-9.5 + - parent: 855 + pos: -30.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 2464 type: solid_wall components: - - parent: 856 - pos: -30.5,-9.5 + - parent: 855 + pos: -31.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 2465 - type: solid_wall + type: ChairWood components: - - parent: 856 - pos: -31.5,-9.5 - rot: -1.5707963267948966 rad + - parent: 855 + pos: -2.5,-0.5 + rot: 3.141592653589793 rad type: Transform - uid: 2466 - type: solid_wall + type: ChairWood components: - - parent: 856 - pos: -30.5,-3.5 - rot: -1.5707963267948966 rad + - parent: 855 + pos: -4.5,-0.5 type: Transform - uid: 2467 type: solid_wall components: - - parent: 856 - pos: -31.5,-8.5 + - parent: 855 + pos: -34.5,-8.5 rot: -1.5707963267948966 rad type: Transform - uid: 2468 - type: ChairWood + type: solid_wall components: - - parent: 856 - pos: -2.5,-0.5 - rot: 3.141592653589793 rad + - parent: 855 + pos: -34.5,-7.5 + rot: -1.5707963267948966 rad type: Transform - uid: 2469 - type: ChairWood + type: solid_wall components: - - parent: 856 - pos: -4.5,-0.5 + - parent: 855 + pos: -31.5,-5.5 + rot: -1.5707963267948966 rad type: Transform - uid: 2470 type: solid_wall components: - - parent: 856 - pos: -34.5,-8.5 + - parent: 855 + pos: -31.5,-4.5 rot: -1.5707963267948966 rad type: Transform - uid: 2471 type: solid_wall components: - - parent: 856 - pos: -34.5,-7.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 2472 - type: solid_wall - components: - - parent: 856 - pos: -31.5,-5.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 2473 - type: solid_wall - components: - - parent: 856 - pos: -31.5,-4.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 2474 - type: solid_wall - components: - - parent: 856 + - parent: 855 pos: -31.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2475 +- uid: 2472 type: TableWood components: - - parent: 856 + - parent: 855 pos: -6.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2476 +- uid: 2473 type: TableR components: - - parent: 856 + - parent: 855 pos: 0.5,28.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2477 +- uid: 2474 type: TableR components: - - parent: 856 + - parent: 855 pos: -0.5,28.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2478 +- uid: 2475 type: TableR components: - - parent: 856 + - parent: 855 pos: -1.5,28.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2479 +- uid: 2476 type: TableGlass components: - - parent: 856 + - parent: 855 pos: -0.5,-13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2480 +- uid: 2477 type: TableGlass components: - - parent: 856 + - parent: 855 pos: -1.5,-13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2481 +- uid: 2478 type: VendingMachineBooze components: - - parent: 856 + - parent: 855 pos: -5.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2482 +- uid: 2479 type: BoozeDispenser components: - - parent: 856 + - parent: 855 pos: -3.5,-6.5 rot: -1.5707963267948966 rad type: Transform @@ -32224,87 +32199,87 @@ entities: ReagentDispenser-reagentContainerContainer: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 2483 +- uid: 2480 type: StoolBar components: - - parent: 856 + - parent: 855 pos: -1.5,-3.5 rot: -1.5707963267948966 rad type: Transform +- uid: 2481 + type: solid_wall + components: + - parent: 855 + pos: -26.5,-8.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 2482 + type: Table + components: + - parent: 855 + pos: -7.5,20.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 2483 + type: solid_wall + components: + - parent: 855 + pos: -21.5,-5.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 2484 type: solid_wall components: - - parent: 856 - pos: -26.5,-8.5 + - parent: 855 + pos: -21.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2485 - type: Table + type: solid_wall components: - - parent: 856 - pos: -7.5,20.5 + - parent: 855 + pos: -20.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2486 type: solid_wall components: - - parent: 856 - pos: -21.5,-5.5 + - parent: 855 + pos: -19.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2487 type: solid_wall components: - - parent: 856 - pos: -21.5,-6.5 + - parent: 855 + pos: -18.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 2488 type: solid_wall components: - - parent: 856 - pos: -20.5,-6.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 2489 - type: solid_wall - components: - - parent: 856 - pos: -19.5,-6.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 2490 - type: solid_wall - components: - - parent: 856 - pos: -18.5,-6.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 2491 - type: solid_wall - components: - - parent: 856 + - parent: 855 pos: -17.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2492 +- uid: 2489 type: SpawnPointLatejoin components: - - parent: 856 + - parent: 855 pos: -36.5,-5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2493 +- uid: 2490 type: SpawnPointLatejoin components: - - parent: 856 + - parent: 855 pos: -36.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2494 +- uid: 2491 type: CrateInternals components: - - parent: 856 + - parent: 855 pos: 42.5,13.5 rot: -1.5707963267948966 rad type: Transform @@ -32314,10 +32289,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 2495 +- uid: 2492 type: CrateRadiation components: - - parent: 856 + - parent: 855 pos: 43.5,13.5 rot: -1.5707963267948966 rad type: Transform @@ -32327,166 +32302,193 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer +- uid: 2493 + type: solid_wall + components: + - parent: 855 + pos: -17.5,-4.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 2494 + type: solid_wall + components: + - parent: 855 + pos: -17.5,-5.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 2495 + type: solid_wall + components: + - parent: 855 + pos: -17.5,-3.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 2496 type: solid_wall components: - - parent: 856 - pos: -17.5,-4.5 + - parent: 855 + pos: -18.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 2497 type: solid_wall components: - - parent: 856 - pos: -17.5,-5.5 + - parent: 855 + pos: -19.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 2498 type: solid_wall components: - - parent: 856 - pos: -17.5,-3.5 + - parent: 855 + pos: -20.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 2499 type: solid_wall components: - - parent: 856 - pos: -18.5,-3.5 + - parent: 855 + pos: -21.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 2500 type: solid_wall components: - - parent: 856 - pos: -19.5,-3.5 + - parent: 855 + pos: -21.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 2501 - type: solid_wall + type: reinforced_wall components: - - parent: 856 - pos: -20.5,-3.5 + - parent: 855 + pos: 11.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 2502 - type: solid_wall + type: reinforced_wall components: - - parent: 856 - pos: -21.5,-3.5 + - parent: 855 + pos: 14.5,23.5 rot: -1.5707963267948966 rad type: Transform - uid: 2503 - type: solid_wall + type: reinforced_wall components: - - parent: 856 - pos: -21.5,-2.5 + - parent: 855 + pos: 13.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 2504 type: reinforced_wall components: - - parent: 856 - pos: 11.5,22.5 + - parent: 855 + pos: 14.5,22.5 rot: -1.5707963267948966 rad type: Transform - uid: 2505 type: reinforced_wall components: - - parent: 856 - pos: 14.5,23.5 + - parent: 855 + pos: 14.5,24.5 rot: -1.5707963267948966 rad type: Transform - uid: 2506 type: reinforced_wall components: - - parent: 856 - pos: 13.5,22.5 + - parent: 855 + pos: 14.5,25.5 rot: -1.5707963267948966 rad type: Transform - uid: 2507 type: reinforced_wall components: - - parent: 856 - pos: 14.5,22.5 + - parent: 855 + pos: -14.5,15.5 rot: -1.5707963267948966 rad type: Transform - uid: 2508 type: reinforced_wall components: - - parent: 856 - pos: 14.5,24.5 + - parent: 855 + pos: -14.5,16.5 rot: -1.5707963267948966 rad type: Transform - uid: 2509 type: reinforced_wall components: - - parent: 856 - pos: 14.5,25.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 2510 - type: reinforced_wall - components: - - parent: 856 - pos: -14.5,15.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 2511 - type: reinforced_wall - components: - - parent: 856 - pos: -14.5,16.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 2512 - type: reinforced_wall - components: - - parent: 856 + - parent: 855 pos: -16.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2513 +- uid: 2510 type: SalternApc components: - - parent: 856 + - parent: 855 pos: 9.5,27.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11999.502 + - startingCharge: 11999.419 type: Battery -- uid: 2514 +- uid: 2511 type: SalternApc components: - - parent: 856 + - parent: 855 pos: -2.5,27.5 rot: -1.5707963267948966 rad type: Transform - startingCharge: 11999.004 type: Battery -- uid: 2515 +- uid: 2512 type: SalternApc components: - - parent: 856 + - parent: 855 pos: 9.5,22.5 rot: -1.5707963267948966 rad type: Transform - startingCharge: 11999.419 type: Battery -- uid: 2516 +- uid: 2513 type: SalternApc components: - - parent: 856 + - parent: 855 pos: 24.5,14.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11999.336 + - startingCharge: 11999.419 + type: Battery +- uid: 2514 + type: SalternApc + components: + - parent: 855 + pos: 28.5,14.5 + rot: -1.5707963267948966 rad + type: Transform + - startingCharge: 11999.585 + type: Battery +- uid: 2515 + type: SalternApc + components: + - parent: 855 + pos: 47.5,-1.5 + rot: -1.5707963267948966 rad + type: Transform + - startingCharge: 11991.501 + type: Battery +- uid: 2516 + type: SalternApc + components: + - parent: 855 + pos: 31.5,1.5 + rot: -1.5707963267948966 rad + type: Transform + - startingCharge: 11999.004 type: Battery - uid: 2517 type: SalternApc components: - - parent: 856 - pos: 28.5,14.5 + - parent: 855 + pos: 43.5,10.5 rot: -1.5707963267948966 rad type: Transform - startingCharge: 11999.502 @@ -32494,70 +32496,43 @@ entities: - uid: 2518 type: SalternApc components: - - parent: 856 - pos: 47.5,-1.5 + - parent: 855 + pos: 12.5,13.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11991.501 + - startingCharge: 11999.004 type: Battery - uid: 2519 type: SalternApc components: - - parent: 856 - pos: 31.5,1.5 + - parent: 855 + pos: 7.5,-17.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11999.087 + - startingCharge: 11999.17 type: Battery - uid: 2520 type: SalternApc components: - - parent: 856 - pos: 43.5,10.5 + - parent: 855 + pos: 22.5,-3.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11999.419 + - startingCharge: 11999.004 type: Battery - uid: 2521 type: SalternApc components: - - parent: 856 - pos: 12.5,13.5 - rot: -1.5707963267948966 rad - type: Transform - - startingCharge: 11999.087 - type: Battery -- uid: 2522 - type: SalternApc - components: - - parent: 856 - pos: 7.5,-17.5 - rot: -1.5707963267948966 rad - type: Transform - - startingCharge: 11999.336 - type: Battery -- uid: 2523 - type: SalternApc - components: - - parent: 856 - pos: 22.5,-3.5 - rot: -1.5707963267948966 rad - type: Transform - - startingCharge: 11998.755 - type: Battery -- uid: 2524 - type: SalternApc - components: - - parent: 856 + - parent: 855 pos: 16.5,2.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11999.502 + - startingCharge: 11999.17 type: Battery -- uid: 2525 +- uid: 2522 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: -15.498537,16.019438 rot: -1.5707963267948966 rad type: Transform @@ -32567,106 +32542,133 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 2526 +- uid: 2523 type: SalternApc components: - - parent: 856 + - parent: 855 pos: -3.5,15.5 rot: -1.5707963267948966 rad type: Transform - startingCharge: 11999.336 type: Battery -- uid: 2527 +- uid: 2524 type: SalternApc components: - - parent: 856 + - parent: 855 pos: -28.5,12.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11999.253 + - startingCharge: 11999.336 type: Battery -- uid: 2528 +- uid: 2525 type: SalternApc components: - - parent: 856 + - parent: 855 pos: -39.5,11.5 rot: -1.5707963267948966 rad type: Transform - startingCharge: 11999.336 type: Battery -- uid: 2529 +- uid: 2526 type: SalternApc components: - - parent: 856 + - parent: 855 pos: -11.5,2.5 rot: -1.5707963267948966 rad type: Transform - startingCharge: 11998.423 type: Battery -- uid: 2530 +- uid: 2527 type: Table components: - - parent: 856 + - parent: 855 pos: -2.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2531 +- uid: 2528 type: SalternApc components: - - parent: 856 + - parent: 855 pos: -20.5,-12.5 rot: -1.5707963267948966 rad type: Transform - startingCharge: 11999.668 type: Battery -- uid: 2532 +- uid: 2529 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -14.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 2533 +- uid: 2530 type: solid_wall components: - - parent: 856 + - parent: 855 pos: 12.5,-11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 2534 +- uid: 2531 type: SalternApc components: - - parent: 856 + - parent: 855 pos: -1.5,-18.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11999.253 + - startingCharge: 11999.17 type: Battery -- uid: 2535 +- uid: 2532 type: SalternApc components: - - parent: 856 + - parent: 855 pos: -9.75476,-21.5 rot: -1.5707963267948966 rad type: Transform - startingCharge: 11996.086 type: Battery -- uid: 2536 +- uid: 2533 type: SalternApc components: - - parent: 856 + - parent: 855 pos: -14.5,-16.5 rot: -1.5707963267948966 rad type: Transform - startingCharge: 11999.751 type: Battery +- uid: 2534 + type: ApcExtensionCable + components: + - parent: 855 + pos: -28.5,12.5 + rot: -1.5707963267948966 rad + type: Transform + - deadThreshold: 100 + type: Destructible +- uid: 2535 + type: ApcExtensionCable + components: + - parent: 855 + pos: -28.5,11.5 + rot: -1.5707963267948966 rad + type: Transform + - deadThreshold: 100 + type: Destructible +- uid: 2536 + type: ApcExtensionCable + components: + - parent: 855 + pos: -28.5,10.5 + rot: -1.5707963267948966 rad + type: Transform + - deadThreshold: 100 + type: Destructible - uid: 2537 type: ApcExtensionCable components: - - parent: 856 - pos: -28.5,12.5 + - parent: 855 + pos: -28.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32674,8 +32676,8 @@ entities: - uid: 2538 type: ApcExtensionCable components: - - parent: 856 - pos: -28.5,11.5 + - parent: 855 + pos: -28.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32683,8 +32685,8 @@ entities: - uid: 2539 type: ApcExtensionCable components: - - parent: 856 - pos: -28.5,10.5 + - parent: 855 + pos: -27.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32692,8 +32694,8 @@ entities: - uid: 2540 type: ApcExtensionCable components: - - parent: 856 - pos: -28.5,9.5 + - parent: 855 + pos: -26.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32701,8 +32703,8 @@ entities: - uid: 2541 type: ApcExtensionCable components: - - parent: 856 - pos: -28.5,8.5 + - parent: 855 + pos: -25.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32710,8 +32712,8 @@ entities: - uid: 2542 type: ApcExtensionCable components: - - parent: 856 - pos: -27.5,9.5 + - parent: 855 + pos: -26.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32719,8 +32721,8 @@ entities: - uid: 2543 type: ApcExtensionCable components: - - parent: 856 - pos: -26.5,9.5 + - parent: 855 + pos: -26.5,7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32728,8 +32730,8 @@ entities: - uid: 2544 type: ApcExtensionCable components: - - parent: 856 - pos: -25.5,9.5 + - parent: 855 + pos: -24.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32737,8 +32739,8 @@ entities: - uid: 2545 type: ApcExtensionCable components: - - parent: 856 - pos: -26.5,8.5 + - parent: 855 + pos: -23.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32746,8 +32748,8 @@ entities: - uid: 2546 type: ApcExtensionCable components: - - parent: 856 - pos: -26.5,7.5 + - parent: 855 + pos: -22.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32755,8 +32757,8 @@ entities: - uid: 2547 type: ApcExtensionCable components: - - parent: 856 - pos: -24.5,9.5 + - parent: 855 + pos: -21.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32764,8 +32766,8 @@ entities: - uid: 2548 type: ApcExtensionCable components: - - parent: 856 - pos: -23.5,9.5 + - parent: 855 + pos: -20.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32773,8 +32775,8 @@ entities: - uid: 2549 type: ApcExtensionCable components: - - parent: 856 - pos: -22.5,9.5 + - parent: 855 + pos: -19.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32782,8 +32784,8 @@ entities: - uid: 2550 type: ApcExtensionCable components: - - parent: 856 - pos: -21.5,9.5 + - parent: 855 + pos: -23.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32791,8 +32793,8 @@ entities: - uid: 2551 type: ApcExtensionCable components: - - parent: 856 - pos: -20.5,9.5 + - parent: 855 + pos: -23.5,7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32800,8 +32802,8 @@ entities: - uid: 2552 type: ApcExtensionCable components: - - parent: 856 - pos: -19.5,9.5 + - parent: 855 + pos: -23.5,7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32809,8 +32811,8 @@ entities: - uid: 2553 type: ApcExtensionCable components: - - parent: 856 - pos: -23.5,8.5 + - parent: 855 + pos: -23.5,6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32818,8 +32820,8 @@ entities: - uid: 2554 type: ApcExtensionCable components: - - parent: 856 - pos: -23.5,7.5 + - parent: 855 + pos: -28.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32827,8 +32829,8 @@ entities: - uid: 2555 type: ApcExtensionCable components: - - parent: 856 - pos: -23.5,7.5 + - parent: 855 + pos: -28.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32836,8 +32838,8 @@ entities: - uid: 2556 type: ApcExtensionCable components: - - parent: 856 - pos: -23.5,6.5 + - parent: 855 + pos: -17.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32845,8 +32847,8 @@ entities: - uid: 2557 type: ApcExtensionCable components: - - parent: 856 - pos: -28.5,13.5 + - parent: 855 + pos: -16.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32854,8 +32856,8 @@ entities: - uid: 2558 type: ApcExtensionCable components: - - parent: 856 - pos: -28.5,14.5 + - parent: 855 + pos: -16.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32863,26 +32865,26 @@ entities: - uid: 2559 type: ApcExtensionCable components: - - parent: 856 - pos: -17.5,9.5 + - parent: 855 + pos: -16.5,7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible - uid: 2560 - type: ApcExtensionCable + type: SalternApc components: - - parent: 856 - pos: -16.5,9.5 + - parent: 855 + pos: -16.302551,15.5 rot: -1.5707963267948966 rad type: Transform - - deadThreshold: 100 - type: Destructible + - startingCharge: 11999.834 + type: Battery - uid: 2561 type: ApcExtensionCable components: - - parent: 856 - pos: -16.5,8.5 + - parent: 855 + pos: -16.5,15.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32890,26 +32892,26 @@ entities: - uid: 2562 type: ApcExtensionCable components: - - parent: 856 - pos: -16.5,7.5 + - parent: 855 + pos: -17.5,15.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible - uid: 2563 - type: SalternApc + type: ApcExtensionCable components: - - parent: 856 - pos: -16.302551,15.5 + - parent: 855 + pos: -17.5,16.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11999.917 - type: Battery + - deadThreshold: 100 + type: Destructible - uid: 2564 type: ApcExtensionCable components: - - parent: 856 - pos: -16.5,15.5 + - parent: 855 + pos: -17.5,17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32917,8 +32919,8 @@ entities: - uid: 2565 type: ApcExtensionCable components: - - parent: 856 - pos: -17.5,15.5 + - parent: 855 + pos: -17.5,18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32926,8 +32928,8 @@ entities: - uid: 2566 type: ApcExtensionCable components: - - parent: 856 - pos: -17.5,16.5 + - parent: 855 + pos: -17.5,19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32935,8 +32937,8 @@ entities: - uid: 2567 type: ApcExtensionCable components: - - parent: 856 - pos: -17.5,17.5 + - parent: 855 + pos: -17.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32944,8 +32946,8 @@ entities: - uid: 2568 type: ApcExtensionCable components: - - parent: 856 - pos: -17.5,18.5 + - parent: 855 + pos: -17.5,21.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32953,8 +32955,8 @@ entities: - uid: 2569 type: ApcExtensionCable components: - - parent: 856 - pos: -17.5,19.5 + - parent: 855 + pos: -17.5,22.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32962,8 +32964,8 @@ entities: - uid: 2570 type: ApcExtensionCable components: - - parent: 856 - pos: -17.5,20.5 + - parent: 855 + pos: -17.5,23.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32971,8 +32973,8 @@ entities: - uid: 2571 type: ApcExtensionCable components: - - parent: 856 - pos: -17.5,21.5 + - parent: 855 + pos: -17.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32980,8 +32982,8 @@ entities: - uid: 2572 type: ApcExtensionCable components: - - parent: 856 - pos: -17.5,22.5 + - parent: 855 + pos: -16.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32989,8 +32991,8 @@ entities: - uid: 2573 type: ApcExtensionCable components: - - parent: 856 - pos: -17.5,23.5 + - parent: 855 + pos: -15.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -32998,8 +33000,8 @@ entities: - uid: 2574 type: ApcExtensionCable components: - - parent: 856 - pos: -17.5,24.5 + - parent: 855 + pos: -14.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33007,8 +33009,8 @@ entities: - uid: 2575 type: ApcExtensionCable components: - - parent: 856 - pos: -16.5,24.5 + - parent: 855 + pos: -13.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33016,8 +33018,8 @@ entities: - uid: 2576 type: ApcExtensionCable components: - - parent: 856 - pos: -15.5,24.5 + - parent: 855 + pos: -12.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33025,8 +33027,8 @@ entities: - uid: 2577 type: ApcExtensionCable components: - - parent: 856 - pos: -14.5,24.5 + - parent: 855 + pos: -11.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33034,8 +33036,8 @@ entities: - uid: 2578 type: ApcExtensionCable components: - - parent: 856 - pos: -13.5,24.5 + - parent: 855 + pos: -10.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33043,8 +33045,8 @@ entities: - uid: 2579 type: ApcExtensionCable components: - - parent: 856 - pos: -12.5,24.5 + - parent: 855 + pos: -9.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33052,8 +33054,8 @@ entities: - uid: 2580 type: ApcExtensionCable components: - - parent: 856 - pos: -11.5,24.5 + - parent: 855 + pos: -8.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33061,8 +33063,8 @@ entities: - uid: 2581 type: ApcExtensionCable components: - - parent: 856 - pos: -10.5,24.5 + - parent: 855 + pos: -7.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33070,8 +33072,8 @@ entities: - uid: 2582 type: ApcExtensionCable components: - - parent: 856 - pos: -9.5,24.5 + - parent: 855 + pos: -12.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33079,8 +33081,8 @@ entities: - uid: 2583 type: ApcExtensionCable components: - - parent: 856 - pos: -8.5,24.5 + - parent: 855 + pos: -12.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33088,8 +33090,8 @@ entities: - uid: 2584 type: ApcExtensionCable components: - - parent: 856 - pos: -7.5,24.5 + - parent: 855 + pos: -13.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33097,8 +33099,8 @@ entities: - uid: 2585 type: ApcExtensionCable components: - - parent: 856 - pos: -12.5,12.5 + - parent: 855 + pos: -12.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33106,8 +33108,8 @@ entities: - uid: 2586 type: ApcExtensionCable components: - - parent: 856 - pos: -12.5,11.5 + - parent: 855 + pos: -12.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33115,8 +33117,8 @@ entities: - uid: 2587 type: ApcExtensionCable components: - - parent: 856 - pos: -13.5,11.5 + - parent: 855 + pos: -12.5,7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33124,8 +33126,8 @@ entities: - uid: 2588 type: ApcExtensionCable components: - - parent: 856 - pos: -12.5,10.5 + - parent: 855 + pos: -12.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33133,8 +33135,8 @@ entities: - uid: 2589 type: ApcExtensionCable components: - - parent: 856 - pos: -12.5,9.5 + - parent: 855 + pos: -11.5,7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33142,8 +33144,8 @@ entities: - uid: 2590 type: ApcExtensionCable components: - - parent: 856 - pos: -12.5,7.5 + - parent: 855 + pos: -11.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33151,8 +33153,8 @@ entities: - uid: 2591 type: ApcExtensionCable components: - - parent: 856 - pos: -12.5,8.5 + - parent: 855 + pos: -9.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33160,8 +33162,8 @@ entities: - uid: 2592 type: ApcExtensionCable components: - - parent: 856 - pos: -11.5,7.5 + - parent: 855 + pos: -10.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33169,8 +33171,8 @@ entities: - uid: 2593 type: ApcExtensionCable components: - - parent: 856 - pos: -11.5,10.5 + - parent: 855 + pos: -8.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33178,8 +33180,8 @@ entities: - uid: 2594 type: ApcExtensionCable components: - - parent: 856 - pos: -9.5,10.5 + - parent: 855 + pos: -7.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33187,8 +33189,8 @@ entities: - uid: 2595 type: ApcExtensionCable components: - - parent: 856 - pos: -10.5,10.5 + - parent: 855 + pos: -6.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33196,8 +33198,8 @@ entities: - uid: 2596 type: ApcExtensionCable components: - - parent: 856 - pos: -8.5,10.5 + - parent: 855 + pos: -5.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33205,8 +33207,8 @@ entities: - uid: 2597 type: ApcExtensionCable components: - - parent: 856 - pos: -7.5,10.5 + - parent: 855 + pos: -4.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33214,8 +33216,8 @@ entities: - uid: 2598 type: ApcExtensionCable components: - - parent: 856 - pos: -6.5,10.5 + - parent: 855 + pos: -3.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33223,8 +33225,8 @@ entities: - uid: 2599 type: ApcExtensionCable components: - - parent: 856 - pos: -5.5,10.5 + - parent: 855 + pos: -2.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33232,8 +33234,8 @@ entities: - uid: 2600 type: ApcExtensionCable components: - - parent: 856 - pos: -4.5,10.5 + - parent: 855 + pos: -1.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33241,8 +33243,8 @@ entities: - uid: 2601 type: ApcExtensionCable components: - - parent: 856 - pos: -3.5,10.5 + - parent: 855 + pos: -0.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33250,8 +33252,8 @@ entities: - uid: 2602 type: ApcExtensionCable components: - - parent: 856 - pos: -2.5,10.5 + - parent: 855 + pos: 0.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33259,8 +33261,8 @@ entities: - uid: 2603 type: ApcExtensionCable components: - - parent: 856 - pos: -1.5,10.5 + - parent: 855 + pos: -5.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33268,8 +33270,8 @@ entities: - uid: 2604 type: ApcExtensionCable components: - - parent: 856 - pos: -0.5,10.5 + - parent: 855 + pos: -5.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33277,8 +33279,8 @@ entities: - uid: 2605 type: ApcExtensionCable components: - - parent: 856 - pos: 0.5,10.5 + - parent: 855 + pos: -5.5,7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33286,8 +33288,8 @@ entities: - uid: 2606 type: ApcExtensionCable components: - - parent: 856 - pos: -5.5,9.5 + - parent: 855 + pos: 0.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33295,8 +33297,8 @@ entities: - uid: 2607 type: ApcExtensionCable components: - - parent: 856 - pos: -5.5,8.5 + - parent: 855 + pos: 0.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33304,8 +33306,8 @@ entities: - uid: 2608 type: ApcExtensionCable components: - - parent: 856 - pos: -5.5,7.5 + - parent: 855 + pos: 0.5,7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33313,8 +33315,8 @@ entities: - uid: 2609 type: ApcExtensionCable components: - - parent: 856 - pos: 0.5,9.5 + - parent: 855 + pos: 0.5,6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33322,8 +33324,8 @@ entities: - uid: 2610 type: ApcExtensionCable components: - - parent: 856 - pos: 0.5,8.5 + - parent: 855 + pos: 0.5,6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33331,8 +33333,8 @@ entities: - uid: 2611 type: ApcExtensionCable components: - - parent: 856 - pos: 0.5,7.5 + - parent: 855 + pos: -0.5,6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33340,8 +33342,8 @@ entities: - uid: 2612 type: ApcExtensionCable components: - - parent: 856 - pos: 0.5,6.5 + - parent: 855 + pos: -3.5,15.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33349,8 +33351,8 @@ entities: - uid: 2613 type: ApcExtensionCable components: - - parent: 856 - pos: 0.5,6.5 + - parent: 855 + pos: -3.5,16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33358,8 +33360,8 @@ entities: - uid: 2614 type: ApcExtensionCable components: - - parent: 856 - pos: -0.5,6.5 + - parent: 855 + pos: -3.5,17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33367,8 +33369,8 @@ entities: - uid: 2615 type: ApcExtensionCable components: - - parent: 856 - pos: -3.5,15.5 + - parent: 855 + pos: -3.5,18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33376,8 +33378,8 @@ entities: - uid: 2616 type: ApcExtensionCable components: - - parent: 856 - pos: -3.5,16.5 + - parent: 855 + pos: -2.5,18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33385,8 +33387,8 @@ entities: - uid: 2617 type: ApcExtensionCable components: - - parent: 856 - pos: -3.5,17.5 + - parent: 855 + pos: -1.5,18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33394,8 +33396,8 @@ entities: - uid: 2618 type: ApcExtensionCable components: - - parent: 856 - pos: -3.5,18.5 + - parent: 855 + pos: -0.5,18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33403,8 +33405,8 @@ entities: - uid: 2619 type: ApcExtensionCable components: - - parent: 856 - pos: -2.5,18.5 + - parent: 855 + pos: -3.5,15.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33412,8 +33414,8 @@ entities: - uid: 2620 type: ApcExtensionCable components: - - parent: 856 - pos: -1.5,18.5 + - parent: 855 + pos: -3.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33421,8 +33423,8 @@ entities: - uid: 2621 type: ApcExtensionCable components: - - parent: 856 - pos: -0.5,18.5 + - parent: 855 + pos: -4.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33430,8 +33432,8 @@ entities: - uid: 2622 type: ApcExtensionCable components: - - parent: 856 - pos: -3.5,15.5 + - parent: 855 + pos: -5.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33439,8 +33441,8 @@ entities: - uid: 2623 type: ApcExtensionCable components: - - parent: 856 - pos: -3.5,14.5 + - parent: 855 + pos: -6.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33448,8 +33450,8 @@ entities: - uid: 2624 type: ApcExtensionCable components: - - parent: 856 - pos: -4.5,14.5 + - parent: 855 + pos: -7.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33457,8 +33459,8 @@ entities: - uid: 2625 type: ApcExtensionCable components: - - parent: 856 - pos: -5.5,14.5 + - parent: 855 + pos: -8.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33466,8 +33468,8 @@ entities: - uid: 2626 type: ApcExtensionCable components: - - parent: 856 - pos: -6.5,14.5 + - parent: 855 + pos: -9.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33475,8 +33477,8 @@ entities: - uid: 2627 type: ApcExtensionCable components: - - parent: 856 - pos: -7.5,14.5 + - parent: 855 + pos: -10.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33484,8 +33486,8 @@ entities: - uid: 2628 type: ApcExtensionCable components: - - parent: 856 - pos: -8.5,14.5 + - parent: 855 + pos: -11.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33493,8 +33495,8 @@ entities: - uid: 2629 type: ApcExtensionCable components: - - parent: 856 - pos: -9.5,14.5 + - parent: 855 + pos: -12.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33502,8 +33504,8 @@ entities: - uid: 2630 type: ApcExtensionCable components: - - parent: 856 - pos: -10.5,14.5 + - parent: 855 + pos: -12.5,15.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33511,8 +33513,8 @@ entities: - uid: 2631 type: ApcExtensionCable components: - - parent: 856 - pos: -11.5,14.5 + - parent: 855 + pos: -12.5,16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33520,8 +33522,8 @@ entities: - uid: 2632 type: ApcExtensionCable components: - - parent: 856 - pos: -12.5,14.5 + - parent: 855 + pos: -7.5,15.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33529,8 +33531,8 @@ entities: - uid: 2633 type: ApcExtensionCable components: - - parent: 856 - pos: -12.5,15.5 + - parent: 855 + pos: -7.5,16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33538,8 +33540,8 @@ entities: - uid: 2634 type: ApcExtensionCable components: - - parent: 856 - pos: -12.5,16.5 + - parent: 855 + pos: -7.5,17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33547,8 +33549,8 @@ entities: - uid: 2635 type: ApcExtensionCable components: - - parent: 856 - pos: -7.5,15.5 + - parent: 855 + pos: -6.5,17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33556,8 +33558,8 @@ entities: - uid: 2636 type: ApcExtensionCable components: - - parent: 856 - pos: -7.5,16.5 + - parent: 855 + pos: -8.5,17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33565,8 +33567,8 @@ entities: - uid: 2637 type: ApcExtensionCable components: - - parent: 856 - pos: -7.5,17.5 + - parent: 855 + pos: -8.5,18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33574,8 +33576,8 @@ entities: - uid: 2638 type: ApcExtensionCable components: - - parent: 856 - pos: -6.5,17.5 + - parent: 855 + pos: -8.5,19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33583,8 +33585,8 @@ entities: - uid: 2639 type: ApcExtensionCable components: - - parent: 856 - pos: -8.5,17.5 + - parent: 855 + pos: -8.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33592,8 +33594,8 @@ entities: - uid: 2640 type: ApcExtensionCable components: - - parent: 856 - pos: -8.5,18.5 + - parent: 855 + pos: -9.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33601,8 +33603,8 @@ entities: - uid: 2641 type: ApcExtensionCable components: - - parent: 856 - pos: -8.5,19.5 + - parent: 855 + pos: -8.5,21.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33610,8 +33612,8 @@ entities: - uid: 2642 type: ApcExtensionCable components: - - parent: 856 - pos: -8.5,20.5 + - parent: 855 + pos: -7.5,21.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33619,8 +33621,8 @@ entities: - uid: 2643 type: ApcExtensionCable components: - - parent: 856 - pos: -9.5,20.5 + - parent: 855 + pos: -12.5,17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33628,8 +33630,8 @@ entities: - uid: 2644 type: ApcExtensionCable components: - - parent: 856 - pos: -8.5,21.5 + - parent: 855 + pos: -12.5,18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33637,8 +33639,8 @@ entities: - uid: 2645 type: ApcExtensionCable components: - - parent: 856 - pos: -7.5,21.5 + - parent: 855 + pos: -12.5,19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33646,8 +33648,8 @@ entities: - uid: 2646 type: ApcExtensionCable components: - - parent: 856 - pos: -12.5,17.5 + - parent: 855 + pos: -12.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33655,8 +33657,8 @@ entities: - uid: 2647 type: ApcExtensionCable components: - - parent: 856 - pos: -12.5,18.5 + - parent: 855 + pos: -13.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33664,8 +33666,8 @@ entities: - uid: 2648 type: ApcExtensionCable components: - - parent: 856 - pos: -12.5,19.5 + - parent: 855 + pos: -14.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33673,8 +33675,8 @@ entities: - uid: 2649 type: ApcExtensionCable components: - - parent: 856 - pos: -12.5,20.5 + - parent: 855 + pos: -3.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33682,8 +33684,8 @@ entities: - uid: 2650 type: ApcExtensionCable components: - - parent: 856 - pos: -13.5,20.5 + - parent: 855 + pos: -2.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33691,8 +33693,8 @@ entities: - uid: 2651 type: ApcExtensionCable components: - - parent: 856 - pos: -14.5,20.5 + - parent: 855 + pos: -1.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33700,8 +33702,8 @@ entities: - uid: 2652 type: ApcExtensionCable components: - - parent: 856 - pos: -3.5,14.5 + - parent: 855 + pos: -0.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33709,8 +33711,8 @@ entities: - uid: 2653 type: ApcExtensionCable components: - - parent: 856 - pos: -2.5,14.5 + - parent: 855 + pos: 0.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33718,8 +33720,8 @@ entities: - uid: 2654 type: ApcExtensionCable components: - - parent: 856 - pos: -1.5,14.5 + - parent: 855 + pos: 1.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33727,8 +33729,8 @@ entities: - uid: 2655 type: ApcExtensionCable components: - - parent: 856 - pos: -0.5,14.5 + - parent: 855 + pos: 0.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33736,8 +33738,8 @@ entities: - uid: 2656 type: ApcExtensionCable components: - - parent: 856 - pos: 0.5,14.5 + - parent: 855 + pos: 0.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33745,8 +33747,8 @@ entities: - uid: 2657 type: ApcExtensionCable components: - - parent: 856 - pos: 1.5,14.5 + - parent: 855 + pos: -39.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33754,8 +33756,8 @@ entities: - uid: 2658 type: ApcExtensionCable components: - - parent: 856 - pos: 0.5,13.5 + - parent: 855 + pos: -39.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33763,8 +33765,8 @@ entities: - uid: 2659 type: ApcExtensionCable components: - - parent: 856 - pos: 0.5,12.5 + - parent: 855 + pos: -38.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33772,8 +33774,8 @@ entities: - uid: 2660 type: ApcExtensionCable components: - - parent: 856 - pos: -39.5,11.5 + - parent: 855 + pos: -37.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33781,8 +33783,8 @@ entities: - uid: 2661 type: ApcExtensionCable components: - - parent: 856 - pos: -39.5,10.5 + - parent: 855 + pos: -36.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33790,8 +33792,8 @@ entities: - uid: 2662 type: ApcExtensionCable components: - - parent: 856 - pos: -38.5,10.5 + - parent: 855 + pos: -36.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33799,8 +33801,8 @@ entities: - uid: 2663 type: ApcExtensionCable components: - - parent: 856 - pos: -37.5,10.5 + - parent: 855 + pos: -36.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33808,8 +33810,8 @@ entities: - uid: 2664 type: ApcExtensionCable components: - - parent: 856 - pos: -36.5,10.5 + - parent: 855 + pos: -36.5,7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33817,8 +33819,8 @@ entities: - uid: 2665 type: ApcExtensionCable components: - - parent: 856 - pos: -36.5,9.5 + - parent: 855 + pos: -36.5,6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33826,8 +33828,8 @@ entities: - uid: 2666 type: ApcExtensionCable components: - - parent: 856 - pos: -36.5,8.5 + - parent: 855 + pos: -36.5,5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33835,8 +33837,8 @@ entities: - uid: 2667 type: ApcExtensionCable components: - - parent: 856 - pos: -36.5,7.5 + - parent: 855 + pos: -36.5,4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33844,8 +33846,8 @@ entities: - uid: 2668 type: ApcExtensionCable components: - - parent: 856 - pos: -36.5,6.5 + - parent: 855 + pos: -36.5,3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33853,8 +33855,8 @@ entities: - uid: 2669 type: ApcExtensionCable components: - - parent: 856 - pos: -36.5,5.5 + - parent: 855 + pos: -36.5,2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33862,8 +33864,8 @@ entities: - uid: 2670 type: ApcExtensionCable components: - - parent: 856 - pos: -36.5,4.5 + - parent: 855 + pos: -36.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33871,8 +33873,8 @@ entities: - uid: 2671 type: ApcExtensionCable components: - - parent: 856 - pos: -36.5,3.5 + - parent: 855 + pos: -36.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33880,8 +33882,8 @@ entities: - uid: 2672 type: ApcExtensionCable components: - - parent: 856 - pos: -36.5,2.5 + - parent: 855 + pos: -36.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33889,8 +33891,8 @@ entities: - uid: 2673 type: ApcExtensionCable components: - - parent: 856 - pos: -36.5,1.5 + - parent: 855 + pos: -36.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33898,8 +33900,8 @@ entities: - uid: 2674 type: ApcExtensionCable components: - - parent: 856 - pos: -36.5,0.5 + - parent: 855 + pos: -36.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33907,8 +33909,8 @@ entities: - uid: 2675 type: ApcExtensionCable components: - - parent: 856 - pos: -36.5,-0.5 + - parent: 855 + pos: -36.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33916,8 +33918,8 @@ entities: - uid: 2676 type: ApcExtensionCable components: - - parent: 856 - pos: -36.5,-1.5 + - parent: 855 + pos: -36.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33925,8 +33927,8 @@ entities: - uid: 2677 type: ApcExtensionCable components: - - parent: 856 - pos: -36.5,-2.5 + - parent: 855 + pos: -36.5,-5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33934,8 +33936,8 @@ entities: - uid: 2678 type: ApcExtensionCable components: - - parent: 856 - pos: -36.5,-3.5 + - parent: 855 + pos: -36.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33943,8 +33945,8 @@ entities: - uid: 2679 type: ApcExtensionCable components: - - parent: 856 - pos: -36.5,-4.5 + - parent: 855 + pos: -35.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33952,8 +33954,8 @@ entities: - uid: 2680 type: ApcExtensionCable components: - - parent: 856 - pos: -36.5,-5.5 + - parent: 855 + pos: -35.5,2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33961,8 +33963,8 @@ entities: - uid: 2681 type: ApcExtensionCable components: - - parent: 856 - pos: -36.5,-6.5 + - parent: 855 + pos: -35.5,5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33970,8 +33972,8 @@ entities: - uid: 2682 type: ApcExtensionCable components: - - parent: 856 - pos: -35.5,-6.5 + - parent: 855 + pos: -34.5,5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33979,8 +33981,8 @@ entities: - uid: 2683 type: ApcExtensionCable components: - - parent: 856 - pos: -35.5,2.5 + - parent: 855 + pos: -33.5,5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33988,8 +33990,8 @@ entities: - uid: 2684 type: ApcExtensionCable components: - - parent: 856 - pos: -35.5,5.5 + - parent: 855 + pos: -32.5,5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -33997,8 +33999,8 @@ entities: - uid: 2685 type: ApcExtensionCable components: - - parent: 856 - pos: -34.5,5.5 + - parent: 855 + pos: -35.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34006,8 +34008,8 @@ entities: - uid: 2686 type: ApcExtensionCable components: - - parent: 856 - pos: -33.5,5.5 + - parent: 855 + pos: -34.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34015,8 +34017,8 @@ entities: - uid: 2687 type: ApcExtensionCable components: - - parent: 856 - pos: -32.5,5.5 + - parent: 855 + pos: -37.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34024,8 +34026,8 @@ entities: - uid: 2688 type: ApcExtensionCable components: - - parent: 856 - pos: -35.5,8.5 + - parent: 855 + pos: -38.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34033,8 +34035,8 @@ entities: - uid: 2689 type: ApcExtensionCable components: - - parent: 856 - pos: -34.5,8.5 + - parent: 855 + pos: -39.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34042,8 +34044,8 @@ entities: - uid: 2690 type: ApcExtensionCable components: - - parent: 856 - pos: -37.5,8.5 + - parent: 855 + pos: -40.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34051,8 +34053,8 @@ entities: - uid: 2691 type: ApcExtensionCable components: - - parent: 856 - pos: -38.5,8.5 + - parent: 855 + pos: -37.5,4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34060,8 +34062,8 @@ entities: - uid: 2692 type: ApcExtensionCable components: - - parent: 856 - pos: -39.5,8.5 + - parent: 855 + pos: -38.5,4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34069,8 +34071,8 @@ entities: - uid: 2693 type: ApcExtensionCable components: - - parent: 856 - pos: -40.5,8.5 + - parent: 855 + pos: -39.5,4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34078,8 +34080,8 @@ entities: - uid: 2694 type: ApcExtensionCable components: - - parent: 856 - pos: -37.5,4.5 + - parent: 855 + pos: -40.5,4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34087,8 +34089,8 @@ entities: - uid: 2695 type: ApcExtensionCable components: - - parent: 856 - pos: -38.5,4.5 + - parent: 855 + pos: -37.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34096,8 +34098,8 @@ entities: - uid: 2696 type: ApcExtensionCable components: - - parent: 856 - pos: -39.5,4.5 + - parent: 855 + pos: -38.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34105,8 +34107,8 @@ entities: - uid: 2697 type: ApcExtensionCable components: - - parent: 856 - pos: -40.5,4.5 + - parent: 855 + pos: -18.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34114,8 +34116,8 @@ entities: - uid: 2698 type: ApcExtensionCable components: - - parent: 856 - pos: -37.5,-3.5 + - parent: 855 + pos: -17.5,7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34123,8 +34125,8 @@ entities: - uid: 2699 type: ApcExtensionCable components: - - parent: 856 - pos: -38.5,-3.5 + - parent: 855 + pos: -18.5,7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34132,8 +34134,8 @@ entities: - uid: 2700 type: ApcExtensionCable components: - - parent: 856 - pos: -18.5,9.5 + - parent: 855 + pos: -30.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34141,8 +34143,8 @@ entities: - uid: 2701 type: ApcExtensionCable components: - - parent: 856 - pos: -17.5,7.5 + - parent: 855 + pos: -30.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34150,8 +34152,8 @@ entities: - uid: 2702 type: ApcExtensionCable components: - - parent: 856 - pos: -18.5,7.5 + - parent: 855 + pos: -30.5,-5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34159,8 +34161,8 @@ entities: - uid: 2703 type: ApcExtensionCable components: - - parent: 856 - pos: -30.5,-3.5 + - parent: 855 + pos: -30.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34168,8 +34170,8 @@ entities: - uid: 2704 type: ApcExtensionCable components: - - parent: 856 - pos: -30.5,-4.5 + - parent: 855 + pos: -30.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34177,8 +34179,8 @@ entities: - uid: 2705 type: ApcExtensionCable components: - - parent: 856 - pos: -30.5,-5.5 + - parent: 855 + pos: -29.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34186,8 +34188,8 @@ entities: - uid: 2706 type: ApcExtensionCable components: - - parent: 856 - pos: -30.5,-6.5 + - parent: 855 + pos: -28.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34195,8 +34197,8 @@ entities: - uid: 2707 type: ApcExtensionCable components: - - parent: 856 - pos: -30.5,-7.5 + - parent: 855 + pos: -27.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34204,8 +34206,8 @@ entities: - uid: 2708 type: ApcExtensionCable components: - - parent: 856 - pos: -29.5,-7.5 + - parent: 855 + pos: -26.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34213,8 +34215,8 @@ entities: - uid: 2709 type: ApcExtensionCable components: - - parent: 856 - pos: -28.5,-7.5 + - parent: 855 + pos: -25.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34222,8 +34224,8 @@ entities: - uid: 2710 type: ApcExtensionCable components: - - parent: 856 - pos: -27.5,-7.5 + - parent: 855 + pos: -25.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34231,8 +34233,8 @@ entities: - uid: 2711 type: ApcExtensionCable components: - - parent: 856 - pos: -26.5,-7.5 + - parent: 855 + pos: -24.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34240,8 +34242,8 @@ entities: - uid: 2712 type: ApcExtensionCable components: - - parent: 856 - pos: -25.5,-7.5 + - parent: 855 + pos: -23.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34249,8 +34251,8 @@ entities: - uid: 2713 type: ApcExtensionCable components: - - parent: 856 - pos: -25.5,-8.5 + - parent: 855 + pos: -23.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34258,8 +34260,8 @@ entities: - uid: 2714 type: ApcExtensionCable components: - - parent: 856 - pos: -24.5,-7.5 + - parent: 855 + pos: -20.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34267,8 +34269,8 @@ entities: - uid: 2715 type: ApcExtensionCable components: - - parent: 856 - pos: -23.5,-7.5 + - parent: 855 + pos: -30.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34276,8 +34278,8 @@ entities: - uid: 2716 type: ApcExtensionCable components: - - parent: 856 - pos: -23.5,-8.5 + - parent: 855 + pos: -30.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34285,8 +34287,8 @@ entities: - uid: 2717 type: ApcExtensionCable components: - - parent: 856 - pos: -20.5,-7.5 + - parent: 855 + pos: -30.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34294,8 +34296,8 @@ entities: - uid: 2718 type: ApcExtensionCable components: - - parent: 856 - pos: -30.5,-2.5 + - parent: 855 + pos: -30.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34303,8 +34305,8 @@ entities: - uid: 2719 type: ApcExtensionCable components: - - parent: 856 - pos: -30.5,-1.5 + - parent: 855 + pos: -30.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34312,8 +34314,8 @@ entities: - uid: 2720 type: ApcExtensionCable components: - - parent: 856 - pos: -30.5,-0.5 + - parent: 855 + pos: -29.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34321,8 +34323,8 @@ entities: - uid: 2721 type: ApcExtensionCable components: - - parent: 856 - pos: -30.5,0.5 + - parent: 855 + pos: -28.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34330,8 +34332,8 @@ entities: - uid: 2722 type: ApcExtensionCable components: - - parent: 856 - pos: -30.5,1.5 + - parent: 855 + pos: -27.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34339,8 +34341,8 @@ entities: - uid: 2723 type: ApcExtensionCable components: - - parent: 856 - pos: -29.5,0.5 + - parent: 855 + pos: -27.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34348,26 +34350,24 @@ entities: - uid: 2724 type: ApcExtensionCable components: - - parent: 856 - pos: -28.5,0.5 + - parent: 855 + pos: -27.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible - uid: 2725 - type: ApcExtensionCable + type: solid_wall components: - - parent: 856 - pos: -27.5,0.5 + - parent: 855 + pos: -31.5,1.5 rot: -1.5707963267948966 rad type: Transform - - deadThreshold: 100 - type: Destructible - uid: 2726 type: ApcExtensionCable components: - - parent: 856 - pos: -27.5,-0.5 + - parent: 855 + pos: -31.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34375,24 +34375,26 @@ entities: - uid: 2727 type: ApcExtensionCable components: - - parent: 856 - pos: -27.5,-1.5 + - parent: 855 + pos: -32.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible - uid: 2728 - type: solid_wall + type: ApcExtensionCable components: - - parent: 856 - pos: -31.5,1.5 + - parent: 855 + pos: -32.5,-5.5 rot: -1.5707963267948966 rad type: Transform + - deadThreshold: 100 + type: Destructible - uid: 2729 type: ApcExtensionCable components: - - parent: 856 - pos: -31.5,-6.5 + - parent: 855 + pos: -32.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34400,8 +34402,8 @@ entities: - uid: 2730 type: ApcExtensionCable components: - - parent: 856 - pos: -32.5,-6.5 + - parent: 855 + pos: -32.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34409,8 +34411,8 @@ entities: - uid: 2731 type: ApcExtensionCable components: - - parent: 856 - pos: -32.5,-5.5 + - parent: 855 + pos: -32.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34418,8 +34420,8 @@ entities: - uid: 2732 type: ApcExtensionCable components: - - parent: 856 - pos: -32.5,-4.5 + - parent: 855 + pos: -32.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34427,8 +34429,8 @@ entities: - uid: 2733 type: ApcExtensionCable components: - - parent: 856 - pos: -32.5,-3.5 + - parent: 855 + pos: -32.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34436,8 +34438,8 @@ entities: - uid: 2734 type: ApcExtensionCable components: - - parent: 856 - pos: -32.5,-2.5 + - parent: 855 + pos: -32.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34445,8 +34447,8 @@ entities: - uid: 2735 type: ApcExtensionCable components: - - parent: 856 - pos: -32.5,-1.5 + - parent: 855 + pos: -32.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34454,8 +34456,8 @@ entities: - uid: 2736 type: ApcExtensionCable components: - - parent: 856 - pos: -32.5,-0.5 + - parent: 855 + pos: -20.5,-12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34463,8 +34465,8 @@ entities: - uid: 2737 type: ApcExtensionCable components: - - parent: 856 - pos: -32.5,0.5 + - parent: 855 + pos: -20.5,-13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34472,8 +34474,8 @@ entities: - uid: 2738 type: ApcExtensionCable components: - - parent: 856 - pos: -32.5,1.5 + - parent: 855 + pos: -20.5,-14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34481,8 +34483,8 @@ entities: - uid: 2739 type: ApcExtensionCable components: - - parent: 856 - pos: -20.5,-12.5 + - parent: 855 + pos: -21.5,-14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34490,8 +34492,8 @@ entities: - uid: 2740 type: ApcExtensionCable components: - - parent: 856 - pos: -20.5,-13.5 + - parent: 855 + pos: -22.5,-14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34499,8 +34501,8 @@ entities: - uid: 2741 type: ApcExtensionCable components: - - parent: 856 - pos: -20.5,-14.5 + - parent: 855 + pos: -22.5,-14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34508,8 +34510,8 @@ entities: - uid: 2742 type: ApcExtensionCable components: - - parent: 856 - pos: -21.5,-14.5 + - parent: 855 + pos: -23.5,-14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34517,8 +34519,8 @@ entities: - uid: 2743 type: ApcExtensionCable components: - - parent: 856 - pos: -22.5,-14.5 + - parent: 855 + pos: -24.5,-14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34526,8 +34528,8 @@ entities: - uid: 2744 type: ApcExtensionCable components: - - parent: 856 - pos: -22.5,-14.5 + - parent: 855 + pos: -24.5,-13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34535,8 +34537,8 @@ entities: - uid: 2745 type: ApcExtensionCable components: - - parent: 856 - pos: -23.5,-14.5 + - parent: 855 + pos: -14.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34544,8 +34546,8 @@ entities: - uid: 2746 type: ApcExtensionCable components: - - parent: 856 - pos: -24.5,-14.5 + - parent: 855 + pos: -14.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34553,8 +34555,8 @@ entities: - uid: 2747 type: ApcExtensionCable components: - - parent: 856 - pos: -24.5,-13.5 + - parent: 855 + pos: -14.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34562,8 +34564,8 @@ entities: - uid: 2748 type: ApcExtensionCable components: - - parent: 856 - pos: -14.5,-8.5 + - parent: 855 + pos: -14.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34571,8 +34573,8 @@ entities: - uid: 2749 type: ApcExtensionCable components: - - parent: 856 - pos: -14.5,-9.5 + - parent: 855 + pos: -14.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34580,8 +34582,8 @@ entities: - uid: 2750 type: ApcExtensionCable components: - - parent: 856 - pos: -14.5,-10.5 + - parent: 855 + pos: -13.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34589,8 +34591,8 @@ entities: - uid: 2751 type: ApcExtensionCable components: - - parent: 856 - pos: -14.5,-10.5 + - parent: 855 + pos: -12.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34598,8 +34600,8 @@ entities: - uid: 2752 type: ApcExtensionCable components: - - parent: 856 - pos: -14.5,-11.5 + - parent: 855 + pos: -11.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34607,8 +34609,8 @@ entities: - uid: 2753 type: ApcExtensionCable components: - - parent: 856 - pos: -13.5,-11.5 + - parent: 855 + pos: -12.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34616,8 +34618,8 @@ entities: - uid: 2754 type: ApcExtensionCable components: - - parent: 856 - pos: -12.5,-11.5 + - parent: 855 + pos: -12.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34625,8 +34627,8 @@ entities: - uid: 2755 type: ApcExtensionCable components: - - parent: 856 - pos: -11.5,-11.5 + - parent: 855 + pos: -13.5,-12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34634,8 +34636,8 @@ entities: - uid: 2756 type: ApcExtensionCable components: - - parent: 856 - pos: -12.5,-10.5 + - parent: 855 + pos: -12.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34643,8 +34645,8 @@ entities: - uid: 2757 type: ApcExtensionCable components: - - parent: 856 - pos: -12.5,-9.5 + - parent: 855 + pos: -16.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34652,8 +34654,8 @@ entities: - uid: 2758 type: ApcExtensionCable components: - - parent: 856 - pos: -13.5,-12.5 + - parent: 855 + pos: -15.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34661,8 +34663,8 @@ entities: - uid: 2759 type: ApcExtensionCable components: - - parent: 856 - pos: -12.5,-8.5 + - parent: 855 + pos: -14.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34670,8 +34672,8 @@ entities: - uid: 2760 type: ApcExtensionCable components: - - parent: 856 - pos: -16.5,-7.5 + - parent: 855 + pos: -17.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34679,8 +34681,8 @@ entities: - uid: 2761 type: ApcExtensionCable components: - - parent: 856 - pos: -15.5,-7.5 + - parent: 855 + pos: -18.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34688,8 +34690,8 @@ entities: - uid: 2762 type: ApcExtensionCable components: - - parent: 856 - pos: -14.5,-7.5 + - parent: 855 + pos: -19.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34697,8 +34699,8 @@ entities: - uid: 2763 type: ApcExtensionCable components: - - parent: 856 - pos: -17.5,-7.5 + - parent: 855 + pos: -20.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34706,8 +34708,8 @@ entities: - uid: 2764 type: ApcExtensionCable components: - - parent: 856 - pos: -18.5,-7.5 + - parent: 855 + pos: -18.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34715,8 +34717,8 @@ entities: - uid: 2765 type: ApcExtensionCable components: - - parent: 856 - pos: -19.5,-7.5 + - parent: 855 + pos: -18.5,-5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34724,8 +34726,8 @@ entities: - uid: 2766 type: ApcExtensionCable components: - - parent: 856 - pos: -20.5,-7.5 + - parent: 855 + pos: -18.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34733,8 +34735,8 @@ entities: - uid: 2767 type: ApcExtensionCable components: - - parent: 856 - pos: -18.5,-6.5 + - parent: 855 + pos: -19.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34742,8 +34744,8 @@ entities: - uid: 2768 type: ApcExtensionCable components: - - parent: 856 - pos: -18.5,-5.5 + - parent: 855 + pos: -20.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34751,8 +34753,8 @@ entities: - uid: 2769 type: ApcExtensionCable components: - - parent: 856 - pos: -18.5,-4.5 + - parent: 855 + pos: -21.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34760,8 +34762,8 @@ entities: - uid: 2770 type: ApcExtensionCable components: - - parent: 856 - pos: -19.5,-4.5 + - parent: 855 + pos: -22.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34769,8 +34771,8 @@ entities: - uid: 2771 type: ApcExtensionCable components: - - parent: 856 - pos: -20.5,-4.5 + - parent: 855 + pos: -22.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34778,8 +34780,8 @@ entities: - uid: 2772 type: ApcExtensionCable components: - - parent: 856 - pos: -21.5,-4.5 + - parent: 855 + pos: -22.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34787,8 +34789,8 @@ entities: - uid: 2773 type: ApcExtensionCable components: - - parent: 856 - pos: -22.5,-4.5 + - parent: 855 + pos: -22.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34796,8 +34798,8 @@ entities: - uid: 2774 type: ApcExtensionCable components: - - parent: 856 - pos: -22.5,-3.5 + - parent: 855 + pos: -22.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34805,8 +34807,8 @@ entities: - uid: 2775 type: ApcExtensionCable components: - - parent: 856 - pos: -22.5,-2.5 + - parent: 855 + pos: -22.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34814,8 +34816,8 @@ entities: - uid: 2776 type: ApcExtensionCable components: - - parent: 856 - pos: -22.5,-2.5 + - parent: 855 + pos: -22.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34823,8 +34825,8 @@ entities: - uid: 2777 type: ApcExtensionCable components: - - parent: 856 - pos: -22.5,-1.5 + - parent: 855 + pos: -22.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34832,17 +34834,17 @@ entities: - uid: 2778 type: ApcExtensionCable components: - - parent: 856 - pos: -22.5,-0.5 - rot: -1.5707963267948966 rad + - parent: 855 + pos: -23.5,0.5 + rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible - uid: 2779 type: ApcExtensionCable components: - - parent: 856 - pos: -22.5,0.5 + - parent: 855 + pos: -15.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34850,8 +34852,8 @@ entities: - uid: 2780 type: ApcExtensionCable components: - - parent: 856 - pos: -22.5,1.5 + - parent: 855 + pos: -15.5,-5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34859,17 +34861,17 @@ entities: - uid: 2781 type: ApcExtensionCable components: - - parent: 856 - pos: -23.5,0.5 - rot: 3.141592653589793 rad + - parent: 855 + pos: -15.5,-4.5 + rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible - uid: 2782 type: ApcExtensionCable components: - - parent: 856 - pos: -15.5,-6.5 + - parent: 855 + pos: -11.5,2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34877,8 +34879,8 @@ entities: - uid: 2783 type: ApcExtensionCable components: - - parent: 856 - pos: -15.5,-5.5 + - parent: 855 + pos: -11.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34886,8 +34888,8 @@ entities: - uid: 2784 type: ApcExtensionCable components: - - parent: 856 - pos: -15.5,-4.5 + - parent: 855 + pos: -11.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34895,8 +34897,8 @@ entities: - uid: 2785 type: ApcExtensionCable components: - - parent: 856 - pos: -11.5,2.5 + - parent: 855 + pos: -11.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34904,8 +34906,8 @@ entities: - uid: 2786 type: ApcExtensionCable components: - - parent: 856 - pos: -11.5,1.5 + - parent: 855 + pos: -11.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34913,8 +34915,8 @@ entities: - uid: 2787 type: ApcExtensionCable components: - - parent: 856 - pos: -11.5,0.5 + - parent: 855 + pos: -11.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34922,8 +34924,8 @@ entities: - uid: 2788 type: ApcExtensionCable components: - - parent: 856 - pos: -11.5,-0.5 + - parent: 855 + pos: -11.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34931,8 +34933,8 @@ entities: - uid: 2789 type: ApcExtensionCable components: - - parent: 856 - pos: -11.5,-1.5 + - parent: 855 + pos: -11.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34940,8 +34942,8 @@ entities: - uid: 2790 type: ApcExtensionCable components: - - parent: 856 - pos: -11.5,-2.5 + - parent: 855 + pos: -12.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34949,8 +34951,8 @@ entities: - uid: 2791 type: ApcExtensionCable components: - - parent: 856 - pos: -11.5,-3.5 + - parent: 855 + pos: -12.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34958,8 +34960,8 @@ entities: - uid: 2792 type: ApcExtensionCable components: - - parent: 856 - pos: -11.5,-4.5 + - parent: 855 + pos: -13.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34967,8 +34969,8 @@ entities: - uid: 2793 type: ApcExtensionCable components: - - parent: 856 - pos: -12.5,-4.5 + - parent: 855 + pos: -14.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -34976,26 +34978,26 @@ entities: - uid: 2794 type: ApcExtensionCable components: - - parent: 856 - pos: -12.5,0.5 + - parent: 855 + pos: -14.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible - uid: 2795 - type: ApcExtensionCable + type: SalternApc components: - - parent: 856 - pos: -13.5,0.5 + - parent: 855 + pos: -14.5,-8.5 rot: -1.5707963267948966 rad type: Transform - - deadThreshold: 100 - type: Destructible + - startingCharge: 11999.087 + type: Battery - uid: 2796 type: ApcExtensionCable components: - - parent: 856 - pos: -14.5,0.5 + - parent: 855 + pos: -15.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35003,26 +35005,26 @@ entities: - uid: 2797 type: ApcExtensionCable components: - - parent: 856 - pos: -14.5,0.5 + - parent: 855 + pos: -16.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible - uid: 2798 - type: SalternApc + type: ApcExtensionCable components: - - parent: 856 - pos: -14.5,-8.5 + - parent: 855 + pos: -17.5,0.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 11999.253 - type: Battery + - deadThreshold: 100 + type: Destructible - uid: 2799 type: ApcExtensionCable components: - - parent: 856 - pos: -15.5,0.5 + - parent: 855 + pos: -18.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35030,8 +35032,8 @@ entities: - uid: 2800 type: ApcExtensionCable components: - - parent: 856 - pos: -16.5,0.5 + - parent: 855 + pos: -19.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35039,8 +35041,8 @@ entities: - uid: 2801 type: ApcExtensionCable components: - - parent: 856 - pos: -17.5,0.5 + - parent: 855 + pos: -20.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35048,8 +35050,8 @@ entities: - uid: 2802 type: ApcExtensionCable components: - - parent: 856 - pos: -18.5,0.5 + - parent: 855 + pos: -20.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35057,8 +35059,8 @@ entities: - uid: 2803 type: ApcExtensionCable components: - - parent: 856 - pos: -19.5,0.5 + - parent: 855 + pos: -16.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35066,8 +35068,8 @@ entities: - uid: 2804 type: ApcExtensionCable components: - - parent: 856 - pos: -20.5,0.5 + - parent: 855 + pos: -16.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35075,8 +35077,8 @@ entities: - uid: 2805 type: ApcExtensionCable components: - - parent: 856 - pos: -20.5,1.5 + - parent: 855 + pos: -12.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35084,8 +35086,8 @@ entities: - uid: 2806 type: ApcExtensionCable components: - - parent: 856 - pos: -16.5,-0.5 + - parent: 855 + pos: -12.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35093,8 +35095,8 @@ entities: - uid: 2807 type: ApcExtensionCable components: - - parent: 856 - pos: -16.5,-1.5 + - parent: 855 + pos: -13.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35102,8 +35104,8 @@ entities: - uid: 2808 type: ApcExtensionCable components: - - parent: 856 - pos: -12.5,-1.5 + - parent: 855 + pos: -20.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35111,8 +35113,8 @@ entities: - uid: 2809 type: ApcExtensionCable components: - - parent: 856 - pos: -12.5,-1.5 + - parent: 855 + pos: -20.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35120,8 +35122,8 @@ entities: - uid: 2810 type: ApcExtensionCable components: - - parent: 856 - pos: -13.5,-1.5 + - parent: 855 + pos: -20.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35129,8 +35131,8 @@ entities: - uid: 2811 type: ApcExtensionCable components: - - parent: 856 - pos: -20.5,-0.5 + - parent: 855 + pos: -20.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35138,8 +35140,8 @@ entities: - uid: 2812 type: ApcExtensionCable components: - - parent: 856 - pos: -20.5,-0.5 + - parent: 855 + pos: -10.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35147,8 +35149,8 @@ entities: - uid: 2813 type: ApcExtensionCable components: - - parent: 856 - pos: -20.5,-1.5 + - parent: 855 + pos: -9.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35156,8 +35158,8 @@ entities: - uid: 2814 type: ApcExtensionCable components: - - parent: 856 - pos: -20.5,-2.5 + - parent: 855 + pos: -8.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35165,8 +35167,8 @@ entities: - uid: 2815 type: ApcExtensionCable components: - - parent: 856 - pos: -10.5,0.5 + - parent: 855 + pos: -7.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35174,8 +35176,8 @@ entities: - uid: 2816 type: ApcExtensionCable components: - - parent: 856 - pos: -9.5,0.5 + - parent: 855 + pos: -6.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35183,8 +35185,8 @@ entities: - uid: 2817 type: ApcExtensionCable components: - - parent: 856 - pos: -8.5,0.5 + - parent: 855 + pos: -5.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35192,8 +35194,8 @@ entities: - uid: 2818 type: ApcExtensionCable components: - - parent: 856 - pos: -7.5,0.5 + - parent: 855 + pos: -4.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35201,8 +35203,8 @@ entities: - uid: 2819 type: ApcExtensionCable components: - - parent: 856 - pos: -6.5,0.5 + - parent: 855 + pos: -3.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35210,8 +35212,8 @@ entities: - uid: 2820 type: ApcExtensionCable components: - - parent: 856 - pos: -5.5,0.5 + - parent: 855 + pos: -2.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35219,8 +35221,8 @@ entities: - uid: 2821 type: ApcExtensionCable components: - - parent: 856 - pos: -4.5,0.5 + - parent: 855 + pos: -1.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35228,8 +35230,8 @@ entities: - uid: 2822 type: ApcExtensionCable components: - - parent: 856 - pos: -3.5,0.5 + - parent: 855 + pos: -0.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35237,8 +35239,8 @@ entities: - uid: 2823 type: ApcExtensionCable components: - - parent: 856 - pos: -2.5,0.5 + - parent: 855 + pos: 0.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35246,8 +35248,8 @@ entities: - uid: 2824 type: ApcExtensionCable components: - - parent: 856 - pos: -1.5,0.5 + - parent: 855 + pos: -0.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35255,8 +35257,8 @@ entities: - uid: 2825 type: ApcExtensionCable components: - - parent: 856 - pos: -0.5,0.5 + - parent: 855 + pos: -0.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35264,8 +35266,8 @@ entities: - uid: 2826 type: ApcExtensionCable components: - - parent: 856 - pos: 0.5,0.5 + - parent: 855 + pos: -0.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35273,8 +35275,8 @@ entities: - uid: 2827 type: ApcExtensionCable components: - - parent: 856 - pos: -0.5,0.5 + - parent: 855 + pos: -0.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35282,8 +35284,8 @@ entities: - uid: 2828 type: ApcExtensionCable components: - - parent: 856 - pos: -0.5,-0.5 + - parent: 855 + pos: -0.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35291,8 +35293,8 @@ entities: - uid: 2829 type: ApcExtensionCable components: - - parent: 856 - pos: -0.5,-1.5 + - parent: 855 + pos: -0.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35300,8 +35302,8 @@ entities: - uid: 2830 type: ApcExtensionCable components: - - parent: 856 - pos: -0.5,-2.5 + - parent: 855 + pos: 0.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35309,8 +35311,8 @@ entities: - uid: 2831 type: ApcExtensionCable components: - - parent: 856 - pos: -0.5,-3.5 + - parent: 855 + pos: -5.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35318,8 +35320,8 @@ entities: - uid: 2832 type: ApcExtensionCable components: - - parent: 856 - pos: -0.5,-4.5 + - parent: 855 + pos: -5.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35327,8 +35329,8 @@ entities: - uid: 2833 type: ApcExtensionCable components: - - parent: 856 - pos: 0.5,-4.5 + - parent: 855 + pos: -4.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35336,8 +35338,8 @@ entities: - uid: 2834 type: ApcExtensionCable components: - - parent: 856 - pos: -5.5,-8.5 + - parent: 855 + pos: -3.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35345,8 +35347,8 @@ entities: - uid: 2835 type: ApcExtensionCable components: - - parent: 856 - pos: -5.5,-7.5 + - parent: 855 + pos: -6.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35354,8 +35356,8 @@ entities: - uid: 2836 type: ApcExtensionCable components: - - parent: 856 - pos: -4.5,-7.5 + - parent: 855 + pos: -6.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35363,8 +35365,8 @@ entities: - uid: 2837 type: ApcExtensionCable components: - - parent: 856 - pos: -3.5,-7.5 + - parent: 855 + pos: -7.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35372,8 +35374,8 @@ entities: - uid: 2838 type: ApcExtensionCable components: - - parent: 856 - pos: -6.5,-7.5 + - parent: 855 + pos: -6.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35381,8 +35383,8 @@ entities: - uid: 2839 type: ApcExtensionCable components: - - parent: 856 - pos: -6.5,-7.5 + - parent: 855 + pos: -6.5,-5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35390,8 +35392,8 @@ entities: - uid: 2840 type: ApcExtensionCable components: - - parent: 856 - pos: -7.5,-7.5 + - parent: 855 + pos: -6.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35399,8 +35401,8 @@ entities: - uid: 2841 type: ApcExtensionCable components: - - parent: 856 - pos: -6.5,-6.5 + - parent: 855 + pos: -5.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35408,8 +35410,8 @@ entities: - uid: 2842 type: ApcExtensionCable components: - - parent: 856 - pos: -6.5,-5.5 + - parent: 855 + pos: -5.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35417,8 +35419,8 @@ entities: - uid: 2843 type: ApcExtensionCable components: - - parent: 856 - pos: -6.5,-4.5 + - parent: 855 + pos: -4.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35426,8 +35428,8 @@ entities: - uid: 2844 type: ApcExtensionCable components: - - parent: 856 - pos: -5.5,-9.5 + - parent: 855 + pos: -4.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35435,8 +35437,8 @@ entities: - uid: 2845 type: ApcExtensionCable components: - - parent: 856 - pos: -5.5,-10.5 + - parent: 855 + pos: -3.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35444,8 +35446,8 @@ entities: - uid: 2846 type: ApcExtensionCable components: - - parent: 856 - pos: -4.5,-10.5 + - parent: 855 + pos: -2.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35453,8 +35455,8 @@ entities: - uid: 2847 type: ApcExtensionCable components: - - parent: 856 - pos: -4.5,-10.5 + - parent: 855 + pos: -1.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35462,8 +35464,8 @@ entities: - uid: 2848 type: ApcExtensionCable components: - - parent: 856 - pos: -3.5,-10.5 + - parent: 855 + pos: -0.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35471,8 +35473,8 @@ entities: - uid: 2849 type: ApcExtensionCable components: - - parent: 856 - pos: -2.5,-10.5 + - parent: 855 + pos: 0.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35480,8 +35482,8 @@ entities: - uid: 2850 type: ApcExtensionCable components: - - parent: 856 - pos: -1.5,-10.5 + - parent: 855 + pos: 0.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35489,8 +35491,8 @@ entities: - uid: 2851 type: ApcExtensionCable components: - - parent: 856 - pos: -0.5,-10.5 + - parent: 855 + pos: 0.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35498,8 +35500,8 @@ entities: - uid: 2852 type: ApcExtensionCable components: - - parent: 856 - pos: 0.5,-10.5 + - parent: 855 + pos: 0.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35507,8 +35509,8 @@ entities: - uid: 2853 type: ApcExtensionCable components: - - parent: 856 - pos: 0.5,-9.5 + - parent: 855 + pos: -0.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35516,8 +35518,8 @@ entities: - uid: 2854 type: ApcExtensionCable components: - - parent: 856 - pos: 0.5,-8.5 + - parent: 855 + pos: -1.5,-18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35525,8 +35527,8 @@ entities: - uid: 2855 type: ApcExtensionCable components: - - parent: 856 - pos: 0.5,-7.5 + - parent: 855 + pos: -1.5,-19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35534,8 +35536,8 @@ entities: - uid: 2856 type: ApcExtensionCable components: - - parent: 856 - pos: -0.5,-11.5 + - parent: 855 + pos: -1.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35543,8 +35545,8 @@ entities: - uid: 2857 type: ApcExtensionCable components: - - parent: 856 - pos: -1.5,-18.5 + - parent: 855 + pos: -0.5,-19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35552,8 +35554,8 @@ entities: - uid: 2858 type: ApcExtensionCable components: - - parent: 856 - pos: -1.5,-19.5 + - parent: 855 + pos: -2.5,-19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35561,8 +35563,8 @@ entities: - uid: 2859 type: ApcExtensionCable components: - - parent: 856 - pos: -1.5,-20.5 + - parent: 855 + pos: -3.5,-19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35570,8 +35572,8 @@ entities: - uid: 2860 type: ApcExtensionCable components: - - parent: 856 - pos: -0.5,-19.5 + - parent: 855 + pos: -4.5,-19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35579,8 +35581,8 @@ entities: - uid: 2861 type: ApcExtensionCable components: - - parent: 856 - pos: -2.5,-19.5 + - parent: 855 + pos: -3.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35588,8 +35590,8 @@ entities: - uid: 2862 type: ApcExtensionCable components: - - parent: 856 - pos: -3.5,-19.5 + - parent: 855 + pos: -3.5,-21.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35597,8 +35599,8 @@ entities: - uid: 2863 type: ApcExtensionCable components: - - parent: 856 - pos: -4.5,-19.5 + - parent: 855 + pos: -3.5,-23.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35606,8 +35608,8 @@ entities: - uid: 2864 type: ApcExtensionCable components: - - parent: 856 - pos: -3.5,-20.5 + - parent: 855 + pos: -3.5,-22.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35615,8 +35617,8 @@ entities: - uid: 2865 type: ApcExtensionCable components: - - parent: 856 - pos: -3.5,-21.5 + - parent: 855 + pos: -2.5,-23.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35624,8 +35626,8 @@ entities: - uid: 2866 type: ApcExtensionCable components: - - parent: 856 - pos: -3.5,-23.5 + - parent: 855 + pos: -9.5,-21.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35633,8 +35635,8 @@ entities: - uid: 2867 type: ApcExtensionCable components: - - parent: 856 - pos: -3.5,-22.5 + - parent: 855 + pos: -9.5,-22.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35642,8 +35644,8 @@ entities: - uid: 2868 type: ApcExtensionCable components: - - parent: 856 - pos: -2.5,-23.5 + - parent: 855 + pos: -9.5,-23.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35651,8 +35653,8 @@ entities: - uid: 2869 type: ApcExtensionCable components: - - parent: 856 - pos: -9.5,-21.5 + - parent: 855 + pos: -8.5,-23.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35660,8 +35662,8 @@ entities: - uid: 2870 type: ApcExtensionCable components: - - parent: 856 - pos: -9.5,-22.5 + - parent: 855 + pos: -7.5,-23.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35669,8 +35671,8 @@ entities: - uid: 2871 type: ApcExtensionCable components: - - parent: 856 - pos: -9.5,-23.5 + - parent: 855 + pos: -7.5,-24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35678,8 +35680,8 @@ entities: - uid: 2872 type: ApcExtensionCable components: - - parent: 856 - pos: -8.5,-23.5 + - parent: 855 + pos: -7.5,-25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35687,8 +35689,8 @@ entities: - uid: 2873 type: ApcExtensionCable components: - - parent: 856 - pos: -7.5,-23.5 + - parent: 855 + pos: -9.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35696,8 +35698,8 @@ entities: - uid: 2874 type: ApcExtensionCable components: - - parent: 856 - pos: -7.5,-24.5 + - parent: 855 + pos: -10.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35705,8 +35707,8 @@ entities: - uid: 2875 type: ApcExtensionCable components: - - parent: 856 - pos: -7.5,-25.5 + - parent: 855 + pos: -11.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35714,8 +35716,8 @@ entities: - uid: 2876 type: ApcExtensionCable components: - - parent: 856 - pos: -9.5,-20.5 + - parent: 855 + pos: -11.5,-19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35723,8 +35725,8 @@ entities: - uid: 2877 type: ApcExtensionCable components: - - parent: 856 - pos: -10.5,-20.5 + - parent: 855 + pos: -9.5,-19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35732,8 +35734,8 @@ entities: - uid: 2878 type: ApcExtensionCable components: - - parent: 856 - pos: -11.5,-20.5 + - parent: 855 + pos: -9.5,-18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35741,8 +35743,8 @@ entities: - uid: 2879 type: ApcExtensionCable components: - - parent: 856 - pos: -11.5,-19.5 + - parent: 855 + pos: -9.5,-17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35750,8 +35752,8 @@ entities: - uid: 2880 type: ApcExtensionCable components: - - parent: 856 - pos: -9.5,-19.5 + - parent: 855 + pos: -8.5,-17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35759,8 +35761,8 @@ entities: - uid: 2881 type: ApcExtensionCable components: - - parent: 856 - pos: -9.5,-18.5 + - parent: 855 + pos: -3.5,-18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35768,8 +35770,8 @@ entities: - uid: 2882 type: ApcExtensionCable components: - - parent: 856 - pos: -9.5,-17.5 + - parent: 855 + pos: -3.5,-17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35777,8 +35779,8 @@ entities: - uid: 2883 type: ApcExtensionCable components: - - parent: 856 - pos: -8.5,-17.5 + - parent: 855 + pos: -3.5,-17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35786,8 +35788,8 @@ entities: - uid: 2884 type: ApcExtensionCable components: - - parent: 856 - pos: -3.5,-18.5 + - parent: 855 + pos: -3.5,-16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35795,8 +35797,8 @@ entities: - uid: 2885 type: ApcExtensionCable components: - - parent: 856 - pos: -3.5,-17.5 + - parent: 855 + pos: -3.5,-15.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35804,8 +35806,8 @@ entities: - uid: 2886 type: ApcExtensionCable components: - - parent: 856 - pos: -3.5,-17.5 + - parent: 855 + pos: -3.5,-14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35813,8 +35815,8 @@ entities: - uid: 2887 type: ApcExtensionCable components: - - parent: 856 - pos: -3.5,-16.5 + - parent: 855 + pos: -3.5,-13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35822,8 +35824,8 @@ entities: - uid: 2888 type: ApcExtensionCable components: - - parent: 856 - pos: -3.5,-15.5 + - parent: 855 + pos: -3.5,-12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35831,8 +35833,8 @@ entities: - uid: 2889 type: ApcExtensionCable components: - - parent: 856 - pos: -3.5,-14.5 + - parent: 855 + pos: -2.5,-13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35840,8 +35842,8 @@ entities: - uid: 2890 type: ApcExtensionCable components: - - parent: 856 - pos: -3.5,-13.5 + - parent: 855 + pos: -1.5,-13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35849,8 +35851,8 @@ entities: - uid: 2891 type: ApcExtensionCable components: - - parent: 856 - pos: -3.5,-12.5 + - parent: 855 + pos: -1.5,-17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35858,8 +35860,8 @@ entities: - uid: 2892 type: ApcExtensionCable components: - - parent: 856 - pos: -2.5,-13.5 + - parent: 855 + pos: -0.5,-17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35867,8 +35869,8 @@ entities: - uid: 2893 type: ApcExtensionCable components: - - parent: 856 - pos: -1.5,-13.5 + - parent: 855 + pos: 0.5,-17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35876,8 +35878,8 @@ entities: - uid: 2894 type: ApcExtensionCable components: - - parent: 856 - pos: -1.5,-17.5 + - parent: 855 + pos: -4.5,-14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35885,8 +35887,8 @@ entities: - uid: 2895 type: ApcExtensionCable components: - - parent: 856 - pos: -0.5,-17.5 + - parent: 855 + pos: -4.5,-12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35894,8 +35896,8 @@ entities: - uid: 2896 type: ApcExtensionCable components: - - parent: 856 - pos: 0.5,-17.5 + - parent: 855 + pos: -4.5,-17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35903,8 +35905,8 @@ entities: - uid: 2897 type: ApcExtensionCable components: - - parent: 856 - pos: -4.5,-14.5 + - parent: 855 + pos: -5.5,-12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35912,8 +35914,8 @@ entities: - uid: 2898 type: ApcExtensionCable components: - - parent: 856 - pos: -4.5,-12.5 + - parent: 855 + pos: -6.5,-12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35921,8 +35923,8 @@ entities: - uid: 2899 type: ApcExtensionCable components: - - parent: 856 - pos: -4.5,-17.5 + - parent: 855 + pos: -5.5,-14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35930,8 +35932,8 @@ entities: - uid: 2900 type: ApcExtensionCable components: - - parent: 856 - pos: -5.5,-12.5 + - parent: 855 + pos: -14.5,-16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35939,8 +35941,8 @@ entities: - uid: 2901 type: ApcExtensionCable components: - - parent: 856 - pos: -6.5,-12.5 + - parent: 855 + pos: -14.5,-17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35948,8 +35950,8 @@ entities: - uid: 2902 type: ApcExtensionCable components: - - parent: 856 - pos: -5.5,-14.5 + - parent: 855 + pos: -14.5,-18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35957,8 +35959,8 @@ entities: - uid: 2903 type: ApcExtensionCable components: - - parent: 856 - pos: -14.5,-16.5 + - parent: 855 + pos: -14.5,-19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35966,8 +35968,8 @@ entities: - uid: 2904 type: ApcExtensionCable components: - - parent: 856 - pos: -14.5,-17.5 + - parent: 855 + pos: -14.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35975,8 +35977,8 @@ entities: - uid: 2905 type: ApcExtensionCable components: - - parent: 856 - pos: -14.5,-18.5 + - parent: 855 + pos: -14.5,-21.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35984,8 +35986,8 @@ entities: - uid: 2906 type: ApcExtensionCable components: - - parent: 856 - pos: -14.5,-19.5 + - parent: 855 + pos: -14.5,-22.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -35993,8 +35995,8 @@ entities: - uid: 2907 type: ApcExtensionCable components: - - parent: 856 - pos: -14.5,-20.5 + - parent: 855 + pos: -14.5,-23.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36002,8 +36004,8 @@ entities: - uid: 2908 type: ApcExtensionCable components: - - parent: 856 - pos: -14.5,-21.5 + - parent: 855 + pos: -14.5,-24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36011,8 +36013,8 @@ entities: - uid: 2909 type: ApcExtensionCable components: - - parent: 856 - pos: -14.5,-22.5 + - parent: 855 + pos: -14.5,-25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36020,8 +36022,8 @@ entities: - uid: 2910 type: ApcExtensionCable components: - - parent: 856 - pos: -14.5,-23.5 + - parent: 855 + pos: -15.5,-25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36029,8 +36031,8 @@ entities: - uid: 2911 type: ApcExtensionCable components: - - parent: 856 - pos: -14.5,-24.5 + - parent: 855 + pos: -16.5,-25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36038,8 +36040,8 @@ entities: - uid: 2912 type: ApcExtensionCable components: - - parent: 856 - pos: -14.5,-25.5 + - parent: 855 + pos: -15.5,-22.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36047,8 +36049,8 @@ entities: - uid: 2913 type: ApcExtensionCable components: - - parent: 856 - pos: -15.5,-25.5 + - parent: 855 + pos: -16.5,-22.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36056,8 +36058,8 @@ entities: - uid: 2914 type: ApcExtensionCable components: - - parent: 856 - pos: -16.5,-25.5 + - parent: 855 + pos: -17.5,-22.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36065,8 +36067,8 @@ entities: - uid: 2915 type: ApcExtensionCable components: - - parent: 856 - pos: -15.5,-22.5 + - parent: 855 + pos: -1.5,-23.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36074,8 +36076,8 @@ entities: - uid: 2916 type: ApcExtensionCable components: - - parent: 856 - pos: -16.5,-22.5 + - parent: 855 + pos: -0.5,-23.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36083,8 +36085,8 @@ entities: - uid: 2917 type: ApcExtensionCable components: - - parent: 856 - pos: -17.5,-22.5 + - parent: 855 + pos: 0.5,-23.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36092,8 +36094,8 @@ entities: - uid: 2918 type: ApcExtensionCable components: - - parent: 856 - pos: -1.5,-23.5 + - parent: 855 + pos: 7.5,-17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36101,8 +36103,8 @@ entities: - uid: 2919 type: ApcExtensionCable components: - - parent: 856 - pos: -0.5,-23.5 + - parent: 855 + pos: 7.5,-18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36110,8 +36112,8 @@ entities: - uid: 2920 type: ApcExtensionCable components: - - parent: 856 - pos: 0.5,-23.5 + - parent: 855 + pos: 7.5,-19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36119,8 +36121,8 @@ entities: - uid: 2921 type: ApcExtensionCable components: - - parent: 856 - pos: 7.5,-17.5 + - parent: 855 + pos: 8.5,-18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36128,8 +36130,8 @@ entities: - uid: 2922 type: ApcExtensionCable components: - - parent: 856 - pos: 7.5,-18.5 + - parent: 855 + pos: 9.5,-18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36137,8 +36139,8 @@ entities: - uid: 2923 type: ApcExtensionCable components: - - parent: 856 - pos: 7.5,-19.5 + - parent: 855 + pos: 10.5,-18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36146,8 +36148,8 @@ entities: - uid: 2924 type: ApcExtensionCable components: - - parent: 856 - pos: 8.5,-18.5 + - parent: 855 + pos: 10.5,-19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36155,8 +36157,8 @@ entities: - uid: 2925 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,-18.5 + - parent: 855 + pos: 11.5,-19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36164,8 +36166,8 @@ entities: - uid: 2926 type: ApcExtensionCable components: - - parent: 856 - pos: 10.5,-18.5 + - parent: 855 + pos: 12.5,-19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36173,8 +36175,8 @@ entities: - uid: 2927 type: ApcExtensionCable components: - - parent: 856 - pos: 10.5,-19.5 + - parent: 855 + pos: 13.5,-19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36182,8 +36184,8 @@ entities: - uid: 2928 type: ApcExtensionCable components: - - parent: 856 - pos: 11.5,-19.5 + - parent: 855 + pos: 14.5,-19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36191,8 +36193,8 @@ entities: - uid: 2929 type: ApcExtensionCable components: - - parent: 856 - pos: 12.5,-19.5 + - parent: 855 + pos: 15.5,-19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36200,8 +36202,8 @@ entities: - uid: 2930 type: ApcExtensionCable components: - - parent: 856 - pos: 13.5,-19.5 + - parent: 855 + pos: 7.5,-16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36209,8 +36211,8 @@ entities: - uid: 2931 type: ApcExtensionCable components: - - parent: 856 - pos: 14.5,-19.5 + - parent: 855 + pos: 7.5,-15.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36218,8 +36220,8 @@ entities: - uid: 2932 type: ApcExtensionCable components: - - parent: 856 - pos: 15.5,-19.5 + - parent: 855 + pos: 7.5,-14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36227,8 +36229,8 @@ entities: - uid: 2933 type: ApcExtensionCable components: - - parent: 856 - pos: 7.5,-16.5 + - parent: 855 + pos: 7.5,-13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36236,8 +36238,8 @@ entities: - uid: 2934 type: ApcExtensionCable components: - - parent: 856 - pos: 7.5,-15.5 + - parent: 855 + pos: 6.5,-13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36245,8 +36247,8 @@ entities: - uid: 2935 type: ApcExtensionCable components: - - parent: 856 - pos: 7.5,-14.5 + - parent: 855 + pos: 5.5,-13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36254,8 +36256,8 @@ entities: - uid: 2936 type: ApcExtensionCable components: - - parent: 856 - pos: 7.5,-13.5 + - parent: 855 + pos: 8.5,-13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36263,8 +36265,8 @@ entities: - uid: 2937 type: ApcExtensionCable components: - - parent: 856 - pos: 6.5,-13.5 + - parent: 855 + pos: 9.5,-13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36272,8 +36274,8 @@ entities: - uid: 2938 type: ApcExtensionCable components: - - parent: 856 - pos: 5.5,-13.5 + - parent: 855 + pos: 10.5,-13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36281,8 +36283,8 @@ entities: - uid: 2939 type: ApcExtensionCable components: - - parent: 856 - pos: 8.5,-13.5 + - parent: 855 + pos: 11.5,-13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36290,8 +36292,8 @@ entities: - uid: 2940 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,-13.5 + - parent: 855 + pos: 22.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36299,8 +36301,8 @@ entities: - uid: 2941 type: ApcExtensionCable components: - - parent: 856 - pos: 10.5,-13.5 + - parent: 855 + pos: 22.5,-5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36308,8 +36310,8 @@ entities: - uid: 2942 type: ApcExtensionCable components: - - parent: 856 - pos: 11.5,-13.5 + - parent: 855 + pos: 23.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36317,8 +36319,8 @@ entities: - uid: 2943 type: ApcExtensionCable components: - - parent: 856 - pos: 22.5,-4.5 + - parent: 855 + pos: 24.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36326,8 +36328,8 @@ entities: - uid: 2944 type: ApcExtensionCable components: - - parent: 856 - pos: 22.5,-5.5 + - parent: 855 + pos: 25.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36335,8 +36337,8 @@ entities: - uid: 2945 type: ApcExtensionCable components: - - parent: 856 - pos: 23.5,-4.5 + - parent: 855 + pos: 22.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36344,8 +36346,8 @@ entities: - uid: 2946 type: ApcExtensionCable components: - - parent: 856 - pos: 24.5,-4.5 + - parent: 855 + pos: 22.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36353,8 +36355,8 @@ entities: - uid: 2947 type: ApcExtensionCable components: - - parent: 856 - pos: 25.5,-4.5 + - parent: 855 + pos: 22.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36362,8 +36364,8 @@ entities: - uid: 2948 type: ApcExtensionCable components: - - parent: 856 - pos: 22.5,-2.5 + - parent: 855 + pos: 22.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36371,8 +36373,8 @@ entities: - uid: 2949 type: ApcExtensionCable components: - - parent: 856 - pos: 22.5,-1.5 + - parent: 855 + pos: 22.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36380,8 +36382,8 @@ entities: - uid: 2950 type: ApcExtensionCable components: - - parent: 856 - pos: 22.5,-0.5 + - parent: 855 + pos: 21.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36389,8 +36391,8 @@ entities: - uid: 2951 type: ApcExtensionCable components: - - parent: 856 - pos: 22.5,0.5 + - parent: 855 + pos: 23.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36398,8 +36400,8 @@ entities: - uid: 2952 type: ApcExtensionCable components: - - parent: 856 - pos: 22.5,1.5 + - parent: 855 + pos: 23.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36407,8 +36409,8 @@ entities: - uid: 2953 type: ApcExtensionCable components: - - parent: 856 - pos: 21.5,1.5 + - parent: 855 + pos: 24.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36416,8 +36418,8 @@ entities: - uid: 2954 type: ApcExtensionCable components: - - parent: 856 - pos: 23.5,0.5 + - parent: 855 + pos: 25.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36425,8 +36427,8 @@ entities: - uid: 2955 type: ApcExtensionCable components: - - parent: 856 - pos: 23.5,-1.5 + - parent: 855 + pos: 22.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36434,8 +36436,8 @@ entities: - uid: 2956 type: ApcExtensionCable components: - - parent: 856 - pos: 24.5,-1.5 + - parent: 855 + pos: 21.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36443,8 +36445,8 @@ entities: - uid: 2957 type: ApcExtensionCable components: - - parent: 856 - pos: 25.5,-1.5 + - parent: 855 + pos: 20.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36452,8 +36454,8 @@ entities: - uid: 2958 type: ApcExtensionCable components: - - parent: 856 - pos: 22.5,-6.5 + - parent: 855 + pos: 19.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36461,8 +36463,8 @@ entities: - uid: 2959 type: ApcExtensionCable components: - - parent: 856 - pos: 21.5,-6.5 + - parent: 855 + pos: 18.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36470,8 +36472,8 @@ entities: - uid: 2960 type: ApcExtensionCable components: - - parent: 856 - pos: 20.5,-6.5 + - parent: 855 + pos: 18.5,-5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36479,8 +36481,8 @@ entities: - uid: 2961 type: ApcExtensionCable components: - - parent: 856 - pos: 19.5,-6.5 + - parent: 855 + pos: 18.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36488,8 +36490,8 @@ entities: - uid: 2962 type: ApcExtensionCable components: - - parent: 856 - pos: 18.5,-6.5 + - parent: 855 + pos: 18.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36497,8 +36499,8 @@ entities: - uid: 2963 type: ApcExtensionCable components: - - parent: 856 - pos: 18.5,-5.5 + - parent: 855 + pos: 18.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36506,8 +36508,8 @@ entities: - uid: 2964 type: ApcExtensionCable components: - - parent: 856 - pos: 18.5,-4.5 + - parent: 855 + pos: 18.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36515,8 +36517,8 @@ entities: - uid: 2965 type: ApcExtensionCable components: - - parent: 856 - pos: 18.5,-7.5 + - parent: 855 + pos: 18.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36524,8 +36526,8 @@ entities: - uid: 2966 type: ApcExtensionCable components: - - parent: 856 - pos: 18.5,-8.5 + - parent: 855 + pos: 18.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36533,8 +36535,8 @@ entities: - uid: 2967 type: ApcExtensionCable components: - - parent: 856 - pos: 18.5,-9.5 + - parent: 855 + pos: 18.5,-12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36542,8 +36544,8 @@ entities: - uid: 2968 type: ApcExtensionCable components: - - parent: 856 - pos: 18.5,-10.5 + - parent: 855 + pos: 18.5,-13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36551,8 +36553,8 @@ entities: - uid: 2969 type: ApcExtensionCable components: - - parent: 856 - pos: 18.5,-11.5 + - parent: 855 + pos: 18.5,-14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36560,8 +36562,8 @@ entities: - uid: 2970 type: ApcExtensionCable components: - - parent: 856 - pos: 18.5,-12.5 + - parent: 855 + pos: 18.5,-15.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36569,8 +36571,8 @@ entities: - uid: 2971 type: ApcExtensionCable components: - - parent: 856 - pos: 18.5,-13.5 + - parent: 855 + pos: 18.5,-16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36578,8 +36580,8 @@ entities: - uid: 2972 type: ApcExtensionCable components: - - parent: 856 - pos: 18.5,-14.5 + - parent: 855 + pos: 18.5,-17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36587,8 +36589,8 @@ entities: - uid: 2973 type: ApcExtensionCable components: - - parent: 856 - pos: 18.5,-15.5 + - parent: 855 + pos: 18.5,-18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36596,8 +36598,8 @@ entities: - uid: 2974 type: ApcExtensionCable components: - - parent: 856 - pos: 18.5,-16.5 + - parent: 855 + pos: 18.5,-19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36605,8 +36607,8 @@ entities: - uid: 2975 type: ApcExtensionCable components: - - parent: 856 - pos: 18.5,-17.5 + - parent: 855 + pos: 18.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36614,8 +36616,8 @@ entities: - uid: 2976 type: ApcExtensionCable components: - - parent: 856 - pos: 18.5,-18.5 + - parent: 855 + pos: 19.5,-13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36623,8 +36625,8 @@ entities: - uid: 2977 type: ApcExtensionCable components: - - parent: 856 - pos: 18.5,-19.5 + - parent: 855 + pos: 20.5,-13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36632,8 +36634,8 @@ entities: - uid: 2978 type: ApcExtensionCable components: - - parent: 856 - pos: 18.5,-20.5 + - parent: 855 + pos: 21.5,-13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36641,8 +36643,8 @@ entities: - uid: 2979 type: ApcExtensionCable components: - - parent: 856 - pos: 19.5,-13.5 + - parent: 855 + pos: 22.5,-13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36650,8 +36652,8 @@ entities: - uid: 2980 type: ApcExtensionCable components: - - parent: 856 - pos: 20.5,-13.5 + - parent: 855 + pos: 22.5,-13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36659,8 +36661,8 @@ entities: - uid: 2981 type: ApcExtensionCable components: - - parent: 856 - pos: 21.5,-13.5 + - parent: 855 + pos: 23.5,-13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36668,8 +36670,8 @@ entities: - uid: 2982 type: ApcExtensionCable components: - - parent: 856 - pos: 22.5,-13.5 + - parent: 855 + pos: 23.5,-14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36677,8 +36679,8 @@ entities: - uid: 2983 type: ApcExtensionCable components: - - parent: 856 - pos: 22.5,-13.5 + - parent: 855 + pos: 8.5,-12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36686,8 +36688,8 @@ entities: - uid: 2984 type: ApcExtensionCable components: - - parent: 856 - pos: 23.5,-13.5 + - parent: 855 + pos: 8.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36695,8 +36697,8 @@ entities: - uid: 2985 type: ApcExtensionCable components: - - parent: 856 - pos: 23.5,-14.5 + - parent: 855 + pos: 7.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36704,8 +36706,8 @@ entities: - uid: 2986 type: ApcExtensionCable components: - - parent: 856 - pos: 8.5,-12.5 + - parent: 855 + pos: 9.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36713,8 +36715,8 @@ entities: - uid: 2987 type: ApcExtensionCable components: - - parent: 856 - pos: 8.5,-11.5 + - parent: 855 + pos: 10.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36722,8 +36724,8 @@ entities: - uid: 2988 type: ApcExtensionCable components: - - parent: 856 - pos: 7.5,-11.5 + - parent: 855 + pos: 7.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36731,8 +36733,8 @@ entities: - uid: 2989 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,-11.5 + - parent: 855 + pos: 8.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36740,8 +36742,8 @@ entities: - uid: 2990 type: ApcExtensionCable components: - - parent: 856 - pos: 10.5,-11.5 + - parent: 855 + pos: 9.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36749,8 +36751,8 @@ entities: - uid: 2991 type: ApcExtensionCable components: - - parent: 856 - pos: 7.5,-7.5 + - parent: 855 + pos: 10.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36758,8 +36760,8 @@ entities: - uid: 2992 type: ApcExtensionCable components: - - parent: 856 - pos: 8.5,-7.5 + - parent: 855 + pos: 11.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36767,8 +36769,8 @@ entities: - uid: 2993 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,-7.5 + - parent: 855 + pos: 12.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36776,8 +36778,8 @@ entities: - uid: 2994 type: ApcExtensionCable components: - - parent: 856 - pos: 10.5,-7.5 + - parent: 855 + pos: 13.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36785,8 +36787,8 @@ entities: - uid: 2995 type: ApcExtensionCable components: - - parent: 856 - pos: 11.5,-7.5 + - parent: 855 + pos: 14.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36794,8 +36796,8 @@ entities: - uid: 2996 type: ApcExtensionCable components: - - parent: 856 - pos: 12.5,-7.5 + - parent: 855 + pos: 15.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36803,8 +36805,8 @@ entities: - uid: 2997 type: ApcExtensionCable components: - - parent: 856 - pos: 13.5,-7.5 + - parent: 855 + pos: 16.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36812,8 +36814,8 @@ entities: - uid: 2998 type: ApcExtensionCable components: - - parent: 856 - pos: 14.5,-7.5 + - parent: 855 + pos: 17.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36821,8 +36823,8 @@ entities: - uid: 2999 type: ApcExtensionCable components: - - parent: 856 - pos: 15.5,-7.5 + - parent: 855 + pos: 18.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36830,8 +36832,8 @@ entities: - uid: 3000 type: ApcExtensionCable components: - - parent: 856 - pos: 16.5,-7.5 + - parent: 855 + pos: 17.5,-17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36839,8 +36841,8 @@ entities: - uid: 3001 type: ApcExtensionCable components: - - parent: 856 - pos: 17.5,-7.5 + - parent: 855 + pos: 16.5,-17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36848,8 +36850,8 @@ entities: - uid: 3002 type: ApcExtensionCable components: - - parent: 856 - pos: 18.5,-7.5 + - parent: 855 + pos: 15.5,-17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36857,8 +36859,8 @@ entities: - uid: 3003 type: ApcExtensionCable components: - - parent: 856 - pos: 17.5,-17.5 + - parent: 855 + pos: 16.5,2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36866,8 +36868,8 @@ entities: - uid: 3004 type: ApcExtensionCable components: - - parent: 856 - pos: 16.5,-17.5 + - parent: 855 + pos: 16.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36875,8 +36877,8 @@ entities: - uid: 3005 type: ApcExtensionCable components: - - parent: 856 - pos: 15.5,-17.5 + - parent: 855 + pos: 17.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36884,8 +36886,8 @@ entities: - uid: 3006 type: ApcExtensionCable components: - - parent: 856 - pos: 16.5,2.5 + - parent: 855 + pos: 18.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36893,8 +36895,8 @@ entities: - uid: 3007 type: ApcExtensionCable components: - - parent: 856 - pos: 16.5,1.5 + - parent: 855 + pos: 15.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36902,8 +36904,8 @@ entities: - uid: 3008 type: ApcExtensionCable components: - - parent: 856 - pos: 17.5,1.5 + - parent: 855 + pos: 14.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36911,8 +36913,8 @@ entities: - uid: 3009 type: ApcExtensionCable components: - - parent: 856 - pos: 18.5,1.5 + - parent: 855 + pos: 13.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36920,8 +36922,8 @@ entities: - uid: 3010 type: ApcExtensionCable components: - - parent: 856 - pos: 15.5,1.5 + - parent: 855 + pos: 12.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36929,8 +36931,8 @@ entities: - uid: 3011 type: ApcExtensionCable components: - - parent: 856 - pos: 14.5,1.5 + - parent: 855 + pos: 11.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36938,8 +36940,8 @@ entities: - uid: 3012 type: ApcExtensionCable components: - - parent: 856 - pos: 13.5,1.5 + - parent: 855 + pos: 10.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36947,8 +36949,8 @@ entities: - uid: 3013 type: ApcExtensionCable components: - - parent: 856 - pos: 12.5,1.5 + - parent: 855 + pos: 9.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36956,8 +36958,8 @@ entities: - uid: 3014 type: ApcExtensionCable components: - - parent: 856 - pos: 11.5,1.5 + - parent: 855 + pos: 8.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36965,8 +36967,8 @@ entities: - uid: 3015 type: ApcExtensionCable components: - - parent: 856 - pos: 10.5,1.5 + - parent: 855 + pos: 7.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36974,8 +36976,8 @@ entities: - uid: 3016 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,1.5 + - parent: 855 + pos: 6.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36983,8 +36985,8 @@ entities: - uid: 3017 type: ApcExtensionCable components: - - parent: 856 - pos: 8.5,1.5 + - parent: 855 + pos: 16.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -36992,8 +36994,8 @@ entities: - uid: 3018 type: ApcExtensionCable components: - - parent: 856 - pos: 7.5,1.5 + - parent: 855 + pos: 16.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37001,8 +37003,8 @@ entities: - uid: 3019 type: ApcExtensionCable components: - - parent: 856 - pos: 6.5,1.5 + - parent: 855 + pos: 17.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37010,8 +37012,8 @@ entities: - uid: 3020 type: ApcExtensionCable components: - - parent: 856 - pos: 16.5,0.5 + - parent: 855 + pos: 18.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37019,8 +37021,8 @@ entities: - uid: 3021 type: ApcExtensionCable components: - - parent: 856 - pos: 16.5,-0.5 + - parent: 855 + pos: 9.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37028,8 +37030,8 @@ entities: - uid: 3022 type: ApcExtensionCable components: - - parent: 856 - pos: 17.5,-0.5 + - parent: 855 + pos: 9.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37037,8 +37039,8 @@ entities: - uid: 3023 type: ApcExtensionCable components: - - parent: 856 - pos: 18.5,-0.5 + - parent: 855 + pos: 9.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37046,8 +37048,8 @@ entities: - uid: 3024 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,0.5 + - parent: 855 + pos: 9.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37055,8 +37057,8 @@ entities: - uid: 3025 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,-0.5 + - parent: 855 + pos: 9.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37064,8 +37066,8 @@ entities: - uid: 3026 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,-1.5 + - parent: 855 + pos: 9.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37073,8 +37075,8 @@ entities: - uid: 3027 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,-2.5 + - parent: 855 + pos: 8.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37082,8 +37084,8 @@ entities: - uid: 3028 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,-3.5 + - parent: 855 + pos: 7.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37091,8 +37093,8 @@ entities: - uid: 3029 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,-4.5 + - parent: 855 + pos: 6.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37100,8 +37102,8 @@ entities: - uid: 3030 type: ApcExtensionCable components: - - parent: 856 - pos: 8.5,-4.5 + - parent: 855 + pos: 10.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37109,8 +37111,8 @@ entities: - uid: 3031 type: ApcExtensionCable components: - - parent: 856 - pos: 7.5,-4.5 + - parent: 855 + pos: 11.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37118,8 +37120,8 @@ entities: - uid: 3032 type: ApcExtensionCable components: - - parent: 856 - pos: 6.5,-4.5 + - parent: 855 + pos: 6.5,-17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37127,8 +37129,8 @@ entities: - uid: 3033 type: ApcExtensionCable components: - - parent: 856 - pos: 10.5,-2.5 + - parent: 855 + pos: 1.5,-23.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37136,8 +37138,8 @@ entities: - uid: 3034 type: ApcExtensionCable components: - - parent: 856 - pos: 11.5,-2.5 + - parent: 855 + pos: 2.5,-23.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37145,8 +37147,8 @@ entities: - uid: 3035 type: ApcExtensionCable components: - - parent: 856 - pos: 6.5,-17.5 + - parent: 855 + pos: 3.5,-23.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37154,8 +37156,8 @@ entities: - uid: 3036 type: ApcExtensionCable components: - - parent: 856 - pos: 1.5,-23.5 + - parent: 855 + pos: 3.5,-22.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37163,8 +37165,8 @@ entities: - uid: 3037 type: ApcExtensionCable components: - - parent: 856 - pos: 2.5,-23.5 + - parent: 855 + pos: 3.5,-21.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37172,8 +37174,8 @@ entities: - uid: 3038 type: ApcExtensionCable components: - - parent: 856 - pos: 3.5,-23.5 + - parent: 855 + pos: 2.5,-21.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37181,8 +37183,8 @@ entities: - uid: 3039 type: ApcExtensionCable components: - - parent: 856 - pos: 3.5,-22.5 + - parent: 855 + pos: 4.5,-21.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37190,8 +37192,8 @@ entities: - uid: 3040 type: ApcExtensionCable components: - - parent: 856 - pos: 3.5,-21.5 + - parent: 855 + pos: 22.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37199,8 +37201,8 @@ entities: - uid: 3041 type: ApcExtensionCable components: - - parent: 856 - pos: 2.5,-21.5 + - parent: 855 + pos: 31.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37208,8 +37210,8 @@ entities: - uid: 3042 type: ApcExtensionCable components: - - parent: 856 - pos: 4.5,-21.5 + - parent: 855 + pos: 31.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37217,8 +37219,8 @@ entities: - uid: 3043 type: ApcExtensionCable components: - - parent: 856 - pos: 22.5,-3.5 + - parent: 855 + pos: 31.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37226,8 +37228,8 @@ entities: - uid: 3044 type: ApcExtensionCable components: - - parent: 856 - pos: 31.5,1.5 + - parent: 855 + pos: 31.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37235,8 +37237,8 @@ entities: - uid: 3045 type: ApcExtensionCable components: - - parent: 856 - pos: 31.5,0.5 + - parent: 855 + pos: 31.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37244,8 +37246,8 @@ entities: - uid: 3046 type: ApcExtensionCable components: - - parent: 856 - pos: 31.5,-0.5 + - parent: 855 + pos: 31.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37253,8 +37255,8 @@ entities: - uid: 3047 type: ApcExtensionCable components: - - parent: 856 - pos: 31.5,-1.5 + - parent: 855 + pos: 30.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37262,8 +37264,8 @@ entities: - uid: 3048 type: ApcExtensionCable components: - - parent: 856 - pos: 31.5,-3.5 + - parent: 855 + pos: 29.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37271,8 +37273,8 @@ entities: - uid: 3049 type: ApcExtensionCable components: - - parent: 856 - pos: 31.5,-2.5 + - parent: 855 + pos: 32.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37280,8 +37282,8 @@ entities: - uid: 3050 type: ApcExtensionCable components: - - parent: 856 - pos: 30.5,-2.5 + - parent: 855 + pos: 33.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37289,8 +37291,8 @@ entities: - uid: 3051 type: ApcExtensionCable components: - - parent: 856 - pos: 29.5,-2.5 + - parent: 855 + pos: 34.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37298,8 +37300,8 @@ entities: - uid: 3052 type: ApcExtensionCable components: - - parent: 856 - pos: 32.5,-2.5 + - parent: 855 + pos: 35.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37307,8 +37309,8 @@ entities: - uid: 3053 type: ApcExtensionCable components: - - parent: 856 - pos: 33.5,-2.5 + - parent: 855 + pos: 31.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37316,8 +37318,8 @@ entities: - uid: 3054 type: ApcExtensionCable components: - - parent: 856 - pos: 34.5,-2.5 + - parent: 855 + pos: 31.5,2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37325,8 +37327,8 @@ entities: - uid: 3055 type: ApcExtensionCable components: - - parent: 856 - pos: 35.5,-2.5 + - parent: 855 + pos: 31.5,3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37334,8 +37336,8 @@ entities: - uid: 3056 type: ApcExtensionCable components: - - parent: 856 - pos: 31.5,1.5 + - parent: 855 + pos: 31.5,4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37343,8 +37345,8 @@ entities: - uid: 3057 type: ApcExtensionCable components: - - parent: 856 - pos: 31.5,2.5 + - parent: 855 + pos: 32.5,4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37352,8 +37354,8 @@ entities: - uid: 3058 type: ApcExtensionCable components: - - parent: 856 - pos: 31.5,3.5 + - parent: 855 + pos: 33.5,4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37361,8 +37363,8 @@ entities: - uid: 3059 type: ApcExtensionCable components: - - parent: 856 - pos: 31.5,4.5 + - parent: 855 + pos: 34.5,4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37370,8 +37372,8 @@ entities: - uid: 3060 type: ApcExtensionCable components: - - parent: 856 - pos: 32.5,4.5 + - parent: 855 + pos: 35.5,4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37379,8 +37381,8 @@ entities: - uid: 3061 type: ApcExtensionCable components: - - parent: 856 - pos: 33.5,4.5 + - parent: 855 + pos: 36.5,4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37388,8 +37390,8 @@ entities: - uid: 3062 type: ApcExtensionCable components: - - parent: 856 - pos: 34.5,4.5 + - parent: 855 + pos: 37.5,4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37397,8 +37399,8 @@ entities: - uid: 3063 type: ApcExtensionCable components: - - parent: 856 - pos: 35.5,4.5 + - parent: 855 + pos: 38.5,4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37406,8 +37408,8 @@ entities: - uid: 3064 type: ApcExtensionCable components: - - parent: 856 - pos: 36.5,4.5 + - parent: 855 + pos: 38.5,3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37415,8 +37417,8 @@ entities: - uid: 3065 type: ApcExtensionCable components: - - parent: 856 - pos: 37.5,4.5 + - parent: 855 + pos: 38.5,2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37424,8 +37426,8 @@ entities: - uid: 3066 type: ApcExtensionCable components: - - parent: 856 - pos: 38.5,4.5 + - parent: 855 + pos: 38.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37433,8 +37435,8 @@ entities: - uid: 3067 type: ApcExtensionCable components: - - parent: 856 - pos: 38.5,3.5 + - parent: 855 + pos: 38.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37442,8 +37444,8 @@ entities: - uid: 3068 type: ApcExtensionCable components: - - parent: 856 - pos: 38.5,2.5 + - parent: 855 + pos: 38.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37451,8 +37453,8 @@ entities: - uid: 3069 type: ApcExtensionCable components: - - parent: 856 - pos: 38.5,1.5 + - parent: 855 + pos: 38.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37460,8 +37462,8 @@ entities: - uid: 3070 type: ApcExtensionCable components: - - parent: 856 - pos: 38.5,0.5 + - parent: 855 + pos: 43.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37469,8 +37471,8 @@ entities: - uid: 3071 type: ApcExtensionCable components: - - parent: 856 - pos: 38.5,-0.5 + - parent: 855 + pos: 43.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37478,8 +37480,8 @@ entities: - uid: 3072 type: ApcExtensionCable components: - - parent: 856 - pos: 38.5,-1.5 + - parent: 855 + pos: 42.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37487,8 +37489,8 @@ entities: - uid: 3073 type: ApcExtensionCable components: - - parent: 856 - pos: 43.5,10.5 + - parent: 855 + pos: 41.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37496,8 +37498,8 @@ entities: - uid: 3074 type: ApcExtensionCable components: - - parent: 856 - pos: 43.5,9.5 + - parent: 855 + pos: 39.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37505,8 +37507,8 @@ entities: - uid: 3075 type: ApcExtensionCable components: - - parent: 856 - pos: 42.5,9.5 + - parent: 855 + pos: 38.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37514,8 +37516,8 @@ entities: - uid: 3076 type: ApcExtensionCable components: - - parent: 856 - pos: 41.5,9.5 + - parent: 855 + pos: 40.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37523,8 +37525,8 @@ entities: - uid: 3077 type: ApcExtensionCable components: - - parent: 856 - pos: 39.5,9.5 + - parent: 855 + pos: 38.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37532,8 +37534,8 @@ entities: - uid: 3078 type: ApcExtensionCable components: - - parent: 856 - pos: 38.5,9.5 + - parent: 855 + pos: 38.5,7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37541,8 +37543,8 @@ entities: - uid: 3079 type: ApcExtensionCable components: - - parent: 856 - pos: 40.5,9.5 + - parent: 855 + pos: 38.5,6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37550,8 +37552,8 @@ entities: - uid: 3080 type: ApcExtensionCable components: - - parent: 856 - pos: 38.5,8.5 + - parent: 855 + pos: 44.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37559,8 +37561,8 @@ entities: - uid: 3081 type: ApcExtensionCable components: - - parent: 856 - pos: 38.5,7.5 + - parent: 855 + pos: 44.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37568,8 +37570,8 @@ entities: - uid: 3082 type: ApcExtensionCable components: - - parent: 856 - pos: 38.5,6.5 + - parent: 855 + pos: 44.5,7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37577,8 +37579,8 @@ entities: - uid: 3083 type: ApcExtensionCable components: - - parent: 856 - pos: 44.5,9.5 + - parent: 855 + pos: 44.5,6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37586,8 +37588,8 @@ entities: - uid: 3084 type: ApcExtensionCable components: - - parent: 856 - pos: 44.5,8.5 + - parent: 855 + pos: 44.5,5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37595,8 +37597,8 @@ entities: - uid: 3085 type: ApcExtensionCable components: - - parent: 856 - pos: 44.5,7.5 + - parent: 855 + pos: 44.5,4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37604,8 +37606,8 @@ entities: - uid: 3086 type: ApcExtensionCable components: - - parent: 856 - pos: 44.5,6.5 + - parent: 855 + pos: 45.5,4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37613,8 +37615,8 @@ entities: - uid: 3087 type: ApcExtensionCable components: - - parent: 856 - pos: 44.5,5.5 + - parent: 855 + pos: 46.5,4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37622,8 +37624,8 @@ entities: - uid: 3088 type: ApcExtensionCable components: - - parent: 856 - pos: 44.5,4.5 + - parent: 855 + pos: 47.5,4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37631,8 +37633,8 @@ entities: - uid: 3089 type: ApcExtensionCable components: - - parent: 856 - pos: 45.5,4.5 + - parent: 855 + pos: 48.5,4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37640,8 +37642,8 @@ entities: - uid: 3090 type: ApcExtensionCable components: - - parent: 856 - pos: 46.5,4.5 + - parent: 855 + pos: 49.5,4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37649,8 +37651,8 @@ entities: - uid: 3091 type: ApcExtensionCable components: - - parent: 856 - pos: 47.5,4.5 + - parent: 855 + pos: 33.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37658,8 +37660,8 @@ entities: - uid: 3092 type: ApcExtensionCable components: - - parent: 856 - pos: 48.5,4.5 + - parent: 855 + pos: 33.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37667,8 +37669,8 @@ entities: - uid: 3093 type: ApcExtensionCable components: - - parent: 856 - pos: 49.5,4.5 + - parent: 855 + pos: 43.5,4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37676,8 +37678,8 @@ entities: - uid: 3094 type: ApcExtensionCable components: - - parent: 856 - pos: 33.5,-3.5 + - parent: 855 + pos: 43.5,3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37685,8 +37687,8 @@ entities: - uid: 3095 type: ApcExtensionCable components: - - parent: 856 - pos: 33.5,-4.5 + - parent: 855 + pos: 43.5,2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37694,8 +37696,8 @@ entities: - uid: 3096 type: ApcExtensionCable components: - - parent: 856 - pos: 43.5,4.5 + - parent: 855 + pos: 43.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37703,8 +37705,8 @@ entities: - uid: 3097 type: ApcExtensionCable components: - - parent: 856 - pos: 43.5,3.5 + - parent: 855 + pos: 43.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37712,8 +37714,8 @@ entities: - uid: 3098 type: ApcExtensionCable components: - - parent: 856 - pos: 43.5,2.5 + - parent: 855 + pos: 43.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37721,8 +37723,8 @@ entities: - uid: 3099 type: ApcExtensionCable components: - - parent: 856 - pos: 43.5,1.5 + - parent: 855 + pos: 43.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37730,8 +37732,8 @@ entities: - uid: 3100 type: ApcExtensionCable components: - - parent: 856 - pos: 43.5,0.5 + - parent: 855 + pos: 43.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37739,8 +37741,8 @@ entities: - uid: 3101 type: ApcExtensionCable components: - - parent: 856 - pos: 43.5,-0.5 + - parent: 855 + pos: 43.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37748,8 +37750,8 @@ entities: - uid: 3102 type: ApcExtensionCable components: - - parent: 856 - pos: 43.5,-1.5 + - parent: 855 + pos: 42.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37757,8 +37759,8 @@ entities: - uid: 3103 type: ApcExtensionCable components: - - parent: 856 - pos: 43.5,-2.5 + - parent: 855 + pos: 41.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37766,8 +37768,8 @@ entities: - uid: 3104 type: ApcExtensionCable components: - - parent: 856 - pos: 43.5,-3.5 + - parent: 855 + pos: 40.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37775,8 +37777,8 @@ entities: - uid: 3105 type: ApcExtensionCable components: - - parent: 856 - pos: 42.5,-3.5 + - parent: 855 + pos: 39.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37784,8 +37786,8 @@ entities: - uid: 3106 type: ApcExtensionCable components: - - parent: 856 - pos: 41.5,-3.5 + - parent: 855 + pos: 38.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37793,8 +37795,8 @@ entities: - uid: 3107 type: ApcExtensionCable components: - - parent: 856 - pos: 40.5,-3.5 + - parent: 855 + pos: 37.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37802,8 +37804,8 @@ entities: - uid: 3108 type: ApcExtensionCable components: - - parent: 856 - pos: 39.5,-3.5 + - parent: 855 + pos: 37.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37811,8 +37813,8 @@ entities: - uid: 3109 type: ApcExtensionCable components: - - parent: 856 - pos: 38.5,-3.5 + - parent: 855 + pos: 37.5,-5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37820,8 +37822,8 @@ entities: - uid: 3110 type: ApcExtensionCable components: - - parent: 856 - pos: 37.5,-3.5 + - parent: 855 + pos: 37.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37829,8 +37831,8 @@ entities: - uid: 3111 type: ApcExtensionCable components: - - parent: 856 - pos: 37.5,-4.5 + - parent: 855 + pos: 36.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37838,8 +37840,8 @@ entities: - uid: 3112 type: ApcExtensionCable components: - - parent: 856 - pos: 37.5,-5.5 + - parent: 855 + pos: 35.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37847,8 +37849,8 @@ entities: - uid: 3113 type: ApcExtensionCable components: - - parent: 856 - pos: 37.5,-6.5 + - parent: 855 + pos: 34.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37856,8 +37858,8 @@ entities: - uid: 3114 type: ApcExtensionCable components: - - parent: 856 - pos: 36.5,-6.5 + - parent: 855 + pos: 33.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37865,8 +37867,8 @@ entities: - uid: 3115 type: ApcExtensionCable components: - - parent: 856 - pos: 35.5,-6.5 + - parent: 855 + pos: 32.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37874,8 +37876,8 @@ entities: - uid: 3116 type: ApcExtensionCable components: - - parent: 856 - pos: 34.5,-6.5 + - parent: 855 + pos: 31.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37883,8 +37885,8 @@ entities: - uid: 3117 type: ApcExtensionCable components: - - parent: 856 - pos: 33.5,-6.5 + - parent: 855 + pos: 30.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37892,8 +37894,8 @@ entities: - uid: 3118 type: ApcExtensionCable components: - - parent: 856 - pos: 32.5,-6.5 + - parent: 855 + pos: 29.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37901,8 +37903,8 @@ entities: - uid: 3119 type: ApcExtensionCable components: - - parent: 856 - pos: 31.5,-6.5 + - parent: 855 + pos: 28.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37910,8 +37912,8 @@ entities: - uid: 3120 type: ApcExtensionCable components: - - parent: 856 - pos: 30.5,-6.5 + - parent: 855 + pos: 27.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37919,8 +37921,8 @@ entities: - uid: 3121 type: ApcExtensionCable components: - - parent: 856 - pos: 29.5,-6.5 + - parent: 855 + pos: 27.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37928,8 +37930,8 @@ entities: - uid: 3122 type: ApcExtensionCable components: - - parent: 856 - pos: 28.5,-6.5 + - parent: 855 + pos: 27.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37937,8 +37939,8 @@ entities: - uid: 3123 type: ApcExtensionCable components: - - parent: 856 - pos: 27.5,-6.5 + - parent: 855 + pos: 27.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37946,8 +37948,8 @@ entities: - uid: 3124 type: ApcExtensionCable components: - - parent: 856 - pos: 27.5,-7.5 + - parent: 855 + pos: 27.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37955,8 +37957,8 @@ entities: - uid: 3125 type: ApcExtensionCable components: - - parent: 856 - pos: 27.5,-8.5 + - parent: 855 + pos: 27.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37964,8 +37966,8 @@ entities: - uid: 3126 type: ApcExtensionCable components: - - parent: 856 - pos: 27.5,-9.5 + - parent: 855 + pos: 27.5,-12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37973,8 +37975,8 @@ entities: - uid: 3127 type: ApcExtensionCable components: - - parent: 856 - pos: 27.5,-10.5 + - parent: 855 + pos: 27.5,-13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37982,8 +37984,8 @@ entities: - uid: 3128 type: ApcExtensionCable components: - - parent: 856 - pos: 27.5,-11.5 + - parent: 855 + pos: 27.5,-14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -37991,8 +37993,8 @@ entities: - uid: 3129 type: ApcExtensionCable components: - - parent: 856 - pos: 27.5,-12.5 + - parent: 855 + pos: 27.5,-15.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38000,8 +38002,8 @@ entities: - uid: 3130 type: ApcExtensionCable components: - - parent: 856 - pos: 27.5,-13.5 + - parent: 855 + pos: 27.5,-16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38009,8 +38011,8 @@ entities: - uid: 3131 type: ApcExtensionCable components: - - parent: 856 - pos: 27.5,-14.5 + - parent: 855 + pos: 27.5,-17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38018,8 +38020,8 @@ entities: - uid: 3132 type: ApcExtensionCable components: - - parent: 856 - pos: 27.5,-15.5 + - parent: 855 + pos: 27.5,-18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38027,8 +38029,8 @@ entities: - uid: 3133 type: ApcExtensionCable components: - - parent: 856 - pos: 27.5,-16.5 + - parent: 855 + pos: 26.5,-18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38036,8 +38038,8 @@ entities: - uid: 3134 type: ApcExtensionCable components: - - parent: 856 - pos: 27.5,-17.5 + - parent: 855 + pos: 25.5,-18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38045,8 +38047,8 @@ entities: - uid: 3135 type: ApcExtensionCable components: - - parent: 856 - pos: 27.5,-18.5 + - parent: 855 + pos: 24.5,-18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38054,8 +38056,8 @@ entities: - uid: 3136 type: ApcExtensionCable components: - - parent: 856 - pos: 26.5,-18.5 + - parent: 855 + pos: 47.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38063,8 +38065,8 @@ entities: - uid: 3137 type: ApcExtensionCable components: - - parent: 856 - pos: 25.5,-18.5 + - parent: 855 + pos: 47.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38072,8 +38074,8 @@ entities: - uid: 3138 type: ApcExtensionCable components: - - parent: 856 - pos: 24.5,-18.5 + - parent: 855 + pos: 47.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38081,8 +38083,8 @@ entities: - uid: 3139 type: ApcExtensionCable components: - - parent: 856 - pos: 47.5,-1.5 + - parent: 855 + pos: 48.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38090,8 +38092,8 @@ entities: - uid: 3140 type: ApcExtensionCable components: - - parent: 856 - pos: 47.5,-2.5 + - parent: 855 + pos: 49.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38099,8 +38101,8 @@ entities: - uid: 3141 type: ApcExtensionCable components: - - parent: 856 - pos: 47.5,-3.5 + - parent: 855 + pos: 50.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38108,8 +38110,8 @@ entities: - uid: 3142 type: ApcExtensionCable components: - - parent: 856 - pos: 48.5,-2.5 + - parent: 855 + pos: 51.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38117,8 +38119,8 @@ entities: - uid: 3143 type: ApcExtensionCable components: - - parent: 856 - pos: 49.5,-2.5 + - parent: 855 + pos: 51.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38126,8 +38128,8 @@ entities: - uid: 3144 type: ApcExtensionCable components: - - parent: 856 - pos: 50.5,-2.5 + - parent: 855 + pos: 51.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38135,8 +38137,8 @@ entities: - uid: 3145 type: ApcExtensionCable components: - - parent: 856 - pos: 51.5,-2.5 + - parent: 855 + pos: 41.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38144,8 +38146,8 @@ entities: - uid: 3146 type: ApcExtensionCable components: - - parent: 856 - pos: 51.5,-3.5 + - parent: 855 + pos: 41.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38153,8 +38155,8 @@ entities: - uid: 3147 type: ApcExtensionCable components: - - parent: 856 - pos: 51.5,-4.5 + - parent: 855 + pos: 41.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38162,8 +38164,8 @@ entities: - uid: 3148 type: ApcExtensionCable components: - - parent: 856 - pos: 41.5,10.5 + - parent: 855 + pos: 41.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38171,8 +38173,8 @@ entities: - uid: 3149 type: ApcExtensionCable components: - - parent: 856 - pos: 41.5,11.5 + - parent: 855 + pos: 28.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38180,8 +38182,8 @@ entities: - uid: 3150 type: ApcExtensionCable components: - - parent: 856 - pos: 41.5,12.5 + - parent: 855 + pos: 28.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38189,8 +38191,8 @@ entities: - uid: 3151 type: ApcExtensionCable components: - - parent: 856 - pos: 41.5,13.5 + - parent: 855 + pos: 28.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38198,8 +38200,8 @@ entities: - uid: 3152 type: ApcExtensionCable components: - - parent: 856 - pos: 28.5,14.5 + - parent: 855 + pos: 28.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38207,8 +38209,8 @@ entities: - uid: 3153 type: ApcExtensionCable components: - - parent: 856 - pos: 28.5,13.5 + - parent: 855 + pos: 28.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38216,8 +38218,8 @@ entities: - uid: 3154 type: ApcExtensionCable components: - - parent: 856 - pos: 28.5,12.5 + - parent: 855 + pos: 29.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38225,8 +38227,8 @@ entities: - uid: 3155 type: ApcExtensionCable components: - - parent: 856 - pos: 28.5,11.5 + - parent: 855 + pos: 28.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38234,8 +38236,8 @@ entities: - uid: 3156 type: ApcExtensionCable components: - - parent: 856 - pos: 28.5,10.5 + - parent: 855 + pos: 27.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38243,8 +38245,8 @@ entities: - uid: 3157 type: ApcExtensionCable components: - - parent: 856 - pos: 29.5,10.5 + - parent: 855 + pos: 26.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38252,8 +38254,8 @@ entities: - uid: 3158 type: ApcExtensionCable components: - - parent: 856 - pos: 28.5,9.5 + - parent: 855 + pos: 25.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38261,8 +38263,8 @@ entities: - uid: 3159 type: ApcExtensionCable components: - - parent: 856 - pos: 27.5,9.5 + - parent: 855 + pos: 26.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38270,8 +38272,8 @@ entities: - uid: 3160 type: ApcExtensionCable components: - - parent: 856 - pos: 26.5,9.5 + - parent: 855 + pos: 26.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38279,8 +38281,8 @@ entities: - uid: 3161 type: ApcExtensionCable components: - - parent: 856 - pos: 25.5,9.5 + - parent: 855 + pos: 27.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38288,8 +38290,8 @@ entities: - uid: 3162 type: ApcExtensionCable components: - - parent: 856 - pos: 26.5,10.5 + - parent: 855 + pos: 27.5,7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38297,8 +38299,8 @@ entities: - uid: 3163 type: ApcExtensionCable components: - - parent: 856 - pos: 26.5,11.5 + - parent: 855 + pos: 30.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38306,8 +38308,8 @@ entities: - uid: 3164 type: ApcExtensionCable components: - - parent: 856 - pos: 27.5,8.5 + - parent: 855 + pos: 31.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38315,8 +38317,8 @@ entities: - uid: 3165 type: ApcExtensionCable components: - - parent: 856 - pos: 27.5,7.5 + - parent: 855 + pos: 32.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38324,8 +38326,8 @@ entities: - uid: 3166 type: ApcExtensionCable components: - - parent: 856 - pos: 30.5,10.5 + - parent: 855 + pos: 33.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38333,8 +38335,8 @@ entities: - uid: 3167 type: ApcExtensionCable components: - - parent: 856 - pos: 31.5,10.5 + - parent: 855 + pos: 34.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38342,8 +38344,8 @@ entities: - uid: 3168 type: ApcExtensionCable components: - - parent: 856 - pos: 32.5,10.5 + - parent: 855 + pos: 35.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38351,8 +38353,8 @@ entities: - uid: 3169 type: ApcExtensionCable components: - - parent: 856 - pos: 33.5,10.5 + - parent: 855 + pos: 36.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38360,8 +38362,8 @@ entities: - uid: 3170 type: ApcExtensionCable components: - - parent: 856 - pos: 34.5,10.5 + - parent: 855 + pos: 30.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38369,8 +38371,8 @@ entities: - uid: 3171 type: ApcExtensionCable components: - - parent: 856 - pos: 35.5,10.5 + - parent: 855 + pos: 33.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38378,8 +38380,8 @@ entities: - uid: 3172 type: ApcExtensionCable components: - - parent: 856 - pos: 36.5,10.5 + - parent: 855 + pos: 35.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38387,8 +38389,8 @@ entities: - uid: 3173 type: ApcExtensionCable components: - - parent: 856 - pos: 30.5,9.5 + - parent: 855 + pos: 35.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38396,8 +38398,8 @@ entities: - uid: 3174 type: ApcExtensionCable components: - - parent: 856 - pos: 33.5,9.5 + - parent: 855 + pos: 35.5,7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38405,8 +38407,8 @@ entities: - uid: 3175 type: ApcExtensionCable components: - - parent: 856 - pos: 35.5,9.5 + - parent: 855 + pos: 36.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38414,8 +38416,8 @@ entities: - uid: 3176 type: ApcExtensionCable components: - - parent: 856 - pos: 35.5,8.5 + - parent: 855 + pos: 36.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38423,8 +38425,8 @@ entities: - uid: 3177 type: ApcExtensionCable components: - - parent: 856 - pos: 35.5,7.5 + - parent: 855 + pos: 30.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38432,8 +38434,8 @@ entities: - uid: 3178 type: ApcExtensionCable components: - - parent: 856 - pos: 36.5,11.5 + - parent: 855 + pos: 30.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38441,8 +38443,8 @@ entities: - uid: 3179 type: ApcExtensionCable components: - - parent: 856 - pos: 36.5,12.5 + - parent: 855 + pos: 24.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38450,8 +38452,8 @@ entities: - uid: 3180 type: ApcExtensionCable components: - - parent: 856 - pos: 30.5,11.5 + - parent: 855 + pos: 24.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38459,8 +38461,8 @@ entities: - uid: 3181 type: ApcExtensionCable components: - - parent: 856 - pos: 30.5,12.5 + - parent: 855 + pos: 23.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38468,8 +38470,8 @@ entities: - uid: 3182 type: ApcExtensionCable components: - - parent: 856 - pos: 24.5,14.5 + - parent: 855 + pos: 22.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38477,8 +38479,8 @@ entities: - uid: 3183 type: ApcExtensionCable components: - - parent: 856 - pos: 24.5,13.5 + - parent: 855 + pos: 22.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38486,8 +38488,8 @@ entities: - uid: 3184 type: ApcExtensionCable components: - - parent: 856 - pos: 23.5,13.5 + - parent: 855 + pos: 22.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38495,8 +38497,8 @@ entities: - uid: 3185 type: ApcExtensionCable components: - - parent: 856 - pos: 22.5,13.5 + - parent: 855 + pos: 22.5,15.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38504,8 +38506,8 @@ entities: - uid: 3186 type: ApcExtensionCable components: - - parent: 856 - pos: 22.5,14.5 + - parent: 855 + pos: 21.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38513,8 +38515,8 @@ entities: - uid: 3187 type: ApcExtensionCable components: - - parent: 856 - pos: 22.5,14.5 + - parent: 855 + pos: 20.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38522,8 +38524,8 @@ entities: - uid: 3188 type: ApcExtensionCable components: - - parent: 856 - pos: 22.5,15.5 + - parent: 855 + pos: 20.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38531,8 +38533,8 @@ entities: - uid: 3189 type: ApcExtensionCable components: - - parent: 856 - pos: 21.5,13.5 + - parent: 855 + pos: 20.5,15.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38540,8 +38542,8 @@ entities: - uid: 3190 type: ApcExtensionCable components: - - parent: 856 - pos: 20.5,13.5 + - parent: 855 + pos: 19.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38549,8 +38551,8 @@ entities: - uid: 3191 type: ApcExtensionCable components: - - parent: 856 - pos: 20.5,14.5 + - parent: 855 + pos: 18.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38558,8 +38560,8 @@ entities: - uid: 3192 type: ApcExtensionCable components: - - parent: 856 - pos: 20.5,15.5 + - parent: 855 + pos: 21.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38567,8 +38569,8 @@ entities: - uid: 3193 type: ApcExtensionCable components: - - parent: 856 - pos: 19.5,13.5 + - parent: 855 + pos: 21.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38576,8 +38578,8 @@ entities: - uid: 3194 type: ApcExtensionCable components: - - parent: 856 - pos: 18.5,13.5 + - parent: 855 + pos: 21.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38585,8 +38587,8 @@ entities: - uid: 3195 type: ApcExtensionCable components: - - parent: 856 - pos: 21.5,12.5 + - parent: 855 + pos: 21.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38594,8 +38596,8 @@ entities: - uid: 3196 type: ApcExtensionCable components: - - parent: 856 - pos: 21.5,11.5 + - parent: 855 + pos: 21.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38603,8 +38605,8 @@ entities: - uid: 3197 type: ApcExtensionCable components: - - parent: 856 - pos: 21.5,10.5 + - parent: 855 + pos: 22.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38612,8 +38614,8 @@ entities: - uid: 3198 type: ApcExtensionCable components: - - parent: 856 - pos: 21.5,9.5 + - parent: 855 + pos: 23.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38621,8 +38623,8 @@ entities: - uid: 3199 type: ApcExtensionCable components: - - parent: 856 - pos: 21.5,8.5 + - parent: 855 + pos: 20.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38630,8 +38632,8 @@ entities: - uid: 3200 type: ApcExtensionCable components: - - parent: 856 - pos: 22.5,8.5 + - parent: 855 + pos: 19.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38639,8 +38641,8 @@ entities: - uid: 3201 type: ApcExtensionCable components: - - parent: 856 - pos: 23.5,8.5 + - parent: 855 + pos: 18.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38648,8 +38650,8 @@ entities: - uid: 3202 type: ApcExtensionCable components: - - parent: 856 - pos: 20.5,8.5 + - parent: 855 + pos: 17.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38657,8 +38659,8 @@ entities: - uid: 3203 type: ApcExtensionCable components: - - parent: 856 - pos: 19.5,8.5 + - parent: 855 + pos: 18.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38666,8 +38668,8 @@ entities: - uid: 3204 type: ApcExtensionCable components: - - parent: 856 - pos: 18.5,8.5 + - parent: 855 + pos: 18.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38675,8 +38677,8 @@ entities: - uid: 3205 type: ApcExtensionCable components: - - parent: 856 - pos: 17.5,8.5 + - parent: 855 + pos: 12.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38684,8 +38686,8 @@ entities: - uid: 3206 type: ApcExtensionCable components: - - parent: 856 - pos: 18.5,12.5 + - parent: 855 + pos: 12.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38693,8 +38695,8 @@ entities: - uid: 3207 type: ApcExtensionCable components: - - parent: 856 - pos: 18.5,11.5 + - parent: 855 + pos: 12.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38702,8 +38704,8 @@ entities: - uid: 3208 type: ApcExtensionCable components: - - parent: 856 - pos: 12.5,13.5 + - parent: 855 + pos: 12.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38711,8 +38713,8 @@ entities: - uid: 3209 type: ApcExtensionCable components: - - parent: 856 - pos: 12.5,12.5 + - parent: 855 + pos: 13.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38720,8 +38722,8 @@ entities: - uid: 3210 type: ApcExtensionCable components: - - parent: 856 - pos: 12.5,11.5 + - parent: 855 + pos: 14.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38729,8 +38731,8 @@ entities: - uid: 3211 type: ApcExtensionCable components: - - parent: 856 - pos: 12.5,10.5 + - parent: 855 + pos: 15.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38738,8 +38740,8 @@ entities: - uid: 3212 type: ApcExtensionCable components: - - parent: 856 - pos: 13.5,10.5 + - parent: 855 + pos: 16.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38747,8 +38749,8 @@ entities: - uid: 3213 type: ApcExtensionCable components: - - parent: 856 - pos: 14.5,10.5 + - parent: 855 + pos: 15.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38756,8 +38758,8 @@ entities: - uid: 3214 type: ApcExtensionCable components: - - parent: 856 - pos: 15.5,10.5 + - parent: 855 + pos: 13.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38765,8 +38767,8 @@ entities: - uid: 3215 type: ApcExtensionCable components: - - parent: 856 - pos: 16.5,10.5 + - parent: 855 + pos: 11.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38774,8 +38776,8 @@ entities: - uid: 3216 type: ApcExtensionCable components: - - parent: 856 - pos: 15.5,11.5 + - parent: 855 + pos: 10.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38783,8 +38785,8 @@ entities: - uid: 3217 type: ApcExtensionCable components: - - parent: 856 - pos: 13.5,9.5 + - parent: 855 + pos: 9.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38792,8 +38794,8 @@ entities: - uid: 3218 type: ApcExtensionCable components: - - parent: 856 - pos: 11.5,10.5 + - parent: 855 + pos: 8.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38801,8 +38803,8 @@ entities: - uid: 3219 type: ApcExtensionCable components: - - parent: 856 - pos: 10.5,10.5 + - parent: 855 + pos: 7.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38810,8 +38812,8 @@ entities: - uid: 3220 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,10.5 + - parent: 855 + pos: 6.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38819,8 +38821,8 @@ entities: - uid: 3221 type: ApcExtensionCable components: - - parent: 856 - pos: 8.5,10.5 + - parent: 855 + pos: 8.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38828,8 +38830,8 @@ entities: - uid: 3222 type: ApcExtensionCable components: - - parent: 856 - pos: 7.5,10.5 + - parent: 855 + pos: 8.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38837,8 +38839,8 @@ entities: - uid: 3223 type: ApcExtensionCable components: - - parent: 856 - pos: 6.5,10.5 + - parent: 855 + pos: 8.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38846,8 +38848,8 @@ entities: - uid: 3224 type: ApcExtensionCable components: - - parent: 856 - pos: 8.5,11.5 + - parent: 855 + pos: 8.5,7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38855,8 +38857,8 @@ entities: - uid: 3225 type: ApcExtensionCable components: - - parent: 856 - pos: 8.5,9.5 + - parent: 855 + pos: 8.5,6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38864,8 +38866,8 @@ entities: - uid: 3226 type: ApcExtensionCable components: - - parent: 856 - pos: 8.5,8.5 + - parent: 855 + pos: 12.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38873,8 +38875,8 @@ entities: - uid: 3227 type: ApcExtensionCable components: - - parent: 856 - pos: 8.5,7.5 + - parent: 855 + pos: 12.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38882,8 +38884,8 @@ entities: - uid: 3228 type: ApcExtensionCable components: - - parent: 856 - pos: 8.5,6.5 + - parent: 855 + pos: 11.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38891,8 +38893,8 @@ entities: - uid: 3229 type: ApcExtensionCable components: - - parent: 856 - pos: 12.5,13.5 + - parent: 855 + pos: 10.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38900,8 +38902,8 @@ entities: - uid: 3230 type: ApcExtensionCable components: - - parent: 856 - pos: 12.5,14.5 + - parent: 855 + pos: 9.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38909,8 +38911,8 @@ entities: - uid: 3231 type: ApcExtensionCable components: - - parent: 856 - pos: 11.5,14.5 + - parent: 855 + pos: 8.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38918,8 +38920,8 @@ entities: - uid: 3232 type: ApcExtensionCable components: - - parent: 856 - pos: 10.5,14.5 + - parent: 855 + pos: 7.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38927,8 +38929,8 @@ entities: - uid: 3233 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,14.5 + - parent: 855 + pos: 6.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38936,8 +38938,8 @@ entities: - uid: 3234 type: ApcExtensionCable components: - - parent: 856 - pos: 8.5,14.5 + - parent: 855 + pos: 12.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38945,8 +38947,8 @@ entities: - uid: 3235 type: ApcExtensionCable components: - - parent: 856 - pos: 7.5,14.5 + - parent: 855 + pos: 13.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38954,8 +38956,8 @@ entities: - uid: 3236 type: ApcExtensionCable components: - - parent: 856 - pos: 6.5,14.5 + - parent: 855 + pos: 14.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38963,8 +38965,8 @@ entities: - uid: 3237 type: ApcExtensionCable components: - - parent: 856 - pos: 12.5,14.5 + - parent: 855 + pos: 15.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38972,8 +38974,8 @@ entities: - uid: 3238 type: ApcExtensionCable components: - - parent: 856 - pos: 13.5,14.5 + - parent: 855 + pos: 15.5,15.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38981,8 +38983,8 @@ entities: - uid: 3239 type: ApcExtensionCable components: - - parent: 856 - pos: 14.5,14.5 + - parent: 855 + pos: 13.5,16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38990,8 +38992,8 @@ entities: - uid: 3240 type: ApcExtensionCable components: - - parent: 856 - pos: 15.5,14.5 + - parent: 855 + pos: 13.5,15.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -38999,8 +39001,8 @@ entities: - uid: 3241 type: ApcExtensionCable components: - - parent: 856 - pos: 15.5,15.5 + - parent: 855 + pos: 9.5,22.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39008,8 +39010,8 @@ entities: - uid: 3242 type: ApcExtensionCable components: - - parent: 856 - pos: 13.5,16.5 + - parent: 855 + pos: 9.5,21.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39017,8 +39019,8 @@ entities: - uid: 3243 type: ApcExtensionCable components: - - parent: 856 - pos: 13.5,15.5 + - parent: 855 + pos: 9.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39026,8 +39028,8 @@ entities: - uid: 3244 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,22.5 + - parent: 855 + pos: 9.5,19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39035,8 +39037,8 @@ entities: - uid: 3245 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,21.5 + - parent: 855 + pos: 9.5,18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39044,8 +39046,8 @@ entities: - uid: 3246 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,20.5 + - parent: 855 + pos: 9.5,17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39053,8 +39055,8 @@ entities: - uid: 3247 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,19.5 + - parent: 855 + pos: 9.5,16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39062,8 +39064,8 @@ entities: - uid: 3248 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,18.5 + - parent: 855 + pos: 10.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39071,8 +39073,8 @@ entities: - uid: 3249 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,17.5 + - parent: 855 + pos: 8.5,17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39080,8 +39082,8 @@ entities: - uid: 3250 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,16.5 + - parent: 855 + pos: 8.5,17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39089,8 +39091,8 @@ entities: - uid: 3251 type: ApcExtensionCable components: - - parent: 856 - pos: 10.5,20.5 + - parent: 855 + pos: 7.5,17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39098,8 +39100,8 @@ entities: - uid: 3252 type: ApcExtensionCable components: - - parent: 856 - pos: 8.5,17.5 + - parent: 855 + pos: 8.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39107,8 +39109,8 @@ entities: - uid: 3253 type: ApcExtensionCable components: - - parent: 856 - pos: 8.5,17.5 + - parent: 855 + pos: 6.5,17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39116,8 +39118,8 @@ entities: - uid: 3254 type: ApcExtensionCable components: - - parent: 856 - pos: 7.5,17.5 + - parent: 855 + pos: 5.5,17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39125,8 +39127,8 @@ entities: - uid: 3255 type: ApcExtensionCable components: - - parent: 856 - pos: 8.5,20.5 + - parent: 855 + pos: 5.5,16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39134,8 +39136,8 @@ entities: - uid: 3256 type: ApcExtensionCable components: - - parent: 856 - pos: 6.5,17.5 + - parent: 855 + pos: 4.5,17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39143,8 +39145,8 @@ entities: - uid: 3257 type: ApcExtensionCable components: - - parent: 856 - pos: 5.5,17.5 + - parent: 855 + pos: 3.5,17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39152,8 +39154,8 @@ entities: - uid: 3258 type: ApcExtensionCable components: - - parent: 856 - pos: 5.5,16.5 + - parent: 855 + pos: 3.5,18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39161,8 +39163,8 @@ entities: - uid: 3259 type: ApcExtensionCable components: - - parent: 856 - pos: 4.5,17.5 + - parent: 855 + pos: 3.5,19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39170,8 +39172,8 @@ entities: - uid: 3260 type: ApcExtensionCable components: - - parent: 856 - pos: 3.5,17.5 + - parent: 855 + pos: 3.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39179,8 +39181,8 @@ entities: - uid: 3261 type: ApcExtensionCable components: - - parent: 856 - pos: 3.5,18.5 + - parent: 855 + pos: 3.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39188,8 +39190,8 @@ entities: - uid: 3262 type: ApcExtensionCable components: - - parent: 856 - pos: 3.5,19.5 + - parent: 855 + pos: 3.5,21.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39197,8 +39199,8 @@ entities: - uid: 3263 type: ApcExtensionCable components: - - parent: 856 - pos: 3.5,20.5 + - parent: 855 + pos: 3.5,22.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39206,8 +39208,8 @@ entities: - uid: 3264 type: ApcExtensionCable components: - - parent: 856 - pos: 3.5,20.5 + - parent: 855 + pos: 2.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39215,8 +39217,8 @@ entities: - uid: 3265 type: ApcExtensionCable components: - - parent: 856 - pos: 3.5,21.5 + - parent: 855 + pos: 1.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39224,8 +39226,8 @@ entities: - uid: 3266 type: ApcExtensionCable components: - - parent: 856 - pos: 3.5,22.5 + - parent: 855 + pos: 9.5,27.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39233,8 +39235,8 @@ entities: - uid: 3267 type: ApcExtensionCable components: - - parent: 856 - pos: 2.5,20.5 + - parent: 855 + pos: 9.5,26.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39242,8 +39244,8 @@ entities: - uid: 3268 type: ApcExtensionCable components: - - parent: 856 - pos: 1.5,20.5 + - parent: 855 + pos: 9.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39251,8 +39253,8 @@ entities: - uid: 3269 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,27.5 + - parent: 855 + pos: 9.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39260,8 +39262,8 @@ entities: - uid: 3270 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,26.5 + - parent: 855 + pos: 8.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39269,8 +39271,8 @@ entities: - uid: 3271 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,25.5 + - parent: 855 + pos: 7.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39278,8 +39280,8 @@ entities: - uid: 3272 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,24.5 + - parent: 855 + pos: 6.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39287,8 +39289,8 @@ entities: - uid: 3273 type: ApcExtensionCable components: - - parent: 856 - pos: 8.5,24.5 + - parent: 855 + pos: 9.5,28.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39296,8 +39298,8 @@ entities: - uid: 3274 type: ApcExtensionCable components: - - parent: 856 - pos: 7.5,24.5 + - parent: 855 + pos: 9.5,29.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39305,8 +39307,8 @@ entities: - uid: 3275 type: ApcExtensionCable components: - - parent: 856 - pos: 6.5,24.5 + - parent: 855 + pos: 9.5,30.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39314,8 +39316,8 @@ entities: - uid: 3276 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,28.5 + - parent: 855 + pos: 8.5,30.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39323,8 +39325,8 @@ entities: - uid: 3277 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,29.5 + - parent: 855 + pos: 7.5,30.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39332,8 +39334,8 @@ entities: - uid: 3278 type: ApcExtensionCable components: - - parent: 856 - pos: 9.5,30.5 + - parent: 855 + pos: 6.5,30.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39341,8 +39343,8 @@ entities: - uid: 3279 type: ApcExtensionCable components: - - parent: 856 - pos: 8.5,30.5 + - parent: 855 + pos: 6.5,31.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39350,8 +39352,8 @@ entities: - uid: 3280 type: ApcExtensionCable components: - - parent: 856 - pos: 7.5,30.5 + - parent: 855 + pos: -2.5,27.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39359,8 +39361,8 @@ entities: - uid: 3281 type: ApcExtensionCable components: - - parent: 856 - pos: 6.5,30.5 + - parent: 855 + pos: -2.5,28.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39368,8 +39370,8 @@ entities: - uid: 3282 type: ApcExtensionCable components: - - parent: 856 - pos: 6.5,31.5 + - parent: 855 + pos: -2.5,29.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39377,8 +39379,8 @@ entities: - uid: 3283 type: ApcExtensionCable components: - - parent: 856 - pos: -2.5,27.5 + - parent: 855 + pos: -2.5,30.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39386,8 +39388,8 @@ entities: - uid: 3284 type: ApcExtensionCable components: - - parent: 856 - pos: -2.5,28.5 + - parent: 855 + pos: -1.5,30.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39395,8 +39397,8 @@ entities: - uid: 3285 type: ApcExtensionCable components: - - parent: 856 - pos: -2.5,29.5 + - parent: 855 + pos: -0.5,30.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39404,8 +39406,8 @@ entities: - uid: 3286 type: ApcExtensionCable components: - - parent: 856 - pos: -2.5,30.5 + - parent: 855 + pos: 0.5,30.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39413,8 +39415,8 @@ entities: - uid: 3287 type: ApcExtensionCable components: - - parent: 856 - pos: -1.5,30.5 + - parent: 855 + pos: 1.5,30.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39422,8 +39424,8 @@ entities: - uid: 3288 type: ApcExtensionCable components: - - parent: 856 - pos: -0.5,30.5 + - parent: 855 + pos: 2.5,30.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39431,8 +39433,8 @@ entities: - uid: 3289 type: ApcExtensionCable components: - - parent: 856 - pos: 0.5,30.5 + - parent: 855 + pos: 3.5,30.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39440,8 +39442,8 @@ entities: - uid: 3290 type: ApcExtensionCable components: - - parent: 856 - pos: 1.5,30.5 + - parent: 855 + pos: 0.5,31.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39449,8 +39451,8 @@ entities: - uid: 3291 type: ApcExtensionCable components: - - parent: 856 - pos: 2.5,30.5 + - parent: 855 + pos: 3.5,31.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39458,8 +39460,8 @@ entities: - uid: 3292 type: ApcExtensionCable components: - - parent: 856 - pos: 3.5,30.5 + - parent: 855 + pos: -2.5,26.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39467,8 +39469,8 @@ entities: - uid: 3293 type: ApcExtensionCable components: - - parent: 856 - pos: 0.5,31.5 + - parent: 855 + pos: -2.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39476,8 +39478,8 @@ entities: - uid: 3294 type: ApcExtensionCable components: - - parent: 856 - pos: 3.5,31.5 + - parent: 855 + pos: -1.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39485,8 +39487,8 @@ entities: - uid: 3295 type: ApcExtensionCable components: - - parent: 856 - pos: -2.5,26.5 + - parent: 855 + pos: -0.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39494,8 +39496,8 @@ entities: - uid: 3296 type: ApcExtensionCable components: - - parent: 856 - pos: -2.5,25.5 + - parent: 855 + pos: 0.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39503,8 +39505,8 @@ entities: - uid: 3297 type: ApcExtensionCable components: - - parent: 856 - pos: -1.5,25.5 + - parent: 855 + pos: 0.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39512,8 +39514,8 @@ entities: - uid: 3298 type: ApcExtensionCable components: - - parent: 856 - pos: -0.5,25.5 + - parent: 855 + pos: -2.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39521,8 +39523,8 @@ entities: - uid: 3299 type: ApcExtensionCable components: - - parent: 856 - pos: 0.5,25.5 + - parent: 855 + pos: -2.5,23.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39530,58 +39532,58 @@ entities: - uid: 3300 type: ApcExtensionCable components: - - parent: 856 - pos: 0.5,24.5 - rot: -1.5707963267948966 rad - type: Transform - - deadThreshold: 100 - type: Destructible -- uid: 3301 - type: ApcExtensionCable - components: - - parent: 856 - pos: -2.5,24.5 - rot: -1.5707963267948966 rad - type: Transform - - deadThreshold: 100 - type: Destructible -- uid: 3302 - type: ApcExtensionCable - components: - - parent: 856 - pos: -2.5,23.5 - rot: -1.5707963267948966 rad - type: Transform - - deadThreshold: 100 - type: Destructible -- uid: 3303 - type: ApcExtensionCable - components: - - parent: 856 + - parent: 855 pos: -1.5,23.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 3304 +- uid: 3301 type: SalternSmes components: - - parent: 856 + - parent: 855 pos: 42.5,5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 3305 +- uid: 3302 type: SalternSmes components: - - parent: 856 + - parent: 855 pos: 40.5,5.5 rot: -1.5707963267948966 rad type: Transform +- uid: 3303 + type: HVWire + components: + - parent: 855 + pos: 41.5,6.5 + rot: -1.5707963267948966 rad + type: Transform + - deadThreshold: 100 + type: Destructible +- uid: 3304 + type: HVWire + components: + - parent: 855 + pos: 41.5,5.5 + rot: -1.5707963267948966 rad + type: Transform + - deadThreshold: 100 + type: Destructible +- uid: 3305 + type: HVWire + components: + - parent: 855 + pos: 42.5,4.5 + rot: -1.5707963267948966 rad + type: Transform + - deadThreshold: 100 + type: Destructible - uid: 3306 type: HVWire components: - - parent: 856 - pos: 41.5,6.5 + - parent: 855 + pos: 42.5,3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39589,8 +39591,8 @@ entities: - uid: 3307 type: HVWire components: - - parent: 856 - pos: 41.5,5.5 + - parent: 855 + pos: 42.5,2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39598,8 +39600,8 @@ entities: - uid: 3308 type: HVWire components: - - parent: 856 - pos: 42.5,4.5 + - parent: 855 + pos: 42.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39607,8 +39609,8 @@ entities: - uid: 3309 type: HVWire components: - - parent: 856 - pos: 42.5,3.5 + - parent: 855 + pos: 42.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39616,8 +39618,8 @@ entities: - uid: 3310 type: HVWire components: - - parent: 856 - pos: 42.5,2.5 + - parent: 855 + pos: 42.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39625,8 +39627,8 @@ entities: - uid: 3311 type: HVWire components: - - parent: 856 - pos: 42.5,1.5 + - parent: 855 + pos: 42.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39634,8 +39636,8 @@ entities: - uid: 3312 type: HVWire components: - - parent: 856 - pos: 42.5,0.5 + - parent: 855 + pos: 42.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39643,8 +39645,8 @@ entities: - uid: 3313 type: HVWire components: - - parent: 856 - pos: 42.5,-0.5 + - parent: 855 + pos: 42.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39652,8 +39654,8 @@ entities: - uid: 3314 type: HVWire components: - - parent: 856 - pos: 42.5,-1.5 + - parent: 855 + pos: 42.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39661,8 +39663,8 @@ entities: - uid: 3315 type: HVWire components: - - parent: 856 - pos: 42.5,-2.5 + - parent: 855 + pos: 42.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39670,8 +39672,8 @@ entities: - uid: 3316 type: HVWire components: - - parent: 856 - pos: 42.5,-3.5 + - parent: 855 + pos: 41.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39679,8 +39681,8 @@ entities: - uid: 3317 type: HVWire components: - - parent: 856 - pos: 42.5,-4.5 + - parent: 855 + pos: 40.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39688,8 +39690,8 @@ entities: - uid: 3318 type: HVWire components: - - parent: 856 - pos: 42.5,-4.5 + - parent: 855 + pos: 39.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39697,8 +39699,8 @@ entities: - uid: 3319 type: HVWire components: - - parent: 856 - pos: 41.5,-4.5 + - parent: 855 + pos: 38.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39706,8 +39708,8 @@ entities: - uid: 3320 type: HVWire components: - - parent: 856 - pos: 40.5,-4.5 + - parent: 855 + pos: 38.5,-5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39715,8 +39717,8 @@ entities: - uid: 3321 type: HVWire components: - - parent: 856 - pos: 39.5,-4.5 + - parent: 855 + pos: 38.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39724,8 +39726,8 @@ entities: - uid: 3322 type: HVWire components: - - parent: 856 - pos: 38.5,-4.5 + - parent: 855 + pos: 38.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39733,8 +39735,8 @@ entities: - uid: 3323 type: HVWire components: - - parent: 856 - pos: 38.5,-5.5 + - parent: 855 + pos: 37.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39742,8 +39744,8 @@ entities: - uid: 3324 type: HVWire components: - - parent: 856 - pos: 38.5,-6.5 + - parent: 855 + pos: 36.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39751,8 +39753,8 @@ entities: - uid: 3325 type: HVWire components: - - parent: 856 - pos: 38.5,-7.5 + - parent: 855 + pos: 35.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39760,8 +39762,8 @@ entities: - uid: 3326 type: HVWire components: - - parent: 856 - pos: 37.5,-7.5 + - parent: 855 + pos: 34.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39769,8 +39771,8 @@ entities: - uid: 3327 type: HVWire components: - - parent: 856 - pos: 36.5,-7.5 + - parent: 855 + pos: 33.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39778,8 +39780,8 @@ entities: - uid: 3328 type: HVWire components: - - parent: 856 - pos: 35.5,-7.5 + - parent: 855 + pos: 32.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39787,8 +39789,8 @@ entities: - uid: 3329 type: HVWire components: - - parent: 856 - pos: 34.5,-7.5 + - parent: 855 + pos: 31.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39796,8 +39798,8 @@ entities: - uid: 3330 type: HVWire components: - - parent: 856 - pos: 33.5,-7.5 + - parent: 855 + pos: 30.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39805,8 +39807,8 @@ entities: - uid: 3331 type: HVWire components: - - parent: 856 - pos: 32.5,-7.5 + - parent: 855 + pos: 29.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39814,8 +39816,8 @@ entities: - uid: 3332 type: HVWire components: - - parent: 856 - pos: 31.5,-7.5 + - parent: 855 + pos: 28.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39823,8 +39825,8 @@ entities: - uid: 3333 type: HVWire components: - - parent: 856 - pos: 30.5,-7.5 + - parent: 855 + pos: 27.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39832,8 +39834,8 @@ entities: - uid: 3334 type: HVWire components: - - parent: 856 - pos: 29.5,-7.5 + - parent: 855 + pos: 26.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39841,8 +39843,8 @@ entities: - uid: 3335 type: HVWire components: - - parent: 856 - pos: 28.5,-7.5 + - parent: 855 + pos: 26.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39850,8 +39852,8 @@ entities: - uid: 3336 type: HVWire components: - - parent: 856 - pos: 27.5,-7.5 + - parent: 855 + pos: 26.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39859,8 +39861,8 @@ entities: - uid: 3337 type: HVWire components: - - parent: 856 - pos: 26.5,-7.5 + - parent: 855 + pos: 26.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39868,8 +39870,8 @@ entities: - uid: 3338 type: HVWire components: - - parent: 856 - pos: 26.5,-8.5 + - parent: 855 + pos: 26.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39877,8 +39879,8 @@ entities: - uid: 3339 type: HVWire components: - - parent: 856 - pos: 26.5,-9.5 + - parent: 855 + pos: 26.5,-12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39886,8 +39888,8 @@ entities: - uid: 3340 type: HVWire components: - - parent: 856 - pos: 26.5,-10.5 + - parent: 855 + pos: 26.5,-13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39895,8 +39897,8 @@ entities: - uid: 3341 type: HVWire components: - - parent: 856 - pos: 26.5,-11.5 + - parent: 855 + pos: 26.5,-14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39904,8 +39906,8 @@ entities: - uid: 3342 type: HVWire components: - - parent: 856 - pos: 26.5,-12.5 + - parent: 855 + pos: 26.5,-15.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39913,8 +39915,8 @@ entities: - uid: 3343 type: HVWire components: - - parent: 856 - pos: 26.5,-13.5 + - parent: 855 + pos: 26.5,-16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39922,8 +39924,8 @@ entities: - uid: 3344 type: HVWire components: - - parent: 856 - pos: 26.5,-14.5 + - parent: 855 + pos: 26.5,-17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39931,8 +39933,8 @@ entities: - uid: 3345 type: HVWire components: - - parent: 856 - pos: 26.5,-15.5 + - parent: 855 + pos: 25.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39940,8 +39942,8 @@ entities: - uid: 3346 type: HVWire components: - - parent: 856 - pos: 26.5,-16.5 + - parent: 855 + pos: 24.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39949,8 +39951,8 @@ entities: - uid: 3347 type: HVWire components: - - parent: 856 - pos: 26.5,-17.5 + - parent: 855 + pos: 23.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39958,8 +39960,8 @@ entities: - uid: 3348 type: HVWire components: - - parent: 856 - pos: 25.5,-9.5 + - parent: 855 + pos: 22.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39967,8 +39969,8 @@ entities: - uid: 3349 type: HVWire components: - - parent: 856 - pos: 24.5,-9.5 + - parent: 855 + pos: 21.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39976,8 +39978,8 @@ entities: - uid: 3350 type: HVWire components: - - parent: 856 - pos: 23.5,-9.5 + - parent: 855 + pos: 25.5,-17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39985,8 +39987,8 @@ entities: - uid: 3351 type: HVWire components: - - parent: 856 - pos: 22.5,-9.5 + - parent: 855 + pos: 24.5,-17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -39994,8 +39996,8 @@ entities: - uid: 3352 type: HVWire components: - - parent: 856 - pos: 21.5,-9.5 + - parent: 855 + pos: 23.5,-17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40003,8 +40005,8 @@ entities: - uid: 3353 type: HVWire components: - - parent: 856 - pos: 25.5,-17.5 + - parent: 855 + pos: 22.5,-17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40012,8 +40014,8 @@ entities: - uid: 3354 type: HVWire components: - - parent: 856 - pos: 24.5,-17.5 + - parent: 855 + pos: 22.5,-18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40021,8 +40023,8 @@ entities: - uid: 3355 type: HVWire components: - - parent: 856 - pos: 23.5,-17.5 + - parent: 855 + pos: 22.5,-19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40030,8 +40032,8 @@ entities: - uid: 3356 type: HVWire components: - - parent: 856 - pos: 22.5,-17.5 + - parent: 855 + pos: 22.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40039,8 +40041,8 @@ entities: - uid: 3357 type: HVWire components: - - parent: 856 - pos: 22.5,-18.5 + - parent: 855 + pos: 22.5,-21.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40048,8 +40050,8 @@ entities: - uid: 3358 type: HVWire components: - - parent: 856 - pos: 22.5,-19.5 + - parent: 855 + pos: 22.5,-22.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40057,8 +40059,8 @@ entities: - uid: 3359 type: HVWire components: - - parent: 856 - pos: 22.5,-20.5 + - parent: 855 + pos: 22.5,-23.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40066,8 +40068,8 @@ entities: - uid: 3360 type: HVWire components: - - parent: 856 - pos: 22.5,-21.5 + - parent: 855 + pos: 22.5,-24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40075,8 +40077,8 @@ entities: - uid: 3361 type: HVWire components: - - parent: 856 - pos: 22.5,-22.5 + - parent: 855 + pos: 22.5,-25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40084,8 +40086,8 @@ entities: - uid: 3362 type: HVWire components: - - parent: 856 - pos: 22.5,-23.5 + - parent: 855 + pos: 21.5,-25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40093,8 +40095,8 @@ entities: - uid: 3363 type: HVWire components: - - parent: 856 - pos: 22.5,-24.5 + - parent: 855 + pos: 20.5,-25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40102,8 +40104,8 @@ entities: - uid: 3364 type: HVWire components: - - parent: 856 - pos: 22.5,-25.5 + - parent: 855 + pos: 19.5,-25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40111,8 +40113,8 @@ entities: - uid: 3365 type: HVWire components: - - parent: 856 - pos: 21.5,-25.5 + - parent: 855 + pos: 18.5,-25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40120,8 +40122,8 @@ entities: - uid: 3366 type: HVWire components: - - parent: 856 - pos: 20.5,-25.5 + - parent: 855 + pos: 17.5,-25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40129,8 +40131,8 @@ entities: - uid: 3367 type: HVWire components: - - parent: 856 - pos: 19.5,-25.5 + - parent: 855 + pos: 16.5,-25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40138,8 +40140,8 @@ entities: - uid: 3368 type: HVWire components: - - parent: 856 - pos: 18.5,-25.5 + - parent: 855 + pos: 15.5,-25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40147,8 +40149,8 @@ entities: - uid: 3369 type: HVWire components: - - parent: 856 - pos: 17.5,-25.5 + - parent: 855 + pos: 14.5,-25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40156,8 +40158,8 @@ entities: - uid: 3370 type: HVWire components: - - parent: 856 - pos: 16.5,-25.5 + - parent: 855 + pos: 14.5,-24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40165,8 +40167,8 @@ entities: - uid: 3371 type: HVWire components: - - parent: 856 - pos: 15.5,-25.5 + - parent: 855 + pos: 14.5,-23.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40174,8 +40176,8 @@ entities: - uid: 3372 type: HVWire components: - - parent: 856 - pos: 14.5,-25.5 + - parent: 855 + pos: 14.5,-22.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40183,8 +40185,8 @@ entities: - uid: 3373 type: HVWire components: - - parent: 856 - pos: 14.5,-24.5 + - parent: 855 + pos: 14.5,-21.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40192,8 +40194,8 @@ entities: - uid: 3374 type: HVWire components: - - parent: 856 - pos: 14.5,-23.5 + - parent: 855 + pos: 14.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40201,8 +40203,8 @@ entities: - uid: 3375 type: HVWire components: - - parent: 856 - pos: 14.5,-22.5 + - parent: 855 + pos: 13.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40210,8 +40212,8 @@ entities: - uid: 3376 type: HVWire components: - - parent: 856 - pos: 14.5,-21.5 + - parent: 855 + pos: 12.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40219,8 +40221,8 @@ entities: - uid: 3377 type: HVWire components: - - parent: 856 - pos: 14.5,-20.5 + - parent: 855 + pos: 11.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40228,8 +40230,8 @@ entities: - uid: 3378 type: HVWire components: - - parent: 856 - pos: 13.5,-20.5 + - parent: 855 + pos: 10.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40237,8 +40239,8 @@ entities: - uid: 3379 type: HVWire components: - - parent: 856 - pos: 12.5,-20.5 + - parent: 855 + pos: 9.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40246,8 +40248,8 @@ entities: - uid: 3380 type: HVWire components: - - parent: 856 - pos: 11.5,-20.5 + - parent: 855 + pos: 8.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40255,8 +40257,8 @@ entities: - uid: 3381 type: HVWire components: - - parent: 856 - pos: 10.5,-20.5 + - parent: 855 + pos: 7.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40264,8 +40266,8 @@ entities: - uid: 3382 type: HVWire components: - - parent: 856 - pos: 9.5,-20.5 + - parent: 855 + pos: 6.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40273,8 +40275,8 @@ entities: - uid: 3383 type: HVWire components: - - parent: 856 - pos: 8.5,-20.5 + - parent: 855 + pos: 5.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40282,8 +40284,8 @@ entities: - uid: 3384 type: HVWire components: - - parent: 856 - pos: 7.5,-20.5 + - parent: 855 + pos: 4.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40291,8 +40293,8 @@ entities: - uid: 3385 type: HVWire components: - - parent: 856 - pos: 6.5,-20.5 + - parent: 855 + pos: 3.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40300,8 +40302,8 @@ entities: - uid: 3386 type: HVWire components: - - parent: 856 - pos: 5.5,-20.5 + - parent: 855 + pos: 2.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40309,8 +40311,8 @@ entities: - uid: 3387 type: HVWire components: - - parent: 856 - pos: 4.5,-20.5 + - parent: 855 + pos: 2.5,-21.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40318,8 +40320,8 @@ entities: - uid: 3388 type: HVWire components: - - parent: 856 - pos: 3.5,-20.5 + - parent: 855 + pos: 2.5,-22.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40327,8 +40329,8 @@ entities: - uid: 3389 type: HVWire components: - - parent: 856 - pos: 2.5,-20.5 + - parent: 855 + pos: 2.5,-23.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40336,8 +40338,8 @@ entities: - uid: 3390 type: HVWire components: - - parent: 856 - pos: 2.5,-21.5 + - parent: 855 + pos: 1.5,-23.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40345,8 +40347,8 @@ entities: - uid: 3391 type: HVWire components: - - parent: 856 - pos: 2.5,-22.5 + - parent: 855 + pos: -0.5,-23.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40354,8 +40356,8 @@ entities: - uid: 3392 type: HVWire components: - - parent: 856 - pos: 2.5,-23.5 + - parent: 855 + pos: 0.5,-23.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40363,8 +40365,8 @@ entities: - uid: 3393 type: HVWire components: - - parent: 856 - pos: 1.5,-23.5 + - parent: 855 + pos: -0.5,-24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40372,8 +40374,8 @@ entities: - uid: 3394 type: HVWire components: - - parent: 856 - pos: -0.5,-23.5 + - parent: 855 + pos: -0.5,-25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40381,8 +40383,8 @@ entities: - uid: 3395 type: HVWire components: - - parent: 856 - pos: 0.5,-23.5 + - parent: 855 + pos: -0.5,-26.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40390,8 +40392,8 @@ entities: - uid: 3396 type: HVWire components: - - parent: 856 - pos: -0.5,-24.5 + - parent: 855 + pos: -1.5,-26.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40399,8 +40401,8 @@ entities: - uid: 3397 type: HVWire components: - - parent: 856 - pos: -0.5,-25.5 + - parent: 855 + pos: -2.5,-26.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40408,71 +40410,71 @@ entities: - uid: 3398 type: HVWire components: - - parent: 856 - pos: -0.5,-26.5 - rot: -1.5707963267948966 rad - type: Transform - - deadThreshold: 100 - type: Destructible -- uid: 3399 - type: HVWire - components: - - parent: 856 - pos: -1.5,-26.5 - rot: -1.5707963267948966 rad - type: Transform - - deadThreshold: 100 - type: Destructible -- uid: 3400 - type: HVWire - components: - - parent: 856 - pos: -2.5,-26.5 - rot: -1.5707963267948966 rad - type: Transform - - deadThreshold: 100 - type: Destructible -- uid: 3401 - type: HVWire - components: - - parent: 856 + - parent: 855 pos: -3.5,-26.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 3402 +- uid: 3399 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -0.5,-15.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 3403 +- uid: 3400 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -4.5,-26.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 3404 +- uid: 3401 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -1.5,-15.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible +- uid: 3402 + type: HVWire + components: + - parent: 855 + pos: -7.5,-26.5 + rot: -1.5707963267948966 rad + type: Transform + - deadThreshold: 100 + type: Destructible +- uid: 3403 + type: HVWire + components: + - parent: 855 + pos: -8.5,-26.5 + rot: -1.5707963267948966 rad + type: Transform + - deadThreshold: 100 + type: Destructible +- uid: 3404 + type: HVWire + components: + - parent: 855 + pos: -9.5,-26.5 + rot: -1.5707963267948966 rad + type: Transform + - deadThreshold: 100 + type: Destructible - uid: 3405 type: HVWire components: - - parent: 856 - pos: -7.5,-26.5 + - parent: 855 + pos: -10.5,-26.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40480,8 +40482,8 @@ entities: - uid: 3406 type: HVWire components: - - parent: 856 - pos: -8.5,-26.5 + - parent: 855 + pos: -11.5,-26.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40489,8 +40491,8 @@ entities: - uid: 3407 type: HVWire components: - - parent: 856 - pos: -9.5,-26.5 + - parent: 855 + pos: -11.5,-26.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40498,8 +40500,8 @@ entities: - uid: 3408 type: HVWire components: - - parent: 856 - pos: -10.5,-26.5 + - parent: 855 + pos: -11.5,-25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40507,8 +40509,8 @@ entities: - uid: 3409 type: HVWire components: - - parent: 856 - pos: -11.5,-26.5 + - parent: 855 + pos: -11.5,-24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40516,8 +40518,8 @@ entities: - uid: 3410 type: HVWire components: - - parent: 856 - pos: -11.5,-26.5 + - parent: 855 + pos: -11.5,-23.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40525,8 +40527,8 @@ entities: - uid: 3411 type: HVWire components: - - parent: 856 - pos: -11.5,-25.5 + - parent: 855 + pos: -11.5,-22.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40534,8 +40536,8 @@ entities: - uid: 3412 type: HVWire components: - - parent: 856 - pos: -11.5,-24.5 + - parent: 855 + pos: -11.5,-21.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40543,8 +40545,8 @@ entities: - uid: 3413 type: HVWire components: - - parent: 856 - pos: -11.5,-23.5 + - parent: 855 + pos: -11.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40552,8 +40554,8 @@ entities: - uid: 3414 type: HVWire components: - - parent: 856 - pos: -11.5,-22.5 + - parent: 855 + pos: -11.5,-19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40561,8 +40563,8 @@ entities: - uid: 3415 type: HVWire components: - - parent: 856 - pos: -11.5,-21.5 + - parent: 855 + pos: -11.5,-18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40570,8 +40572,8 @@ entities: - uid: 3416 type: HVWire components: - - parent: 856 - pos: -11.5,-20.5 + - parent: 855 + pos: -11.5,-17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40579,8 +40581,8 @@ entities: - uid: 3417 type: HVWire components: - - parent: 856 - pos: -11.5,-19.5 + - parent: 855 + pos: -11.5,-16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40588,8 +40590,8 @@ entities: - uid: 3418 type: HVWire components: - - parent: 856 - pos: -11.5,-18.5 + - parent: 855 + pos: -11.5,-15.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40597,8 +40599,8 @@ entities: - uid: 3419 type: HVWire components: - - parent: 856 - pos: -11.5,-17.5 + - parent: 855 + pos: -11.5,-14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40606,8 +40608,8 @@ entities: - uid: 3420 type: HVWire components: - - parent: 856 - pos: -11.5,-16.5 + - parent: 855 + pos: -10.5,-14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40615,8 +40617,8 @@ entities: - uid: 3421 type: HVWire components: - - parent: 856 - pos: -11.5,-15.5 + - parent: 855 + pos: -9.5,-14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40624,8 +40626,8 @@ entities: - uid: 3422 type: HVWire components: - - parent: 856 - pos: -11.5,-14.5 + - parent: 855 + pos: -9.5,-13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40633,8 +40635,8 @@ entities: - uid: 3423 type: HVWire components: - - parent: 856 - pos: -10.5,-14.5 + - parent: 855 + pos: -9.5,-12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40642,8 +40644,8 @@ entities: - uid: 3424 type: HVWire components: - - parent: 856 - pos: -9.5,-14.5 + - parent: 855 + pos: -9.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40651,8 +40653,8 @@ entities: - uid: 3425 type: HVWire components: - - parent: 856 - pos: -9.5,-13.5 + - parent: 855 + pos: -9.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40660,8 +40662,8 @@ entities: - uid: 3426 type: HVWire components: - - parent: 856 - pos: -9.5,-12.5 + - parent: 855 + pos: -8.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40669,8 +40671,8 @@ entities: - uid: 3427 type: HVWire components: - - parent: 856 - pos: -9.5,-11.5 + - parent: 855 + pos: -7.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40678,8 +40680,8 @@ entities: - uid: 3428 type: HVWire components: - - parent: 856 - pos: -9.5,-10.5 + - parent: 855 + pos: -6.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40687,8 +40689,8 @@ entities: - uid: 3429 type: HVWire components: - - parent: 856 - pos: -8.5,-10.5 + - parent: 855 + pos: -5.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40696,8 +40698,8 @@ entities: - uid: 3430 type: HVWire components: - - parent: 856 - pos: -7.5,-10.5 + - parent: 855 + pos: -4.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40705,8 +40707,8 @@ entities: - uid: 3431 type: HVWire components: - - parent: 856 - pos: -6.5,-10.5 + - parent: 855 + pos: -3.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40714,8 +40716,8 @@ entities: - uid: 3432 type: HVWire components: - - parent: 856 - pos: -5.5,-10.5 + - parent: 855 + pos: -2.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40723,8 +40725,8 @@ entities: - uid: 3433 type: HVWire components: - - parent: 856 - pos: -4.5,-10.5 + - parent: 855 + pos: -1.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40732,8 +40734,8 @@ entities: - uid: 3434 type: HVWire components: - - parent: 856 - pos: -3.5,-10.5 + - parent: 855 + pos: -0.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40741,8 +40743,8 @@ entities: - uid: 3435 type: HVWire components: - - parent: 856 - pos: -2.5,-10.5 + - parent: 855 + pos: 0.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40750,8 +40752,8 @@ entities: - uid: 3436 type: HVWire components: - - parent: 856 - pos: -1.5,-10.5 + - parent: 855 + pos: 0.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40759,8 +40761,8 @@ entities: - uid: 3437 type: HVWire components: - - parent: 856 - pos: -0.5,-10.5 + - parent: 855 + pos: 0.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40768,8 +40770,8 @@ entities: - uid: 3438 type: HVWire components: - - parent: 856 - pos: 0.5,-10.5 + - parent: 855 + pos: 0.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40777,8 +40779,8 @@ entities: - uid: 3439 type: HVWire components: - - parent: 856 - pos: 0.5,-9.5 + - parent: 855 + pos: 0.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40786,8 +40788,8 @@ entities: - uid: 3440 type: HVWire components: - - parent: 856 - pos: 0.5,-8.5 + - parent: 855 + pos: -12.5,-14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40795,8 +40797,8 @@ entities: - uid: 3441 type: HVWire components: - - parent: 856 - pos: 0.5,-7.5 + - parent: 855 + pos: -13.5,-14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40804,8 +40806,8 @@ entities: - uid: 3442 type: HVWire components: - - parent: 856 - pos: 0.5,-6.5 + - parent: 855 + pos: -14.5,-14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40813,8 +40815,8 @@ entities: - uid: 3443 type: HVWire components: - - parent: 856 - pos: -12.5,-14.5 + - parent: 855 + pos: -15.5,-14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40822,8 +40824,8 @@ entities: - uid: 3444 type: HVWire components: - - parent: 856 - pos: -13.5,-14.5 + - parent: 855 + pos: -16.5,-14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40831,8 +40833,8 @@ entities: - uid: 3445 type: HVWire components: - - parent: 856 - pos: -14.5,-14.5 + - parent: 855 + pos: -17.5,-14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40840,8 +40842,8 @@ entities: - uid: 3446 type: HVWire components: - - parent: 856 - pos: -15.5,-14.5 + - parent: 855 + pos: -18.5,-14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40849,8 +40851,8 @@ entities: - uid: 3447 type: HVWire components: - - parent: 856 - pos: -16.5,-14.5 + - parent: 855 + pos: -18.5,-13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40858,8 +40860,8 @@ entities: - uid: 3448 type: HVWire components: - - parent: 856 - pos: -17.5,-14.5 + - parent: 855 + pos: -18.5,-12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40867,8 +40869,8 @@ entities: - uid: 3449 type: HVWire components: - - parent: 856 - pos: -18.5,-14.5 + - parent: 855 + pos: -18.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40876,8 +40878,8 @@ entities: - uid: 3450 type: HVWire components: - - parent: 856 - pos: -18.5,-13.5 + - parent: 855 + pos: -18.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40885,8 +40887,8 @@ entities: - uid: 3451 type: HVWire components: - - parent: 856 - pos: -18.5,-12.5 + - parent: 855 + pos: -19.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40894,8 +40896,8 @@ entities: - uid: 3452 type: HVWire components: - - parent: 856 - pos: -18.5,-11.5 + - parent: 855 + pos: -20.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40903,8 +40905,8 @@ entities: - uid: 3453 type: HVWire components: - - parent: 856 - pos: -18.5,-11.5 + - parent: 855 + pos: -21.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40912,8 +40914,8 @@ entities: - uid: 3454 type: HVWire components: - - parent: 856 - pos: -19.5,-11.5 + - parent: 855 + pos: -22.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40921,8 +40923,8 @@ entities: - uid: 3455 type: HVWire components: - - parent: 856 - pos: -20.5,-11.5 + - parent: 855 + pos: -23.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40930,8 +40932,8 @@ entities: - uid: 3456 type: HVWire components: - - parent: 856 - pos: -21.5,-11.5 + - parent: 855 + pos: -24.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40939,8 +40941,8 @@ entities: - uid: 3457 type: HVWire components: - - parent: 856 - pos: -22.5,-11.5 + - parent: 855 + pos: -25.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40948,8 +40950,8 @@ entities: - uid: 3458 type: HVWire components: - - parent: 856 - pos: -23.5,-11.5 + - parent: 855 + pos: -26.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40957,8 +40959,8 @@ entities: - uid: 3459 type: HVWire components: - - parent: 856 - pos: -24.5,-11.5 + - parent: 855 + pos: -27.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40966,8 +40968,8 @@ entities: - uid: 3460 type: HVWire components: - - parent: 856 - pos: -25.5,-11.5 + - parent: 855 + pos: -21.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40975,8 +40977,8 @@ entities: - uid: 3461 type: HVWire components: - - parent: 856 - pos: -26.5,-11.5 + - parent: 855 + pos: -28.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40984,8 +40986,8 @@ entities: - uid: 3462 type: HVWire components: - - parent: 856 - pos: -27.5,-11.5 + - parent: 855 + pos: -29.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -40993,8 +40995,8 @@ entities: - uid: 3463 type: HVWire components: - - parent: 856 - pos: -21.5,-10.5 + - parent: 855 + pos: -30.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41002,8 +41004,8 @@ entities: - uid: 3464 type: HVWire components: - - parent: 856 - pos: -28.5,-11.5 + - parent: 855 + pos: -31.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41011,8 +41013,8 @@ entities: - uid: 3465 type: HVWire components: - - parent: 856 - pos: -29.5,-11.5 + - parent: 855 + pos: -32.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41020,8 +41022,8 @@ entities: - uid: 3466 type: HVWire components: - - parent: 856 - pos: -30.5,-11.5 + - parent: 855 + pos: -33.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41029,8 +41031,8 @@ entities: - uid: 3467 type: HVWire components: - - parent: 856 - pos: -31.5,-11.5 + - parent: 855 + pos: -33.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41038,8 +41040,8 @@ entities: - uid: 3468 type: HVWire components: - - parent: 856 - pos: -32.5,-11.5 + - parent: 855 + pos: -33.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41047,8 +41049,8 @@ entities: - uid: 3469 type: HVWire components: - - parent: 856 - pos: -33.5,-11.5 + - parent: 855 + pos: -33.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41056,8 +41058,8 @@ entities: - uid: 3470 type: HVWire components: - - parent: 856 - pos: -33.5,-10.5 + - parent: 855 + pos: -33.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41065,8 +41067,8 @@ entities: - uid: 3471 type: HVWire components: - - parent: 856 - pos: -33.5,-9.5 + - parent: 855 + pos: -33.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41074,8 +41076,8 @@ entities: - uid: 3472 type: HVWire components: - - parent: 856 - pos: -33.5,-8.5 + - parent: 855 + pos: -33.5,-5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41083,8 +41085,8 @@ entities: - uid: 3473 type: HVWire components: - - parent: 856 - pos: -33.5,-7.5 + - parent: 855 + pos: -33.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41092,8 +41094,8 @@ entities: - uid: 3474 type: HVWire components: - - parent: 856 - pos: -33.5,-6.5 + - parent: 855 + pos: -33.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41101,8 +41103,8 @@ entities: - uid: 3475 type: HVWire components: - - parent: 856 - pos: -33.5,-5.5 + - parent: 855 + pos: -33.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41110,8 +41112,8 @@ entities: - uid: 3476 type: HVWire components: - - parent: 856 - pos: -33.5,-4.5 + - parent: 855 + pos: -33.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41119,8 +41121,8 @@ entities: - uid: 3477 type: HVWire components: - - parent: 856 - pos: -33.5,-3.5 + - parent: 855 + pos: -33.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41128,8 +41130,8 @@ entities: - uid: 3478 type: HVWire components: - - parent: 856 - pos: -33.5,-2.5 + - parent: 855 + pos: -33.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41137,8 +41139,8 @@ entities: - uid: 3479 type: HVWire components: - - parent: 856 - pos: -33.5,-1.5 + - parent: 855 + pos: -32.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41146,8 +41148,8 @@ entities: - uid: 3480 type: HVWire components: - - parent: 856 - pos: -33.5,-0.5 + - parent: 855 + pos: -32.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41155,8 +41157,8 @@ entities: - uid: 3481 type: HVWire components: - - parent: 856 - pos: -33.5,0.5 + - parent: 855 + pos: -32.5,2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41164,8 +41166,8 @@ entities: - uid: 3482 type: HVWire components: - - parent: 856 - pos: -32.5,0.5 + - parent: 855 + pos: -32.5,3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41173,8 +41175,8 @@ entities: - uid: 3483 type: HVWire components: - - parent: 856 - pos: -32.5,1.5 + - parent: 855 + pos: -32.5,4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41182,8 +41184,8 @@ entities: - uid: 3484 type: HVWire components: - - parent: 856 - pos: -32.5,2.5 + - parent: 855 + pos: -32.5,5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41191,8 +41193,8 @@ entities: - uid: 3485 type: HVWire components: - - parent: 856 - pos: -32.5,3.5 + - parent: 855 + pos: -32.5,6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41200,8 +41202,8 @@ entities: - uid: 3486 type: HVWire components: - - parent: 856 - pos: -32.5,4.5 + - parent: 855 + pos: -32.5,7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41209,8 +41211,8 @@ entities: - uid: 3487 type: HVWire components: - - parent: 856 - pos: -32.5,5.5 + - parent: 855 + pos: -32.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41218,8 +41220,8 @@ entities: - uid: 3488 type: HVWire components: - - parent: 856 - pos: -32.5,6.5 + - parent: 855 + pos: -32.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41227,8 +41229,8 @@ entities: - uid: 3489 type: HVWire components: - - parent: 856 - pos: -32.5,7.5 + - parent: 855 + pos: -32.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41236,8 +41238,8 @@ entities: - uid: 3490 type: HVWire components: - - parent: 856 - pos: -32.5,8.5 + - parent: 855 + pos: -32.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41245,8 +41247,8 @@ entities: - uid: 3491 type: HVWire components: - - parent: 856 - pos: -32.5,9.5 + - parent: 855 + pos: -32.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41254,8 +41256,8 @@ entities: - uid: 3492 type: HVWire components: - - parent: 856 - pos: -32.5,10.5 + - parent: 855 + pos: -32.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41263,8 +41265,8 @@ entities: - uid: 3493 type: HVWire components: - - parent: 856 - pos: -32.5,11.5 + - parent: 855 + pos: -32.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41272,8 +41274,8 @@ entities: - uid: 3494 type: HVWire components: - - parent: 856 - pos: -32.5,12.5 + - parent: 855 + pos: -32.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41281,8 +41283,8 @@ entities: - uid: 3495 type: HVWire components: - - parent: 856 - pos: -32.5,13.5 + - parent: 855 + pos: -31.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41290,8 +41292,8 @@ entities: - uid: 3496 type: HVWire components: - - parent: 856 - pos: -32.5,14.5 + - parent: 855 + pos: -30.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41299,8 +41301,8 @@ entities: - uid: 3497 type: HVWire components: - - parent: 856 - pos: -32.5,14.5 + - parent: 855 + pos: -29.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41308,8 +41310,8 @@ entities: - uid: 3498 type: HVWire components: - - parent: 856 - pos: -31.5,14.5 + - parent: 855 + pos: -28.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41317,8 +41319,8 @@ entities: - uid: 3499 type: HVWire components: - - parent: 856 - pos: -30.5,14.5 + - parent: 855 + pos: -27.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41326,8 +41328,8 @@ entities: - uid: 3500 type: HVWire components: - - parent: 856 - pos: -29.5,14.5 + - parent: 855 + pos: -26.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41335,8 +41337,8 @@ entities: - uid: 3501 type: HVWire components: - - parent: 856 - pos: -28.5,14.5 + - parent: 855 + pos: -25.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41344,8 +41346,8 @@ entities: - uid: 3502 type: HVWire components: - - parent: 856 - pos: -27.5,14.5 + - parent: 855 + pos: -24.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41353,8 +41355,8 @@ entities: - uid: 3503 type: HVWire components: - - parent: 856 - pos: -26.5,14.5 + - parent: 855 + pos: -23.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41362,8 +41364,8 @@ entities: - uid: 3504 type: HVWire components: - - parent: 856 - pos: -25.5,14.5 + - parent: 855 + pos: -22.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41371,8 +41373,8 @@ entities: - uid: 3505 type: HVWire components: - - parent: 856 - pos: -24.5,14.5 + - parent: 855 + pos: -21.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41380,8 +41382,8 @@ entities: - uid: 3506 type: HVWire components: - - parent: 856 - pos: -23.5,14.5 + - parent: 855 + pos: -20.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41389,8 +41391,8 @@ entities: - uid: 3507 type: HVWire components: - - parent: 856 - pos: -22.5,14.5 + - parent: 855 + pos: -20.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41398,8 +41400,8 @@ entities: - uid: 3508 type: HVWire components: - - parent: 856 - pos: -21.5,14.5 + - parent: 855 + pos: -19.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41407,8 +41409,8 @@ entities: - uid: 3509 type: HVWire components: - - parent: 856 - pos: -20.5,14.5 + - parent: 855 + pos: -18.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41416,8 +41418,8 @@ entities: - uid: 3510 type: HVWire components: - - parent: 856 - pos: -20.5,13.5 + - parent: 855 + pos: -18.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41425,8 +41427,8 @@ entities: - uid: 3511 type: HVWire components: - - parent: 856 - pos: -19.5,13.5 + - parent: 855 + pos: -17.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41434,8 +41436,8 @@ entities: - uid: 3512 type: HVWire components: - - parent: 856 - pos: -18.5,13.5 + - parent: 855 + pos: -17.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41443,8 +41445,8 @@ entities: - uid: 3513 type: HVWire components: - - parent: 856 - pos: -18.5,13.5 + - parent: 855 + pos: -17.5,15.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41452,8 +41454,8 @@ entities: - uid: 3514 type: HVWire components: - - parent: 856 - pos: -17.5,13.5 + - parent: 855 + pos: -18.5,16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41461,8 +41463,8 @@ entities: - uid: 3515 type: HVWire components: - - parent: 856 - pos: -17.5,14.5 + - parent: 855 + pos: -17.5,16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41470,8 +41472,8 @@ entities: - uid: 3516 type: HVWire components: - - parent: 856 - pos: -17.5,15.5 + - parent: 855 + pos: -16.5,16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41479,8 +41481,8 @@ entities: - uid: 3517 type: HVWire components: - - parent: 856 - pos: -18.5,16.5 + - parent: 855 + pos: -15.5,16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41488,8 +41490,8 @@ entities: - uid: 3518 type: HVWire components: - - parent: 856 - pos: -17.5,16.5 + - parent: 855 + pos: -18.5,17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41497,8 +41499,8 @@ entities: - uid: 3519 type: HVWire components: - - parent: 856 - pos: -16.5,16.5 + - parent: 855 + pos: -18.5,18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41506,8 +41508,8 @@ entities: - uid: 3520 type: HVWire components: - - parent: 856 - pos: -15.5,16.5 + - parent: 855 + pos: -18.5,19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41515,8 +41517,8 @@ entities: - uid: 3521 type: HVWire components: - - parent: 856 - pos: -18.5,17.5 + - parent: 855 + pos: -18.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41524,8 +41526,8 @@ entities: - uid: 3522 type: HVWire components: - - parent: 856 - pos: -18.5,18.5 + - parent: 855 + pos: -18.5,21.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41533,8 +41535,8 @@ entities: - uid: 3523 type: HVWire components: - - parent: 856 - pos: -18.5,19.5 + - parent: 855 + pos: -18.5,22.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41542,8 +41544,8 @@ entities: - uid: 3524 type: HVWire components: - - parent: 856 - pos: -18.5,20.5 + - parent: 855 + pos: -18.5,23.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41551,8 +41553,8 @@ entities: - uid: 3525 type: HVWire components: - - parent: 856 - pos: -18.5,21.5 + - parent: 855 + pos: -18.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41560,8 +41562,8 @@ entities: - uid: 3526 type: HVWire components: - - parent: 856 - pos: -18.5,22.5 + - parent: 855 + pos: -18.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41569,8 +41571,8 @@ entities: - uid: 3527 type: HVWire components: - - parent: 856 - pos: -18.5,23.5 + - parent: 855 + pos: -17.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41578,8 +41580,8 @@ entities: - uid: 3528 type: HVWire components: - - parent: 856 - pos: -18.5,24.5 + - parent: 855 + pos: -16.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41587,8 +41589,8 @@ entities: - uid: 3529 type: HVWire components: - - parent: 856 - pos: -18.5,25.5 + - parent: 855 + pos: -15.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41596,8 +41598,8 @@ entities: - uid: 3530 type: HVWire components: - - parent: 856 - pos: -17.5,25.5 + - parent: 855 + pos: -14.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41605,8 +41607,8 @@ entities: - uid: 3531 type: HVWire components: - - parent: 856 - pos: -16.5,25.5 + - parent: 855 + pos: -13.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41614,8 +41616,8 @@ entities: - uid: 3532 type: HVWire components: - - parent: 856 - pos: -15.5,25.5 + - parent: 855 + pos: -12.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41623,8 +41625,8 @@ entities: - uid: 3533 type: HVWire components: - - parent: 856 - pos: -14.5,25.5 + - parent: 855 + pos: -11.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41632,8 +41634,8 @@ entities: - uid: 3534 type: HVWire components: - - parent: 856 - pos: -13.5,25.5 + - parent: 855 + pos: -10.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41641,8 +41643,8 @@ entities: - uid: 3535 type: HVWire components: - - parent: 856 - pos: -12.5,25.5 + - parent: 855 + pos: -9.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41650,8 +41652,8 @@ entities: - uid: 3536 type: HVWire components: - - parent: 856 - pos: -11.5,25.5 + - parent: 855 + pos: -8.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41659,8 +41661,8 @@ entities: - uid: 3537 type: HVWire components: - - parent: 856 - pos: -10.5,25.5 + - parent: 855 + pos: -7.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41668,8 +41670,8 @@ entities: - uid: 3538 type: HVWire components: - - parent: 856 - pos: -9.5,25.5 + - parent: 855 + pos: -7.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41677,8 +41679,8 @@ entities: - uid: 3539 type: HVWire components: - - parent: 856 - pos: -8.5,25.5 + - parent: 855 + pos: -6.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41686,8 +41688,8 @@ entities: - uid: 3540 type: HVWire components: - - parent: 856 - pos: -7.5,25.5 + - parent: 855 + pos: -5.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41695,8 +41697,8 @@ entities: - uid: 3541 type: HVWire components: - - parent: 856 - pos: -7.5,24.5 + - parent: 855 + pos: -4.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41704,8 +41706,8 @@ entities: - uid: 3542 type: HVWire components: - - parent: 856 - pos: -6.5,24.5 + - parent: 855 + pos: -4.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41713,8 +41715,8 @@ entities: - uid: 3543 type: HVWire components: - - parent: 856 - pos: -5.5,24.5 + - parent: 855 + pos: -4.5,23.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41722,8 +41724,8 @@ entities: - uid: 3544 type: HVWire components: - - parent: 856 - pos: -4.5,24.5 + - parent: 855 + pos: -4.5,22.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41731,8 +41733,8 @@ entities: - uid: 3545 type: HVWire components: - - parent: 856 - pos: -4.5,24.5 + - parent: 855 + pos: -4.5,21.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41740,8 +41742,8 @@ entities: - uid: 3546 type: HVWire components: - - parent: 856 - pos: -4.5,23.5 + - parent: 855 + pos: -4.5,21.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41749,8 +41751,8 @@ entities: - uid: 3547 type: HVWire components: - - parent: 856 - pos: -4.5,22.5 + - parent: 855 + pos: -3.5,21.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41758,8 +41760,8 @@ entities: - uid: 3548 type: HVWire components: - - parent: 856 - pos: -4.5,21.5 + - parent: 855 + pos: -2.5,21.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41767,8 +41769,8 @@ entities: - uid: 3549 type: HVWire components: - - parent: 856 - pos: -4.5,21.5 + - parent: 855 + pos: -1.5,21.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41776,8 +41778,8 @@ entities: - uid: 3550 type: HVWire components: - - parent: 856 - pos: -3.5,21.5 + - parent: 855 + pos: -0.5,21.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41785,8 +41787,8 @@ entities: - uid: 3551 type: HVWire components: - - parent: 856 - pos: -2.5,21.5 + - parent: 855 + pos: -0.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41794,8 +41796,8 @@ entities: - uid: 3552 type: HVWire components: - - parent: 856 - pos: -1.5,21.5 + - parent: 855 + pos: 0.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41803,8 +41805,8 @@ entities: - uid: 3553 type: HVWire components: - - parent: 856 - pos: -0.5,21.5 + - parent: 855 + pos: 1.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41812,8 +41814,8 @@ entities: - uid: 3554 type: HVWire components: - - parent: 856 - pos: -0.5,20.5 + - parent: 855 + pos: 2.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41821,8 +41823,8 @@ entities: - uid: 3555 type: HVWire components: - - parent: 856 - pos: 0.5,20.5 + - parent: 855 + pos: 3.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41830,8 +41832,8 @@ entities: - uid: 3556 type: HVWire components: - - parent: 856 - pos: 1.5,20.5 + - parent: 855 + pos: 4.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41839,8 +41841,8 @@ entities: - uid: 3557 type: HVWire components: - - parent: 856 - pos: 2.5,20.5 + - parent: 855 + pos: 5.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41848,8 +41850,8 @@ entities: - uid: 3558 type: HVWire components: - - parent: 856 - pos: 3.5,20.5 + - parent: 855 + pos: 6.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41857,8 +41859,8 @@ entities: - uid: 3559 type: HVWire components: - - parent: 856 - pos: 4.5,20.5 + - parent: 855 + pos: 7.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41866,8 +41868,8 @@ entities: - uid: 3560 type: HVWire components: - - parent: 856 - pos: 5.5,20.5 + - parent: 855 + pos: 8.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41875,8 +41877,8 @@ entities: - uid: 3561 type: HVWire components: - - parent: 856 - pos: 6.5,20.5 + - parent: 855 + pos: 9.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41884,8 +41886,8 @@ entities: - uid: 3562 type: HVWire components: - - parent: 856 - pos: 7.5,20.5 + - parent: 855 + pos: 10.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41893,8 +41895,8 @@ entities: - uid: 3563 type: HVWire components: - - parent: 856 - pos: 8.5,20.5 + - parent: 855 + pos: 11.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41902,8 +41904,8 @@ entities: - uid: 3564 type: HVWire components: - - parent: 856 - pos: 9.5,20.5 + - parent: 855 + pos: 12.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41911,8 +41913,8 @@ entities: - uid: 3565 type: HVWire components: - - parent: 856 - pos: 10.5,20.5 + - parent: 855 + pos: 12.5,21.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41920,8 +41922,8 @@ entities: - uid: 3566 type: HVWire components: - - parent: 856 - pos: 11.5,20.5 + - parent: 855 + pos: 12.5,22.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41929,8 +41931,8 @@ entities: - uid: 3567 type: HVWire components: - - parent: 856 - pos: 12.5,20.5 + - parent: 855 + pos: 12.5,23.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41938,8 +41940,8 @@ entities: - uid: 3568 type: HVWire components: - - parent: 856 - pos: 12.5,21.5 + - parent: 855 + pos: 12.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41947,8 +41949,8 @@ entities: - uid: 3569 type: HVWire components: - - parent: 856 - pos: 12.5,22.5 + - parent: 855 + pos: 11.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41956,8 +41958,8 @@ entities: - uid: 3570 type: HVWire components: - - parent: 856 - pos: 12.5,23.5 + - parent: 855 + pos: 12.5,20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41965,8 +41967,8 @@ entities: - uid: 3571 type: HVWire components: - - parent: 856 - pos: 12.5,24.5 + - parent: 855 + pos: 12.5,19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41974,8 +41976,8 @@ entities: - uid: 3572 type: HVWire components: - - parent: 856 - pos: 11.5,24.5 + - parent: 855 + pos: 12.5,18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41983,8 +41985,8 @@ entities: - uid: 3573 type: HVWire components: - - parent: 856 - pos: 12.5,20.5 + - parent: 855 + pos: 12.5,17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -41992,8 +41994,8 @@ entities: - uid: 3574 type: HVWire components: - - parent: 856 - pos: 12.5,19.5 + - parent: 855 + pos: 12.5,16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42001,8 +42003,8 @@ entities: - uid: 3575 type: HVWire components: - - parent: 856 - pos: 12.5,18.5 + - parent: 855 + pos: 12.5,15.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42010,8 +42012,8 @@ entities: - uid: 3576 type: HVWire components: - - parent: 856 - pos: 12.5,17.5 + - parent: 855 + pos: 12.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42019,8 +42021,8 @@ entities: - uid: 3577 type: HVWire components: - - parent: 856 - pos: 12.5,16.5 + - parent: 855 + pos: 11.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42028,8 +42030,8 @@ entities: - uid: 3578 type: HVWire components: - - parent: 856 - pos: 12.5,15.5 + - parent: 855 + pos: 10.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42037,8 +42039,8 @@ entities: - uid: 3579 type: HVWire components: - - parent: 856 - pos: 12.5,14.5 + - parent: 855 + pos: 10.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42046,8 +42048,8 @@ entities: - uid: 3580 type: HVWire components: - - parent: 856 - pos: 11.5,14.5 + - parent: 855 + pos: 10.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42055,8 +42057,8 @@ entities: - uid: 3581 type: HVWire components: - - parent: 856 - pos: 10.5,14.5 + - parent: 855 + pos: 10.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42064,8 +42066,8 @@ entities: - uid: 3582 type: HVWire components: - - parent: 856 - pos: 10.5,13.5 + - parent: 855 + pos: 11.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42073,8 +42075,8 @@ entities: - uid: 3583 type: HVWire components: - - parent: 856 - pos: 10.5,12.5 + - parent: 855 + pos: 12.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42082,8 +42084,8 @@ entities: - uid: 3584 type: HVWire components: - - parent: 856 - pos: 10.5,11.5 + - parent: 855 + pos: 13.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42091,8 +42093,8 @@ entities: - uid: 3585 type: HVWire components: - - parent: 856 - pos: 11.5,11.5 + - parent: 855 + pos: 14.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42100,8 +42102,8 @@ entities: - uid: 3586 type: HVWire components: - - parent: 856 - pos: 12.5,11.5 + - parent: 855 + pos: 15.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42109,8 +42111,8 @@ entities: - uid: 3587 type: HVWire components: - - parent: 856 - pos: 13.5,11.5 + - parent: 855 + pos: 16.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42118,8 +42120,8 @@ entities: - uid: 3588 type: HVWire components: - - parent: 856 - pos: 14.5,11.5 + - parent: 855 + pos: 17.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42127,8 +42129,8 @@ entities: - uid: 3589 type: HVWire components: - - parent: 856 - pos: 15.5,11.5 + - parent: 855 + pos: 18.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42136,8 +42138,8 @@ entities: - uid: 3590 type: HVWire components: - - parent: 856 - pos: 16.5,11.5 + - parent: 855 + pos: 19.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42145,8 +42147,8 @@ entities: - uid: 3591 type: HVWire components: - - parent: 856 - pos: 17.5,11.5 + - parent: 855 + pos: 20.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42154,8 +42156,8 @@ entities: - uid: 3592 type: HVWire components: - - parent: 856 - pos: 18.5,11.5 + - parent: 855 + pos: 21.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42163,8 +42165,8 @@ entities: - uid: 3593 type: HVWire components: - - parent: 856 - pos: 19.5,11.5 + - parent: 855 + pos: 22.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42172,8 +42174,8 @@ entities: - uid: 3594 type: HVWire components: - - parent: 856 - pos: 20.5,11.5 + - parent: 855 + pos: 23.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42181,8 +42183,8 @@ entities: - uid: 3595 type: HVWire components: - - parent: 856 - pos: 21.5,11.5 + - parent: 855 + pos: 24.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42190,8 +42192,8 @@ entities: - uid: 3596 type: HVWire components: - - parent: 856 - pos: 22.5,11.5 + - parent: 855 + pos: 25.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42199,8 +42201,8 @@ entities: - uid: 3597 type: HVWire components: - - parent: 856 - pos: 23.5,11.5 + - parent: 855 + pos: 26.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42208,8 +42210,8 @@ entities: - uid: 3598 type: HVWire components: - - parent: 856 - pos: 24.5,11.5 + - parent: 855 + pos: 27.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42217,8 +42219,8 @@ entities: - uid: 3599 type: HVWire components: - - parent: 856 - pos: 25.5,11.5 + - parent: 855 + pos: 27.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42226,8 +42228,8 @@ entities: - uid: 3600 type: HVWire components: - - parent: 856 - pos: 26.5,11.5 + - parent: 855 + pos: 27.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42235,8 +42237,8 @@ entities: - uid: 3601 type: HVWire components: - - parent: 856 - pos: 27.5,11.5 + - parent: 855 + pos: 28.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42244,8 +42246,8 @@ entities: - uid: 3602 type: HVWire components: - - parent: 856 - pos: 27.5,12.5 + - parent: 855 + pos: 29.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42253,8 +42255,8 @@ entities: - uid: 3603 type: HVWire components: - - parent: 856 - pos: 27.5,13.5 + - parent: 855 + pos: 30.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42262,8 +42264,8 @@ entities: - uid: 3604 type: HVWire components: - - parent: 856 - pos: 28.5,11.5 + - parent: 855 + pos: 31.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42271,8 +42273,8 @@ entities: - uid: 3605 type: HVWire components: - - parent: 856 - pos: 29.5,11.5 + - parent: 855 + pos: 32.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42280,8 +42282,8 @@ entities: - uid: 3606 type: HVWire components: - - parent: 856 - pos: 30.5,11.5 + - parent: 855 + pos: 33.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42289,8 +42291,8 @@ entities: - uid: 3607 type: HVWire components: - - parent: 856 - pos: 31.5,11.5 + - parent: 855 + pos: 34.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42298,8 +42300,8 @@ entities: - uid: 3608 type: HVWire components: - - parent: 856 - pos: 32.5,11.5 + - parent: 855 + pos: 34.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42307,8 +42309,8 @@ entities: - uid: 3609 type: HVWire components: - - parent: 856 - pos: 33.5,11.5 + - parent: 855 + pos: 34.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42316,8 +42318,8 @@ entities: - uid: 3610 type: HVWire components: - - parent: 856 - pos: 34.5,11.5 + - parent: 855 + pos: 34.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42325,8 +42327,8 @@ entities: - uid: 3611 type: HVWire components: - - parent: 856 - pos: 34.5,10.5 + - parent: 855 + pos: 34.5,7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42334,8 +42336,8 @@ entities: - uid: 3612 type: HVWire components: - - parent: 856 - pos: 34.5,9.5 + - parent: 855 + pos: 34.5,6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42343,8 +42345,8 @@ entities: - uid: 3613 type: HVWire components: - - parent: 856 - pos: 34.5,8.5 + - parent: 855 + pos: 34.5,5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42352,8 +42354,8 @@ entities: - uid: 3614 type: HVWire components: - - parent: 856 - pos: 34.5,7.5 + - parent: 855 + pos: 35.5,5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42361,8 +42363,8 @@ entities: - uid: 3615 type: HVWire components: - - parent: 856 - pos: 34.5,6.5 + - parent: 855 + pos: 36.5,5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42370,8 +42372,8 @@ entities: - uid: 3616 type: HVWire components: - - parent: 856 - pos: 34.5,5.5 + - parent: 855 + pos: 37.5,5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42379,8 +42381,8 @@ entities: - uid: 3617 type: HVWire components: - - parent: 856 - pos: 35.5,5.5 + - parent: 855 + pos: 38.5,5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42388,47 +42390,59 @@ entities: - uid: 3618 type: HVWire components: - - parent: 856 - pos: 36.5,5.5 - rot: -1.5707963267948966 rad - type: Transform - - deadThreshold: 100 - type: Destructible -- uid: 3619 - type: HVWire - components: - - parent: 856 - pos: 37.5,5.5 - rot: -1.5707963267948966 rad - type: Transform - - deadThreshold: 100 - type: Destructible -- uid: 3620 - type: HVWire - components: - - parent: 856 - pos: 38.5,5.5 - rot: -1.5707963267948966 rad - type: Transform - - deadThreshold: 100 - type: Destructible -- uid: 3621 - type: HVWire - components: - - parent: 856 + - parent: 855 pos: 39.5,5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 3622 +- uid: 3619 type: SalternSubstation components: - - parent: 856 + - parent: 855 pos: 42.5,-0.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 3999955 + - startingCharge: 3999959 + type: Battery + - drawRate: 8000 + type: PowerConsumer + - supplyRate: 6000 + type: PowerSupplier +- uid: 3620 + type: SalternSubstation + components: + - parent: 855 + pos: 27.5,13.5 + rot: -1.5707963267948966 rad + type: Transform + - startingCharge: 3999959 + type: Battery + - drawRate: 8000 + type: PowerConsumer + - supplyRate: 6000 + type: PowerSupplier +- uid: 3621 + type: SalternSubstation + components: + - parent: 855 + pos: 11.5,24.5 + rot: -1.5707963267948966 rad + type: Transform + - startingCharge: 3999959 + type: Battery + - drawRate: 8000 + type: PowerConsumer + - supplyRate: 6000 + type: PowerSupplier +- uid: 3622 + type: SalternSubstation + components: + - parent: 855 + pos: 21.5,-9.5 + rot: -1.5707963267948966 rad + type: Transform + - startingCharge: 3999959 type: Battery - drawRate: 8000 type: PowerConsumer @@ -42437,11 +42451,11 @@ entities: - uid: 3623 type: SalternSubstation components: - - parent: 856 - pos: 27.5,13.5 + - parent: 855 + pos: -15.5,16.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 3999955 + - startingCharge: 3999959 type: Battery - drawRate: 8000 type: PowerConsumer @@ -42450,37 +42464,33 @@ entities: - uid: 3624 type: SalternSubstation components: - - parent: 856 - pos: 11.5,24.5 + - parent: 855 + pos: -0.5,-22.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 3999955 + - startingCharge: 3999959 type: Battery - drawRate: 8000 type: PowerConsumer - supplyRate: 6000 type: PowerSupplier - uid: 3625 - type: SalternSubstation + type: HVWire components: - - parent: 856 - pos: 21.5,-9.5 + - parent: 855 + pos: -0.5,-22.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 3999955 - type: Battery - - drawRate: 8000 - type: PowerConsumer - - supplyRate: 6000 - type: PowerSupplier + - deadThreshold: 100 + type: Destructible - uid: 3626 type: SalternSubstation components: - - parent: 856 - pos: -15.5,16.5 + - parent: 855 + pos: 0.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 3999955 + - startingCharge: 3999959 type: Battery - drawRate: 8000 type: PowerConsumer @@ -42489,69 +42499,61 @@ entities: - uid: 3627 type: SalternSubstation components: - - parent: 856 - pos: -0.5,-22.5 + - parent: 855 + pos: -21.5,-10.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 3999955 + - startingCharge: 3999959 type: Battery - drawRate: 8000 type: PowerConsumer - supplyRate: 6000 type: PowerSupplier - uid: 3628 - type: HVWire + type: SalternSubstation components: - - parent: 856 - pos: -0.5,-22.5 + - parent: 855 + pos: -32.5,7.5 + rot: -1.5707963267948966 rad + type: Transform + - startingCharge: 3999959 + type: Battery + - drawRate: 8000 + type: PowerConsumer + - supplyRate: 6000 + type: PowerSupplier +- uid: 3629 + type: MVWire + components: + - parent: 855 + pos: 27.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 3629 - type: SalternSubstation - components: - - parent: 856 - pos: 0.5,-6.5 - rot: -1.5707963267948966 rad - type: Transform - - startingCharge: 3999955 - type: Battery - - drawRate: 8000 - type: PowerConsumer - - supplyRate: 6000 - type: PowerSupplier - uid: 3630 - type: SalternSubstation + type: MVWire components: - - parent: 856 - pos: -21.5,-10.5 + - parent: 855 + pos: 28.5,13.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 3999955 - type: Battery - - drawRate: 8000 - type: PowerConsumer - - supplyRate: 6000 - type: PowerSupplier + - deadThreshold: 100 + type: Destructible - uid: 3631 - type: SalternSubstation + type: MVWire components: - - parent: 856 - pos: -32.5,7.5 + - parent: 855 + pos: 28.5,14.5 rot: -1.5707963267948966 rad type: Transform - - startingCharge: 3999955 - type: Battery - - drawRate: 8000 - type: PowerConsumer - - supplyRate: 6000 - type: PowerSupplier + - deadThreshold: 100 + type: Destructible - uid: 3632 type: MVWire components: - - parent: 856 - pos: 27.5,13.5 + - parent: 855 + pos: 26.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42559,8 +42561,8 @@ entities: - uid: 3633 type: MVWire components: - - parent: 856 - pos: 28.5,13.5 + - parent: 855 + pos: 25.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42568,8 +42570,8 @@ entities: - uid: 3634 type: MVWire components: - - parent: 856 - pos: 28.5,14.5 + - parent: 855 + pos: 24.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42577,8 +42579,8 @@ entities: - uid: 3635 type: MVWire components: - - parent: 856 - pos: 26.5,13.5 + - parent: 855 + pos: 24.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42586,8 +42588,8 @@ entities: - uid: 3636 type: MVWire components: - - parent: 856 - pos: 25.5,13.5 + - parent: 855 + pos: 24.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42595,8 +42597,8 @@ entities: - uid: 3637 type: MVWire components: - - parent: 856 - pos: 24.5,13.5 + - parent: 855 + pos: 23.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42604,8 +42606,8 @@ entities: - uid: 3638 type: MVWire components: - - parent: 856 - pos: 24.5,14.5 + - parent: 855 + pos: 22.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42613,8 +42615,8 @@ entities: - uid: 3639 type: MVWire components: - - parent: 856 - pos: 24.5,12.5 + - parent: 855 + pos: 21.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42622,8 +42624,8 @@ entities: - uid: 3640 type: MVWire components: - - parent: 856 - pos: 23.5,12.5 + - parent: 855 + pos: 20.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42631,8 +42633,8 @@ entities: - uid: 3641 type: MVWire components: - - parent: 856 - pos: 22.5,12.5 + - parent: 855 + pos: 19.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42640,8 +42642,8 @@ entities: - uid: 3642 type: MVWire components: - - parent: 856 - pos: 21.5,12.5 + - parent: 855 + pos: 18.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42649,8 +42651,8 @@ entities: - uid: 3643 type: MVWire components: - - parent: 856 - pos: 20.5,12.5 + - parent: 855 + pos: 17.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42658,8 +42660,8 @@ entities: - uid: 3644 type: MVWire components: - - parent: 856 - pos: 19.5,12.5 + - parent: 855 + pos: 16.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42667,8 +42669,8 @@ entities: - uid: 3645 type: MVWire components: - - parent: 856 - pos: 18.5,12.5 + - parent: 855 + pos: 15.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42676,8 +42678,8 @@ entities: - uid: 3646 type: MVWire components: - - parent: 856 - pos: 17.5,12.5 + - parent: 855 + pos: 14.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42685,8 +42687,8 @@ entities: - uid: 3647 type: MVWire components: - - parent: 856 - pos: 16.5,12.5 + - parent: 855 + pos: 13.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42694,8 +42696,8 @@ entities: - uid: 3648 type: MVWire components: - - parent: 856 - pos: 15.5,12.5 + - parent: 855 + pos: 12.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42703,8 +42705,8 @@ entities: - uid: 3649 type: MVWire components: - - parent: 856 - pos: 14.5,12.5 + - parent: 855 + pos: 12.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42712,8 +42714,8 @@ entities: - uid: 3650 type: MVWire components: - - parent: 856 - pos: 13.5,12.5 + - parent: 855 + pos: 11.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42721,8 +42723,8 @@ entities: - uid: 3651 type: MVWire components: - - parent: 856 - pos: 12.5,12.5 + - parent: 855 + pos: 9.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42730,8 +42732,8 @@ entities: - uid: 3652 type: MVWire components: - - parent: 856 - pos: 12.5,13.5 + - parent: 855 + pos: 10.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42739,8 +42741,8 @@ entities: - uid: 3653 type: MVWire components: - - parent: 856 - pos: 11.5,24.5 + - parent: 855 + pos: 9.5,23.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42748,8 +42750,8 @@ entities: - uid: 3654 type: MVWire components: - - parent: 856 - pos: 9.5,24.5 + - parent: 855 + pos: 9.5,22.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42757,8 +42759,8 @@ entities: - uid: 3655 type: MVWire components: - - parent: 856 - pos: 10.5,24.5 + - parent: 855 + pos: 9.5,24.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42766,8 +42768,8 @@ entities: - uid: 3656 type: MVWire components: - - parent: 856 - pos: 9.5,23.5 + - parent: 855 + pos: 9.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42775,8 +42777,8 @@ entities: - uid: 3657 type: MVWire components: - - parent: 856 - pos: 9.5,22.5 + - parent: 855 + pos: 9.5,26.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42784,8 +42786,8 @@ entities: - uid: 3658 type: MVWire components: - - parent: 856 - pos: 9.5,24.5 + - parent: 855 + pos: 9.5,26.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42793,8 +42795,8 @@ entities: - uid: 3659 type: MVWire components: - - parent: 856 - pos: 9.5,25.5 + - parent: 855 + pos: 9.5,27.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42802,8 +42804,8 @@ entities: - uid: 3660 type: MVWire components: - - parent: 856 - pos: 9.5,26.5 + - parent: 855 + pos: 8.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42811,8 +42813,8 @@ entities: - uid: 3661 type: MVWire components: - - parent: 856 - pos: 9.5,26.5 + - parent: 855 + pos: 7.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42820,8 +42822,8 @@ entities: - uid: 3662 type: MVWire components: - - parent: 856 - pos: 9.5,27.5 + - parent: 855 + pos: 6.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42829,8 +42831,8 @@ entities: - uid: 3663 type: MVWire components: - - parent: 856 - pos: 8.5,25.5 + - parent: 855 + pos: 5.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42838,8 +42840,8 @@ entities: - uid: 3664 type: MVWire components: - - parent: 856 - pos: 7.5,25.5 + - parent: 855 + pos: 4.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42847,8 +42849,8 @@ entities: - uid: 3665 type: MVWire components: - - parent: 856 - pos: 6.5,25.5 + - parent: 855 + pos: 3.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42856,8 +42858,8 @@ entities: - uid: 3666 type: MVWire components: - - parent: 856 - pos: 5.5,25.5 + - parent: 855 + pos: 2.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42865,8 +42867,8 @@ entities: - uid: 3667 type: MVWire components: - - parent: 856 - pos: 4.5,25.5 + - parent: 855 + pos: 1.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42874,8 +42876,8 @@ entities: - uid: 3668 type: MVWire components: - - parent: 856 - pos: 3.5,25.5 + - parent: 855 + pos: 0.5,25.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42883,8 +42885,8 @@ entities: - uid: 3669 type: MVWire components: - - parent: 856 - pos: 2.5,25.5 + - parent: 855 + pos: 0.5,26.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42892,8 +42894,8 @@ entities: - uid: 3670 type: MVWire components: - - parent: 856 - pos: 1.5,25.5 + - parent: 855 + pos: 0.5,26.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42901,8 +42903,8 @@ entities: - uid: 3671 type: MVWire components: - - parent: 856 - pos: 0.5,25.5 + - parent: 855 + pos: -0.5,26.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42910,8 +42912,8 @@ entities: - uid: 3672 type: MVWire components: - - parent: 856 - pos: 0.5,26.5 + - parent: 855 + pos: -1.5,26.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42919,8 +42921,8 @@ entities: - uid: 3673 type: MVWire components: - - parent: 856 - pos: 0.5,26.5 + - parent: 855 + pos: -2.5,26.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42928,8 +42930,8 @@ entities: - uid: 3674 type: MVWire components: - - parent: 856 - pos: -0.5,26.5 + - parent: 855 + pos: -2.5,27.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42937,8 +42939,8 @@ entities: - uid: 3675 type: MVWire components: - - parent: 856 - pos: -1.5,26.5 + - parent: 855 + pos: 42.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42946,8 +42948,8 @@ entities: - uid: 3676 type: MVWire components: - - parent: 856 - pos: -2.5,26.5 + - parent: 855 + pos: 43.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42955,8 +42957,8 @@ entities: - uid: 3677 type: MVWire components: - - parent: 856 - pos: -2.5,27.5 + - parent: 855 + pos: 43.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42964,8 +42966,8 @@ entities: - uid: 3678 type: MVWire components: - - parent: 856 - pos: 42.5,-0.5 + - parent: 855 + pos: 43.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42973,8 +42975,8 @@ entities: - uid: 3679 type: MVWire components: - - parent: 856 - pos: 43.5,-0.5 + - parent: 855 + pos: 44.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42982,8 +42984,8 @@ entities: - uid: 3680 type: MVWire components: - - parent: 856 - pos: 43.5,0.5 + - parent: 855 + pos: 45.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -42991,8 +42993,8 @@ entities: - uid: 3681 type: MVWire components: - - parent: 856 - pos: 43.5,1.5 + - parent: 855 + pos: 46.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43000,8 +43002,8 @@ entities: - uid: 3682 type: MVWire components: - - parent: 856 - pos: 44.5,1.5 + - parent: 855 + pos: 47.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43009,8 +43011,8 @@ entities: - uid: 3683 type: MVWire components: - - parent: 856 - pos: 45.5,1.5 + - parent: 855 + pos: 48.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43018,8 +43020,8 @@ entities: - uid: 3684 type: MVWire components: - - parent: 856 - pos: 46.5,1.5 + - parent: 855 + pos: 48.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43027,8 +43029,8 @@ entities: - uid: 3685 type: MVWire components: - - parent: 856 - pos: 47.5,1.5 + - parent: 855 + pos: 48.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43036,8 +43038,8 @@ entities: - uid: 3686 type: MVWire components: - - parent: 856 - pos: 48.5,1.5 + - parent: 855 + pos: 48.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43045,8 +43047,8 @@ entities: - uid: 3687 type: MVWire components: - - parent: 856 - pos: 48.5,0.5 + - parent: 855 + pos: 48.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43054,8 +43056,8 @@ entities: - uid: 3688 type: MVWire components: - - parent: 856 - pos: 48.5,-0.5 + - parent: 855 + pos: 47.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43063,8 +43065,8 @@ entities: - uid: 3689 type: MVWire components: - - parent: 856 - pos: 48.5,-1.5 + - parent: 855 + pos: 47.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43072,8 +43074,8 @@ entities: - uid: 3690 type: MVWire components: - - parent: 856 - pos: 48.5,-2.5 + - parent: 855 + pos: 41.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43081,8 +43083,8 @@ entities: - uid: 3691 type: MVWire components: - - parent: 856 - pos: 47.5,-2.5 + - parent: 855 + pos: 40.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43090,8 +43092,8 @@ entities: - uid: 3692 type: MVWire components: - - parent: 856 - pos: 47.5,-1.5 + - parent: 855 + pos: 39.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43099,8 +43101,8 @@ entities: - uid: 3693 type: MVWire components: - - parent: 856 - pos: 41.5,-0.5 + - parent: 855 + pos: 38.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43108,8 +43110,8 @@ entities: - uid: 3694 type: MVWire components: - - parent: 856 - pos: 40.5,-0.5 + - parent: 855 + pos: 37.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43117,8 +43119,8 @@ entities: - uid: 3695 type: MVWire components: - - parent: 856 - pos: 39.5,-0.5 + - parent: 855 + pos: 36.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43126,8 +43128,8 @@ entities: - uid: 3696 type: MVWire components: - - parent: 856 - pos: 38.5,-0.5 + - parent: 855 + pos: 35.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43135,8 +43137,8 @@ entities: - uid: 3697 type: MVWire components: - - parent: 856 - pos: 37.5,-0.5 + - parent: 855 + pos: 34.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43144,8 +43146,8 @@ entities: - uid: 3698 type: MVWire components: - - parent: 856 - pos: 36.5,-0.5 + - parent: 855 + pos: 33.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43153,8 +43155,8 @@ entities: - uid: 3699 type: MVWire components: - - parent: 856 - pos: 35.5,-0.5 + - parent: 855 + pos: 32.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43162,8 +43164,8 @@ entities: - uid: 3700 type: MVWire components: - - parent: 856 - pos: 34.5,-0.5 + - parent: 855 + pos: 32.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43171,8 +43173,8 @@ entities: - uid: 3701 type: MVWire components: - - parent: 856 - pos: 33.5,-0.5 + - parent: 855 + pos: 31.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43180,8 +43182,8 @@ entities: - uid: 3702 type: MVWire components: - - parent: 856 - pos: 32.5,-0.5 + - parent: 855 + pos: 31.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43189,8 +43191,8 @@ entities: - uid: 3703 type: MVWire components: - - parent: 856 - pos: 32.5,0.5 + - parent: 855 + pos: 43.5,2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43198,8 +43200,8 @@ entities: - uid: 3704 type: MVWire components: - - parent: 856 - pos: 31.5,0.5 + - parent: 855 + pos: 43.5,3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43207,8 +43209,8 @@ entities: - uid: 3705 type: MVWire components: - - parent: 856 - pos: 31.5,1.5 + - parent: 855 + pos: 43.5,4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43216,8 +43218,8 @@ entities: - uid: 3706 type: MVWire components: - - parent: 856 - pos: 43.5,2.5 + - parent: 855 + pos: 43.5,5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43225,8 +43227,8 @@ entities: - uid: 3707 type: MVWire components: - - parent: 856 - pos: 43.5,3.5 + - parent: 855 + pos: 43.5,6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43234,8 +43236,8 @@ entities: - uid: 3708 type: MVWire components: - - parent: 856 - pos: 43.5,4.5 + - parent: 855 + pos: 43.5,7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43243,8 +43245,8 @@ entities: - uid: 3709 type: MVWire components: - - parent: 856 - pos: 43.5,5.5 + - parent: 855 + pos: 43.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43252,8 +43254,8 @@ entities: - uid: 3710 type: MVWire components: - - parent: 856 - pos: 43.5,6.5 + - parent: 855 + pos: 43.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43261,8 +43263,8 @@ entities: - uid: 3711 type: MVWire components: - - parent: 856 - pos: 43.5,7.5 + - parent: 855 + pos: 43.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43270,8 +43272,8 @@ entities: - uid: 3712 type: MVWire components: - - parent: 856 - pos: 43.5,8.5 + - parent: 855 + pos: 21.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43279,8 +43281,8 @@ entities: - uid: 3713 type: MVWire components: - - parent: 856 - pos: 43.5,9.5 + - parent: 855 + pos: 21.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43288,8 +43290,8 @@ entities: - uid: 3714 type: MVWire components: - - parent: 856 - pos: 43.5,10.5 + - parent: 855 + pos: 21.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43297,8 +43299,8 @@ entities: - uid: 3715 type: MVWire components: - - parent: 856 - pos: 21.5,-9.5 + - parent: 855 + pos: 21.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43306,8 +43308,8 @@ entities: - uid: 3716 type: MVWire components: - - parent: 856 - pos: 21.5,-8.5 + - parent: 855 + pos: 21.5,-5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43315,8 +43317,8 @@ entities: - uid: 3717 type: MVWire components: - - parent: 856 - pos: 21.5,-7.5 + - parent: 855 + pos: 21.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43324,8 +43326,8 @@ entities: - uid: 3718 type: MVWire components: - - parent: 856 - pos: 21.5,-6.5 + - parent: 855 + pos: 22.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43333,8 +43335,8 @@ entities: - uid: 3719 type: MVWire components: - - parent: 856 - pos: 21.5,-5.5 + - parent: 855 + pos: 22.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43342,8 +43344,8 @@ entities: - uid: 3720 type: MVWire components: - - parent: 856 - pos: 21.5,-4.5 + - parent: 855 + pos: 20.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43351,8 +43353,8 @@ entities: - uid: 3721 type: MVWire components: - - parent: 856 - pos: 22.5,-4.5 + - parent: 855 + pos: 19.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43360,8 +43362,8 @@ entities: - uid: 3722 type: MVWire components: - - parent: 856 - pos: 22.5,-3.5 + - parent: 855 + pos: 21.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43369,8 +43371,8 @@ entities: - uid: 3723 type: MVWire components: - - parent: 856 - pos: 20.5,-9.5 + - parent: 855 + pos: 18.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43378,8 +43380,8 @@ entities: - uid: 3724 type: MVWire components: - - parent: 856 - pos: 19.5,-9.5 + - parent: 855 + pos: 17.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43387,8 +43389,8 @@ entities: - uid: 3725 type: MVWire components: - - parent: 856 - pos: 21.5,-9.5 + - parent: 855 + pos: 16.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43396,8 +43398,8 @@ entities: - uid: 3726 type: MVWire components: - - parent: 856 - pos: 18.5,-9.5 + - parent: 855 + pos: 15.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43405,8 +43407,8 @@ entities: - uid: 3727 type: MVWire components: - - parent: 856 - pos: 17.5,-9.5 + - parent: 855 + pos: 14.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43414,8 +43416,8 @@ entities: - uid: 3728 type: MVWire components: - - parent: 856 - pos: 16.5,-9.5 + - parent: 855 + pos: 13.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43423,8 +43425,8 @@ entities: - uid: 3729 type: MVWire components: - - parent: 856 - pos: 15.5,-9.5 + - parent: 855 + pos: 12.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43432,8 +43434,8 @@ entities: - uid: 3730 type: MVWire components: - - parent: 856 - pos: 14.5,-9.5 + - parent: 855 + pos: 11.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43441,8 +43443,8 @@ entities: - uid: 3731 type: MVWire components: - - parent: 856 - pos: 13.5,-9.5 + - parent: 855 + pos: 10.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43450,8 +43452,8 @@ entities: - uid: 3732 type: MVWire components: - - parent: 856 - pos: 12.5,-9.5 + - parent: 855 + pos: 9.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43459,8 +43461,8 @@ entities: - uid: 3733 type: MVWire components: - - parent: 856 - pos: 11.5,-9.5 + - parent: 855 + pos: 8.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43468,8 +43470,8 @@ entities: - uid: 3734 type: MVWire components: - - parent: 856 - pos: 10.5,-9.5 + - parent: 855 + pos: 8.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43477,8 +43479,8 @@ entities: - uid: 3735 type: MVWire components: - - parent: 856 - pos: 9.5,-9.5 + - parent: 855 + pos: 8.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43486,8 +43488,8 @@ entities: - uid: 3736 type: MVWire components: - - parent: 856 - pos: 8.5,-9.5 + - parent: 855 + pos: 8.5,-12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43495,8 +43497,8 @@ entities: - uid: 3737 type: MVWire components: - - parent: 856 - pos: 8.5,-10.5 + - parent: 855 + pos: 8.5,-13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43504,8 +43506,8 @@ entities: - uid: 3738 type: MVWire components: - - parent: 856 - pos: 8.5,-11.5 + - parent: 855 + pos: 8.5,-14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43513,8 +43515,8 @@ entities: - uid: 3739 type: MVWire components: - - parent: 856 - pos: 8.5,-12.5 + - parent: 855 + pos: 8.5,-15.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43522,8 +43524,8 @@ entities: - uid: 3740 type: MVWire components: - - parent: 856 - pos: 8.5,-13.5 + - parent: 855 + pos: 8.5,-16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43531,8 +43533,8 @@ entities: - uid: 3741 type: MVWire components: - - parent: 856 - pos: 8.5,-14.5 + - parent: 855 + pos: 7.5,-16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43540,8 +43542,8 @@ entities: - uid: 3742 type: MVWire components: - - parent: 856 - pos: 8.5,-15.5 + - parent: 855 + pos: 7.5,-17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43549,8 +43551,8 @@ entities: - uid: 3743 type: MVWire components: - - parent: 856 - pos: 8.5,-16.5 + - parent: 855 + pos: 15.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43558,8 +43560,8 @@ entities: - uid: 3744 type: MVWire components: - - parent: 856 - pos: 7.5,-16.5 + - parent: 855 + pos: 15.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43567,8 +43569,8 @@ entities: - uid: 3745 type: MVWire components: - - parent: 856 - pos: 7.5,-17.5 + - parent: 855 + pos: 15.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43576,8 +43578,8 @@ entities: - uid: 3746 type: MVWire components: - - parent: 856 - pos: 15.5,-8.5 + - parent: 855 + pos: 15.5,-5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43585,8 +43587,8 @@ entities: - uid: 3747 type: MVWire components: - - parent: 856 - pos: 15.5,-7.5 + - parent: 855 + pos: 15.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43594,8 +43596,8 @@ entities: - uid: 3748 type: MVWire components: - - parent: 856 - pos: 15.5,-6.5 + - parent: 855 + pos: 15.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43603,8 +43605,8 @@ entities: - uid: 3749 type: MVWire components: - - parent: 856 - pos: 15.5,-5.5 + - parent: 855 + pos: 15.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43612,8 +43614,8 @@ entities: - uid: 3750 type: MVWire components: - - parent: 856 - pos: 15.5,-4.5 + - parent: 855 + pos: 15.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43621,8 +43623,8 @@ entities: - uid: 3751 type: MVWire components: - - parent: 856 - pos: 15.5,-3.5 + - parent: 855 + pos: 15.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43630,8 +43632,8 @@ entities: - uid: 3752 type: MVWire components: - - parent: 856 - pos: 15.5,-2.5 + - parent: 855 + pos: 15.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43639,8 +43641,8 @@ entities: - uid: 3753 type: MVWire components: - - parent: 856 - pos: 15.5,-1.5 + - parent: 855 + pos: 15.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43648,8 +43650,8 @@ entities: - uid: 3754 type: MVWire components: - - parent: 856 - pos: 15.5,-0.5 + - parent: 855 + pos: 16.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43657,8 +43659,8 @@ entities: - uid: 3755 type: MVWire components: - - parent: 856 - pos: 15.5,0.5 + - parent: 855 + pos: 16.5,2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43666,8 +43668,8 @@ entities: - uid: 3756 type: MVWire components: - - parent: 856 - pos: 15.5,1.5 + - parent: 855 + pos: -0.5,-22.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43675,8 +43677,8 @@ entities: - uid: 3757 type: MVWire components: - - parent: 856 - pos: 16.5,1.5 + - parent: 855 + pos: -0.5,-21.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43684,8 +43686,8 @@ entities: - uid: 3758 type: MVWire components: - - parent: 856 - pos: 16.5,2.5 + - parent: 855 + pos: -0.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43693,8 +43695,8 @@ entities: - uid: 3759 type: MVWire components: - - parent: 856 - pos: -0.5,-22.5 + - parent: 855 + pos: -16.5,15.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43702,8 +43704,8 @@ entities: - uid: 3760 type: MVWire components: - - parent: 856 - pos: -0.5,-21.5 + - parent: 855 + pos: -1.5,-19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43711,8 +43713,8 @@ entities: - uid: 3761 type: MVWire components: - - parent: 856 - pos: -0.5,-20.5 + - parent: 855 + pos: -1.5,-18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43720,8 +43722,8 @@ entities: - uid: 3762 type: MVWire components: - - parent: 856 - pos: -16.5,15.5 + - parent: 855 + pos: -1.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43729,8 +43731,8 @@ entities: - uid: 3763 type: MVWire components: - - parent: 856 - pos: -1.5,-19.5 + - parent: 855 + pos: -2.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43738,8 +43740,8 @@ entities: - uid: 3764 type: MVWire components: - - parent: 856 - pos: -1.5,-18.5 + - parent: 855 + pos: -3.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43747,8 +43749,8 @@ entities: - uid: 3765 type: MVWire components: - - parent: 856 - pos: -1.5,-20.5 + - parent: 855 + pos: -4.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43756,8 +43758,8 @@ entities: - uid: 3766 type: MVWire components: - - parent: 856 - pos: -2.5,-20.5 + - parent: 855 + pos: -5.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43765,8 +43767,8 @@ entities: - uid: 3767 type: MVWire components: - - parent: 856 - pos: -3.5,-20.5 + - parent: 855 + pos: -6.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43774,8 +43776,8 @@ entities: - uid: 3768 type: MVWire components: - - parent: 856 - pos: -4.5,-20.5 + - parent: 855 + pos: -7.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43783,8 +43785,8 @@ entities: - uid: 3769 type: MVWire components: - - parent: 856 - pos: -5.5,-20.5 + - parent: 855 + pos: -8.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43792,8 +43794,8 @@ entities: - uid: 3770 type: MVWire components: - - parent: 856 - pos: -6.5,-20.5 + - parent: 855 + pos: -9.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43801,8 +43803,8 @@ entities: - uid: 3771 type: MVWire components: - - parent: 856 - pos: -7.5,-20.5 + - parent: 855 + pos: -9.5,-21.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43810,8 +43812,8 @@ entities: - uid: 3772 type: MVWire components: - - parent: 856 - pos: -8.5,-20.5 + - parent: 855 + pos: -10.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43819,8 +43821,8 @@ entities: - uid: 3773 type: MVWire components: - - parent: 856 - pos: -9.5,-20.5 + - parent: 855 + pos: -11.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43828,8 +43830,8 @@ entities: - uid: 3774 type: MVWire components: - - parent: 856 - pos: -9.5,-21.5 + - parent: 855 + pos: -12.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43837,8 +43839,8 @@ entities: - uid: 3775 type: MVWire components: - - parent: 856 - pos: -10.5,-20.5 + - parent: 855 + pos: -13.5,-20.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43846,8 +43848,8 @@ entities: - uid: 3776 type: MVWire components: - - parent: 856 - pos: -11.5,-20.5 + - parent: 855 + pos: -13.5,-19.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43855,8 +43857,8 @@ entities: - uid: 3777 type: MVWire components: - - parent: 856 - pos: -12.5,-20.5 + - parent: 855 + pos: -13.5,-18.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43864,8 +43866,8 @@ entities: - uid: 3778 type: MVWire components: - - parent: 856 - pos: -13.5,-20.5 + - parent: 855 + pos: -13.5,-17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43873,8 +43875,8 @@ entities: - uid: 3779 type: MVWire components: - - parent: 856 - pos: -13.5,-19.5 + - parent: 855 + pos: -14.5,-17.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43882,8 +43884,8 @@ entities: - uid: 3780 type: MVWire components: - - parent: 856 - pos: -13.5,-18.5 + - parent: 855 + pos: -14.5,-16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43891,8 +43893,8 @@ entities: - uid: 3781 type: MVWire components: - - parent: 856 - pos: -13.5,-17.5 + - parent: 855 + pos: 0.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43900,8 +43902,8 @@ entities: - uid: 3782 type: MVWire components: - - parent: 856 - pos: -14.5,-17.5 + - parent: 855 + pos: 0.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43909,8 +43911,8 @@ entities: - uid: 3783 type: MVWire components: - - parent: 856 - pos: -14.5,-16.5 + - parent: 855 + pos: 0.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43918,8 +43920,8 @@ entities: - uid: 3784 type: MVWire components: - - parent: 856 - pos: 0.5,-6.5 + - parent: 855 + pos: -0.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43927,8 +43929,8 @@ entities: - uid: 3785 type: MVWire components: - - parent: 856 - pos: 0.5,-7.5 + - parent: 855 + pos: -1.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43936,8 +43938,8 @@ entities: - uid: 3786 type: MVWire components: - - parent: 856 - pos: 0.5,-8.5 + - parent: 855 + pos: -1.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43945,8 +43947,8 @@ entities: - uid: 3787 type: MVWire components: - - parent: 856 - pos: -0.5,-8.5 + - parent: 855 + pos: -2.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43954,8 +43956,8 @@ entities: - uid: 3788 type: MVWire components: - - parent: 856 - pos: -1.5,-8.5 + - parent: 855 + pos: -3.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43963,8 +43965,8 @@ entities: - uid: 3789 type: MVWire components: - - parent: 856 - pos: -1.5,-9.5 + - parent: 855 + pos: -4.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43972,8 +43974,8 @@ entities: - uid: 3790 type: MVWire components: - - parent: 856 - pos: -2.5,-9.5 + - parent: 855 + pos: -5.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43981,8 +43983,8 @@ entities: - uid: 3791 type: MVWire components: - - parent: 856 - pos: -3.5,-9.5 + - parent: 855 + pos: -5.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43990,8 +43992,8 @@ entities: - uid: 3792 type: MVWire components: - - parent: 856 - pos: -4.5,-9.5 + - parent: 855 + pos: -6.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -43999,8 +44001,8 @@ entities: - uid: 3793 type: MVWire components: - - parent: 856 - pos: -5.5,-9.5 + - parent: 855 + pos: -7.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44008,8 +44010,8 @@ entities: - uid: 3794 type: MVWire components: - - parent: 856 - pos: -5.5,-8.5 + - parent: 855 + pos: -8.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44017,8 +44019,8 @@ entities: - uid: 3795 type: MVWire components: - - parent: 856 - pos: -6.5,-9.5 + - parent: 855 + pos: -9.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44026,8 +44028,8 @@ entities: - uid: 3796 type: MVWire components: - - parent: 856 - pos: -7.5,-9.5 + - parent: 855 + pos: -9.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44035,8 +44037,8 @@ entities: - uid: 3797 type: MVWire components: - - parent: 856 - pos: -8.5,-9.5 + - parent: 855 + pos: -9.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44044,8 +44046,8 @@ entities: - uid: 3798 type: MVWire components: - - parent: 856 - pos: -9.5,-9.5 + - parent: 855 + pos: -9.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44053,8 +44055,8 @@ entities: - uid: 3799 type: MVWire components: - - parent: 856 - pos: -9.5,-8.5 + - parent: 855 + pos: -10.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44062,8 +44064,8 @@ entities: - uid: 3800 type: MVWire components: - - parent: 856 - pos: -9.5,-7.5 + - parent: 855 + pos: -11.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44071,8 +44073,8 @@ entities: - uid: 3801 type: MVWire components: - - parent: 856 - pos: -9.5,-6.5 + - parent: 855 + pos: -12.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44080,8 +44082,8 @@ entities: - uid: 3802 type: MVWire components: - - parent: 856 - pos: -10.5,-6.5 + - parent: 855 + pos: -12.5,-5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44089,8 +44091,8 @@ entities: - uid: 3803 type: MVWire components: - - parent: 856 - pos: -11.5,-6.5 + - parent: 855 + pos: -12.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44098,8 +44100,8 @@ entities: - uid: 3804 type: MVWire components: - - parent: 856 - pos: -12.5,-6.5 + - parent: 855 + pos: -12.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44107,8 +44109,8 @@ entities: - uid: 3805 type: MVWire components: - - parent: 856 - pos: -12.5,-5.5 + - parent: 855 + pos: -12.5,-2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44116,8 +44118,8 @@ entities: - uid: 3806 type: MVWire components: - - parent: 856 - pos: -12.5,-4.5 + - parent: 855 + pos: -12.5,-1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44125,8 +44127,8 @@ entities: - uid: 3807 type: MVWire components: - - parent: 856 - pos: -12.5,-3.5 + - parent: 855 + pos: -12.5,-0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44134,8 +44136,8 @@ entities: - uid: 3808 type: MVWire components: - - parent: 856 - pos: -12.5,-2.5 + - parent: 855 + pos: -12.5,0.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44143,8 +44145,8 @@ entities: - uid: 3809 type: MVWire components: - - parent: 856 - pos: -12.5,-1.5 + - parent: 855 + pos: -12.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44152,8 +44154,8 @@ entities: - uid: 3810 type: MVWire components: - - parent: 856 - pos: -12.5,-0.5 + - parent: 855 + pos: -11.5,1.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44161,8 +44163,8 @@ entities: - uid: 3811 type: MVWire components: - - parent: 856 - pos: -12.5,0.5 + - parent: 855 + pos: -11.5,2.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44170,8 +44172,8 @@ entities: - uid: 3812 type: MVWire components: - - parent: 856 - pos: -12.5,1.5 + - parent: 855 + pos: -21.5,-10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44179,8 +44181,8 @@ entities: - uid: 3813 type: MVWire components: - - parent: 856 - pos: -11.5,1.5 + - parent: 855 + pos: -21.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44188,8 +44190,8 @@ entities: - uid: 3814 type: MVWire components: - - parent: 856 - pos: -11.5,2.5 + - parent: 855 + pos: -21.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44197,8 +44199,8 @@ entities: - uid: 3815 type: MVWire components: - - parent: 856 - pos: -21.5,-10.5 + - parent: 855 + pos: -20.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44206,8 +44208,8 @@ entities: - uid: 3816 type: MVWire components: - - parent: 856 - pos: -21.5,-9.5 + - parent: 855 + pos: -19.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44215,8 +44217,8 @@ entities: - uid: 3817 type: MVWire components: - - parent: 856 - pos: -21.5,-8.5 + - parent: 855 + pos: -18.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44224,8 +44226,8 @@ entities: - uid: 3818 type: MVWire components: - - parent: 856 - pos: -20.5,-8.5 + - parent: 855 + pos: -17.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44233,8 +44235,8 @@ entities: - uid: 3819 type: MVWire components: - - parent: 856 - pos: -19.5,-8.5 + - parent: 855 + pos: -17.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44242,8 +44244,8 @@ entities: - uid: 3820 type: MVWire components: - - parent: 856 - pos: -18.5,-8.5 + - parent: 855 + pos: -16.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44251,8 +44253,8 @@ entities: - uid: 3821 type: MVWire components: - - parent: 856 - pos: -17.5,-8.5 + - parent: 855 + pos: -15.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44260,8 +44262,8 @@ entities: - uid: 3822 type: MVWire components: - - parent: 856 - pos: -17.5,-9.5 + - parent: 855 + pos: -14.5,-9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44269,8 +44271,8 @@ entities: - uid: 3823 type: MVWire components: - - parent: 856 - pos: -16.5,-9.5 + - parent: 855 + pos: -14.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44278,8 +44280,8 @@ entities: - uid: 3824 type: MVWire components: - - parent: 856 - pos: -15.5,-9.5 + - parent: 855 + pos: -22.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44287,8 +44289,8 @@ entities: - uid: 3825 type: MVWire components: - - parent: 856 - pos: -14.5,-9.5 + - parent: 855 + pos: -21.5,-11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44296,8 +44298,8 @@ entities: - uid: 3826 type: MVWire components: - - parent: 856 - pos: -14.5,-8.5 + - parent: 855 + pos: -21.5,-12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44305,8 +44307,8 @@ entities: - uid: 3827 type: MVWire components: - - parent: 856 - pos: -22.5,-8.5 + - parent: 855 + pos: -20.5,-12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44314,8 +44316,8 @@ entities: - uid: 3828 type: MVWire components: - - parent: 856 - pos: -21.5,-11.5 + - parent: 855 + pos: -23.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44323,8 +44325,8 @@ entities: - uid: 3829 type: MVWire components: - - parent: 856 - pos: -21.5,-12.5 + - parent: 855 + pos: -24.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44332,8 +44334,8 @@ entities: - uid: 3830 type: MVWire components: - - parent: 856 - pos: -20.5,-12.5 + - parent: 855 + pos: -25.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44341,8 +44343,8 @@ entities: - uid: 3831 type: MVWire components: - - parent: 856 - pos: -23.5,-8.5 + - parent: 855 + pos: -26.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44350,8 +44352,8 @@ entities: - uid: 3832 type: MVWire components: - - parent: 856 - pos: -24.5,-8.5 + - parent: 855 + pos: -27.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44359,8 +44361,8 @@ entities: - uid: 3833 type: MVWire components: - - parent: 856 - pos: -25.5,-8.5 + - parent: 855 + pos: -28.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44368,8 +44370,8 @@ entities: - uid: 3834 type: MVWire components: - - parent: 856 - pos: -26.5,-8.5 + - parent: 855 + pos: -29.5,-8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44377,8 +44379,8 @@ entities: - uid: 3835 type: MVWire components: - - parent: 856 - pos: -27.5,-8.5 + - parent: 855 + pos: -29.5,-7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44386,8 +44388,8 @@ entities: - uid: 3836 type: MVWire components: - - parent: 856 - pos: -28.5,-8.5 + - parent: 855 + pos: -29.5,-6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44395,8 +44397,8 @@ entities: - uid: 3837 type: MVWire components: - - parent: 856 - pos: -29.5,-8.5 + - parent: 855 + pos: -29.5,-5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44404,8 +44406,8 @@ entities: - uid: 3838 type: MVWire components: - - parent: 856 - pos: -29.5,-7.5 + - parent: 855 + pos: -29.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44413,8 +44415,8 @@ entities: - uid: 3839 type: MVWire components: - - parent: 856 - pos: -29.5,-6.5 + - parent: 855 + pos: -30.5,-4.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44422,8 +44424,8 @@ entities: - uid: 3840 type: MVWire components: - - parent: 856 - pos: -29.5,-5.5 + - parent: 855 + pos: -30.5,-3.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44431,8 +44433,8 @@ entities: - uid: 3841 type: MVWire components: - - parent: 856 - pos: -29.5,-4.5 + - parent: 855 + pos: -32.5,7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44440,8 +44442,8 @@ entities: - uid: 3842 type: MVWire components: - - parent: 856 - pos: -30.5,-4.5 + - parent: 855 + pos: -32.5,8.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44449,8 +44451,8 @@ entities: - uid: 3843 type: MVWire components: - - parent: 856 - pos: -30.5,-3.5 + - parent: 855 + pos: -32.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44458,8 +44460,8 @@ entities: - uid: 3844 type: MVWire components: - - parent: 856 - pos: -32.5,7.5 + - parent: 855 + pos: -33.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44467,8 +44469,8 @@ entities: - uid: 3845 type: MVWire components: - - parent: 856 - pos: -32.5,8.5 + - parent: 855 + pos: -34.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44476,8 +44478,8 @@ entities: - uid: 3846 type: MVWire components: - - parent: 856 - pos: -32.5,9.5 + - parent: 855 + pos: -35.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44485,8 +44487,8 @@ entities: - uid: 3847 type: MVWire components: - - parent: 856 - pos: -33.5,9.5 + - parent: 855 + pos: -36.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44494,8 +44496,8 @@ entities: - uid: 3848 type: MVWire components: - - parent: 856 - pos: -34.5,9.5 + - parent: 855 + pos: -37.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44503,8 +44505,8 @@ entities: - uid: 3849 type: MVWire components: - - parent: 856 - pos: -35.5,9.5 + - parent: 855 + pos: -38.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44512,8 +44514,8 @@ entities: - uid: 3850 type: MVWire components: - - parent: 856 - pos: -36.5,9.5 + - parent: 855 + pos: -38.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44521,8 +44523,8 @@ entities: - uid: 3851 type: MVWire components: - - parent: 856 - pos: -37.5,9.5 + - parent: 855 + pos: -39.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44530,8 +44532,8 @@ entities: - uid: 3852 type: MVWire components: - - parent: 856 - pos: -38.5,9.5 + - parent: 855 + pos: -39.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44539,8 +44541,8 @@ entities: - uid: 3853 type: MVWire components: - - parent: 856 - pos: -38.5,10.5 + - parent: 855 + pos: -28.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44548,8 +44550,8 @@ entities: - uid: 3854 type: MVWire components: - - parent: 856 - pos: -39.5,10.5 + - parent: 855 + pos: -31.5,9.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44557,8 +44559,8 @@ entities: - uid: 3855 type: MVWire components: - - parent: 856 - pos: -39.5,11.5 + - parent: 855 + pos: -31.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44566,8 +44568,8 @@ entities: - uid: 3856 type: MVWire components: - - parent: 856 - pos: -28.5,12.5 + - parent: 855 + pos: -31.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44575,8 +44577,8 @@ entities: - uid: 3857 type: MVWire components: - - parent: 856 - pos: -31.5,9.5 + - parent: 855 + pos: -31.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44584,8 +44586,8 @@ entities: - uid: 3858 type: MVWire components: - - parent: 856 - pos: -31.5,10.5 + - parent: 855 + pos: -31.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44593,8 +44595,8 @@ entities: - uid: 3859 type: MVWire components: - - parent: 856 - pos: -31.5,11.5 + - parent: 855 + pos: -30.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44602,8 +44604,8 @@ entities: - uid: 3860 type: MVWire components: - - parent: 856 - pos: -31.5,12.5 + - parent: 855 + pos: -29.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44611,8 +44613,8 @@ entities: - uid: 3861 type: MVWire components: - - parent: 856 - pos: -31.5,13.5 + - parent: 855 + pos: -28.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44620,8 +44622,8 @@ entities: - uid: 3862 type: MVWire components: - - parent: 856 - pos: -30.5,13.5 + - parent: 855 + pos: -15.5,16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44629,8 +44631,8 @@ entities: - uid: 3863 type: MVWire components: - - parent: 856 - pos: -29.5,13.5 + - parent: 855 + pos: -14.5,16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44638,8 +44640,8 @@ entities: - uid: 3864 type: MVWire components: - - parent: 856 - pos: -28.5,13.5 + - parent: 855 + pos: -13.5,16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44647,8 +44649,8 @@ entities: - uid: 3865 type: MVWire components: - - parent: 856 - pos: -15.5,16.5 + - parent: 855 + pos: -13.5,15.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44656,8 +44658,8 @@ entities: - uid: 3866 type: MVWire components: - - parent: 856 - pos: -14.5,16.5 + - parent: 855 + pos: -13.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44665,8 +44667,8 @@ entities: - uid: 3867 type: MVWire components: - - parent: 856 - pos: -13.5,16.5 + - parent: 855 + pos: -13.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44674,8 +44676,8 @@ entities: - uid: 3868 type: MVWire components: - - parent: 856 - pos: -13.5,15.5 + - parent: 855 + pos: -12.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44683,8 +44685,8 @@ entities: - uid: 3869 type: MVWire components: - - parent: 856 - pos: -13.5,14.5 + - parent: 855 + pos: -12.5,12.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44692,8 +44694,8 @@ entities: - uid: 3870 type: MVWire components: - - parent: 856 - pos: -13.5,13.5 + - parent: 855 + pos: -11.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44701,8 +44703,8 @@ entities: - uid: 3871 type: MVWire components: - - parent: 856 - pos: -12.5,13.5 + - parent: 855 + pos: -10.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44710,8 +44712,8 @@ entities: - uid: 3872 type: MVWire components: - - parent: 856 - pos: -12.5,12.5 + - parent: 855 + pos: -9.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44719,8 +44721,8 @@ entities: - uid: 3873 type: MVWire components: - - parent: 856 - pos: -11.5,13.5 + - parent: 855 + pos: -8.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44728,8 +44730,8 @@ entities: - uid: 3874 type: MVWire components: - - parent: 856 - pos: -10.5,13.5 + - parent: 855 + pos: -7.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44737,8 +44739,8 @@ entities: - uid: 3875 type: MVWire components: - - parent: 856 - pos: -9.5,13.5 + - parent: 855 + pos: -6.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44746,8 +44748,8 @@ entities: - uid: 3876 type: MVWire components: - - parent: 856 - pos: -8.5,13.5 + - parent: 855 + pos: -5.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44755,8 +44757,8 @@ entities: - uid: 3877 type: MVWire components: - - parent: 856 - pos: -7.5,13.5 + - parent: 855 + pos: -4.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44764,8 +44766,8 @@ entities: - uid: 3878 type: MVWire components: - - parent: 856 - pos: -6.5,13.5 + - parent: 855 + pos: -3.5,13.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44773,8 +44775,8 @@ entities: - uid: 3879 type: MVWire components: - - parent: 856 - pos: -5.5,13.5 + - parent: 855 + pos: -3.5,14.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44782,8 +44784,8 @@ entities: - uid: 3880 type: MVWire components: - - parent: 856 - pos: -4.5,13.5 + - parent: 855 + pos: -3.5,15.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44791,8 +44793,8 @@ entities: - uid: 3881 type: MVWire components: - - parent: 856 - pos: -3.5,13.5 + - parent: 855 + pos: -15.5,16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 @@ -44800,50 +44802,23 @@ entities: - uid: 3882 type: MVWire components: - - parent: 856 - pos: -3.5,14.5 - rot: -1.5707963267948966 rad - type: Transform - - deadThreshold: 100 - type: Destructible -- uid: 3883 - type: MVWire - components: - - parent: 856 - pos: -3.5,15.5 - rot: -1.5707963267948966 rad - type: Transform - - deadThreshold: 100 - type: Destructible -- uid: 3884 - type: MVWire - components: - - parent: 856 - pos: -15.5,16.5 - rot: -1.5707963267948966 rad - type: Transform - - deadThreshold: 100 - type: Destructible -- uid: 3885 - type: MVWire - components: - - parent: 856 + - parent: 855 pos: -16.5,16.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 3886 +- uid: 3883 type: solid_wall components: - - parent: 856 + - parent: 855 pos: 23.5,-9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 3887 +- uid: 3884 type: PoweredSmallLight components: - - parent: 856 + - parent: 855 pos: 22.528679,-9.003884 rot: 1.5707963267948966 rad type: Transform @@ -44853,100 +44828,125 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 3888 +- uid: 3885 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: 22.5,-7.5 rot: 1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 3889 +- uid: 3886 type: AirlockMaintMedLocked components: - - parent: 856 + - parent: 855 pos: 23.5,-10.5 rot: 1.5707963267948966 rad type: Transform -- uid: 3890 +- uid: 3887 type: AirlockMaintSecLocked components: - - parent: 856 + - parent: 855 pos: -16.5,16.5 rot: 1.5707963267948966 rad type: Transform -- uid: 3891 +- uid: 3888 type: AirlockMaintCommandLocked components: - - parent: 856 + - parent: 855 pos: 12.5,22.5 rot: 1.5707963267948966 rad type: Transform +- uid: 3889 + type: EmergencyLight + components: + - parent: 855 + pos: 44.486908,10 + rot: -1.5707963267948966 rad + type: Transform + - startingCharge: 30000 + type: Battery +- uid: 3890 + type: EmergencyLight + components: + - parent: 855 + pos: 47.22923,-3 + type: Transform + - startingCharge: 30000 + type: Battery +- uid: 3891 + type: EmergencyLight + components: + - parent: 855 + pos: 29.299644,-7.5 + type: Transform + - startingCharge: 30000 + type: Battery - uid: 3892 type: EmergencyLight components: - - parent: 856 - pos: 44.486908,10 - rot: -1.5707963267948966 rad + - parent: 855 + pos: 31.467993,-4.5 + rot: 1.5707963267948966 rad type: Transform - startingCharge: 30000 type: Battery - uid: 3893 type: EmergencyLight components: - - parent: 856 - pos: 47.22923,-3 + - parent: 855 + pos: 30.278831,9.5 type: Transform - startingCharge: 30000 type: Battery - uid: 3894 type: EmergencyLight components: - - parent: 856 - pos: 29.299644,-7.5 + - parent: 855 + pos: 18.260162,9.5 type: Transform - startingCharge: 30000 type: Battery - uid: 3895 type: EmergencyLight components: - - parent: 856 - pos: 31.467993,-4.5 - rot: 1.5707963267948966 rad + - parent: 855 + pos: 26.46292,-1 + rot: -1.5707963267948966 rad type: Transform - startingCharge: 30000 type: Battery - uid: 3896 type: EmergencyLight components: - - parent: 856 - pos: 30.278831,9.5 + - parent: 855 + pos: 17.399544,2 + rot: -1.5707963267948966 rad type: Transform - startingCharge: 30000 type: Battery - uid: 3897 type: EmergencyLight components: - - parent: 856 - pos: 18.260162,9.5 + - parent: 855 + pos: 7.2721233,-15.5 type: Transform - startingCharge: 30000 type: Battery - uid: 3898 type: EmergencyLight components: - - parent: 856 - pos: 26.46292,-1 - rot: -1.5707963267948966 rad + - parent: 855 + pos: 7.3033733,-20.5 type: Transform - startingCharge: 30000 type: Battery - uid: 3899 type: EmergencyLight components: - - parent: 856 - pos: 17.399544,2 + - parent: 855 + pos: -10.487591,2 rot: -1.5707963267948966 rad type: Transform - startingCharge: 30000 @@ -44954,220 +44954,195 @@ entities: - uid: 3900 type: EmergencyLight components: - - parent: 856 - pos: 7.2721233,-15.5 + - parent: 855 + pos: -2.7508366,15 + rot: -1.5707963267948966 rad type: Transform - startingCharge: 30000 type: Battery - uid: 3901 type: EmergencyLight components: - - parent: 856 - pos: 7.3033733,-20.5 + - parent: 855 + pos: 5.701264,16.5 + rot: 3.141592653589793 rad type: Transform - startingCharge: 30000 type: Battery - uid: 3902 type: EmergencyLight components: - - parent: 856 - pos: -10.487591,2 - rot: -1.5707963267948966 rad + - parent: 855 + pos: 6.2924953,10.5 type: Transform - startingCharge: 30000 type: Battery - uid: 3903 type: EmergencyLight components: - - parent: 856 - pos: -2.7508366,15 - rot: -1.5707963267948966 rad + - parent: 855 + pos: 12.41432,9.5 + rot: 1.5707963267948966 rad type: Transform - startingCharge: 30000 type: Battery - uid: 3904 type: EmergencyLight components: - - parent: 856 - pos: 5.701264,16.5 - rot: 3.141592653589793 rad + - parent: 855 + pos: 16.47682,3.5 + rot: 1.5707963267948966 rad type: Transform - startingCharge: 30000 type: Battery - uid: 3905 type: EmergencyLight components: - - parent: 856 - pos: 6.2924953,10.5 + - parent: 855 + pos: -24.514448,12 + rot: -1.5707963267948966 rad type: Transform - startingCharge: 30000 type: Battery - uid: 3906 type: EmergencyLight components: - - parent: 856 - pos: 12.41432,9.5 - rot: 1.5707963267948966 rad + - parent: 855 + pos: -39.802197,11.207858 type: Transform - startingCharge: 30000 type: Battery - uid: 3907 type: EmergencyLight components: - - parent: 856 - pos: 16.47682,3.5 - rot: 1.5707963267948966 rad + - parent: 855 + pos: -22.347473,-1.5 + rot: 3.141592653589793 rad type: Transform - startingCharge: 30000 type: Battery - uid: 3908 type: EmergencyLight components: - - parent: 856 - pos: -24.514448,12 - rot: -1.5707963267948966 rad + - parent: 855 + pos: -20.745232,-0.5 type: Transform - startingCharge: 30000 type: Battery - uid: 3909 type: EmergencyLight components: - - parent: 856 - pos: -39.802197,11.207858 + - parent: 855 + pos: -13.885857,-9 + rot: -1.5707963267948966 rad type: Transform - startingCharge: 30000 type: Battery - uid: 3910 - type: EmergencyLight + type: Table components: - - parent: 856 - pos: -22.347473,-1.5 - rot: 3.141592653589793 rad + - parent: 855 + pos: -2.5,-3.5 + rot: -1.5707963267948966 rad type: Transform - - startingCharge: 30000 - type: Battery - uid: 3911 type: EmergencyLight components: - - parent: 856 - pos: -20.745232,-0.5 + - parent: 855 + pos: 10.68897,19.5 + rot: 3.141592653589793 rad type: Transform - startingCharge: 30000 type: Battery - uid: 3912 type: EmergencyLight components: - - parent: 856 - pos: -13.885857,-9 - rot: -1.5707963267948966 rad + - parent: 855 + pos: 8.923345,28.5 + rot: 1.5707963267948966 rad type: Transform - startingCharge: 30000 type: Battery - uid: 3913 - type: Table + type: EmergencyLight components: - - parent: 856 - pos: -2.5,-3.5 - rot: -1.5707963267948966 rad + - parent: 855 + pos: -2.4985301,28.5 + rot: 1.5707963267948966 rad type: Transform + - startingCharge: 30000 + type: Battery - uid: 3914 type: EmergencyLight components: - - parent: 856 - pos: 10.68897,19.5 - rot: 3.141592653589793 rad + - parent: 855 + pos: -2.7641551,26.5 type: Transform - startingCharge: 30000 type: Battery - uid: 3915 type: EmergencyLight components: - - parent: 856 - pos: 8.923345,28.5 - rot: 1.5707963267948966 rad + - parent: 855 + pos: 9.704595,26.5 + rot: 3.141592653589793 rad type: Transform - startingCharge: 30000 type: Battery - uid: 3916 type: EmergencyLight components: - - parent: 856 - pos: -2.4985301,28.5 - rot: 1.5707963267948966 rad - type: Transform - - startingCharge: 30000 - type: Battery -- uid: 3917 - type: EmergencyLight - components: - - parent: 856 - pos: -2.7641551,26.5 - type: Transform - - startingCharge: 30000 - type: Battery -- uid: 3918 - type: EmergencyLight - components: - - parent: 856 - pos: 9.704595,26.5 - rot: 3.141592653589793 rad - type: Transform - - startingCharge: 30000 - type: Battery -- uid: 3919 - type: EmergencyLight - components: - - parent: 856 + - parent: 855 pos: -12.509865,6 rot: -1.5707963267948966 rad type: Transform - startingCharge: 30000 type: Battery -- uid: 3920 +- uid: 3917 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -24.5,10.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 3921 +- uid: 3918 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -24.5,11.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 3922 +- uid: 3919 type: HVWire components: - - parent: 856 + - parent: 855 pos: 41.5,7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 3923 +- uid: 3920 type: SalternGenerator components: - - parent: 856 + - parent: 855 pos: 40.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 3924 +- uid: 3921 type: SalternGenerator components: - - parent: 856 + - parent: 855 pos: 42.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 3925 +- uid: 3922 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -13.924418,16.541348 type: Transform - powerLoad: 0 @@ -45176,49 +45151,49 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer +- uid: 3923 + type: PoweredSmallLight + components: + - parent: 855 + pos: -1.4929452,19.970068 + rot: -1.5707963267948966 rad + type: Transform + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 3924 + type: PoweredSmallLight + components: + - parent: 855 + pos: -15.494916,16.030584 + rot: -1.5707963267948966 rad + type: Transform + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 3925 + type: PoweredSmallLight + components: + - parent: 855 + pos: -15.494916,16.030584 + rot: -1.5707963267948966 rad + type: Transform + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer - uid: 3926 type: PoweredSmallLight components: - - parent: 856 - pos: -1.4929452,19.970068 - rot: -1.5707963267948966 rad - type: Transform - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 3927 - type: PoweredSmallLight - components: - - parent: 856 - pos: -15.494916,16.030584 - rot: -1.5707963267948966 rad - type: Transform - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 3928 - type: PoweredSmallLight - components: - - parent: 856 - pos: -15.494916,16.030584 - rot: -1.5707963267948966 rad - type: Transform - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 3929 - type: PoweredSmallLight - components: - - parent: 856 + - parent: 855 pos: -15.494916,15.968084 rot: -1.5707963267948966 rad type: Transform @@ -45228,54 +45203,54 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 3930 +- uid: 3927 type: SalternApc components: - - parent: 856 + - parent: 855 pos: -12.5,12.5 rot: -1.5707963267948966 rad type: Transform - startingCharge: 11999.17 type: Battery -- uid: 3931 +- uid: 3928 type: EmergencyLight components: - - parent: 856 + - parent: 855 pos: -13.5,-17 rot: -1.5707963267948966 rad type: Transform - startingCharge: 30000 type: Battery -- uid: 3932 +- uid: 3929 type: EmergencyLight components: - - parent: 856 + - parent: 855 pos: -10.5,-17 rot: -1.5707963267948966 rad type: Transform - startingCharge: 30000 type: Battery -- uid: 3933 +- uid: 3930 type: EmergencyLight components: - - parent: 856 + - parent: 855 pos: 5.7693076,-15.5 rot: 3.141592653589793 rad type: Transform - startingCharge: 30000 type: Battery -- uid: 3934 +- uid: 3931 type: EmergencyLight components: - - parent: 856 + - parent: 855 pos: 2.2274737,8.5 type: Transform - startingCharge: 30000 type: Battery -- uid: 3935 +- uid: 3932 type: CrateLightBulb components: - - parent: 856 + - parent: 855 pos: 27.48989,-1.4 type: Transform - IsPlaceable: False @@ -45284,94 +45259,94 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 3936 +- uid: 3933 type: MetalStack components: - - parent: 856 + - parent: 855 pos: 47.585052,4.443361 rot: -1.5707963267948966 rad type: Transform +- uid: 3934 + type: Table + components: + - parent: 855 + pos: 46.5,4.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 3935 + type: Table + components: + - parent: 855 + pos: 48.5,4.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 3936 + type: Table + components: + - parent: 855 + pos: 47.5,4.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 3937 type: Table components: - - parent: 856 - pos: 46.5,4.5 + - parent: 855 + pos: 49.5,4.5 rot: -1.5707963267948966 rad type: Transform - uid: 3938 type: Table components: - - parent: 856 - pos: 48.5,4.5 + - parent: 855 + pos: 50.5,4.5 rot: -1.5707963267948966 rad type: Transform - uid: 3939 - type: Table + type: HVWireStack components: - - parent: 856 - pos: 47.5,4.5 + - parent: 855 + pos: 50.5,4.5 rot: -1.5707963267948966 rad type: Transform - uid: 3940 - type: Table - components: - - parent: 856 - pos: 49.5,4.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 3941 - type: Table - components: - - parent: 856 - pos: 50.5,4.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 3942 - type: HVWireStack - components: - - parent: 856 - pos: 50.5,4.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 3943 type: MVWireStack components: - - parent: 856 + - parent: 855 pos: 50.288177,4.693361 rot: -1.5707963267948966 rad type: Transform -- uid: 3944 +- uid: 3941 type: ApcExtensionCableStack components: - - parent: 856 + - parent: 855 pos: 50.053802,4.474611 rot: -1.5707963267948966 rad type: Transform -- uid: 3945 +- uid: 3942 type: GlassStack components: - - parent: 856 + - parent: 855 pos: 49.131927,4.677736 rot: -1.5707963267948966 rad type: Transform -- uid: 3946 +- uid: 3943 type: GlassStack components: - - parent: 856 + - parent: 855 pos: 48.788177,4.505861 rot: -1.5707963267948966 rad type: Transform -- uid: 3947 +- uid: 3944 type: MetalStack components: - - parent: 856 + - parent: 855 pos: 48.038177,4.677736 rot: -1.5707963267948966 rad type: Transform -- uid: 3948 +- uid: 3945 type: CrateGeneric components: - - parent: 856 + - parent: 855 pos: 45.585052,4.6 rot: 1.5707963267948966 rad type: Transform @@ -45381,31 +45356,31 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 3949 +- uid: 3946 type: Crowbar components: - - parent: 856 + - parent: 855 pos: -29.463713,8.897233 rot: 1.5707963267948966 rad type: Transform -- uid: 3950 +- uid: 3947 type: Crowbar components: - - parent: 856 + - parent: 855 pos: -15.314676,-12.357978 rot: 1.5707963267948966 rad type: Transform -- uid: 3951 +- uid: 3948 type: Crowbar components: - - parent: 856 + - parent: 855 pos: -15.502176,-11.748603 rot: 1.5707963267948966 rad type: Transform -- uid: 3952 +- uid: 3949 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -22.00058,-5.6251965 rot: 3.141592653589793 rad type: Transform @@ -45415,25 +45390,56 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 3953 +- uid: 3950 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: 3.5,0.5 type: Transform - deadThreshold: 100 type: Destructible -- uid: 3954 +- uid: 3951 type: ApcExtensionCable components: - - parent: 978 + - parent: 977 type: Transform - deadThreshold: 100 type: Destructible +- uid: 3952 + type: FirelockGlass + components: + - parent: 978 + rot: -1.5707963267948966 rad + type: Transform + - on: False + type: Physics + - airBlocked: False + type: Airtight +- uid: 3953 + type: ApcExtensionCable + components: + - parent: 855 + pos: 8.5,20.5 + rot: 3.141592653589793 rad + type: Transform + - deadThreshold: 100 + type: Destructible +- uid: 3954 + type: FirelockGlass + components: + - parent: 855 + pos: -36.5,1.5 + rot: -1.5707963267948966 rad + type: Transform + - on: False + type: Physics + - airBlocked: False + type: Airtight - uid: 3955 type: FirelockGlass components: - - parent: 979 + - parent: 855 + pos: -35.5,1.5 rot: -1.5707963267948966 rad type: Transform - on: False @@ -45443,46 +45449,15 @@ entities: - uid: 3956 type: ApcExtensionCable components: - - parent: 856 - pos: 8.5,20.5 - rot: 3.141592653589793 rad + - parent: 855 + pos: 3.5,1.5 type: Transform - deadThreshold: 100 type: Destructible - uid: 3957 type: FirelockGlass components: - - parent: 856 - pos: -36.5,1.5 - rot: -1.5707963267948966 rad - type: Transform - - on: False - type: Physics - - airBlocked: False - type: Airtight -- uid: 3958 - type: FirelockGlass - components: - - parent: 856 - pos: -35.5,1.5 - rot: -1.5707963267948966 rad - type: Transform - - on: False - type: Physics - - airBlocked: False - type: Airtight -- uid: 3959 - type: ApcExtensionCable - components: - - parent: 856 - pos: 3.5,1.5 - type: Transform - - deadThreshold: 100 - type: Destructible -- uid: 3960 - type: FirelockGlass - components: - - parent: 856 + - parent: 855 pos: 5.5,0.5 rot: -1.5707963267948966 rad type: Transform @@ -45490,10 +45465,10 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 3961 +- uid: 3958 type: Firelock components: - - parent: 856 + - parent: 855 pos: -4.5,-27.5 rot: -1.5707963267948966 rad type: Transform @@ -45503,10 +45478,10 @@ entities: type: Airtight - enabled: False type: Occluder -- uid: 3962 +- uid: 3959 type: Firelock components: - - parent: 856 + - parent: 855 pos: -4.5,-26.5 rot: -1.5707963267948966 rad type: Transform @@ -45516,10 +45491,10 @@ entities: type: Airtight - enabled: False type: Occluder -- uid: 3963 +- uid: 3960 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: -26.5,3.5 rot: -1.5707963267948966 rad type: Transform @@ -45527,10 +45502,10 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 3964 +- uid: 3961 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: -21.5,3.5 rot: -1.5707963267948966 rad type: Transform @@ -45538,10 +45513,10 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 3965 +- uid: 3962 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: -21.5,4.5 rot: -1.5707963267948966 rad type: Transform @@ -45549,26 +45524,26 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 3966 +- uid: 3963 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: 2.5,0.5 type: Transform - deadThreshold: 100 type: Destructible -- uid: 3967 +- uid: 3964 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: 1.5,0.5 type: Transform - deadThreshold: 100 type: Destructible -- uid: 3968 +- uid: 3965 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: 2.5,-12.5 rot: -1.5707963267948966 rad type: Transform @@ -45576,10 +45551,10 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 3969 +- uid: 3966 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: -26.5,4.5 rot: -1.5707963267948966 rad type: Transform @@ -45587,10 +45562,10 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 3970 +- uid: 3967 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: -26.5,5.5 rot: -1.5707963267948966 rad type: Transform @@ -45598,10 +45573,10 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 3971 +- uid: 3968 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: -21.5,5.5 rot: -1.5707963267948966 rad type: Transform @@ -45609,27 +45584,27 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 3972 +- uid: 3969 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -31.5,5.5 type: Transform - deadThreshold: 100 type: Destructible -- uid: 3973 +- uid: 3970 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: 7.5,20.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 3974 +- uid: 3971 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: -7.5,7.5 rot: -1.5707963267948966 rad type: Transform @@ -45637,10 +45612,10 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 3975 +- uid: 3972 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: -4.5,5.5 rot: -1.5707963267948966 rad type: Transform @@ -45648,28 +45623,28 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 3976 +- uid: 3973 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -30.5,5.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 3977 +- uid: 3974 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -23.5,5.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 3978 +- uid: 3975 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: 1.5,-2.5 rot: -1.5707963267948966 rad type: Transform @@ -45677,10 +45652,10 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 3979 +- uid: 3976 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: 1.5,-1.5 rot: -1.5707963267948966 rad type: Transform @@ -45688,19 +45663,19 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 3980 +- uid: 3977 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: 12.5,-8.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 3981 +- uid: 3978 type: DisposalPipe components: - - parent: 856 + - parent: 855 pos: 25.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -45710,10 +45685,10 @@ entities: DisposalTransit: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 3982 +- uid: 3979 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: 15.5,-3.5 rot: 3.141592653589793 rad type: Transform @@ -45721,46 +45696,46 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 3983 +- uid: 3980 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: 2.5,6.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 3984 +- uid: 3981 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -26.5,7.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 3985 +- uid: 3982 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -26.5,6.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 3986 +- uid: 3983 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -21.5,13.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 3987 +- uid: 3984 type: Firelock components: - - parent: 856 + - parent: 855 pos: -19.5,-11.5 rot: -1.5707963267948966 rad type: Transform @@ -45770,53 +45745,53 @@ entities: type: Airtight - enabled: False type: Occluder +- uid: 3985 + type: ApcExtensionCable + components: + - parent: 855 + pos: -26.5,6.5 + rot: -1.5707963267948966 rad + type: Transform + - deadThreshold: 100 + type: Destructible +- uid: 3986 + type: ApcExtensionCable + components: + - parent: 855 + pos: -26.5,5.5 + rot: -1.5707963267948966 rad + type: Transform + - deadThreshold: 100 + type: Destructible +- uid: 3987 + type: solid_wall + components: + - parent: 855 + pos: -25.5,7.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 3988 type: ApcExtensionCable components: - - parent: 856 - pos: -26.5,6.5 - rot: -1.5707963267948966 rad + - parent: 855 + pos: 3.5,6.5 + rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible - uid: 3989 type: ApcExtensionCable components: - - parent: 856 - pos: -26.5,5.5 - rot: -1.5707963267948966 rad - type: Transform - - deadThreshold: 100 - type: Destructible -- uid: 3990 - type: solid_wall - components: - - parent: 856 - pos: -25.5,7.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 3991 - type: ApcExtensionCable - components: - - parent: 856 - pos: 3.5,6.5 - rot: 3.141592653589793 rad - type: Transform - - deadThreshold: 100 - type: Destructible -- uid: 3992 - type: ApcExtensionCable - components: - - parent: 856 + - parent: 855 pos: 4.5,6.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 3993 +- uid: 3990 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: 1.5,0.5 rot: -1.5707963267948966 rad type: Transform @@ -45824,10 +45799,10 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 3994 +- uid: 3991 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: 1.5,-0.5 rot: -1.5707963267948966 rad type: Transform @@ -45835,19 +45810,19 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 3995 +- uid: 3992 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: 12.5,-9.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 3996 +- uid: 3993 type: Firelock components: - - parent: 856 + - parent: 855 pos: 22.5,-19.5 rot: -1.5707963267948966 rad type: Transform @@ -45857,10 +45832,10 @@ entities: type: Airtight - enabled: False type: Occluder -- uid: 3997 +- uid: 3994 type: Firelock components: - - parent: 856 + - parent: 855 pos: -6.5,-9.5 rot: -1.5707963267948966 rad type: Transform @@ -45870,10 +45845,10 @@ entities: type: Airtight - enabled: False type: Occluder -- uid: 3998 +- uid: 3995 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: -2.5,2.5 rot: -1.5707963267948966 rad type: Transform @@ -45881,10 +45856,10 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 3999 +- uid: 3996 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: -3.5,2.5 rot: -1.5707963267948966 rad type: Transform @@ -45892,25 +45867,60 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 4000 +- uid: 3997 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -32.5,-8.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 4001 +- uid: 3998 type: CommsComputerCircuitboard components: - - parent: 985 + - parent: 984 type: Transform +- uid: 3999 + type: FirelockGlass + components: + - parent: 855 + pos: -37.5,1.5 + rot: -1.5707963267948966 rad + type: Transform + - on: False + type: Physics + - airBlocked: False + type: Airtight +- uid: 4000 + type: Firelock + components: + - parent: 855 + pos: -32.5,-9.5 + rot: -1.5707963267948966 rad + type: Transform + - on: False + type: Physics + - airBlocked: False + type: Airtight + - enabled: False + type: Occluder +- uid: 4001 + type: FirelockGlass + components: + - parent: 855 + pos: -24.5,7.5 + rot: -1.5707963267948966 rad + type: Transform + - on: False + type: Physics + - airBlocked: False + type: Airtight - uid: 4002 type: FirelockGlass components: - - parent: 856 - pos: -37.5,1.5 + - parent: 855 + pos: -23.5,7.5 rot: -1.5707963267948966 rad type: Transform - on: False @@ -45920,8 +45930,8 @@ entities: - uid: 4003 type: Firelock components: - - parent: 856 - pos: -32.5,-9.5 + - parent: 855 + pos: -6.5,-10.5 rot: -1.5707963267948966 rad type: Transform - on: False @@ -45933,8 +45943,8 @@ entities: - uid: 4004 type: FirelockGlass components: - - parent: 856 - pos: -24.5,7.5 + - parent: 855 + pos: -1.5,2.5 rot: -1.5707963267948966 rad type: Transform - on: False @@ -45944,8 +45954,8 @@ entities: - uid: 4005 type: FirelockGlass components: - - parent: 856 - pos: -23.5,7.5 + - parent: 855 + pos: -0.5,2.5 rot: -1.5707963267948966 rad type: Transform - on: False @@ -45953,23 +45963,21 @@ entities: - airBlocked: False type: Airtight - uid: 4006 - type: Firelock + type: FirelockGlass components: - - parent: 856 - pos: -6.5,-10.5 + - parent: 855 + pos: -23.5,1.5 rot: -1.5707963267948966 rad type: Transform - on: False type: Physics - airBlocked: False type: Airtight - - enabled: False - type: Occluder - uid: 4007 type: FirelockGlass components: - - parent: 856 - pos: -1.5,2.5 + - parent: 855 + pos: -33.5,3.5 rot: -1.5707963267948966 rad type: Transform - on: False @@ -45979,8 +45987,8 @@ entities: - uid: 4008 type: FirelockGlass components: - - parent: 856 - pos: -0.5,2.5 + - parent: 855 + pos: -33.5,4.5 rot: -1.5707963267948966 rad type: Transform - on: False @@ -45990,40 +45998,7 @@ entities: - uid: 4009 type: FirelockGlass components: - - parent: 856 - pos: -23.5,1.5 - rot: -1.5707963267948966 rad - type: Transform - - on: False - type: Physics - - airBlocked: False - type: Airtight -- uid: 4010 - type: FirelockGlass - components: - - parent: 856 - pos: -33.5,3.5 - rot: -1.5707963267948966 rad - type: Transform - - on: False - type: Physics - - airBlocked: False - type: Airtight -- uid: 4011 - type: FirelockGlass - components: - - parent: 856 - pos: -33.5,4.5 - rot: -1.5707963267948966 rad - type: Transform - - on: False - type: Physics - - airBlocked: False - type: Airtight -- uid: 4012 - type: FirelockGlass - components: - - parent: 856 + - parent: 855 pos: -33.5,5.5 rot: -1.5707963267948966 rad type: Transform @@ -46031,25 +46006,25 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 4013 +- uid: 4010 type: Spoon components: - - parent: 856 + - parent: 855 pos: -6.275527,-0.41787672 type: Transform -- uid: 4014 +- uid: 4011 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -32.5,-7.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 4015 +- uid: 4012 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: 36.5,5.5 rot: 3.141592653589793 rad type: Transform @@ -46057,10 +46032,10 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 4016 +- uid: 4013 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: 36.5,4.5 rot: 3.141592653589793 rad type: Transform @@ -46068,10 +46043,10 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 4017 +- uid: 4014 type: Firelock components: - - parent: 856 + - parent: 855 pos: 13.5,-19.5 rot: -1.5707963267948966 rad type: Transform @@ -46081,15 +46056,15 @@ entities: type: Airtight - enabled: False type: Occluder -- uid: 4018 +- uid: 4015 type: ResearchComputerCircuitboard components: - - parent: 1064 + - parent: 1062 type: Transform -- uid: 4019 +- uid: 4016 type: Firelock components: - - parent: 856 + - parent: 855 pos: 13.5,-20.5 rot: -1.5707963267948966 rad type: Transform @@ -46099,19 +46074,52 @@ entities: type: Airtight - enabled: False type: Occluder -- uid: 4020 - type: LowWall +- uid: 4017 + type: solid_wall components: - - parent: 856 - pos: 12.5,-12.5 + - parent: 855 + pos: 16.5,-14.5 rot: -1.5707963267948966 rad type: Transform +- uid: 4018 + type: FirelockGlass + components: + - parent: 855 + pos: -15.5,0.5 + rot: 3.141592653589793 rad + type: Transform + - on: False + type: Physics + - airBlocked: False + type: Airtight +- uid: 4019 + type: FirelockGlass + components: + - parent: 855 + pos: 5.5,-1.5 + rot: -1.5707963267948966 rad + type: Transform + - on: False + type: Physics + - airBlocked: False + type: Airtight +- uid: 4020 + type: FirelockGlass + components: + - parent: 855 + pos: 5.5,-0.5 + rot: -1.5707963267948966 rad + type: Transform + - on: False + type: Physics + - airBlocked: False + type: Airtight - uid: 4021 type: FirelockGlass components: - - parent: 856 - pos: -15.5,0.5 - rot: 3.141592653589793 rad + - parent: 855 + pos: 5.5,-2.5 + rot: -1.5707963267948966 rad type: Transform - on: False type: Physics @@ -46120,8 +46128,8 @@ entities: - uid: 4022 type: FirelockGlass components: - - parent: 856 - pos: 5.5,-1.5 + - parent: 855 + pos: -4.5,4.5 rot: -1.5707963267948966 rad type: Transform - on: False @@ -46131,40 +46139,7 @@ entities: - uid: 4023 type: FirelockGlass components: - - parent: 856 - pos: 5.5,-0.5 - rot: -1.5707963267948966 rad - type: Transform - - on: False - type: Physics - - airBlocked: False - type: Airtight -- uid: 4024 - type: FirelockGlass - components: - - parent: 856 - pos: 5.5,-2.5 - rot: -1.5707963267948966 rad - type: Transform - - on: False - type: Physics - - airBlocked: False - type: Airtight -- uid: 4025 - type: FirelockGlass - components: - - parent: 856 - pos: -4.5,4.5 - rot: -1.5707963267948966 rad - type: Transform - - on: False - type: Physics - - airBlocked: False - type: Airtight -- uid: 4026 - type: FirelockGlass - components: - - parent: 856 + - parent: 855 pos: -4.5,3.5 rot: -1.5707963267948966 rad type: Transform @@ -46172,10 +46147,10 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 4027 +- uid: 4024 type: Firelock components: - - parent: 856 + - parent: 855 pos: 37.5,-5.5 rot: 3.141592653589793 rad type: Transform @@ -46185,10 +46160,10 @@ entities: type: Airtight - enabled: False type: Occluder -- uid: 4028 +- uid: 4025 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: 0.5,-14.5 rot: 3.141592653589793 rad type: Transform @@ -46196,10 +46171,10 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 4029 +- uid: 4026 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: 13.5,0.5 rot: 3.141592653589793 rad type: Transform @@ -46207,19 +46182,19 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 4030 +- uid: 4027 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: 23.5,-18.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 4031 +- uid: 4028 type: Firelock components: - - parent: 856 + - parent: 855 pos: -33.5,-9.5 rot: -1.5707963267948966 rad type: Transform @@ -46229,10 +46204,10 @@ entities: type: Airtight - enabled: False type: Occluder -- uid: 4032 +- uid: 4029 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: -24.5,1.5 rot: -1.5707963267948966 rad type: Transform @@ -46240,15 +46215,15 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 4033 +- uid: 4030 type: SupplyRequestComputerCircuitboard components: - - parent: 964 + - parent: 963 type: Transform -- uid: 4034 +- uid: 4031 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: 3.5,15.5 rot: 3.141592653589793 rad type: Transform @@ -46256,10 +46231,10 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 4035 +- uid: 4032 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: 4.5,15.5 rot: 3.141592653589793 rad type: Transform @@ -46267,10 +46242,10 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 4036 +- uid: 4033 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: 2.5,15.5 rot: 3.141592653589793 rad type: Transform @@ -46278,10 +46253,10 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 4037 +- uid: 4034 type: Firelock components: - - parent: 856 + - parent: 855 pos: 25.5,-1.5 rot: -1.5707963267948966 rad type: Transform @@ -46291,10 +46266,10 @@ entities: type: Airtight - enabled: False type: Occluder -- uid: 4038 +- uid: 4035 type: Firelock components: - - parent: 856 + - parent: 855 pos: 25.5,-2.5 rot: -1.5707963267948966 rad type: Transform @@ -46304,10 +46279,10 @@ entities: type: Airtight - enabled: False type: Occluder -- uid: 4039 +- uid: 4036 type: Firelock components: - - parent: 856 + - parent: 855 pos: -10.5,-7.5 rot: -1.5707963267948966 rad type: Transform @@ -46317,29 +46292,62 @@ entities: type: Airtight - enabled: False type: Occluder -- uid: 4040 +- uid: 4037 type: ComfyChair components: - - parent: 856 + - parent: 855 pos: -8.5,-29.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4041 +- uid: 4038 type: CommsComputerCircuitboard components: - - parent: 997 + - parent: 996 type: Transform -- uid: 4042 +- uid: 4039 type: Fork components: - - parent: 856 + - parent: 855 pos: -3.6817768,-0.5116267 type: Transform +- uid: 4040 + type: FirelockGlass + components: + - parent: 855 + pos: -10.5,1.5 + rot: 3.141592653589793 rad + type: Transform + - on: False + type: Physics + - airBlocked: False + type: Airtight +- uid: 4041 + type: FirelockGlass + components: + - parent: 855 + pos: -10.5,0.5 + rot: 3.141592653589793 rad + type: Transform + - on: False + type: Physics + - airBlocked: False + type: Airtight +- uid: 4042 + type: FirelockGlass + components: + - parent: 855 + pos: 15.5,8.5 + rot: 3.141592653589793 rad + type: Transform + - on: False + type: Physics + - airBlocked: False + type: Airtight - uid: 4043 type: FirelockGlass components: - - parent: 856 - pos: -10.5,1.5 + - parent: 855 + pos: 36.5,3.5 rot: 3.141592653589793 rad type: Transform - on: False @@ -46349,8 +46357,8 @@ entities: - uid: 4044 type: FirelockGlass components: - - parent: 856 - pos: -10.5,0.5 + - parent: 855 + pos: -10.5,11.5 rot: 3.141592653589793 rad type: Transform - on: False @@ -46360,8 +46368,8 @@ entities: - uid: 4045 type: FirelockGlass components: - - parent: 856 - pos: 15.5,8.5 + - parent: 855 + pos: -10.5,10.5 rot: 3.141592653589793 rad type: Transform - on: False @@ -46371,40 +46379,7 @@ entities: - uid: 4046 type: FirelockGlass components: - - parent: 856 - pos: 36.5,3.5 - rot: 3.141592653589793 rad - type: Transform - - on: False - type: Physics - - airBlocked: False - type: Airtight -- uid: 4047 - type: FirelockGlass - components: - - parent: 856 - pos: -10.5,11.5 - rot: 3.141592653589793 rad - type: Transform - - on: False - type: Physics - - airBlocked: False - type: Airtight -- uid: 4048 - type: FirelockGlass - components: - - parent: 856 - pos: -10.5,10.5 - rot: 3.141592653589793 rad - type: Transform - - on: False - type: Physics - - airBlocked: False - type: Airtight -- uid: 4049 - type: FirelockGlass - components: - - parent: 856 + - parent: 855 pos: -10.5,-0.5 rot: 3.141592653589793 rad type: Transform @@ -46412,10 +46387,10 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 4050 +- uid: 4047 type: Firelock components: - - parent: 856 + - parent: 855 pos: 38.5,-5.5 rot: 3.141592653589793 rad type: Transform @@ -46425,10 +46400,10 @@ entities: type: Airtight - enabled: False type: Occluder -- uid: 4051 +- uid: 4048 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: 0.5,-15.5 rot: 3.141592653589793 rad type: Transform @@ -46436,10 +46411,10 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 4052 +- uid: 4049 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: 4.5,-12.5 rot: -1.5707963267948966 rad type: Transform @@ -46447,10 +46422,10 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 4053 +- uid: 4050 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: 3.5,-12.5 rot: -1.5707963267948966 rad type: Transform @@ -46458,10 +46433,10 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 4054 +- uid: 4051 type: Firelock components: - - parent: 856 + - parent: 855 pos: 11.5,14.5 rot: 3.141592653589793 rad type: Transform @@ -46471,10 +46446,10 @@ entities: type: Airtight - enabled: False type: Occluder -- uid: 4055 +- uid: 4052 type: Firelock components: - - parent: 856 + - parent: 855 pos: -17.5,17.5 rot: 3.141592653589793 rad type: Transform @@ -46484,10 +46459,10 @@ entities: type: Airtight - enabled: False type: Occluder -- uid: 4056 +- uid: 4053 type: Firelock components: - - parent: 856 + - parent: 855 pos: -10.5,-6.5 rot: -1.5707963267948966 rad type: Transform @@ -46497,46 +46472,46 @@ entities: type: Airtight - enabled: False type: Occluder -- uid: 4057 +- uid: 4054 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -18.5,13.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 4058 +- uid: 4055 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -17.5,13.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 4059 +- uid: 4056 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -17.5,14.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 4060 +- uid: 4057 type: HVWire components: - - parent: 856 + - parent: 855 pos: -5.5,-26.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 4061 +- uid: 4058 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: 11.5,3.5 rot: 3.141592653589793 rad type: Transform @@ -46544,19 +46519,19 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 4062 +- uid: 4059 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -5.5,-26.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 4063 +- uid: 4060 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: 11.5,5.5 rot: 3.141592653589793 rad type: Transform @@ -46564,19 +46539,19 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 4064 +- uid: 4061 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -4.5,-26.5 rot: -1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 4065 +- uid: 4062 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: 11.5,4.5 rot: 3.141592653589793 rad type: Transform @@ -46584,36 +46559,36 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 4066 +- uid: 4063 type: PlushieCarp components: - - parent: 856 + - parent: 855 pos: -4.134902,-3.2616267 type: Transform -- uid: 4067 +- uid: 4064 type: PianoInstrument components: - - parent: 856 + - parent: 855 pos: 0.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4068 +- uid: 4065 type: FoodMint components: - - parent: 856 + - parent: 855 pos: -2.5880268,-3.3710017 type: Transform -- uid: 4069 - type: Window +- uid: 4066 + type: solid_wall components: - - parent: 856 - pos: 12.5,-12.5 + - parent: 855 + pos: 15.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4070 +- uid: 4067 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: -8.5,6.5 rot: -1.5707963267948966 rad type: Transform @@ -46621,10 +46596,10 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 4071 +- uid: 4068 type: FirelockGlass components: - - parent: 856 + - parent: 855 pos: -7.5,8.5 rot: -1.5707963267948966 rad type: Transform @@ -46632,19 +46607,19 @@ entities: type: Physics - airBlocked: False type: Airtight -- uid: 4072 +- uid: 4069 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -20.5,13.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 4073 +- uid: 4070 type: Firelock components: - - parent: 856 + - parent: 855 pos: 21.5,-19.5 rot: -1.5707963267948966 rad type: Transform @@ -46654,20 +46629,55 @@ entities: type: Airtight - enabled: False type: Occluder -- uid: 4074 +- uid: 4071 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -8.5,-7.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible +- uid: 4072 + type: ApcExtensionCable + components: + - parent: 855 + pos: -32.5,-6.5 + rot: 3.141592653589793 rad + type: Transform + - deadThreshold: 100 + type: Destructible +- uid: 4073 + type: Firelock + components: + - parent: 855 + pos: -10.5,24.5 + rot: 3.141592653589793 rad + type: Transform + - on: False + type: Physics + - airBlocked: False + type: Airtight + - enabled: False + type: Occluder +- uid: 4074 + type: Firelock + components: + - parent: 855 + pos: -10.5,25.5 + rot: 3.141592653589793 rad + type: Transform + - on: False + type: Physics + - airBlocked: False + type: Airtight + - enabled: False + type: Occluder - uid: 4075 type: ApcExtensionCable components: - - parent: 856 - pos: -32.5,-6.5 + - parent: 855 + pos: -26.5,4.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 @@ -46675,8 +46685,8 @@ entities: - uid: 4076 type: Firelock components: - - parent: 856 - pos: -10.5,24.5 + - parent: 855 + pos: -18.5,17.5 rot: 3.141592653589793 rad type: Transform - on: False @@ -46688,42 +46698,7 @@ entities: - uid: 4077 type: Firelock components: - - parent: 856 - pos: -10.5,25.5 - rot: 3.141592653589793 rad - type: Transform - - on: False - type: Physics - - airBlocked: False - type: Airtight - - enabled: False - type: Occluder -- uid: 4078 - type: ApcExtensionCable - components: - - parent: 856 - pos: -26.5,4.5 - rot: 3.141592653589793 rad - type: Transform - - deadThreshold: 100 - type: Destructible -- uid: 4079 - type: Firelock - components: - - parent: 856 - pos: -18.5,17.5 - rot: 3.141592653589793 rad - type: Transform - - on: False - type: Physics - - airBlocked: False - type: Airtight - - enabled: False - type: Occluder -- uid: 4080 - type: Firelock - components: - - parent: 856 + - parent: 855 pos: 27.5,-11.5 rot: -1.5707963267948966 rad type: Transform @@ -46733,10 +46708,10 @@ entities: type: Airtight - enabled: False type: Occluder -- uid: 4081 +- uid: 4078 type: Firelock components: - - parent: 856 + - parent: 855 pos: 26.5,-11.5 rot: -1.5707963267948966 rad type: Transform @@ -46746,376 +46721,376 @@ entities: type: Airtight - enabled: False type: Occluder -- uid: 4082 +- uid: 4079 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -19.5,13.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 4083 +- uid: 4080 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: 0.5,6.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 4084 +- uid: 4081 type: ApcExtensionCable components: - - parent: 856 + - parent: 855 pos: -0.5,6.5 rot: 3.141592653589793 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 4085 +- uid: 4082 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -3.5,-7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4086 +- uid: 4083 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -4.5,-7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4087 +- uid: 4084 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -5.5,-7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4088 +- uid: 4085 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -8.5,-7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4089 +- uid: 4086 type: MVWire components: - - parent: 856 + - parent: 855 pos: -5.5,-7.5 rot: 1.5707963267948966 rad type: Transform - deadThreshold: 100 type: Destructible -- uid: 4090 +- uid: 4087 type: EmergencyLight components: - - parent: 856 + - parent: 855 pos: -4.4964724,-8 rot: -1.5707963267948966 rad type: Transform -- uid: 4091 +- uid: 4088 type: AirlockMaintCommon components: - - parent: 856 + - parent: 855 pos: -8.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4092 +- uid: 4089 type: Table components: - - parent: 856 + - parent: 855 pos: -3.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4093 +- uid: 4090 type: Table components: - - parent: 856 + - parent: 855 pos: -4.5,-6.5 rot: -1.5707963267948966 rad type: Transform +- uid: 4091 + type: StoolBar + components: + - parent: 855 + pos: -6.5,-2.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 4092 + type: StoolBar + components: + - parent: 855 + pos: -5.5,-2.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 4093 + type: StoolBar + components: + - parent: 855 + pos: -4.5,-2.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 4094 type: StoolBar components: - - parent: 856 - pos: -6.5,-2.5 + - parent: 855 + pos: -3.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 4095 type: StoolBar components: - - parent: 856 - pos: -5.5,-2.5 + - parent: 855 + pos: -2.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 4096 - type: StoolBar + type: solid_wall components: - - parent: 856 - pos: -4.5,-2.5 + - parent: 855 + pos: -26.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 4097 - type: StoolBar + type: solid_wall components: - - parent: 856 - pos: -3.5,-2.5 + - parent: 855 + pos: -27.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 4098 - type: StoolBar + type: solid_wall components: - - parent: 856 - pos: -2.5,-2.5 + - parent: 855 + pos: -28.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 4099 type: solid_wall components: - - parent: 856 - pos: -26.5,-0.5 + - parent: 855 + pos: -29.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 4100 type: solid_wall components: - - parent: 856 - pos: -27.5,-0.5 + - parent: 855 + pos: -30.5,-0.5 rot: -1.5707963267948966 rad type: Transform - uid: 4101 type: solid_wall components: - - parent: 856 - pos: -28.5,-0.5 + - parent: 855 + pos: -26.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 4102 type: solid_wall components: - - parent: 856 - pos: -29.5,-0.5 + - parent: 855 + pos: -27.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 4103 type: solid_wall components: - - parent: 856 - pos: -30.5,-0.5 + - parent: 855 + pos: -28.5,-3.5 rot: -1.5707963267948966 rad type: Transform - uid: 4104 type: solid_wall components: - - parent: 856 - pos: -26.5,-3.5 + - parent: 855 + pos: -31.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 4105 type: solid_wall components: - - parent: 856 - pos: -27.5,-3.5 + - parent: 855 + pos: -26.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 4106 type: solid_wall components: - - parent: 856 - pos: -28.5,-3.5 + - parent: 855 + pos: -27.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 4107 type: solid_wall components: - - parent: 856 - pos: -31.5,-6.5 + - parent: 855 + pos: -28.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 4108 type: solid_wall components: - - parent: 856 - pos: -26.5,-6.5 + - parent: 855 + pos: -29.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 4109 type: solid_wall components: - - parent: 856 - pos: -27.5,-6.5 + - parent: 855 + pos: -30.5,-6.5 rot: -1.5707963267948966 rad type: Transform - uid: 4110 - type: solid_wall + type: AirlockMaintCommon components: - - parent: 856 - pos: -28.5,-6.5 + - parent: 855 + pos: -31.5,-7.5 rot: -1.5707963267948966 rad type: Transform - uid: 4111 - type: solid_wall + type: Catwalk components: - - parent: 856 - pos: -29.5,-6.5 + - parent: 855 + pos: -32.5,-7.5 rot: -1.5707963267948966 rad type: Transform - uid: 4112 type: solid_wall components: - - parent: 856 - pos: -30.5,-6.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 4113 - type: AirlockMaintCommon - components: - - parent: 856 - pos: -31.5,-7.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 4114 - type: Catwalk - components: - - parent: 856 - pos: -32.5,-7.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 4115 - type: solid_wall - components: - - parent: 856 + - parent: 855 pos: -26.5,-1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4116 +- uid: 4113 type: solid_wall components: - - parent: 856 + - parent: 855 pos: -26.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4117 +- uid: 4114 type: Airlock components: - name: Dorms 1 type: MetaData - - parent: 856 + - parent: 855 pos: -26.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4118 +- uid: 4115 type: Airlock components: - name: Dorms 2 type: MetaData - - parent: 856 + - parent: 855 pos: -26.5,-2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4119 +- uid: 4116 type: Airlock components: - name: Dorms 3 type: MetaData - - parent: 856 + - parent: 855 pos: -26.5,-5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4120 +- uid: 4117 type: SalternApc components: - - parent: 856 + - parent: 855 pos: -30.517641,-3.5 rot: 3.141592653589793 rad type: Transform - startingCharge: 11999.17 type: Battery -- uid: 4121 +- uid: 4118 type: Bed components: - - parent: 856 + - parent: 855 pos: -27.5,-1.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4122 +- uid: 4119 type: Bed components: - - parent: 856 + - parent: 855 pos: -27.5,1.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4123 +- uid: 4120 type: Bed components: - - parent: 856 + - parent: 855 + pos: -27.5,-4.5 + rot: 1.5707963267948966 rad + type: Transform +- uid: 4121 + type: BedsheetNT + components: + - parent: 855 + pos: -27.5,1.5 + rot: 1.5707963267948966 rad + type: Transform +- uid: 4122 + type: BedsheetNT + components: + - parent: 855 + pos: -27.5,-1.5 + rot: 1.5707963267948966 rad + type: Transform +- uid: 4123 + type: BedsheetNT + components: + - parent: 855 pos: -27.5,-4.5 rot: 1.5707963267948966 rad type: Transform - uid: 4124 - type: BedsheetNT - components: - - parent: 856 - pos: -27.5,1.5 - rot: 1.5707963267948966 rad - type: Transform -- uid: 4125 - type: BedsheetNT - components: - - parent: 856 - pos: -27.5,-1.5 - rot: 1.5707963267948966 rad - type: Transform -- uid: 4126 - type: BedsheetNT - components: - - parent: 856 - pos: -27.5,-4.5 - rot: 1.5707963267948966 rad - type: Transform -- uid: 4127 type: TableWood components: - - parent: 856 + - parent: 855 pos: -30.5,-4.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4128 +- uid: 4125 type: TableWood components: - - parent: 856 + - parent: 855 pos: -30.5,-1.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4129 +- uid: 4126 type: TableWood components: - - parent: 856 + - parent: 855 pos: -30.5,1.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4130 +- uid: 4127 type: ChairWood components: - - parent: 856 + - parent: 855 pos: -30.5,-5.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4131 +- uid: 4128 type: ChairWood components: - - parent: 856 + - parent: 855 pos: -30.5,-2.5 rot: 1.5707963267948966 rad type: Transform -- uid: 4132 +- uid: 4129 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -26,-0.5 type: Transform - powerLoad: 0 @@ -47124,10 +47099,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4133 +- uid: 4130 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 46.5,5 rot: -1.5707963267948966 rad type: Transform @@ -47137,10 +47112,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4134 +- uid: 4131 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 38.5,10 rot: -1.5707963267948966 rad type: Transform @@ -47150,136 +47125,136 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4135 +- uid: 4132 type: CarpetGreen components: - - parent: 856 + - parent: 855 pos: -29.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4136 +- uid: 4133 type: CarpetGreen components: - - parent: 856 + - parent: 855 pos: -29.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4137 +- uid: 4134 type: CarpetGreen components: - - parent: 856 + - parent: 855 pos: -28.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4138 +- uid: 4135 type: CarpetGreen components: - - parent: 856 + - parent: 855 pos: -28.5,0.5 rot: -1.5707963267948966 rad type: Transform +- uid: 4136 + type: CarpetGay + components: + - parent: 855 + pos: -29.5,-4.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 4137 + type: CarpetGay + components: + - parent: 855 + pos: -29.5,-5.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 4138 + type: CarpetGay + components: + - parent: 855 + pos: -28.5,-4.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 4139 type: CarpetGay components: - - parent: 856 - pos: -29.5,-4.5 + - parent: 855 + pos: -28.5,-5.5 rot: -1.5707963267948966 rad type: Transform - uid: 4140 - type: CarpetGay + type: CarpetBlue components: - - parent: 856 - pos: -29.5,-5.5 + - parent: 855 + pos: -29.5,-1.5 rot: -1.5707963267948966 rad type: Transform - uid: 4141 - type: CarpetGay + type: CarpetBlue components: - - parent: 856 - pos: -28.5,-4.5 + - parent: 855 + pos: -29.5,-2.5 rot: -1.5707963267948966 rad type: Transform - uid: 4142 - type: CarpetGay + type: CarpetBlue components: - - parent: 856 - pos: -28.5,-5.5 + - parent: 855 + pos: -28.5,-1.5 rot: -1.5707963267948966 rad type: Transform - uid: 4143 type: CarpetBlue components: - - parent: 856 - pos: -29.5,-1.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 4144 - type: CarpetBlue - components: - - parent: 856 - pos: -29.5,-2.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 4145 - type: CarpetBlue - components: - - parent: 856 - pos: -28.5,-1.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 4146 - type: CarpetBlue - components: - - parent: 856 + - parent: 855 pos: -28.5,-2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4147 +- uid: 4144 type: MaskJoy components: - - parent: 856 + - parent: 855 pos: 13.418978,24.555822 rot: -1.5707963267948966 rad type: Transform -- uid: 4148 +- uid: 4145 type: TableR components: - - parent: 856 + - parent: 855 pos: 15.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 4149 +- uid: 4146 type: Bed components: - - parent: 856 + - parent: 855 pos: -2.5,7.5 rot: -1.5707963267948966 rad type: Transform +- uid: 4147 + type: Bed + components: + - parent: 855 + pos: 0.5,7.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 4148 + type: BedsheetOrange + components: + - parent: 855 + pos: -2.5,7.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 4149 + type: BedsheetOrange + components: + - parent: 855 + pos: 0.5,7.5 + rot: -1.5707963267948966 rad + type: Transform - uid: 4150 - type: Bed - components: - - parent: 856 - pos: 0.5,7.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 4151 - type: BedsheetOrange - components: - - parent: 856 - pos: -2.5,7.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 4152 - type: BedsheetOrange - components: - - parent: 856 - pos: 0.5,7.5 - rot: -1.5707963267948966 rad - type: Transform -- uid: 4153 type: LockerGeneric components: - - parent: 856 + - parent: 855 pos: -3.5,8.5 rot: -1.5707963267948966 rad type: Transform @@ -47289,10 +47264,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 4154 +- uid: 4151 type: LockerGeneric components: - - parent: 856 + - parent: 855 pos: -0.5,8.5 rot: -1.5707963267948966 rad type: Transform @@ -47302,10 +47277,10 @@ entities: EntityStorageComponent: type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 4155 +- uid: 4152 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -31,-1.5 type: Transform - powerLoad: 0 @@ -47314,10 +47289,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4156 +- uid: 4153 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -31,1.5 type: Transform - powerLoad: 0 @@ -47326,10 +47301,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4157 +- uid: 4154 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -31,-4.5 type: Transform - powerLoad: 0 @@ -47338,10 +47313,10 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4158 +- uid: 4155 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: 12.5,25 rot: -1.5707963267948966 rad type: Transform @@ -47349,23 +47324,17 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 4159 - type: Poweredlight +- uid: 4156 + type: Rack components: - - parent: 856 - pos: -5.5,2 + - parent: 855 + pos: 31.5,-4.5 rot: -1.5707963267948966 rad type: Transform - - powerLoad: 0 - type: PowerReceiver - - containers: - light_bulb: - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 4160 +- uid: 4157 type: Poweredlight components: - - parent: 856 + - parent: 855 pos: -8,-4.5 type: Transform - powerLoad: 0 @@ -47374,4 +47343,255 @@ entities: light_bulb: type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer +- uid: 4158 + type: hydroponicsTray + components: + - parent: 855 + pos: -18.5,1.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 4159 + type: hydroponicsTray + components: + - parent: 855 + pos: -19.5,1.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 4160 + type: hydroponicsTray + components: + - parent: 855 + pos: -20.5,1.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 4161 + type: hydroponicsTray + components: + - parent: 855 + pos: -20.5,0.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 4162 + type: hydroponicsTray + components: + - parent: 855 + pos: -20.5,-0.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 4163 + type: hydroponicsTray + components: + - parent: 855 + pos: -19.5,-0.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 4164 + type: hydroponicsTray + components: + - parent: 855 + pos: -18.5,-0.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 4165 + type: solid_wall + components: + - parent: 855 + pos: 16.5,-13.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 4166 + type: solid_wall + components: + - parent: 855 + pos: 12.5,-12.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 4167 + type: solid_wall + components: + - parent: 855 + pos: 13.5,-12.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 4168 + type: Morgue + components: + - parent: 855 + pos: 12.5,-13.5 + type: Transform + - containers: + EntityStorageComponent: + type: Robust.Server.GameObjects.Components.Container.Container + morgue_tray: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 4169 + type: Morgue + components: + - parent: 855 + pos: 12.5,-14.5 + type: Transform + - containers: + EntityStorageComponent: + type: Robust.Server.GameObjects.Components.Container.Container + morgue_tray: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 4170 + type: Morgue + components: + - parent: 855 + pos: 12.5,-15.5 + type: Transform + - containers: + EntityStorageComponent: + type: Robust.Server.GameObjects.Components.Container.Container + morgue_tray: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 4171 + type: Morgue + components: + - parent: 855 + pos: 12.5,-16.5 + type: Transform + - containers: + EntityStorageComponent: + type: Robust.Server.GameObjects.Components.Container.Container + morgue_tray: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 4172 + type: Morgue + components: + - parent: 855 + pos: 12.5,-17.5 + type: Transform + - containers: + EntityStorageComponent: + type: Robust.Server.GameObjects.Components.Container.Container + morgue_tray: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 4173 + type: SignMorgue + components: + - parent: 855 + pos: 17.313038,-12.573634 + type: Transform + - deadThreshold: 100 + type: Destructible +- uid: 4174 + type: TableMetal + components: + - parent: 855 + pos: 14.5,-13.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 4175 + type: TableMetal + components: + - parent: 855 + pos: 15.5,-13.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 4176 + type: BodyBag_Item + components: + - parent: 855 + pos: 14.446062,-13.212488 + rot: -1.5707963267948966 rad + type: Transform +- uid: 4177 + type: BodyBag_Item + components: + - parent: 855 + pos: 14.992937,-13.196863 + rot: -1.5707963267948966 rad + type: Transform +- uid: 4178 + type: BodyBag_Item + components: + - parent: 855 + pos: 15.539812,-13.181238 + rot: -1.5707963267948966 rad + type: Transform +- uid: 4179 + type: AirlockMedicalLocked + components: + - name: Morgue + type: MetaData + - parent: 855 + pos: 16.5,-15.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 4180 + type: computerBodyScanner + components: + - parent: 855 + pos: 10.5,-13.5 + rot: -1.5707963267948966 rad + type: Transform + - deadThreshold: 100 + type: BreakableConstruction + - containers: + board: + entities: + - 4181 + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer +- uid: 4181 + type: BodyScannerComputerCircuitboard + components: + - parent: 4180 + type: Transform +- uid: 4182 + type: Rack + components: + - parent: 855 + pos: 29.5,-4.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 4183 + type: BarSign + components: + - parent: 855 + pos: -5.5,2.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 4184 + type: SignBar + components: + - parent: 855 + pos: 0.7031777,2.4187772 + rot: -1.5707963267948966 rad + type: Transform + - deadThreshold: 100 + type: Destructible +- uid: 4185 + type: Poweredlight + components: + - parent: 855 + pos: -9.5,2 + rot: -1.5707963267948966 rad + type: Transform + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 4186 + type: Poweredlight + components: + - parent: 855 + pos: 1.5,1 + rot: -1.5707963267948966 rad + type: Transform + - powerLoad: 0 + type: PowerReceiver + - containers: + light_bulb: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer ... diff --git a/Resources/Prototypes/Atmospherics/gases.yml b/Resources/Prototypes/Atmospherics/gases.yml index 0e414ec304..a337e11985 100644 --- a/Resources/Prototypes/Atmospherics/gases.yml +++ b/Resources/Prototypes/Atmospherics/gases.yml @@ -2,24 +2,32 @@ id: 0 name: Oxygen specificHeat: 20 + heatCapacityRatio: 1.4 + molarMass: 32 color: 2887E8 - type: gas id: 1 name: Nitrogen specificHeat: 30 + heatCapacityRatio: 1.4 + molarMass: 28 color: DA1010 - type: gas id: 2 name: Carbon Dioxide specificHeat: 30 + heatCapacityRatio: 1.3 + molarMass: 44 color: 4e4e4e - type: gas id: 3 name: Phoron specificHeat: 200 + heatCapacityRatio: 1.7 + molarMass: 120 #creadth: making it very heavy (x4 of oxygen), idk what the proper value should be gasOverlaySprite: /Textures/Effects/atmospherics.rsi gasOverlayState: phoron color: FF3300 @@ -28,6 +36,8 @@ id: 4 name: Tritium specificHeat: 10 + heatCapacityRatio: 1.3 + molarMass: 6 gasOverlaySprite: /Textures/Effects/atmospherics.rsi gasOverlayState: tritium color: 13FF4B @@ -36,6 +46,8 @@ id: 5 name: Water Vapor specificHeat: 40 + heatCapacityRatio: 1.33 + molarMass: 18 gasOverlaySprite: /Textures/Effects/atmospherics.rsi gasOverlayState: water_vapor color: bffffd diff --git a/Resources/Prototypes/Catalog/Fills/lockers.yml b/Resources/Prototypes/Catalog/Fills/lockers.yml index 1262d869a8..7bb7414e36 100644 --- a/Resources/Prototypes/Catalog/Fills/lockers.yml +++ b/Resources/Prototypes/Catalog/Fills/lockers.yml @@ -1,18 +1,3 @@ -- type: entity - id: LockerJanitor - parent: WardrobeMixed - name: "custodial closet" - description: "It's a storage unit for janitorial clothes and gear." - components: - - type: StorageFill - contents: - - name: MopItem - - name: MopBucket - - name: WetFloorSign - amount: 3 - - name: TrashBag - amount: 2 - - type: entity id: LockerToolFilled parent: LockerTool @@ -62,15 +47,10 @@ prob: 0.4 - name: BreathMaskClothing prob: 0.25 - # TODO: uncomment when we actually have these items. - #- name: TankOxygenSmallFilled - # prob: 0.4s - #- name: TankOxygenSmallFilled - # prob: 0.25 - #- name: MedkitOxygenFilled - # prob: 0.25 - #- name: TankOxygenFilled - # prob: 0.2 + - name: EmergencyOxygenTankFilled + prob: 0.4 + - name: OxygenTankFilled + prob: 0.2 - type: entity id: LockerBoozeFilled @@ -96,6 +76,13 @@ id: LockerChiefEngineerFilled suffix: Filled parent: LockerChiefEngineer + components: + - type: StorageFill + contents: + - name: HelmetHardsuitCE + - name: HardsuitCE + - name: BreathMaskClothing + - name: OxygenTankFilled - type: entity id: LockerElectricalSuppliesFilled @@ -111,11 +98,25 @@ id: LockerAtmosphericsFilled suffix: Filled parent: LockerAtmospherics + components: + - type: StorageFill + contents: + - name: HelmetHardsuitAtmos + - name: HardsuitAtmos + - name: BreathMaskClothing + - name: OxygenTankFilled - type: entity id: LockerEngineerFilled suffix: Filled parent: LockerEngineer + components: + - type: StorageFill + contents: + - name: HelmetHardsuitEngineering + - name: HardsuitEngineering + - name: BreathMaskClothing + - name: OxygenTankFilled - type: entity id: LockerBotanistFilled @@ -131,6 +132,11 @@ id: LockerMedicalFilled suffix: Filled parent: LockerMedical + components: + - type: StorageFill + contents: + - name: GlovesLatex + prob: 0.4 - type: entity id: LockerChemistryFilled @@ -162,6 +168,7 @@ suffix: Filled parent: LockerSecurity +# Before adding to this - See https://github.com/space-wizards/space-station-14/pull/2427#issuecomment-718152557 - type: entity id: LockerDetectiveFilled suffix: Filled @@ -176,11 +183,27 @@ id: LockerChefFilled suffix: Filled parent: LockerChef + components: + - type: StorageFill + contents: + - name: CrowbarRed + - name: FoodContainerMonkeyCubeBox + - name: SprayBottleWater + - name: ReagentContainerFlour - type: entity id: LockerJanitorFilled suffix: Filled parent: LockerJanitor + components: + - type: StorageFill + contents: + - name: MopItem + - name: MopBucket + - name: WetFloorSign + amount: 3 + - name: TrashBag + amount: 2 - type: entity id: LockerLegalFilled @@ -216,6 +239,11 @@ id: WardrobeMedicalDoctorFilled suffix: Filled parent: WardrobeMedicalDoctor + components: + - type: StorageFill + contents: + - name: GlovesLatex + prob: 0.4 - type: entity id: WardrobeRoboticsFilled @@ -286,11 +314,23 @@ id: LockerRadiationSuitFilled parent: LockerRadiationSuit suffix: Filled +# at time of writing, rad suits do nothing, let's not get anyone's hopes up +# components: +# - type: StorageFill +# contents: +# - name: OuterclothingRadSuit - type: entity id: LockerFireFilled parent: LockerFire suffix: Filled + components: + - type: StorageFill + contents: + - name: RedOxygenTankFilled + prob: 0.6 + - name: OuterclothingFiresuit + prob: 0.75 - type: entity id: WardrobePajama diff --git a/Resources/Prototypes/Entities/Clothing/Back/gas_tanks.yml b/Resources/Prototypes/Entities/Clothing/Back/gas_tanks.yml new file mode 100644 index 0000000000..489c820463 --- /dev/null +++ b/Resources/Prototypes/Entities/Clothing/Back/gas_tanks.yml @@ -0,0 +1,314 @@ +- type: entity + parent: BaseItem + abstract: true + id: GasTankBase + name: Gas Tank + description: It's a gas tank. It contains gas. + components: + - type: Sprite + sprite: Objects/Tanks/generic.rsi + state: icon + - type: UserInterface + interfaces: + - key: enum.SharedGasTankUiKey.Key + type: GasTankBoundUserInterface + - type: Clothing + sprite: Objects/Tanks/generic.rsi + QuickEquip: false + Slots: + - Back + - Belt + - type: GasTank + +- type: entity + id: OxygenTank + parent: GasTankBase + name: oxygen tank + description: A tank of oxygen. + suffix: Empty + components: + - type: Sprite + sprite: Objects/Tanks/oxygen.rsi + state: icon + - type: GasTank + outputPressure: 21.27825 + air: + volume: 70 + temperature: 293.15 + - type: Clothing + sprite: Objects/Tanks/oxygen.rsi + Slots: + - Back + - Belt + +- type: entity + id: OxygenTankFilled + parent: OxygenTank + name: oxygen tank + description: A tank of oxygen. + suffix: Filled + components: + - type: GasTank + outputPressure: 21.27825 + air: + volume: 70 + moles: + - 22.6293856 # oxygen + temperature: 293.15 + +- type: entity + id: YellowOxygenTank + parent: OxygenTank + name: oxygen tank + description: A tank of oxygen. This one is in yellow. + suffix: Empty + components: + - type: Sprite + sprite: Objects/Tanks/yellow.rsi + state: icon + - type: Clothing + sprite: Objects/Tanks/yellow.rsi + Slots: + - Back + - Belt + +- type: entity + id: YellowOxygenTankFilled + parent: OxygenTankFilled + name: oxygen tank + description: A tank of oxygen. This one is in yellow. + suffix: Filled + components: + - type: Sprite + sprite: Objects/Tanks/yellow.rsi + state: icon + - type: Clothing + sprite: Objects/Tanks/yellow.rsi + Slots: + - Back + - Belt + +- type: entity + id: RedOxygenTank + parent: OxygenTank + name: oxygen tank + description: A tank of oxygen. This one is in yellow. + suffix: Empty + components: + - type: Sprite + sprite: Objects/Tanks/red.rsi + state: icon + - type: Clothing + sprite: Objects/Tanks/red.rsi + Slots: + - Back + - Belt + +- type: entity + id: RedOxygenTankFilled + parent: OxygenTankFilled + name: oxygen tank + description: A tank of oxygen. This one is in yellow. + suffix: Filled + components: + - type: Sprite + sprite: Objects/Tanks/red.rsi + state: icon + - type: Clothing + sprite: Objects/Tanks/red.rsi + Slots: + - Back + - Belt + +- type: entity + id: EmergencyOxygenTank + parent: OxygenTank + name: emergency oxygen tank + description: Used for emergencies. Contains very little oxygen, so try to conserve it until you actually need it. + suffix: Empty + components: + - type: Sprite + sprite: Objects/Tanks/emergency.rsi + state: icon + - type: GasTank + outputPressure: 21.27825 + air: + volume: 2 + temperature: 293.15 + - type: Clothing + sprite: Objects/Tanks/emergency.rsi + Slots: + - Back + - Pocket + - Belt + +- type: entity + id: EmergencyOxygenTankFilled + parent: EmergencyOxygenTank + name: emergency oxygen tank + description: Used for emergencies. Contains very little oxygen, so try to conserve it until you actually need it. + suffix: Filled + components: + - type: GasTank + outputPressure: 21.27825 + air: + volume: 2 + moles: + - 0.323460326 # oxygen + temperature: 293.15 + +- type: entity + id: ExtendedEmergencyOxygenTank + parent: EmergencyOxygenTank + name: extended-capacity emergency oxygen tank + description: Used for emergencies. Contains very little oxygen, so try to conserve it until you actually need it. + suffix: Empty + components: + - type: Sprite + sprite: Objects/Tanks/emergency_yellow.rsi + state: icon + - type: GasTank + outputPressure: 21.27825 + air: + volume: 6 + temperature: 293.15 + - type: Clothing + sprite: Objects/Tanks/emergency_yellow.rsi + Slots: + - Back + - Pocket + - Belt + +- type: entity + id: ExtendedEmergencyOxygenTankFilled + parent: ExtendedEmergencyOxygenTank + name: extended-capacity emergency oxygen tank + description: Used for emergencies. Contains very little oxygen, so try to conserve it until you actually need it. + suffix: Filled + components: + - type: GasTank + outputPressure: 21.27825 + air: + volume: 6 + moles: + - 0.969830813 # oxygen + temperature: 293.15 + +- type: entity + id: DoubleEmergencyOxygenTank + parent: ExtendedEmergencyOxygenTank + name: double emergency oxygen tank + description: Used for emergencies. Contains very little oxygen, so try to conserve it until you actually need it. + suffix: Empty + components: + - type: Sprite + sprite: Objects/Tanks/emergency_double.rsi + state: icon + - type: GasTank + outputPressure: 21.27825 + air: + volume: 10 + temperature: 293.15 + - type: Clothing + sprite: Objects/Tanks/emergency_double.rsi + Slots: + - Back + - Pocket + - Belt + +- type: entity + id: DoubleEmergencyOxygenTankFilled + parent: DoubleEmergencyOxygenTank + name: double emergency oxygen tank + description: Used for emergencies. Contains very little oxygen, so try to conserve it until you actually need it. + suffix: Filled + components: + - type: GasTank + outputPressure: 21.27825 + air: + volume: 10 + moles: + - 1.61721219 # oxygen + temperature: 293.15 + +- type: entity + id: AirTank + parent: GasTankBase + name: air tank + description: Mixed anyone? + suffix: Empty + components: + - type: Sprite + sprite: Objects/Tanks/generic.rsi + state: icon + - type: GasTank + outputPressure: 101.325 + air: + volume: 70 + temperature: 293.15 + - type: Clothing + sprite: Objects/Tanks/generic.rsi + Slots: + - Back + - Belt + +- type: entity + id: AirTankFilled + parent: GasTankBase + name: air tank + description: Mixed anyone? + suffix: Filled + components: + - type: Sprite + sprite: Objects/Tanks/generic.rsi + state: icon + - type: GasTank + outputPressure: 101.325 + air: + volume: 70 + moles: + - 4.75217098 # oxygen + - 17.8772147 # nitrogen + temperature: 293.15 + - type: Clothing + sprite: Objects/Tanks/generic.rsi + Slots: + - Back + - Belt + +- type: entity + id: PhoronTank + parent: GasTankBase + name: phoron tank + suffix: Empty + description: "Contains dangerous phoron. Do not inhale. Warning: extremely flammable." + components: + - type: Sprite + sprite: Objects/Tanks/phoron.rsi + state: icon + - type: GasTank + outputPressure: 101.325 + air: + volume: 70 + temperature: 293.15 + - type: Clothing + sprite: Objects/Tanks/phoron.rsi + Slots: [] # no straps + +- type: entity + id: PhoronTankFilled + parent: PhoronTank + name: phoron tank + suffix: Filled + description: "Contains dangerous phoron. Do not inhale. Warning: extremely flammable." + components: + - type: GasTank + outputPressure: 101.325 + air: + volume: 70 + moles: + - 0 + - 0 + - 0 + - 11.3146928 # phoron + temperature: 293.15 diff --git a/Resources/Prototypes/Entities/Clothing/Head/hats.yml b/Resources/Prototypes/Entities/Clothing/Head/hats.yml index e0b4e4bd6f..c812f0e4b8 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/hats.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/hats.yml @@ -290,26 +290,26 @@ - type: entity parent: HatBase id: HatCake - name: cake + name: cake hat description: You put the cake on your head. Brilliant. components: - type: Sprite - sprite: Clothing/Head/cake0.rsi + sprite: Clothing/Head/cake.rsi - type: Clothing - sprite: Clothing/Head/cake0.rsi + sprite: Clothing/Head/cake.rsi - type: entity parent: HatBase - id: HatCakeLit - name: cake (lit) - description: You put this lit cake on your head. Perfect. + id: HatPumpkin + name: pumpkin hat + description: A jack o' lantern! Believed to ward off evil spirits. components: - - type: Sprite - sprite: Clothing/Head/cake1.rsi + - type: Sprite + sprite: Clothing/Head/pumpkin.rsi - - type: Clothing - sprite: Clothing/Head/cake1.rsi + - type: Clothing + sprite: Clothing/Head/pumpkin.rsi - type: entity parent: HatBase diff --git a/Resources/Prototypes/Entities/Clothing/Head/helmets.yml b/Resources/Prototypes/Entities/Clothing/Head/helmets.yml index 2db5cc24ea..9c51d65db6 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/helmets.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/helmets.yml @@ -24,112 +24,75 @@ - type: entity parent: HatBase - id: HatHardhatDblue - name: hardhat dblue - description: A hardhat, painted in blue, used in dangerous working conditions to protect the head. Comes with a built-in flashlight. + id: HatHardhatBlue + name: blue hard hat + description: A hard hat, painted in blue, used in dangerous working conditions to protect the head. Comes with a built-in flashlight. components: - type: Sprite - sprite: Clothing/Head/hardhat0_dblue.rsi + sprite: Clothing/Head/hardhat_blue.rsi - type: Clothing - sprite: Clothing/Head/hardhat0_dblue.rsi + sprite: Clothing/Head/hardhat_blue.rsi - type: entity parent: HatBase - id: HatHardhat Orange - name: hardhat orange - description: A hardhat, painted in orange, used in dangerous working conditions to protect the head. Comes with a built-in flashlight. + id: HatHardhatOrange + name: orange hard hat + description: A hard hat, painted in orange, used in dangerous working conditions to protect the head. Comes with a built-in flashlight. components: - type: Sprite - sprite: Clothing/Head/hardhat0_orange.rsi + sprite: Clothing/Head/hardhat_orange.rsi - type: Clothing - sprite: Clothing/Head/hardhat0_orange.rsi - -- type: entity - parent: HatBase - id: HatHardhatPumpkin - name: hardhat pumpkin - description: "A jack o' lantern! Believed to ward off evil spirits." - components: - - type: Sprite - sprite: Clothing/Head/hardhat0_pumpkin.rsi - - - type: Clothing - sprite: Clothing/Head/hardhat0_pumpkin.rsi + sprite: Clothing/Head/hardhat_orange.rsi - type: entity parent: HatBase id: HatHardhatRed - name: hardhat red - description: A hardhat, painted in red, used in dangerous working conditions to protect the head. Comes with a built-in flashlight. + name: red hard hat + description: A hard hat, painted in red, used in dangerous working conditions to protect the head. Comes with a built-in flashlight. components: - type: Sprite - sprite: Clothing/Head/hardhat0_red.rsi + sprite: Clothing/Head/hardhat_red.rsi - type: Clothing - sprite: Clothing/Head/hardhat0_red.rsi + sprite: Clothing/Head/hardhat_red.rsi - type: entity parent: HatBase id: HatHardhatWhite - name: hardhat white - description: A hardhat, painted in white, used in dangerous working conditions to protect the head. Comes with a built-in flashlight. + name: white hard hat + description: A hard hat, painted in white, used in dangerous working conditions to protect the head. Comes with a built-in flashlight. components: - type: Sprite - sprite: Clothing/Head/hardhat0_white.rsi + sprite: Clothing/Head/hardhat_white.rsi - type: Clothing - sprite: Clothing/Head/hardhat0_white.rsi + sprite: Clothing/Head/hardhat_white.rsi - type: entity parent: HatBase id: HatHardhatYellow - name: hardhat yellow - description: A hardhat, painted in yellow, used in dangerous working conditions to protect the head. Comes with a built-in flashlight. + name: yellow hard hat + description: A hard hat, painted in yellow, used in dangerous working conditions to protect the head. Comes with a built-in flashlight. components: - type: Sprite - sprite: Clothing/Head/hardhat0_yellow.rsi + sprite: Clothing/Head/hardhat_yellow.rsi - type: Clothing - sprite: Clothing/Head/hardhat0_yellow.rsi - -- type: entity - parent: HatBase - id: HatHardhatPumpkinAlt - name: hardhat pumpkin (alt) - description: "A jack o' lantern! Believed to ward off evil spirits." - components: - - type: Sprite - sprite: Clothing/Head/hardhat1_pumpkin.rsi - - - type: Clothing - sprite: Clothing/Head/hardhat1_pumpkin.rsi - + sprite: Clothing/Head/hardhat_yellow.rsi - type: entity parent: HatBase id: HatLightRiot - name: light riot - description: "It's a helmet specifically designed to protect against close range attacks." - components: - - type: Sprite - sprite: Clothing/Head/light_riot.rsi - - - type: Clothing - sprite: Clothing/Head/light_riot.rsi - -- type: entity - parent: HatBase - id: HatLightRiotOn - name: light riot (on) + name: light riot helmet description: It's a helmet specifically designed to protect against close range attacks. components: - type: Sprite - sprite: Clothing/Head/light_riot_on.rsi + sprite: Clothing/Head/light_riot.rsi - type: Clothing - sprite: Clothing/Head/light_riot_on.rsi + sprite: Clothing/Head/light_riot.rsi - type: entity parent: HatBase diff --git a/Resources/Prototypes/Entities/Clothing/Masks/masks.yml b/Resources/Prototypes/Entities/Clothing/Masks/masks.yml index 01166060d8..9767140b7c 100644 --- a/Resources/Prototypes/Entities/Clothing/Masks/masks.yml +++ b/Resources/Prototypes/Entities/Clothing/Masks/masks.yml @@ -15,7 +15,7 @@ - type: Sprite sprite: Clothing/Masks/mask_gasalt.rsi state: icon - + - type: BreathMask - type: Clothing sprite: Clothing/Masks/mask_gasalt.rsi @@ -28,7 +28,7 @@ - type: Sprite sprite: Clothing/Masks/mask_gas.rsi state: icon - + - type: BreathMask - type: Clothing sprite: Clothing/Masks/mask_gas.rsi @@ -41,7 +41,7 @@ - type: Sprite sprite: Clothing/Masks/mask_breath.rsi state: icon - + - type: BreathMask - type: Clothing sprite: Clothing/Masks/mask_breath.rsi @@ -54,7 +54,7 @@ - type: Sprite sprite: Clothing/Masks/mask_clown.rsi state: icon - + - type: BreathMask - type: Clothing sprite: Clothing/Masks/mask_clown.rsi @@ -67,7 +67,7 @@ - type: Sprite sprite: Clothing/Masks/mask_joy.rsi state: icon - + - type: BreathMask - type: Clothing sprite: Clothing/Masks/mask_joy.rsi @@ -80,7 +80,7 @@ - type: Sprite sprite: Clothing/Masks/mask_mime.rsi state: icon - + - type: BreathMask - type: Clothing sprite: Clothing/Masks/mask_mime.rsi @@ -93,6 +93,6 @@ - type: Sprite sprite: Clothing/Masks/mask_sterile.rsi state: icon - + - type: BreathMask - type: Clothing sprite: Clothing/Masks/mask_sterile.rsi diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml index 660f344337..4d310059a1 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml @@ -150,7 +150,9 @@ components: - type: Sprite sprite: Clothing/OuterClothing/firesuit.rsi - + - type: PressureProtection + highPressureMultiplier: 0.85 + lowPressureMultiplier: 25 - type: Clothing sprite: Clothing/OuterClothing/firesuit.rsi diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/uniforms.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/uniforms.yml index 48ad507f70..99b61c089a 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/uniforms.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/uniforms.yml @@ -62,7 +62,7 @@ parent: UniformBase id: UniformAssistant name: assistant jumpsuit - desciption: It's a generic grey jumpsuit. That's about what assistants are worth, anyway. + description: It's a generic grey jumpsuit. That's about what assistants are worth, anyway. components: - type: Sprite sprite: Clothing/Uniforms/uniform_assistant.rsi @@ -75,7 +75,7 @@ parent: UniformBase id: UniformChemistry name: chemistry jumpsuit - desciption: There's some odd stains on this jumpsuit. Hm. + description: There's some odd stains on this jumpsuit. Hm. components: - type: Sprite sprite: Clothing/Uniforms/uniform_medical.rsi @@ -89,7 +89,7 @@ parent: UniformChemistry id: UniformChemistrySkirt name: chemistry jumpskirt - desciption: A sterile jumpskirt in Chemistry colors. + description: A sterile jumpskirt in Chemistry colors. components: - type: Sprite state: chemistry_skirt @@ -102,7 +102,7 @@ parent: UniformBase id: UniformParamedic name: paramedic jumpsuit - desciption: It's got a red plus on it, that's a good thing right? + description: It's got a red plus on it, that's a good thing right? components: - type: Sprite sprite: Clothing/Uniforms/uniform_medical.rsi @@ -116,7 +116,7 @@ parent: UniformParamedic id: UniformParamedicSkirt name: paramedic jumpskirt - desciption: A sterile jumpskirt in Paramedic colors. + description: A sterile jumpskirt in Paramedic colors. components: - type: Sprite state: paramedic_skirt @@ -129,7 +129,7 @@ parent: UniformBase id: UniformScrubsPurple name: purple scrubs - desciption: A combination of comfort and utility intended to make removing every last organ someone has and selling them to a space robot much more official looking. + description: A combination of comfort and utility intended to make removing every last organ someone has and selling them to a space robot much more official looking. components: - type: Sprite sprite: Clothing/Uniforms/uniform_medical.rsi @@ -143,7 +143,7 @@ parent: UniformBase id: UniformScrubsGreen name: green scrubs - desciption: A combination of comfort and utility intended to make removing every last organ someone has and selling them to a space robot much more official looking. + description: A combination of comfort and utility intended to make removing every last organ someone has and selling them to a space robot much more official looking. components: - type: Sprite sprite: Clothing/Uniforms/uniform_medical.rsi @@ -157,7 +157,7 @@ parent: UniformBase id: UniformScrubsBlue name: blue scrubs - desciption: A combination of comfort and utility intended to make removing every last organ someone has and selling them to a space robot much more official looking. + description: A combination of comfort and utility intended to make removing every last organ someone has and selling them to a space robot much more official looking. components: - type: Sprite sprite: Clothing/Uniforms/uniform_medical.rsi @@ -362,7 +362,7 @@ parent: UniformCargoTech id: UniformCargoTechSkirt name: cargo tech jumpskirt - desciption: A sturdy jumpskirt, issued to members of the Cargo department. + description: A sturdy jumpskirt, issued to members of the Cargo department. components: - type: Sprite state: cargo_skirt @@ -374,7 +374,7 @@ - type: entity parent: UniformBase id: UniformQM - name: qm jumpsuit + name: quartermaster's jumpsuit description: 'What can brown do for you?' components: - type: Sprite @@ -387,8 +387,8 @@ - type: entity parent: UniformQM id: UniformQMSkirt - name: qm jumpskirt - desciption: 'What can brown do for you?' + name: quartermaster's jumpskirt + description: 'What can brown do for you?' components: - type: Sprite state: qm_skirt @@ -414,7 +414,7 @@ parent: UniformChef id: UniformChefSkirt name: chef skirt - desciption: Can't cook without this. + description: Can't cook without this. components: - type: Sprite state: chef_skirt @@ -453,7 +453,7 @@ parent: UniformChiefEngineer id: UniformChiefEngineerSkirt name: ce jumpskirt - desciption: It's a high visibility jumpskirt given to those engineers insane enough to achieve the rank of Chief Engineer. It has minor radiation shielding. + description: It's a high visibility jumpskirt given to those engineers insane enough to achieve the rank of Chief Engineer. It has minor radiation shielding. components: - type: Sprite state: chief_skirt @@ -479,7 +479,7 @@ parent: UniformCMO id: UniformCMOSkirt name: cmo jumpskirt - desciption: It's a jumpskirt worn by those with the experience to be Chief Medical Officer. It provides minor biological protection. + description: It's a jumpskirt worn by those with the experience to be Chief Medical Officer. It provides minor biological protection. components: - type: Sprite state: cmo_skirt @@ -505,7 +505,7 @@ parent: UniformMedicalDoctor id: UniformMedicalDoctorSkirt name: medical doctor jumpskirt - desciption: It's made of a special fiber that provides minor protection against biohazards. It has a cross on the chest denoting that the wearer is trained medical personnel. + description: It's made of a special fiber that provides minor protection against biohazards. It has a cross on the chest denoting that the wearer is trained medical personnel. components: - type: Sprite state: medical_skirt @@ -531,7 +531,7 @@ parent: UniformScientist id: UniformScientistSkirt name: scientist jumpskirt - desciption: It's made of a special fiber that provides minor protection against explosives. It has markings that denote the wearer as a scientist. + description: It's made of a special fiber that provides minor protection against explosives. It has markings that denote the wearer as a scientist. components: - type: Sprite state: sci_skirt @@ -543,7 +543,7 @@ - type: entity parent: UniformBase id: UniformResearchDirector - name: rd turtleneck + name: research director's turtleneck description: It's a turtleneck worn by those with the know-how to achieve the position of Research Director. Its fabric provides minor protection from biological contaminants. components: - type: Sprite @@ -556,8 +556,8 @@ - type: entity parent: UniformResearchDirector id: UniformResearchDirectorSkirt - name: rd skirtleneck - desciption: It's a turtleneck worn by those with the know-how to achieve the position of Research Director. Its fabric provides minor protection from biological contaminants. + name: research director's skirtleneck + description: It's a turtleneck worn by those with the know-how to achieve the position of Research Director. Its fabric provides minor protection from biological contaminants. components: - type: Sprite state: rnd_skirt @@ -583,7 +583,7 @@ parent: UniformMime id: UniformMimeSkirt name: mime skirt - desciption: ... + description: ... components: - type: Sprite state: mime_skirt @@ -592,6 +592,32 @@ ClothingPrefix: mime_skirt femaleMask: UniformTop +- type: entity + parent: UniformBase + id: UniformChaplain + name: chaplain's jumpsuit + description: It's a black jumpsuit, often worn by religious folk. + components: + - type: Sprite + sprite: Clothing/Uniforms/uniform_chaplain.rsi + state: icon + + - type: Clothing + sprite: Clothing/Uniforms/uniform_chaplain.rsi + +- type: entity + parent: UniformChaplain + id: UniformChaplainSkirt + name: chaplain's jumpskirt + description: It's a black jumpskirt. If you wear this, you probably need religious help more than you will be providing it. + components: + - type: Sprite + state: chaplain_skirt + + - type: Clothing + ClothingPrefix: chaplain_skirt + femaleMask: UniformTop + - type: entity parent: UniformBase id: UniformHoSAlt @@ -610,7 +636,7 @@ parent: UniformHoSAlt id: UniformHoSAltSkirt name: head of security skirtleneck - desciption: It's a skirtleneck worn by those who were strong and disciplined enough to achieve the position of Head of Security. Its sturdy fabric provides minor protection from mechanical damage. + description: It's a skirtleneck worn by those who were strong and disciplined enough to achieve the position of Head of Security. Its sturdy fabric provides minor protection from mechanical damage. components: - type: Sprite state: hosalt_skirt @@ -638,7 +664,7 @@ parent: UniformHoS id: UniformHoSSkirt name: head of security jumpskirt - desciption: It's bright red and rather crisp, much like security's victims tend to be. + description: It's bright red and rather crisp, much like security's victims tend to be. components: - type: Sprite state: hos_skirt @@ -713,7 +739,7 @@ - type: entity parent: UniformBase id: UniformWarden - name: security suit + name: warden's uniform description: A formal security suit for officers complete with Nanotrasen belt buckle. components: - type: Sprite @@ -792,7 +818,7 @@ parent: UniformPrisoner id: UniformPrisonerSkirt name: prisoner jumpskirt - desciption: Busted. + description: Busted. components: - type: Sprite state: prisoner_skirt @@ -805,7 +831,7 @@ parent: UniformBase id: UniformHoP name: hop jumpsuit - desciption: Rather bland and inoffensive. Perfect for vanishing off the face of the universe. + description: Rather bland and inoffensive. Perfect for vanishing off the face of the universe. components: - type: Sprite sprite: Clothing/Uniforms/uniform_hop.rsi @@ -818,7 +844,7 @@ parent: UniformHoP id: UniformHoPSkirt name: hop jumpskirt - desciption: Rather bland and inoffensive. Perfect for vanishing off the face of the universe. + description: Rather bland and inoffensive. Perfect for vanishing off the face of the universe. components: - type: Sprite state: hop_skirt @@ -831,7 +857,7 @@ parent: UniformBase id: UniformHydroponics name: hydroponics jumpsuit - desciption: Has a strong earthy smell to it. Hopefully it's merely dirty as opposed to soiled. + description: Has a strong earthy smell to it. Hopefully it's merely dirty as opposed to soiled. components: - type: Sprite sprite: Clothing/Uniforms/uniform_hydro.rsi @@ -844,7 +870,7 @@ parent: UniformHydroponics id: UniformHydroponicsSkirt name: hydroponics jumpskirt - desciption: Has a strong earthy smell to it. Hopefully it's merely dirty as opposed to soiled. + description: Has a strong earthy smell to it. Hopefully it's merely dirty as opposed to soiled. components: - type: Sprite state: hydro_skirt @@ -870,7 +896,7 @@ parent: UniformBartender id: UniformBartenderSkirt name: bartender's skirt - desciption: A nice and tidy skirt. Shame about the bar though. + description: A nice and tidy skirt. Shame about the bar though. components: - type: Sprite state: skirt @@ -883,7 +909,7 @@ parent: UniformBartender id: UniformBartenderPurple name: purple bartender's uniform - desciption: A special purple outfit to serve drinks. + description: A special purple outfit to serve drinks. components: - type: Sprite state: purple diff --git a/Resources/Prototypes/Entities/Constructible/Furniture/beds.yml b/Resources/Prototypes/Entities/Constructible/Furniture/beds.yml index 5622aae3f7..23cdc76fd0 100644 --- a/Resources/Prototypes/Entities/Constructible/Furniture/beds.yml +++ b/Resources/Prototypes/Entities/Constructible/Furniture/beds.yml @@ -6,6 +6,21 @@ - type: Clickable - type: InteractionOutline - type: Physics + mass: 25 + anchored: true + shapes: + - !type:PhysShapeAabb + bounds: "-0.45, -0.45, 0.05, 0.45" + mask: + - Impassable + - MobImpassable + - VaultImpassable + - SmallImpassable + layer: + - Opaque + - MobImpassable + - VaultImpassable + - SmallImpassable - type: Sprite sprite: Constructible/Misc/furniture.rsi state: bed diff --git a/Resources/Prototypes/Entities/Constructible/Furniture/bookshelf.yml b/Resources/Prototypes/Entities/Constructible/Furniture/bookshelf.yml index 200d27930d..96916f483d 100644 --- a/Resources/Prototypes/Entities/Constructible/Furniture/bookshelf.yml +++ b/Resources/Prototypes/Entities/Constructible/Furniture/bookshelf.yml @@ -22,7 +22,10 @@ - type: Destructible deadThreshold: 30 destroySound: /Audio/Effects/woodhit.ogg - spawnOnDestroy: WoodPlank + spawnOnDestroy: + WoodPlank: + Min: 1 + Max: 1 resistances: metallicResistances - type: Occluder sizeX: 32 diff --git a/Resources/Prototypes/Entities/Constructible/Furniture/carpets.yml b/Resources/Prototypes/Entities/Constructible/Furniture/carpets.yml index 25917bf253..7aeb2549f6 100644 --- a/Resources/Prototypes/Entities/Constructible/Furniture/carpets.yml +++ b/Resources/Prototypes/Entities/Constructible/Furniture/carpets.yml @@ -7,7 +7,7 @@ components: - type: Clickable - type: Sprite - drawdepth: FloorTiles + drawdepth: BelowFloor - type: Icon state: full - type: SnapGrid diff --git a/Resources/Prototypes/Entities/Constructible/Furniture/instruments.yml b/Resources/Prototypes/Entities/Constructible/Furniture/instruments.yml index 3d2a01c6e6..6b6855427a 100644 --- a/Resources/Prototypes/Entities/Constructible/Furniture/instruments.yml +++ b/Resources/Prototypes/Entities/Constructible/Furniture/instruments.yml @@ -11,6 +11,7 @@ - type: Physics shapes: - !type:PhysShapeAabb + layer: [MobMask] mask: - Impassable - MobImpassable diff --git a/Resources/Prototypes/Entities/Constructible/Furniture/potted_plants.yml b/Resources/Prototypes/Entities/Constructible/Furniture/potted_plants.yml index fb8cc8c42a..a5bcf67edd 100644 --- a/Resources/Prototypes/Entities/Constructible/Furniture/potted_plants.yml +++ b/Resources/Prototypes/Entities/Constructible/Furniture/potted_plants.yml @@ -5,9 +5,25 @@ - type: Clickable - type: InteractionOutline - type: Physics + mass: 25 + anchored: true + shapes: + - !type:PhysShapeAabb + bounds: "-0.5, -0.2, 0.5, 0.2" + mask: + - Impassable + - MobImpassable + - VaultImpassable + - SmallImpassable + layer: + - Opaque + - MobImpassable + - VaultImpassable + - SmallImpassable - type: Sprite sprite: Constructible/Misc/potted_plants.rsi - type: PottedPlantHide + - type: Anchorable - type: Pullable - type: entity @@ -39,6 +55,11 @@ components: - type: Sprite state: plant-25 + - type: Physics + shapes: + - !type:PhysShapeAabb + bounds: "-0.47,-0.25,0.05,0.25" + layer: [ Passable ] - type: entity id: PottedPlantBioluminscent diff --git a/Resources/Prototypes/Entities/Constructible/Furniture/seats.yml b/Resources/Prototypes/Entities/Constructible/Furniture/seats.yml index 9f98b49d36..d66cf66bd4 100644 --- a/Resources/Prototypes/Entities/Constructible/Furniture/seats.yml +++ b/Resources/Prototypes/Entities/Constructible/Furniture/seats.yml @@ -7,6 +7,21 @@ - type: Clickable - type: InteractionOutline - type: Physics + anchored: true + shapes: + - !type:PhysShapeAabb + bounds: "-0.5,-0.25,0.5,0.25" + mask: + - Impassable + - MobImpassable + - VaultImpassable + - SmallImpassable + layer: + - Opaque + - Impassable + - MobImpassable + - VaultImpassable + - SmallImpassable - type: Sprite sprite: Constructible/Misc/furniture.rsi - type: Strap @@ -27,6 +42,11 @@ - type: Sprite state: chair color: "#8e9799" + - type: Physics + shapes: + - !type:PhysShapeAabb + bounds: "-0.45, -0.45, 0.05, 0.45" + layer: [ Passable ] - type: entity name: stool @@ -37,6 +57,11 @@ - type: Sprite state: stool_base color: "#8e9799" + - type: Physics + shapes: + - !type:PhysShapeAabb + bounds: "-0.5, -0.25, 0.05, 0.25" + layer: [ Passable ] - type: entity name: bar stool @@ -46,6 +71,11 @@ - type: Sprite state: bar_stool color: "white" + - type: Physics + shapes: + - !type:PhysShapeAabb + bounds: "-0.5, -0.2, 0.2, 0.25" + layer: [ Passable ] - type: entity name: white office chair @@ -55,11 +85,16 @@ - type: Rotatable - type: Sprite state: officechair_white + - type: Physics + shapes: + - !type:PhysShapeAabb + bounds: "-0.49, -0.25, 0.37, 0.25" + layer: [ Passable ] - type: entity name: dark office chair id: ChairOfficeDark - parent: SeatBase + parent: ChairOfficeLight components: - type: Sprite state: officechair_dark @@ -72,6 +107,11 @@ components: - type: Sprite state: comfychair_preview + - type: Physics + shapes: + - !type:PhysShapeAabb + bounds: "-0.45, -0.3, 0.35, 0.3" + layer: [ MobMask ] - type: entity name: wooden chair @@ -81,3 +121,8 @@ - type: Sprite state: wooden_chair color: "white" + - type: Physics + shapes: + - !type:PhysShapeAabb + bounds: "-0.37, -0.25, 0.49, 0.24" + layer: [ Passable ] diff --git a/Resources/Prototypes/Entities/Constructible/Furniture/storage.yml b/Resources/Prototypes/Entities/Constructible/Furniture/storage.yml index d4f501326a..19160ebdf5 100644 --- a/Resources/Prototypes/Entities/Constructible/Furniture/storage.yml +++ b/Resources/Prototypes/Entities/Constructible/Furniture/storage.yml @@ -10,18 +10,30 @@ sprite: Constructible/Misc/furniture.rsi state: rack - type: Physics + mass: 25 + anchored: true shapes: - !type:PhysShapeAabb + bounds: "-0.4,-0.4,0.4,0.4" layer: - Opaque - Impassable - MobImpassable - VaultImpassable - SmallImpassable + mask: + - Impassable + - MobImpassable + - VaultImpassable + - type: Pullable + - type: Anchorable - type: Destructible deadThreshold: 30 destroySound: /Audio/Effects/metalbreak.ogg - spawnOnDestroy: SteelSheet1 + spawnOnDestroy: + SteelSheet1: + Min: 1 + Max: 1 resistances: metallicResistances - type: entity @@ -36,16 +48,28 @@ sprite: Constructible/Misc/furniture.rsi state: shelf - type: Physics + mass: 25 + anchored: true shapes: - !type:PhysShapeAabb + bounds: "-0.4,-0.4,0.4,0.4" layer: - Opaque - Impassable - MobImpassable - VaultImpassable - SmallImpassable + mask: + - Impassable + - MobImpassable + - VaultImpassable + - type: Pullable + - type: Anchorable - type: Destructible deadThreshold: 30 destroySound: /Audio/Effects/metalbreak.ogg - spawnOnDestroy: SteelSheet1 + spawnOnDestroy: + SteelSheet1: + Min: 1 + Max: 1 resistances: metallicResistances diff --git a/Resources/Prototypes/Entities/Constructible/Furniture/tables.yml b/Resources/Prototypes/Entities/Constructible/Furniture/tables.yml index 4d305dfb35..41e388ba4b 100644 --- a/Resources/Prototypes/Entities/Constructible/Furniture/tables.yml +++ b/Resources/Prototypes/Entities/Constructible/Furniture/tables.yml @@ -39,7 +39,10 @@ deadThreshold: 15 destroySound: /Audio/Effects/metalbreak.ogg resistances: metallicResistances - spawnOnDestroy: SteelSheet1 + spawnOnDestroy: + SteelSheet1: + Min: 1 + Max: 1 - type: entity id: TableFrame @@ -55,7 +58,10 @@ deadThreshold: 1 destroySound: /Audio/Effects/metalbreak.ogg resistances: metallicResistances - spawnOnDestroy: SteelSheet1 + spawnOnDestroy: + SteelSheet1: + Min: 1 + Max: 1 - type: entity id: TableBar @@ -71,7 +77,10 @@ deadThreshold: 1 destroySound: /Audio/Effects/metalbreak.ogg resistances: metallicResistances - spawnOnDestroy: SteelSheet1 + spawnOnDestroy: + SteelSheet1: + Min: 1 + Max: 1 - type: entity id: TableMetal @@ -87,7 +96,10 @@ deadThreshold: 15 destroySound: /Audio/Effects/metalbreak.ogg resistances: metallicResistances - spawnOnDestroy: SteelSheet1 + spawnOnDestroy: + SteelSheet1: + Min: 1 + Max: 1 - type: entity id: TableR @@ -103,7 +115,10 @@ deadThreshold: 75 destroySound: /Audio/Effects/metalbreak.ogg resistances: metallicResistances - spawnOnDestroy: SteelSheet1 + spawnOnDestroy: + SteelSheet1: + Min: 1 + Max: 1 - type: entity id: TableGlass @@ -117,8 +132,12 @@ sprite: Constructible/Structures/Tables/glass.rsi - type: Destructible deadThreshold: 5 - destroySound: /Audio/Effects/glassbreak2.ogg + destroySound: /Audio/Effects/glass_break2.ogg resistances: metallicResistances + spawnOnDestroy: + ShardGlass: + Min: 1 + Max: 1 - type: entity id: TableGlassR @@ -132,8 +151,12 @@ sprite: Constructible/Structures/Tables/r_glass.rsi - type: Destructible deadThreshold: 20 - destroySound: /Audio/Effects/glassbreak2.ogg + destroySound: /Audio/Effects/glass_break2.ogg resistances: metallicResistances + spawnOnDestroy: + ShardGlass: + Min: 1 + Max: 1 - type: entity id: TableWood @@ -149,7 +172,10 @@ deadThreshold: 15 destroySound: /Audio/Effects/woodhit.ogg resistances: metallicResistances - spawnOnDestroy: WoodPlank + spawnOnDestroy: + WoodPlank: + Min: 1 + Max: 1 - type: entity id: TableCarpet @@ -165,7 +191,10 @@ deadThreshold: 15 destroySound: /Audio/Effects/woodhit.ogg resistances: metallicResistances - spawnOnDestroy: WoodPlank + spawnOnDestroy: + WoodPlank: + Min: 1 + Max: 1 - type: entity id: TableStone diff --git a/Resources/Prototypes/Entities/Constructible/Ground/catwalk.yml b/Resources/Prototypes/Entities/Constructible/Ground/catwalk.yml index a046dbc29c..5f7993755c 100644 --- a/Resources/Prototypes/Entities/Constructible/Ground/catwalk.yml +++ b/Resources/Prototypes/Entities/Constructible/Ground/catwalk.yml @@ -6,6 +6,10 @@ - type: Clickable - type: InteractionOutline - type: Physics + shapes: + - !type:PhysShapeAabb + bounds: "-0.5,-0.5,0.5,0.5" + layer: [ Passable ] - type: Sprite netsync: false sprite: Constructible/Tiles/catwalk.rsi diff --git a/Resources/Prototypes/Entities/Constructible/Power/arcade.yml b/Resources/Prototypes/Entities/Constructible/Power/arcade.yml index 8841f0a6f6..59a771a9e9 100644 --- a/Resources/Prototypes/Entities/Constructible/Power/arcade.yml +++ b/Resources/Prototypes/Entities/Constructible/Power/arcade.yml @@ -1,5 +1,6 @@ - type: entity - id: Arcade + abstract: true + id: ArcadeBase description: An arcade cabinet. name: arcade parent: ComputerBase @@ -25,15 +26,20 @@ bodyBroken: arcade - type: Anchorable - type: Pullable + +- type: entity + id: SpaceVillainArcade + parent: ArcadeBase + components: - type: SpaceVillainArcade - type: Wires BoardName: "Arcade" - type: UserInterface interfaces: - - key: enum.SpaceVillainArcadeUiKey.Key - type: SpaceVillainArcadeBoundUserInterface - - key: enum.WiresUiKey.Key - type: WiresBoundUserInterface + - key: enum.SpaceVillainArcadeUiKey.Key + type: SpaceVillainArcadeBoundUserInterface + - key: enum.WiresUiKey.Key + type: WiresBoundUserInterface - type: Computer board: SpaceVillainArcadeComputerCircuitboard @@ -41,35 +47,28 @@ id: BlockGameArcade description: An arcade cabinet with a strangely familiar game. name: NT block game - parent: ComputerBase + parent: ArcadeBase components: - - type: PowerReceiver - - type: Sprite - sprite: Constructible/Power/computers.rsi - layers: - - state: arcade - map: ["enum.ComputerVisualizer+Layers.Body"] - - state: invaders - shader: unshaded - map: ["enum.ComputerVisualizer+Layers.Screen"] - - type: Icon - sprite: Constructible/Power/computers.rsi - state: arcade - - type: Appearance - visuals: - - type: ComputerVisualizer - screen: invaders - key: "" - body: arcade - bodyBroken: arcade - - type: Anchorable - - type: Pullable - - type: BlockGameArcade - - type: UserInterface - interfaces: - - key: enum.BlockGameUiKey.Key - type: BlockGameBoundUserInterface - - key: enum.WiresUiKey.Key - type: WiresBoundUserInterface - - type: Computer - board: BlockGameArcadeComputerCircuitboard + - type: BlockGameArcade + - type: UserInterface + interfaces: + - key: enum.BlockGameUiKey.Key + type: BlockGameBoundUserInterface + - key: enum.WiresUiKey.Key + type: WiresBoundUserInterface + - type: Computer + board: BlockGameArcadeComputerCircuitboard + +- type: entity + id: RandomArcade + name: Random Arcade Spawner + components: + - type: RandomArcade + - type: Sprite + netsync: false + visible: false + sprite: Interface/Misc/markers.rsi + state: cross_blue + - type: Marker + - type: Clickable + - type: InteractionOutline diff --git a/Resources/Prototypes/Entities/Constructible/Power/cloning_machine.yml b/Resources/Prototypes/Entities/Constructible/Power/cloning_machine.yml index 044121cc7a..bcf2a05315 100644 --- a/Resources/Prototypes/Entities/Constructible/Power/cloning_machine.yml +++ b/Resources/Prototypes/Entities/Constructible/Power/cloning_machine.yml @@ -2,6 +2,8 @@ id: CloningPod name: Cloning Pod description: A Cloning Pod. 50% reliable. + placement: + mode: SnapgridCenter components: - type: Sprite netsync: false @@ -10,7 +12,6 @@ - state: pod_0 map: ["enum.CloningPodVisualLayers.Machine"] - type: PowerReceiver - - type: Anchorable - type: Clickable - type: InteractionOutline diff --git a/Resources/Prototypes/Entities/Constructible/Power/computers.yml b/Resources/Prototypes/Entities/Constructible/Power/computers.yml index 0883283533..de05f9014d 100644 --- a/Resources/Prototypes/Entities/Constructible/Power/computers.yml +++ b/Resources/Prototypes/Entities/Constructible/Power/computers.yml @@ -1,25 +1,29 @@ - type: entity id: ComputerFrame name: computer frame + placement: + mode: SnapgridCenter components: - type: Physics mass: 25 - anchored: false + anchored: true shapes: - - !type:PhysShapeAabb - bounds: "-0.5,-0.25,0.5,0.25" - layer: - - Impassable - - MobImpassable - - VaultImpassable - - Opaque - mask: - - Impassable - - MobImpassable - - VaultImpassable + - !type:PhysShapeAabb + bounds: "-0.5,-0.25,0.5,0.25" + layer: + - Impassable + - MobImpassable + - VaultImpassable + - Opaque + mask: + - Impassable + - MobImpassable + - VaultImpassable - type: Clickable - type: InteractionOutline - type: Anchorable + - type: Rotatable + - type: Pullable - type: Construction graph: computer node: frameUnsecured @@ -33,21 +37,21 @@ description: This computer has seen better days. abstract: true # We don't want this to show up in the entity spawner menu. components: - - type: Physics - mass: 25 - anchored: true - shapes: - - !type:PhysShapeAabb - bounds: "-0.5,-0.25,0.5,0.25" - layer: - - Impassable - - MobImpassable - - VaultImpassable - - Opaque - mask: - - Impassable - - MobImpassable - - VaultImpassable + - type: Physics + mass: 25 + anchored: true + shapes: + - !type:PhysShapeAabb + bounds: "-0.5,-0.25,0.5,0.25" + layer: + - Impassable + - MobImpassable + - VaultImpassable + - Opaque + mask: + - Impassable + - MobImpassable + - VaultImpassable - type: Clickable - type: InteractionOutline - type: Anchorable @@ -62,12 +66,15 @@ id: ComputerBase name: computer abstract: true + placement: + mode: SnapgridCenter components: - type: Clickable - type: InteractionOutline - type: Construction graph: computer node: computer + - type: Rotatable - type: Physics mass: 25 anchored: true @@ -86,9 +93,9 @@ - type: Computer - type: PowerReceiver - type: Anchorable + - type: Pullable - type: BreakableConstruction node: monitorBroken - - type: Sprite sprite: Constructible/Power/computers.rsi layers: @@ -102,14 +109,12 @@ - state: generic_key shader: unshaded map: ["enum.ComputerVisualizer+Layers.KeyboardOn"] - - type: Appearance visuals: - type: ComputerVisualizer key: generic_key screen: generic - - type: entity id: ComputerAlert parent: ComputerBase @@ -122,7 +127,6 @@ key: atmos_key screen: "alert-2" - - type: entity id: ComputerPowerMonitoring parent: ComputerBase @@ -135,7 +139,6 @@ key: power_key screen: power_monitor - - type: entity id: ComputerSupplyOrdering parent: ComputerBase @@ -199,7 +202,6 @@ key: med_key screen: medcomp - - type: entity id: ComputerResearchAndDevelopment parent: ComputerBase diff --git a/Resources/Prototypes/Entities/Constructible/Power/lathe.yml b/Resources/Prototypes/Entities/Constructible/Power/lathe.yml index 04fc062267..74aa03019b 100644 --- a/Resources/Prototypes/Entities/Constructible/Power/lathe.yml +++ b/Resources/Prototypes/Entities/Constructible/Power/lathe.yml @@ -2,6 +2,8 @@ id: BaseLathe name: "lathe" abstract: true + placement: + mode: SnapgridCenter components: - type: Clickable - type: InteractionOutline @@ -10,7 +12,12 @@ anchored: true shapes: - !type:PhysShapeAabb - bounds: "-0.4,-0.25,0.4,0.25" + bounds: "-0.4,-0.4,0.4,0.4" + mask: + - Impassable + - MobImpassable + - VaultImpassable + - SmallImpassable layer: - Opaque - Impassable @@ -21,6 +28,7 @@ - type: Lathe - type: MaterialStorage - type: Anchorable + - type: Pullable - type: UserInterface interfaces: - key: enum.LatheUiKey.Key @@ -41,18 +49,6 @@ - state: autolathe_unlit shader: unshaded map: ["enum.AutolatheVisualLayers.BaseUnlit"] - - - type: Physics - shapes: - - !type:PhysShapeAabb - layer: - - Opaque - - Impassable - - MobImpassable - - VaultImpassable - - type: SnapGrid - offset: Center - - type: Lathe - type: LatheDatabase static: true recipes: @@ -89,17 +85,6 @@ map: ["enum.ProtolatheVisualLayers.BaseUnlit"] - state: protolathe map: ["enum.ProtolatheVisualLayers.AnimationLayer"] - - - type: Physics - shapes: - - !type:PhysShapeAabb - layer: - - Opaque - - Impassable - - MobImpassable - - VaultImpassable - - type: SnapGrid - offset: Center - type: ResearchClient - type: TechnologyDatabase - type: ProtolatheDatabase diff --git a/Resources/Prototypes/Entities/Constructible/Power/particleAccelerator.yml b/Resources/Prototypes/Entities/Constructible/Power/particleAccelerator.yml new file mode 100644 index 0000000000..19be0d019e --- /dev/null +++ b/Resources/Prototypes/Entities/Constructible/Power/particleAccelerator.yml @@ -0,0 +1,348 @@ +- type: entity + id: ParticleAcceleratorBase + abstract: true + placement: + mode: SnapgridCenter + components: + - type: InteractionOutline + - type: Anchorable + - type: Physics + mass: 25 + anchored: true + shapes: + - !type:PhysShapeAabb + bounds: "-0.49,-0.49,0.49,0.49" + layer: + - Opaque + - Impassable + - MobImpassable + - VaultImpassable + IsScrapingFloor: true + - type: SnapGrid + offset: Center + - type: Pullable + - type: Clickable + +- type: entity + name: Particles + description: "Accelerated particles." + id: ParticlesProjectile + parent: BulletBase + components: + - type: Sprite + sprite: Constructible/Power/PA/particle.rsi + state: particle0 + shader: unshaded + - type: Projectile + delete_on_collide: false + soundHit: /Audio/Weapons/Guns/Hits/bullet_hit.ogg + damages: + Radiation: 10 + - type: Physics + hard: false + shapes: + - !type:PhysShapeAabb + bounds: "-0.48,-0.48,0.48,0.48" + layer: [None] + mask: + - MobMask + - Clickable + - type: ParticleProjectile + +# Working PA + +- type: entity + parent: ParticleAcceleratorBase + id: ParticleAcceleratorControlBox + name: Particle Accelerator Control Computer + description: This controls the density of the particles. + components: + - type: Sprite + sprite: Constructible/Power/PA/control_box.rsi + layers: + - state: control_boxc + map: [ "enum.ParticleAcceleratorVisualLayers.Base" ] + - state: control_box_unlitp + map: [ "enum.ParticleAcceleratorVisualLayers.Unlit" ] + shader: unshaded + visible: false + - type: Appearance + visuals: + - type: ParticleAcceleratorPartVisualizer + baseState: control_box_unlit + - type: PowerReceiver + - type: ParticleAcceleratorControlBox + - type: Construction + graph: particleAcceleratorControlBox + node: completed + - type: UserInterface + interfaces: + - key: enum.ParticleAcceleratorControlBoxUiKey.Key + type: ParticleAcceleratorBoundUserInterface + - key: enum.WiresUiKey.Key + type: WiresBoundUserInterface + - type: Wires + BoardName: "Mk2 Particle Accelerator" + LayoutId: ParticleAccelerator + +- type: entity + parent: ParticleAcceleratorBase + id: ParticleAcceleratorEmitterLeft + name: EM Containment Grid + suffix: Left + description: This launchs the Alpha particles, might not want to stand near this end. + components: + - type: Sprite + sprite: Constructible/Power/PA/emitter_left.rsi + layers: + - state: emitter_leftc + map: [ "enum.ParticleAcceleratorVisualLayers.Base" ] + - state: emitter_left_unlitp + map: [ "enum.ParticleAcceleratorVisualLayers.Unlit" ] + shader: unshaded + visible: false + - type: Appearance + visuals: + - type: ParticleAcceleratorPartVisualizer + baseState: emitter_left_unlit + - type: ParticleAcceleratorEmitter + emitterType: Left + - type: Construction + graph: particleAcceleratorEmitterLeft + node: completed + + +- type: entity + parent: ParticleAcceleratorBase + id: ParticleAcceleratorEmitterCenter + name: EM Containment Grid + suffix: Center + description: This launchs the Alpha particles, might not want to stand near this end. + components: + - type: Sprite + sprite: Constructible/Power/PA/emitter_center.rsi + layers: + - state: emitter_centerc + map: [ "enum.ParticleAcceleratorVisualLayers.Base" ] + - state: emitter_center_unlitp + map: [ "enum.ParticleAcceleratorVisualLayers.Unlit" ] + shader: unshaded + visible: false + - type: Appearance + visuals: + - type: ParticleAcceleratorPartVisualizer + baseState: emitter_center_unlit + - type: ParticleAcceleratorEmitter + emitterType: Center + - type: Construction + graph: particleAcceleratorEmitterCenter + node: completed + +- type: entity + parent: ParticleAcceleratorBase + id: ParticleAcceleratorEmitterRight + name: EM Containment Grid + suffix: Right + description: This launchs the Alpha particles, might not want to stand near this end. + components: + - type: Sprite + sprite: Constructible/Power/PA/emitter_right.rsi + layers: + - state: emitter_rightc + map: [ "enum.ParticleAcceleratorVisualLayers.Base" ] + - state: emitter_right_unlitp + map: [ "enum.ParticleAcceleratorVisualLayers.Unlit" ] + shader: unshaded + visible: false + - type: Appearance + visuals: + - type: ParticleAcceleratorPartVisualizer + baseState: emitter_right_unlit + - type: ParticleAcceleratorEmitter + emitterType: Right + - type: Construction + graph: particleAcceleratorEmitterRight + node: completed + +- type: entity + parent: ParticleAcceleratorBase + id: ParticleAcceleratorEndCap + name: Alpha Particle Generation Array + description: This is where Alpha particles are generated from [REDACTED]. + components: + - type: Sprite + sprite: Constructible/Power/PA/end_cap.rsi + state: end_capc + - type: ParticleAcceleratorEndCap + - type: Construction + graph: particleAcceleratorEndCap + node: completed + +- type: entity + parent: ParticleAcceleratorBase + id: ParticleAcceleratorFuelChamber + name: EM Acceleration Chamber + description: This is where the Alpha particles are accelerated to radical speeds. + components: + - type: Sprite + sprite: Constructible/Power/PA/fuel_chamber.rsi + layers: + - state: fuel_chamberc + map: [ "enum.ParticleAcceleratorVisualLayers.Base" ] + - state: fuel_chamber_unlitp + map: [ "enum.ParticleAcceleratorVisualLayers.Unlit" ] + shader: unshaded + visible: false + - type: Appearance + visuals: + - type: ParticleAcceleratorPartVisualizer + baseState: fuel_chamber_unlit + - type: ParticleAcceleratorFuelChamber + - type: Construction + graph: particleAcceleratorFuelChamber + node: completed + +- type: entity + parent: ParticleAcceleratorBase + id: ParticleAcceleratorPowerBox + name: Particle Focusing EM Lens + description: This uses electromagnetic waves to focus the Alpha-Particles. + components: + - type: Sprite + sprite: Constructible/Power/PA/power_box.rsi + layers: + - state: power_boxc + map: [ "enum.ParticleAcceleratorVisualLayers.Base" ] + - state: power_box_unlitp + map: [ "enum.ParticleAcceleratorVisualLayers.Unlit" ] + shader: unshaded + visible: false + - type: Appearance + visuals: + - type: ParticleAcceleratorPartVisualizer + baseState: power_box_unlit + - type: ParticleAcceleratorPowerBox + - type: PowerConsumer + voltage: High + - type: NodeContainer + nodes: + - !type:AdjacentNode + nodeGroupID: HVPower + - type: Construction + graph: particleAcceleratorPowerBox + node: completed + + +# Unfinished PA + +- type: entity + parent: ParticleAcceleratorBase + id: ParticleAcceleratorControlBoxUnfinished + name: Particle Accelerator Control Computer + suffix: Unfinished + description: This controls the density of the particles. It looks unfinished. + components: + - type: Physics + anchored: false + - type: Sprite + sprite: Constructible/Power/PA/control_box.rsi + state: control_box + - type: Construction + graph: particleAcceleratorControlBox + node: start + +- type: entity + parent: ParticleAcceleratorBase + id: ParticleAcceleratorEmitterLeftUnfinished + name: EM Containment Grid + suffix: Unfinished, Left + description: This launchs the Alpha particles, might not want to stand near this end. It looks unfinished. + components: + - type: Physics + anchored: false + - type: Sprite + sprite: Constructible/Power/PA/emitter_left.rsi + state: emitter_left + - type: Construction + graph: particleAcceleratorEmitterLeft + node: start + +- type: entity + parent: ParticleAcceleratorBase + id: ParticleAcceleratorEmitterCenterUnfinished + name: EM Containment Grid + suffix: Unfinished, Center + description: This launchs the Alpha particles, might not want to stand near this end. It looks unfinished. + components: + - type: Physics + anchored: false + - type: Sprite + sprite: Constructible/Power/PA/emitter_center.rsi + state: emitter_center + - type: Construction + graph: particleAcceleratorEmitterCenter + node: start + +- type: entity + parent: ParticleAcceleratorBase + id: ParticleAcceleratorEmitterRightUnfinished + name: EM Containment Grid + suffix: Unfinished, Right + description: This launchs the Alpha particles, might not want to stand near this end. It looks unfinished. + components: + - type: Physics + anchored: false + - type: Sprite + sprite: Constructible/Power/PA/emitter_right.rsi + state: emitter_right + - type: Construction + graph: particleAcceleratorEmitterRight + node: start + +- type: entity + parent: ParticleAcceleratorBase + id: ParticleAcceleratorEndCapUnfinished + name: Alpha Particle Generation Array + suffix: Unfinished + description: This is where Alpha particles are generated from [REDACTED]. It looks unfinished. + components: + - type: Physics + anchored: false + - type: Sprite + sprite: Constructible/Power/PA/end_cap.rsi + state: end_cap + - type: Construction + graph: particleAcceleratorEndCap + node: start + +- type: entity + parent: ParticleAcceleratorBase + id: ParticleAcceleratorFuelChamberUnfinished + name: EM Acceleration Chamber + suffix: Unfinished + description: This is where the Alpha particles are accelerated to radical speeds. It looks unfinished. + components: + - type: Physics + anchored: false + - type: Sprite + sprite: Constructible/Power/PA/fuel_chamber.rsi + state: fuel_chamber + - type: Construction + graph: particleAcceleratorFuelChamber + node: start + +- type: entity + parent: ParticleAcceleratorBase + id: ParticleAcceleratorPowerBoxUnfinished + name: Particle Focusing EM Lens + suffix: Unfinished + description: This uses electromagnetic waves to focus the Alpha-Particles. It looks unfinished. + components: + - type: Physics + anchored: false + - type: Sprite + sprite: Constructible/Power/PA/power_box.rsi + state: power_box + - type: Construction + graph: particleAcceleratorPowerBox + node: start diff --git a/Resources/Prototypes/Entities/Constructible/Power/power_base.yml b/Resources/Prototypes/Entities/Constructible/Power/power_base.yml index 0e16728252..a39c8d9568 100644 --- a/Resources/Prototypes/Entities/Constructible/Power/power_base.yml +++ b/Resources/Prototypes/Entities/Constructible/Power/power_base.yml @@ -9,10 +9,21 @@ - type: Clickable - type: InteractionOutline - type: Physics + mass: 25 + anchored: true shapes: - !type:PhysShapeAabb - bounds: "-0.5, -0.5, 0.3, 0.5" - layer: [MobMask, Opaque] + bounds: "-0.5, -0.4, 0.3, 0.4" + mask: + - Impassable + - MobImpassable + - VaultImpassable + - SmallImpassable + layer: + - Opaque + - MobImpassable + - VaultImpassable + - SmallImpassable - type: SnapGrid offset: Center - type: Sprite @@ -25,6 +36,7 @@ - type: PowerSupplier supplyRate: 3000 - type: Anchorable + - type: Pullable - type: entity id: BaseSmes @@ -37,10 +49,20 @@ - type: Clickable - type: InteractionOutline - type: Physics + mass: 25 + anchored: true shapes: - !type:PhysShapeAabb - bounds: "-0.5, -0.5, 0.5, 0.5" - layer: [MobMask, Opaque] + mask: + - Impassable + - MobImpassable + - VaultImpassable + - SmallImpassable + layer: + - Opaque + - MobImpassable + - VaultImpassable + - SmallImpassable - type: SnapGrid offset: Center - type: Sprite @@ -68,6 +90,7 @@ - type: BatteryDischarger activeSupplyRate: 1000 - type: Anchorable + - type: Pullable - type: entity id: BaseSubstation @@ -80,10 +103,20 @@ - type: Clickable - type: InteractionOutline - type: Physics + mass: 25 + anchored: true shapes: - !type:PhysShapeAabb - bounds: "-0.5, -0.5, 0.5, 0.5" - layer: [MobMask, Opaque] + mask: + - Impassable + - MobImpassable + - VaultImpassable + - SmallImpassable + layer: + - Opaque + - MobImpassable + - VaultImpassable + - SmallImpassable - type: SnapGrid offset: Center - type: Sprite @@ -106,6 +139,7 @@ - type: BatteryDischarger activeSupplyRate: 1000 - type: Anchorable + - type: Pullable - type: entity id: BaseApc @@ -119,8 +153,9 @@ - type: InteractionOutline - type: Physics shapes: - - !type:PhysShapeAabb - bounds: "-0.25, -0.25, 0.25, 0.3" + - !type:PhysShapeAabb + bounds: "-0.25, -0.25, 0.25, 0.3" + layer: [ Passable ] - type: SnapGrid offset: Center - type: Sprite @@ -163,9 +198,20 @@ - type: Clickable - type: InteractionOutline - type: Physics + mass: 25 + anchored: false shapes: - !type:PhysShapeAabb - layer: [MobMask, Opaque] + mask: + - Impassable + - MobImpassable + - VaultImpassable + - SmallImpassable + layer: + - Opaque + - MobImpassable + - VaultImpassable + - SmallImpassable - type: Sprite sprite: Constructible/Power/solar_panel.rsi state: normal @@ -181,3 +227,5 @@ - type: Breakable deadThreshold: 100 resistances: metallicResistances + - type: Anchorable + - type: Pullable diff --git a/Resources/Prototypes/Entities/Constructible/Power/vending_machines.yml b/Resources/Prototypes/Entities/Constructible/Power/vending_machines.yml index 8a99122b30..590f0b0923 100644 --- a/Resources/Prototypes/Entities/Constructible/Power/vending_machines.yml +++ b/Resources/Prototypes/Entities/Constructible/Power/vending_machines.yml @@ -2,6 +2,8 @@ id: VendingMachine name: vending machine abstract: true + placement: + mode: SnapgridCenter components: - type: Clickable - type: InteractionOutline diff --git a/Resources/Prototypes/Entities/Constructible/Power/wires.yml b/Resources/Prototypes/Entities/Constructible/Power/wires.yml index 488267e981..bfbce84ce5 100644 --- a/Resources/Prototypes/Entities/Constructible/Power/wires.yml +++ b/Resources/Prototypes/Entities/Constructible/Power/wires.yml @@ -6,8 +6,12 @@ mode: SnapgridCenter components: - type: Clickable - - type: InteractionOutline - type: Physics + shapes: + - !type:PhysShapeAabb + bounds: "-0.5, -0.5, 0.5, 0.5" + layer: [ Underplating ] + - type: InteractionOutline - type: SnapGrid offset: Center - type: Sprite @@ -37,12 +41,17 @@ nodes: - !type:AdjacentNode nodeGroupID: HVPower + - !type:AdjacentNode + nodeGroupID: WireNet - type: Wire wireDroppedOnCutPrototype: HVWireStack1 wireType: HighVoltage - type: Destructible resistances: metallicResistances - spawnOnDestroy: HVWireStack1 + spawnOnDestroy: + HVWireStack1: + Min: 1 + Max: 1 - type: entity parent: WireBase @@ -64,12 +73,17 @@ nodes: - !type:AdjacentNode nodeGroupID: MVPower + - !type:AdjacentNode + nodeGroupID: WireNet - type: Wire wireDroppedOnCutPrototype: MVWireStack1 wireType: MediumVoltage - type: Destructible resistances: metallicResistances - spawnOnDestroy: MVWireStack1 + spawnOnDestroy: + MVWireStack1: + Min: 1 + Max: 1 - type: entity parent: WireBase @@ -91,6 +105,8 @@ nodes: - !type:AdjacentNode nodeGroupID: Apc + - !type:AdjacentNode + nodeGroupID: WireNet - type: PowerProvider voltage: Apc - type: Wire @@ -98,4 +114,7 @@ wireType: Apc - type: Destructible resistances: metallicResistances - spawnOnDestroy: ApcExtensionCableStack1 + spawnOnDestroy: + ApcExtensionCableStack1: + Min: 1 + Max: 1 diff --git a/Resources/Prototypes/Entities/Constructible/Power/microwave.yml b/Resources/Prototypes/Entities/Constructible/Specific/Cooking/microwave.yml similarity index 100% rename from Resources/Prototypes/Entities/Constructible/Power/microwave.yml rename to Resources/Prototypes/Entities/Constructible/Specific/Cooking/microwave.yml diff --git a/Resources/Prototypes/Entities/Constructible/Power/booze_dispenser.yml b/Resources/Prototypes/Entities/Constructible/Specific/Dispensers/booze_dispenser.yml similarity index 93% rename from Resources/Prototypes/Entities/Constructible/Power/booze_dispenser.yml rename to Resources/Prototypes/Entities/Constructible/Specific/Dispensers/booze_dispenser.yml index 347e8c582e..66b2844c9e 100644 --- a/Resources/Prototypes/Entities/Constructible/Power/booze_dispenser.yml +++ b/Resources/Prototypes/Entities/Constructible/Specific/Dispensers/booze_dispenser.yml @@ -9,8 +9,6 @@ state: booze_dispenser - type: ReagentDispenser pack: BoozeDispenserInventory - - type: Anchorable - - type: Pullable - type: reagentDispenserInventory id: BoozeDispenserInventory diff --git a/Resources/Prototypes/Entities/Constructible/Power/chem_dispenser.yml b/Resources/Prototypes/Entities/Constructible/Specific/Dispensers/chem_dispenser.yml similarity index 95% rename from Resources/Prototypes/Entities/Constructible/Power/chem_dispenser.yml rename to Resources/Prototypes/Entities/Constructible/Specific/Dispensers/chem_dispenser.yml index 15dd91d390..9a014fb46f 100644 --- a/Resources/Prototypes/Entities/Constructible/Power/chem_dispenser.yml +++ b/Resources/Prototypes/Entities/Constructible/Specific/Dispensers/chem_dispenser.yml @@ -13,8 +13,6 @@ - type: ReagentDispenser pack: ChemDispenserStandardInventory - type: PowerReceiver - - type: Anchorable - - type: Pullable - type: reagentDispenserInventory id: ChemDispenserStandardInventory diff --git a/Resources/Prototypes/Entities/Constructible/Power/reagent_dispenser_base.yml b/Resources/Prototypes/Entities/Constructible/Specific/Dispensers/reagent_dispenser_base.yml similarity index 74% rename from Resources/Prototypes/Entities/Constructible/Power/reagent_dispenser_base.yml rename to Resources/Prototypes/Entities/Constructible/Specific/Dispensers/reagent_dispenser_base.yml index 123732039f..0ee63db22b 100644 --- a/Resources/Prototypes/Entities/Constructible/Power/reagent_dispenser_base.yml +++ b/Resources/Prototypes/Entities/Constructible/Specific/Dispensers/reagent_dispenser_base.yml @@ -1,16 +1,22 @@ - type: entity abstract: true id: ReagentDispenserBase + placement: + mode: SnapgridCenter components: - type: Clickable - type: InteractionOutline - - type: Anchorable - type: Physics mass: 25 anchored: true shapes: - !type:PhysShapeAabb - bounds: "-0.4,-0.25,0.4,0.25" + bounds: "-0.3,-0.4,0.3,0.4" + mask: + - Impassable + - MobImpassable + - VaultImpassable + - SmallImpassable layer: - Opaque - Impassable @@ -25,4 +31,5 @@ - key: enum.ReagentDispenserUiKey.Key type: ReagentDispenserBoundUserInterface - type: LoopingSound - + - type: Anchorable + - type: Pullable diff --git a/Resources/Prototypes/Entities/Constructible/Power/soda_dispenser.yml b/Resources/Prototypes/Entities/Constructible/Specific/Dispensers/soda_dispenser.yml similarity index 93% rename from Resources/Prototypes/Entities/Constructible/Power/soda_dispenser.yml rename to Resources/Prototypes/Entities/Constructible/Specific/Dispensers/soda_dispenser.yml index 0ba3e0e60d..a47eccd325 100644 --- a/Resources/Prototypes/Entities/Constructible/Power/soda_dispenser.yml +++ b/Resources/Prototypes/Entities/Constructible/Specific/Dispensers/soda_dispenser.yml @@ -9,8 +9,6 @@ state: soda_dispenser - type: ReagentDispenser pack: SodaDispenserInventory - - type: Anchorable - - type: Pullable - type: reagentDispenserInventory id: SodaDispenserInventory diff --git a/Resources/Prototypes/Entities/Constructible/Power/AME/ame_controller.yml b/Resources/Prototypes/Entities/Constructible/Specific/Engines/AME/ame_controller.yml similarity index 100% rename from Resources/Prototypes/Entities/Constructible/Power/AME/ame_controller.yml rename to Resources/Prototypes/Entities/Constructible/Specific/Engines/AME/ame_controller.yml diff --git a/Resources/Prototypes/Entities/Constructible/Power/AME/ame_structure.yml b/Resources/Prototypes/Entities/Constructible/Specific/Engines/AME/ame_structure.yml similarity index 93% rename from Resources/Prototypes/Entities/Constructible/Power/AME/ame_structure.yml rename to Resources/Prototypes/Entities/Constructible/Specific/Engines/AME/ame_structure.yml index 9dab23d992..7cfc07bfc0 100644 --- a/Resources/Prototypes/Entities/Constructible/Power/AME/ame_structure.yml +++ b/Resources/Prototypes/Entities/Constructible/Specific/Engines/AME/ame_structure.yml @@ -24,7 +24,10 @@ - type: Destructible maxHP: 500 resistances: metallicResistances - spawnOnDestroy: AMEPart + spawnOnDestroy: + AMEPart: + Min: 1 + Max: 1 - type: SnapGrid offset: Center - type: Airtight diff --git a/Resources/Prototypes/Entities/Constructible/Specific/Engines/Singularity/emitter.yml b/Resources/Prototypes/Entities/Constructible/Specific/Engines/Singularity/emitter.yml new file mode 100644 index 0000000000..4edcccbceb --- /dev/null +++ b/Resources/Prototypes/Entities/Constructible/Specific/Engines/Singularity/emitter.yml @@ -0,0 +1,74 @@ +- type: entity + name: Emitter + description: "A machine that fires bolts of energy, used for powering containment fields at a safe distance." + id: Emitter + placement: + mode: SnapgridCenter + components: + - type: InteractionOutline + - type: Clickable + - type: Physics + mass: 25 + anchored: true + shapes: + - !type:PhysShapeAabb + bounds: "-0.5, -0.5, 0.5, 0.5" + layer: + - Impassable + - MobImpassable + - VaultImpassable + - Opaque + mask: + - Impassable + - MobImpassable + - VaultImpassable + - type: SnapGrid + offset: Center + - type: Sprite + sprite: Constructible/Power/emitter.rsi + layers: + - state: emitter2 + - state: emitter-beam + shader: unshaded + visible: false + - state: emitter-lock + shader: unshaded + visible: false + - type: Emitter + - type: PowerConsumer + voltage: Medium + - type: NodeContainer + nodes: + - !type:AdjacentNode + nodeGroupID: MVPower + - type: Anchorable + - type: Pullable + - type: Appearance +# - type: Rotatable +# Idk why but the emitter breaks when I apply this. + visuals: + - type: EmitterVisualizer + - type: AccessReader + access: [[ "Engineering" ]] + + +- type: entity + name: Emitter Bolt + description: "A bolt of energy." + id: EmitterBolt + parent: BulletBase + components: + - type: Sprite + sprite: Constructible/Power/emitter.rsi + state: '' + layers: + - state: emitter_projectile + shader: unshaded + - type: Icon + sprite: Constructible/Power/emitter.rsi + state: emitter_projectile + - type: EmitterBoltComponent + - type: Projectile + soundHit: /Audio/Weapons/Guns/Hits/bullet_hit.ogg + damages: + Heat: 20 diff --git a/Resources/Prototypes/Entities/Constructible/Power/research.yml b/Resources/Prototypes/Entities/Constructible/Specific/Research/research.yml similarity index 72% rename from Resources/Prototypes/Entities/Constructible/Power/research.yml rename to Resources/Prototypes/Entities/Constructible/Specific/Research/research.yml index 6aa401816e..be404b783f 100644 --- a/Resources/Prototypes/Entities/Constructible/Power/research.yml +++ b/Resources/Prototypes/Entities/Constructible/Specific/Research/research.yml @@ -2,6 +2,8 @@ id: ResearchAndDevelopmentServer name: "R&D server" description: 'Thats a R&D server.' + placement: + mode: SnapgridCenter components: - type: Sprite sprite: Constructible/Power/server.rsi @@ -9,6 +11,21 @@ - type: Clickable - type: InteractionOutline - type: Physics + mass: 25 + anchored: true + shapes: + - !type:PhysShapeAabb + bounds: "-0.4, -0.45, 0.45, 0.45" + mask: + - Impassable + - MobImpassable + - VaultImpassable + - SmallImpassable + layer: + - Opaque + - MobImpassable + - VaultImpassable + - SmallImpassable - type: SnapGrid offset: Center - type: ResearchServer @@ -16,10 +33,14 @@ - type: PowerReceiver powerLoad: 200 priority: Low + - type: Pullable + - type: Anchorable - type: entity id: BaseResearchAndDevelopmentPointSource name: "base R&D point source" + placement: + mode: SnapgridCenter # We should make this abstract once there are actual point sources. components: - type: Sprite @@ -36,9 +57,13 @@ anchored: true shapes: - !type:PhysShapeAabb + mask: + - Impassable + - MobImpassable + - VaultImpassable + - SmallImpassable layer: - Opaque - - Impassable - MobImpassable - VaultImpassable - SmallImpassable @@ -55,4 +80,5 @@ visuals: - type: PowerDeviceVisualizer - type: PowerReceiver + - type: Pullable - type: Anchorable diff --git a/Resources/Prototypes/Entities/Constructible/Power/chem_master.yml b/Resources/Prototypes/Entities/Constructible/Specific/chem_master.yml similarity index 90% rename from Resources/Prototypes/Entities/Constructible/Power/chem_master.yml rename to Resources/Prototypes/Entities/Constructible/Specific/chem_master.yml index 01feb634e1..b64ca01e64 100644 --- a/Resources/Prototypes/Entities/Constructible/Power/chem_master.yml +++ b/Resources/Prototypes/Entities/Constructible/Specific/chem_master.yml @@ -2,6 +2,8 @@ id: chem_master name: ChemMaster 4000 description: An industrial grade chemical manipulator with pill and bottle production included. + placement: + mode: SnapgridCenter components: - type: Sprite sprite: Constructible/Power/mixer.rsi @@ -32,7 +34,10 @@ offset: Center - type: Destructible deadThreshold: 50 - spawnOnDestroy: chem_master_broken + spawnOnDestroy: + chem_master_broken: + Min: 1 + Max: 1 - type: UserInterface interfaces: - key: enum.ChemMasterUiKey.Key @@ -43,6 +48,7 @@ id: chem_master_broken name: ChemMaster 4000 [Broken] description: A broken industrial grade chemical manipulator. + abstract: true components: - type: Sprite sprite: Constructible/Power/mixer.rsi @@ -71,7 +77,10 @@ offset: Center - type: Destructible deadThreshold: 25 - spawnOnDestroy: SteelSheet1 + spawnOnDestroy: + SteelSheet1: + Min: 1 + Max: 1 - type: UserInterface interfaces: - key: enum.ChemMasterUiKey.Key diff --git a/Resources/Prototypes/Entities/Constructible/conveyor.yml b/Resources/Prototypes/Entities/Constructible/Specific/conveyor.yml similarity index 98% rename from Resources/Prototypes/Entities/Constructible/conveyor.yml rename to Resources/Prototypes/Entities/Constructible/Specific/conveyor.yml index 392722ddca..af06c06b62 100644 --- a/Resources/Prototypes/Entities/Constructible/conveyor.yml +++ b/Resources/Prototypes/Entities/Constructible/Specific/conveyor.yml @@ -12,6 +12,7 @@ shapes: - !type:PhysShapeAabb bounds: "-0.49,-0.49,0.49,0.49" + layer: [Passable] mask: - Impassable - MobImpassable diff --git a/Resources/Prototypes/Entities/Constructible/disposal.yml b/Resources/Prototypes/Entities/Constructible/Specific/disposal.yml similarity index 69% rename from Resources/Prototypes/Entities/Constructible/disposal.yml rename to Resources/Prototypes/Entities/Constructible/Specific/disposal.yml index 7bf50b731f..375ebb16ee 100644 --- a/Resources/Prototypes/Entities/Constructible/disposal.yml +++ b/Resources/Prototypes/Entities/Constructible/Specific/disposal.yml @@ -35,7 +35,6 @@ drawdepth: BelowFloor sprite: Constructible/Power/disposal.rsi state: conpipe-s - - type: DisposalTransit - type: Appearance visuals: @@ -43,6 +42,11 @@ state_free: conpipe-s state_anchored: pipe-s state_broken: pipe-b + - type: Physics + shapes: + - !type:PhysShapeAabb + bounds: "-0.5,-0.25,0.5,0.25" + layer: [ Underplating ] - type: entity id: DisposalTagger @@ -54,7 +58,6 @@ drawdepth: BelowFloor sprite: Constructible/Power/disposal.rsi state: conpipe-tagger - - type: DisposalTagger - type: Appearance visuals: @@ -66,6 +69,11 @@ interfaces: - key: enum.DisposalTaggerUiKey.Key type: DisposalTaggerBoundUserInterface + - type: Physics + shapes: + - !type:PhysShapeAabb + bounds: "-0.5,-0.25,0.5,0.25" + layer: [ Underplating ] - type: entity id: DisposalTrunk @@ -77,7 +85,6 @@ drawdepth: BelowFloor sprite: Constructible/Power/disposal.rsi state: conpipe-t - - type: DisposalEntry - type: Appearance visuals: @@ -85,6 +92,11 @@ state_free: conpipe-t state_anchored: pipe-t state_broken: pipe-b + - type: Physics + shapes: + - !type:PhysShapeAabb + bounds: "-0.5,-0.25,0.4,0.25" + layer: [ Underplating ] - type: entity id: DisposalUnit @@ -105,7 +117,6 @@ map: ["enum.DisposalUnitVisualLayers.Handle"] - state: dispover-ready map: ["enum.DisposalUnitVisualLayers.Light"] - - type: PowerReceiver - type: DisposalUnit flushTime: 2 @@ -115,7 +126,7 @@ anchored: true shapes: - !type:PhysShapeAabb - bounds: "-0.35,-0.3,0.35,0.3" + bounds: "-0.3,-0.35,0.3,0.35" mask: - Impassable - MobImpassable @@ -162,7 +173,6 @@ drawdepth: BelowFloor sprite: Constructible/Power/disposal.rsi state: conpipe-j1s - - type: DisposalRouter degrees: - 0 @@ -180,17 +190,21 @@ interfaces: - key: enum.DisposalRouterUiKey.Key type: DisposalRouterBoundUserInterface + - type: Physics + shapes: + - !type:PhysShapeAabb + bounds: "-0.5,-0.5,0.5,0.25" + layer: [ Underplating ] - type: entity id: DisposalRouterFlipped parent: DisposalRouter - name: flipped router junction + suffix: flipped components: - type: Sprite drawdepth: BelowFloor sprite: Constructible/Power/disposal.rsi state: conpipe-j2s - - type: DisposalRouter degrees: - 0 @@ -204,6 +218,11 @@ state_broken: pipe-b - type: Flippable entity: DisposalRouter + - type: Physics + shapes: + - !type:PhysShapeAabb + bounds: "-0.5,-0.25,0.5,0.5" + layer: [ Underplating ] - type: entity id: DisposalJunction @@ -215,7 +234,6 @@ drawdepth: BelowFloor sprite: Constructible/Power/disposal.rsi state: conpipe-j1 - - type: DisposalJunction degrees: - 0 @@ -229,17 +247,21 @@ state_broken: pipe-b - type: Flippable entity: DisposalJunctionFlipped + - type: Physics + shapes: + - !type:PhysShapeAabb + bounds: "-0.5,-0.5,0.5,0.25" + layer: [ Underplating ] - type: entity id: DisposalJunctionFlipped parent: DisposalJunction - name: flipped disposal junction + suffix: flipped components: - type: Sprite drawdepth: BelowFloor sprite: Constructible/Power/disposal.rsi state: conpipe-j2 - - type: DisposalJunction degrees: - 0 @@ -253,6 +275,11 @@ state_broken: pipe-b - type: Flippable entity: DisposalJunction + - type: Physics + shapes: + - !type:PhysShapeAabb + bounds: "-0.5,-0.25,0.5,0.5" + layer: [ Underplating ] - type: entity id: DisposalYJunction @@ -264,7 +291,6 @@ drawdepth: BelowFloor sprite: Constructible/Power/disposal.rsi state: conpipe-y - - type: DisposalJunction degrees: - 0 @@ -276,6 +302,11 @@ state_free: conpipe-y state_anchored: pipe-y state_broken: pipe-b + - type: Physics + shapes: + - !type:PhysShapeAabb + bounds: "-0.5,-0.5,0.25,0.5" + layer: [ Underplating ] - type: entity id: DisposalBend @@ -287,7 +318,6 @@ drawdepth: BelowFloor sprite: Constructible/Power/disposal.rsi state: conpipe-c - - type: DisposalBend - type: Appearance visuals: @@ -295,3 +325,79 @@ state_free: conpipe-c state_anchored: pipe-c state_broken: pipe-b + - type: Physics + shapes: + - !type:PhysShapeAabb + bounds: "-0.5,-0.5,0.25,0.25" + layer: [ Underplating ] + +- type: entity + id: DisposalMailingUnit + name: disposal mailing unit + description: A pneumatic waste disposal unit + placement: + mode: SnapgridCenter + snap: + - Disposal + components: + - type: Sprite + netsync: false + sprite: Constructible/Power/disposal.rsi + layers: + - state: condisposal + map: ["enum.DisposalUnitVisualLayers.Base"] + - state: dispover-handle + map: ["enum.DisposalUnitVisualLayers.Handle"] + - state: dispover-ready + map: ["enum.DisposalUnitVisualLayers.Light"] + + - type: PowerReceiver + - type: Configuration + keys: + - Tag + - type: DisposalMailingUnit + flushTime: 2 + - type: Clickable + - type: InteractionOutline + - type: Physics + anchored: true + shapes: + - !type:PhysShapeAabb + bounds: "-0.35,-0.3,0.35,0.3" + mask: + - Impassable + - MobImpassable + - VaultImpassable + - SmallImpassable + layer: + - Opaque + - Impassable + - MobImpassable + - VaultImpassable + - SmallImpassable + - type: SnapGrid + offset: Center + - type: Anchorable + - type: Destructible + thresholdvalue: 100 + resistances: metallicResistances + - type: Appearance + visuals: + - type: DisposalUnitVisualizer + state_unanchored: condisposal + state_anchored: disposal + state_charging: disposal-charging + overlay_charging: dispover-charge + overlay_ready: dispover-ready + overlay_full: dispover-full + overlay_engaged: dispover-handle + state_flush: disposal-flush + flush_sound: /Audio/Machines/disposalflush.ogg + flush_time: 2 + - type: UserInterface + interfaces: + - key: enum.DisposalMailingUnitUiKey.Key + type: DisposalMailingUnitBoundUserInterface + - key: enum.ConfigurationUiKey.Key + type: ConfigurationBoundUserInterface + - type: Pullable diff --git a/Resources/Prototypes/Entities/Constructible/Power/gravity_generator.yml b/Resources/Prototypes/Entities/Constructible/Specific/gravity_generator.yml similarity index 100% rename from Resources/Prototypes/Entities/Constructible/Power/gravity_generator.yml rename to Resources/Prototypes/Entities/Constructible/Specific/gravity_generator.yml diff --git a/Resources/Prototypes/Entities/Constructible/hydroponics.yml b/Resources/Prototypes/Entities/Constructible/Specific/hydroponics.yml similarity index 73% rename from Resources/Prototypes/Entities/Constructible/hydroponics.yml rename to Resources/Prototypes/Entities/Constructible/Specific/hydroponics.yml index c462eb9610..d0468f07db 100644 --- a/Resources/Prototypes/Entities/Constructible/hydroponics.yml +++ b/Resources/Prototypes/Entities/Constructible/Specific/hydroponics.yml @@ -7,14 +7,22 @@ - type: Clickable - type: InteractionOutline - type: Physics + mass: 25 anchored: true hard: false shapes: - - !type:PhysShapeAabb - mask: - - Impassable - - MobImpassable - - VaultImpassable + - !type:PhysShapeAabb + bounds: "-0.5, -0.5, 0.1, 0.5" + mask: + - Impassable + - MobImpassable + - VaultImpassable + - SmallImpassable + layer: + - Opaque + - MobImpassable + - VaultImpassable + - SmallImpassable - type: Destructible deadThreshold: 50 resistances: metallicResistances @@ -38,6 +46,9 @@ parent: hydroponicsSoil id: hydroponicsTray components: + - type: Physics + mass: 25 + hard: true - type: Anchorable snap: true - type: Sprite diff --git a/Resources/Prototypes/Entities/Constructible/recycler.yml b/Resources/Prototypes/Entities/Constructible/Specific/recycler.yml similarity index 100% rename from Resources/Prototypes/Entities/Constructible/recycler.yml rename to Resources/Prototypes/Entities/Constructible/Specific/recycler.yml diff --git a/Resources/Prototypes/Entities/Constructible/Storage/Closets/job_closests.yml b/Resources/Prototypes/Entities/Constructible/Storage/Closets/job_closests.yml index c7465709ad..e76f747493 100644 --- a/Resources/Prototypes/Entities/Constructible/Storage/Closets/job_closests.yml +++ b/Resources/Prototypes/Entities/Constructible/Storage/Closets/job_closests.yml @@ -25,3 +25,11 @@ state_closed: atmos_wardrobe_door - type: Icon state: atmos_wardrobe_icon + +# Janitor locker (moved here from the Fills group because it was being misused) +- type: entity + id: LockerJanitor + parent: WardrobeMixed + name: "custodial closet" + description: "It's a storage unit for janitorial clothes and gear." + diff --git a/Resources/Prototypes/Entities/Constructible/Walls/bar_sign.yml b/Resources/Prototypes/Entities/Constructible/Walls/bar_sign.yml index 1171aa19af..9f396756c2 100644 --- a/Resources/Prototypes/Entities/Constructible/Walls/bar_sign.yml +++ b/Resources/Prototypes/Entities/Constructible/Walls/bar_sign.yml @@ -5,11 +5,14 @@ - type: Clickable - type: InteractionOutline - type: Physics + shapes: + - !type:PhysShapeAabb + bounds: "-0.45, -0.95, 0.45, 1" + layer: [ Passable ] - type: Sprite drawdepth: WallTops sprite: Constructible/Misc/barsign.rsi state: empty - - type: PowerReceiver - type: BarSign @@ -25,7 +28,6 @@ drawdepth: WallTops sprite: Constructible/Misc/sylphs.rsi state: sylph - - type: PowerReceiver - type: BarSign @@ -44,3 +46,10 @@ components: - type: BarSign current: CyberSylph + - type: Physics + shapes: + - !type:PhysShapeAabb + bounds: "-0.45, -0.95, 0.95, 1.5" + layer: [ Passable ] + - type: Sprite + drawdepth: Ghosts diff --git a/Resources/Prototypes/Entities/Constructible/Walls/girder.yml b/Resources/Prototypes/Entities/Constructible/Walls/girder.yml index 70dccaf301..1afdeca842 100644 --- a/Resources/Prototypes/Entities/Constructible/Walls/girder.yml +++ b/Resources/Prototypes/Entities/Constructible/Walls/girder.yml @@ -13,13 +13,28 @@ sprite: Constructible/Structures/Walls/solid.rsi state: wall_girder - type: Physics + mass: 25 + anchored: true shapes: - !type:PhysShapeAabb - layer: [MobMask, Opaque] + mask: + - Impassable + - MobImpassable + - VaultImpassable + - SmallImpassable + layer: + - Opaque + - MobImpassable + - VaultImpassable + - SmallImpassable + - type: Pullable - type: Destructible deadThreshold: 50 resistances: metallicResistances - spawnOnDestroy: SteelSheet1 + spawnOnDestroy: + SteelSheet1: + Min: 1 + Max: 1 - type: SnapGrid offset: Edge placement: diff --git a/Resources/Prototypes/Entities/Constructible/Walls/lighting.yml b/Resources/Prototypes/Entities/Constructible/Walls/lighting.yml index feec88e639..b33d343532 100644 --- a/Resources/Prototypes/Entities/Constructible/Walls/lighting.yml +++ b/Resources/Prototypes/Entities/Constructible/Walls/lighting.yml @@ -5,6 +5,10 @@ - type: Clickable - type: InteractionOutline - type: Physics + shapes: + - !type:PhysShapeAabb + bounds: "-0.45, -0.15, 0.45, 0.35" + layer: [ Passable ] - type: LoopingSound - type: Sprite sprite: Constructible/Lighting/light_tube.rsi @@ -48,9 +52,30 @@ energy: 1.0 enabled: false offset: "-0.5, 0" + - type: Physics + shapes: + - !type:PhysShapeAabb + bounds: "0, 0.1, 0.25, 0.1" + layer: [ Passable ] - type: PoweredLight bulb: Bulb - type: PowerReceiver - type: Destructible deadThreshold: 25 resistances: metallicResistances + +- type: entity + name: unpowered small light + id: SmallLight + parent: WallLight + components: + - type: Sprite + sprite: Constructible/Lighting/light_small.rsi + state: on + - type: PointLight + energy: 1.0 + enabled: true + offset: "-0.5, 0" + - type: Destructible + deadThreshold: 25 + resistances: metallicResistances diff --git a/Resources/Prototypes/Entities/Constructible/Walls/walls.yml b/Resources/Prototypes/Entities/Constructible/Walls/walls.yml index 11ff98a271..56772e4b08 100644 --- a/Resources/Prototypes/Entities/Constructible/Walls/walls.yml +++ b/Resources/Prototypes/Entities/Constructible/Walls/walls.yml @@ -46,7 +46,10 @@ sprite: Constructible/Structures/Walls/brick.rsi - type: Destructible deadThreshold: 300 - spawnOnDestroy: Girder + spawnOnDestroy: + Girder: + Min: 1 + Max: 1 resistances: metallicResistances - type: IconSmooth key: walls @@ -63,7 +66,10 @@ sprite: Constructible/Structures/Walls/clock.rsi - type: Destructible deadThreshold: 300 - spawnOnDestroy: Girder + spawnOnDestroy: + Girder: + Min: 1 + Max: 1 resistances: metallicResistances - type: IconSmooth key: walls @@ -80,7 +86,10 @@ sprite: Constructible/Structures/Walls/clown.rsi - type: Destructible deadThreshold: 300 - spawnOnDestroy: Girder + spawnOnDestroy: + Girder: + Min: 1 + Max: 1 resistances: metallicResistances - type: IconSmooth key: walls @@ -98,7 +107,10 @@ sprite: Constructible/Structures/Walls/cult.rsi - type: Destructible deadThreshold: 300 - spawnOnDestroy: Girder + spawnOnDestroy: + Girder: + Min: 1 + Max: 1 resistances: metallicResistances - type: IconSmooth key: walls @@ -115,7 +127,10 @@ sprite: Constructible/Structures/Walls/debug.rsi - type: Destructible deadThreshold: 300 - spawnOnDestroy: Girder + spawnOnDestroy: + Girder: + Min: 1 + Max: 1 resistances: metallicResistances - type: IconSmooth key: walls @@ -132,7 +147,10 @@ sprite: Constructible/Structures/Walls/diamond.rsi - type: Destructible deadThreshold: 300 - spawnOnDestroy: Girder + spawnOnDestroy: + Girder: + Min: 1 + Max: 1 resistances: metallicResistances - type: IconSmooth key: walls @@ -150,7 +168,10 @@ sprite: Constructible/Structures/Walls/gold.rsi - type: Destructible deadThreshold: 300 - spawnOnDestroy: Girder + spawnOnDestroy: + Girder: + Min: 1 + Max: 1 resistances: metallicResistances - type: IconSmooth key: walls @@ -167,7 +188,10 @@ sprite: Constructible/Structures/Walls/ice.rsi - type: Destructible deadThreshold: 300 - spawnOnDestroy: Girder + spawnOnDestroy: + Girder: + Min: 1 + Max: 1 resistances: metallicResistances - type: IconSmooth key: walls @@ -184,7 +208,10 @@ sprite: Constructible/Structures/Walls/metal.rsi - type: Destructible deadThreshold: 300 - spawnOnDestroy: Girder + spawnOnDestroy: + Girder: + Min: 1 + Max: 1 resistances: metallicResistances - type: IconSmooth key: walls @@ -201,7 +228,10 @@ sprite: Constructible/Structures/Walls/plasma.rsi - type: Destructible deadThreshold: 300 - spawnOnDestroy: Girder + spawnOnDestroy: + Girder: + Min: 1 + Max: 1 resistances: metallicResistances - type: IconSmooth key: walls @@ -218,7 +248,10 @@ sprite: Constructible/Structures/Walls/plastic.rsi - type: Destructible deadThreshold: 300 - spawnOnDestroy: Girder + spawnOnDestroy: + Girder: + Min: 1 + Max: 1 resistances: metallicResistances - type: IconSmooth key: walls @@ -262,7 +295,10 @@ sprite: Constructible/Structures/Walls/riveted.rsi - type: Destructible deadThreshold: 1000 - spawnOnDestroy: Girder + spawnOnDestroy: + Girder: + Min: 1 + Max: 1 resistances: metallicResistances - type: IconSmooth key: walls @@ -279,7 +315,10 @@ sprite: Constructible/Structures/Walls/sandstone.rsi - type: Destructible deadThreshold: 300 - spawnOnDestroy: Girder + spawnOnDestroy: + Girder: + Min: 1 + Max: 1 resistances: metallicResistances - type: IconSmooth key: walls @@ -296,7 +335,10 @@ sprite: Constructible/Structures/Walls/silver.rsi - type: Destructible deadThreshold: 300 - spawnOnDestroy: Girder + spawnOnDestroy: + Girder: + Min: 1 + Max: 1 resistances: metallicResistances - type: IconSmooth key: walls @@ -335,7 +377,10 @@ sprite: Constructible/Structures/Walls/uranium.rsi - type: Destructible deadThreshold: 300 - spawnOnDestroy: Girder + spawnOnDestroy: + Girder: + Min: 1 + Max: 1 resistances: metallicResistances - type: IconSmooth key: walls @@ -352,7 +397,10 @@ sprite: Constructible/Structures/Walls/wood.rsi - type: Destructible deadThreshold: 300 - spawnOnDestroy: Girder + spawnOnDestroy: + Girder: + Min: 1 + Max: 1 resistances: metallicResistances - type: IconSmooth key: walls diff --git a/Resources/Prototypes/Entities/Constructible/Walls/windows.yml b/Resources/Prototypes/Entities/Constructible/Walls/windows.yml index 0374485367..97e6310a7c 100644 --- a/Resources/Prototypes/Entities/Constructible/Walls/windows.yml +++ b/Resources/Prototypes/Entities/Constructible/Walls/windows.yml @@ -29,6 +29,11 @@ - type: Destructible deadThreshold: 15 resistances: metallicResistances + destroySoundCollection: WindowBreak + spawnOnDestroy: + ShardGlass: + Min: 1 + Max: 3 - type: SnapGrid offset: Center - type: Airtight @@ -37,6 +42,9 @@ - type: Construction graph: window node: window + - type: Appearance + visuals: + - type: WindowVisualizer - type: entity id: ReinforcedWindow @@ -75,3 +83,10 @@ - type: Construction graph: window node: phoronWindow + +- type: soundCollection + id: WindowBreak + files: + - /Audio/Effects/glass_break1.ogg + - /Audio/Effects/glass_break2.ogg + - /Audio/Effects/glass_break3.ogg diff --git a/Resources/Prototypes/Entities/Effects/Markers/spawn_points_jobs.yml b/Resources/Prototypes/Entities/Effects/Markers/spawn_points_jobs.yml index aae9082344..df3a01813a 100644 --- a/Resources/Prototypes/Entities/Effects/Markers/spawn_points_jobs.yml +++ b/Resources/Prototypes/Entities/Effects/Markers/spawn_points_jobs.yml @@ -18,6 +18,16 @@ - type: Sprite state: Assistant +# Quartermaster +- type: entity + id: SpawnPointQuartermaster + parent: SpawnPointJobBase + name: spawn point (quartermaster) + components: + - type: SpawnPoint + job_id: Quartermaster + - type: Sprite + state: Quartermaster # Cargo tech - type: entity @@ -43,7 +53,7 @@ state: Bartender -# Bartender +# Chef - type: entity id: SpawnPointChef parent: SpawnPointJobBase @@ -54,6 +64,16 @@ - type: Sprite state: Cook +# Botanist +- type: entity + id: SpawnPointBotanist + parent: SpawnPointJobBase + name: spawn point (botanist) + components: + - type: SpawnPoint + job_id: Botanist + - type: Sprite + state: Botanist # Clown - type: entity @@ -78,6 +98,16 @@ - type: Sprite state: Mime +# Chaplain +- type: entity + id: SpawnPointChaplain + parent: SpawnPointJobBase + name: spawn point (chaplain) + components: + - type: SpawnPoint + job_id: Chaplain + - type: Sprite + state: Chaplain # Janitor - type: entity @@ -198,6 +228,16 @@ - type: Sprite state: Head of Security +# Warden +- type: entity + id: SpawnPointWarden + parent: SpawnPointJobBase + name: spawn point (warden) + components: + - type: SpawnPoint + job_id: Warden + - type: Sprite + state: Warden # SecurityOfficer - type: entity diff --git a/Resources/Prototypes/Entities/Mobs/Species/human.yml b/Resources/Prototypes/Entities/Mobs/Species/human.yml index 26741a8d06..3fd79f3b08 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/human.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/human.yml @@ -160,6 +160,7 @@ producesGases: Oxygen: 0.00045572916 CarbonDioxide: 0.00015190972 + - type: Internals - type: MobStateManager - type: HeatResistance - type: Appearance @@ -198,6 +199,8 @@ - key: enum.AcceptCloningUiKey.Key type: AcceptCloningBoundUserInterface - type: Puller + - type: Butcherable + meat: FoodMeat - type: entity save: false diff --git a/Resources/Prototypes/Entities/Objects/Boxes/boxes_general.yml b/Resources/Prototypes/Entities/Objects/Boxes/boxes_general.yml index 824c5f345a..7d30fd762f 100644 --- a/Resources/Prototypes/Entities/Objects/Boxes/boxes_general.yml +++ b/Resources/Prototypes/Entities/Objects/Boxes/boxes_general.yml @@ -91,7 +91,7 @@ - type: StorageFill contents: - name: BreathMaskClothing - #- name: O2 Canister + - name: EmergencyOxygenTankFilled #- name: Injector - type: Sprite layers: diff --git a/Resources/Prototypes/Entities/Objects/Devices/pda.yml b/Resources/Prototypes/Entities/Objects/Devices/pda.yml index b92b232906..5f94b67611 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/pda.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/pda.yml @@ -52,6 +52,21 @@ - type: Icon state: pda-cook +- type: entity + name: Botanist PDA + parent: BasePDA + id: BotanistPDA + description: Has an earthy scent. + components: + - type: PDA + idCard: BotanistIDCard + - type: Appearance + visuals: + - type: PDAVisualizer + state: pda-hydro + - type: Icon + state: pda-hydro + - type: entity name: Clown PDA parent: BasePDA @@ -90,21 +105,35 @@ - type: Icon state: pda-mime -# TODO: uncomment this when the QM job gets added -#- type: entity -# name: Quartermaster PDA -# parent: BasePDA -# id: QuartermasterPDA -# description: PDA for the guy that orders the guns. -# components: -# - type: PDA -# idCard: QuartermasterIDCard -# - type: Appearance -# visuals: -# - type: PDAVisualizer -# state: pda-qm -# - type: Icon -# state: pda-qm +- type: entity + name: Chaplain PDA + parent: BasePDA + id: ChaplainPDA + description: God's chosen PDA. + components: + - type: PDA + idCard: ChaplainIDCard + - type: Appearance + visuals: + - type: PDAVisualizer + state: pda-chaplain + - type: Icon + state: pda-chaplain + +- type: entity + name: Quartermaster PDA + parent: BasePDA + id: QuartermasterPDA + description: PDA for the guy that orders the guns. + components: + - type: PDA + idCard: QuartermasterIDCard + - type: Appearance + visuals: + - type: PDAVisualizer + state: pda-qm + - type: Icon + state: pda-qm - type: entity name: Cargo PDA @@ -292,21 +321,20 @@ - type: Icon state: pda-hos -# TODO: Uncomment this when the Warden job gets added -#- type: entity -# name: Warden PDA -# parent: BasePDA -# id: WardenPDA -# description: The OS appears to have been jailbroken. -# components: -# - type: PDA -# idCard: WardenIDCard -# - type: Appearance -# visuals: -# - type: PDAVisualizer -# state: pda-warden -# - type: Icon -# state: pda-warden +- type: entity + name: Warden PDA + parent: BasePDA + id: WardenPDA + description: The OS appears to have been jailbroken. + components: + - type: PDA + idCard: WardenIDCard + - type: Appearance + visuals: + - type: PDAVisualizer + state: pda-warden + - type: Icon + state: pda-warden - type: entity name: Security PDA diff --git a/Resources/Prototypes/Entities/Objects/Fun/instruments.yml b/Resources/Prototypes/Entities/Objects/Fun/instruments.yml index b52cec6f8e..6656842ab9 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/instruments.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/instruments.yml @@ -206,3 +206,20 @@ - type: Item size: 24 sprite: Objects/Fun/Instruments/bike_horn.rsi + +- type: entity + name: super synthesizer + description: Blasting the ghetto with Touhou MIDIs since 2020. + parent: BaseHandheldInstrument + id: SuperSynthesizerInstrument + components: + - type: Instrument + allowPercussion: true + allowProgramChange: true + - type: Sprite + sprite: Objects/Fun/Instruments/h_synthesizer.rsi + state: icon + + - type: Item + size: 24 + sprite: Objects/Fun/Instruments/h_synthesizer.rsi diff --git a/Resources/Prototypes/Entities/Objects/Misc/computer_circuitboards.yml b/Resources/Prototypes/Entities/Objects/Misc/computer_circuitboards.yml index 01968130e0..f701c61571 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/computer_circuitboards.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/computer_circuitboards.yml @@ -71,7 +71,7 @@ name: space villain arcade computer circuit board components: - type: ComputerBoard - prototype: Arcade + prototype: SpaceVillainArcade - type: entity id: BlockGameArcadeComputerCircuitboard diff --git a/Resources/Prototypes/Entities/Objects/Misc/fluff_lights.yml b/Resources/Prototypes/Entities/Objects/Misc/fluff_lights.yml index d51a39690b..52fb36990e 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/fluff_lights.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/fluff_lights.yml @@ -126,8 +126,11 @@ - type: Anchorable - type: Destructible deadThreshold: 10 - spawnOnDestroy: FloodlightBroken - destroySound: /Audio/Effects/glassbreak1.ogg + spawnOnDestroy: + FloodlightBroken: + Min: 1 + Max: 1 + destroySound: /Audio/Effects/glass_break1.ogg resistances: metallicResistances - type: Appearance visuals: @@ -145,7 +148,10 @@ - type: Anchorable - type: Destructible deadThreshold: 20 - spawnOnDestroy: SteelSheet1 + spawnOnDestroy: + SteelSheet1: + Min: 1 + Max: 1 destroySound: /Audio/Effects/metalbreak.ogg resistances: metallicResistances - type: Physics diff --git a/Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml b/Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml index 30f70e2dd7..4302feeeac 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml @@ -62,6 +62,20 @@ - type: PresetIdCard job: SecurityOfficer +- type: entity + parent: IDCardStandard + id: WardenIDCard + name: warden ID card + components: + - type: Sprite + layers: + - state: default + - state: assigned + - state: idwarden + + - type: PresetIdCard + job: Warden + - type: entity parent: IDCardStandard id: EngineeringIDCard @@ -104,6 +118,20 @@ - type: PresetIdCard job: CargoTechnician +- type: entity + parent: IDCardStandard + id: QuartermasterIDCard + name: quartermaster ID card + components: + - type: Sprite + layers: + - state: default + - state: assigned + - state: idquartermaster + + - type: PresetIdCard + job: Quartermaster + - type: entity parent: IDCardStandard id: ResearchIDCard @@ -146,6 +174,20 @@ - type: PresetIdCard job: Mime +- type: entity + parent: IDCardStandard + id: ChaplainIDCard + name: chaplain ID card + components: + - type: Sprite + layers: + - state: default + - state: assigned + - state: idchaplain + + - type: PresetIdCard + job: Chaplain + - type: entity parent: IDCardStandard id: JanitorIDCard @@ -188,6 +230,21 @@ - type: PresetIdCard job: Chef +- type: entity + parent: IDCardStandard + id: BotanistIDCard + name: botanist ID card + components: + - type: Sprite + layers: + - state: default + - state: assigned + - state: idbotanist + + - type: PresetIdCard + job: Botanist + + - type: entity parent: IDCardStandard id: HoPIDCard diff --git a/Resources/Prototypes/Entities/Objects/Power/powercells.yml b/Resources/Prototypes/Entities/Objects/Power/powercells.yml index bf577d7475..a0c7b0e26b 100644 --- a/Resources/Prototypes/Entities/Objects/Power/powercells.yml +++ b/Resources/Prototypes/Entities/Objects/Power/powercells.yml @@ -1,5 +1,7 @@ -- type: entity - id: PowerCellSmallBase +# Power cells + +- type: entity + id: PowerCellBase abstract: true parent: BaseItem components: @@ -7,16 +9,55 @@ anchored: false shapes: - !type:PhysShapeAabb - bounds: "-0.15,-0.3,0.2,0.3" + bounds: "-0.15,-0.3,0.2,0.3" # TODO: these are placeholder values layer: - Clickable - type: PowerCell - - type: Appearance - type: Sprite netsync: false +- type: entity + id: PowerCellSmallBase + abstract: true + parent: PowerCellBase + components: + - type: PowerCell + cellSize: Small + +- type: entity + id: PowerCellMediumBase + abstract: true + parent: PowerCellBase + components: + - type: PowerCell + cellSize: Medium + +- type: entity + id: PowerCellLargeBase + abstract: true + parent: PowerCellBase + components: + - type: PowerCell + cellSize: Large + +- type: entity + name: potato battery + description: Someone's stuck two nails and some wire in a large potato. Somehow it provides a little charge. You might be able to cram it into an M-sized slot. + id: PowerCellMediumPotato + parent: PowerCellMediumBase + components: + - type: Sprite + sprite: Objects/Power/PowerCells/potato_battery.rsi + layers: + - state: potato_battery + - type: PowerCell + maxCharge: 360 + startingCharge: 360 + updateVisual: false + - type: entity name: small standard power cell + description: A rechargeable standardized power cell, size S. This is the cheapest kind you can find. id: PowerCellSmallStandard parent: PowerCellSmallBase components: @@ -25,8 +66,8 @@ layers: - state: s_st - type: PowerCell - maxCharge: 15000 - startingCharge: 15000 + maxCharge: 360 + startingCharge: 360 - type: Appearance visuals: - type: PowerCellVisualizer @@ -35,6 +76,7 @@ - type: entity name: small high-capacity power cell + description: A rechargeable standardized power cell, size S. This is the popular and reliable version. id: PowerCellSmallHigh parent: PowerCellSmallBase components: @@ -43,8 +85,8 @@ layers: - state: s_hi - type: PowerCell - maxCharge: 30000 - startingCharge: 30000 + maxCharge: 720 + startingCharge: 720 - type: Appearance visuals: - type: PowerCellVisualizer @@ -53,6 +95,7 @@ - type: entity name: small super-capacity power cell + description: A rechargeable standardized power cell, size S. This premium high-capacity brand stores up to 50% more energy than the competition. id: PowerCellSmallSuper parent: PowerCellSmallBase components: @@ -61,8 +104,8 @@ layers: - state: s_sup - type: PowerCell - maxCharge: 60000 - startingCharge: 60000 + maxCharge: 1080 + startingCharge: 1080 - type: Appearance visuals: - type: PowerCellVisualizer @@ -71,6 +114,7 @@ - type: entity name: small hyper-capacity power cell + description: A rechargeable standardized power cell, size S. This one looks like a rare and powerful prototype. id: PowerCellSmallHyper parent: PowerCellSmallBase components: @@ -79,13 +123,178 @@ layers: - state: s_hy - type: PowerCell - maxCharge: 80000 - startingCharge: 80000 + maxCharge: 1800 + startingCharge: 1800 - type: Appearance visuals: - type: PowerCellVisualizer prefix: s_hy +- type: entity + name: small microreactor cell + description: A rechargeable standardized microreactor cell, size S. Intended for low-power devices, it slowly recharges by itself. + id: PowerCellSmallAutorecharge + parent: PowerCellSmallBase + components: + - type: Sprite + sprite: Objects/Power/PowerCells/power_cell_small_autorecharge.rsi + layers: + - state: s_ar + - type: PowerCell + maxCharge: 50 + startingCharge: 50 + autoRecharge: true + autoRechargeRate: 0.16667 #takes about 5 minutes to charge itself back to full + - type: Appearance + visuals: + - type: PowerCellVisualizer + prefix: s_ar + +- type: entity + name: medium standard power cell + description: A rechargeable standardized power cell, size M. This is the cheapest kind you can find. + id: PowerCellMediumStandard + parent: PowerCellMediumBase + components: + - type: Sprite + sprite: Objects/Power/PowerCells/power_cell_medium_st.rsi + layers: + - state: m_st + - type: PowerCell + maxCharge: 2160 + startingCharge: 2160 + - type: Appearance + visuals: + - type: PowerCellVisualizer + prefix: m_st + +- type: entity + name: medium high-capacity power cell + description: A rechargeable standardized power cell, size M. This is the popular and reliable version. + id: PowerCellMediumHigh + parent: PowerCellMediumBase + components: + - type: Sprite + sprite: Objects/Power/PowerCells/power_cell_medium_hi.rsi + layers: + - state: m_hi + - type: PowerCell + maxCharge: 2880 + startingCharge: 2880 + powerCellSize: Medium + - type: Appearance + visuals: + - type: PowerCellVisualizer + prefix: m_hi + +- type: entity + name: medium super-capacity power cell + description: A rechargeable standardized power cell, size M. This premium high-capacity brand stores up to 50% more energy than the competition. + id: PowerCellMediumSuper + parent: PowerCellMediumBase + components: + - type: Sprite + sprite: Objects/Power/PowerCells/power_cell_medium_sup.rsi + layers: + - state: m_sup + - type: PowerCell + maxCharge: 3600 + startingCharge: 3600 + - type: Appearance + visuals: + - type: PowerCellVisualizer + prefix: m_sup + +- type: entity + name: medium hyper-capacity power cell + description: A rechargeable standardized power cell, size M. This one looks like a rare and powerful prototype. + id: PowerCellMediumHyper + parent: PowerCellMediumBase + components: + - type: Sprite + sprite: Objects/Power/PowerCells/power_cell_medium_hy.rsi + layers: + - state: m_hy + - type: PowerCell + maxCharge: 5400 + startingCharge: 5400 + - type: Appearance + visuals: + - type: PowerCellVisualizer + prefix: m_hy + +- type: entity + name: large standard power cell + description: A rechargeable standardized power cell, size L. This is the cheapest kind you can find. + id: PowerCellLargeStandard + parent: PowerCellLargeBase + components: + - type: Sprite + sprite: Objects/Power/PowerCells/power_cell_large_st.rsi + layers: + - state: l_st + - type: PowerCell + maxCharge: 9000 + startingCharge: 9000 + - type: Appearance + visuals: + - type: PowerCellVisualizer + prefix: l_st + +- type: entity + name: large high-capacity power cell + description: A rechargeable standardized power cell, size L. This is the popular and reliable version. + id: PowerCellLargeHigh + parent: PowerCellLargeBase + components: + - type: Sprite + sprite: Objects/Power/PowerCells/power_cell_large_hi.rsi + layers: + - state: l_hi + - type: PowerCell + maxCharge: 18000 + startingCharge: 18000 + - type: Appearance + visuals: + - type: PowerCellVisualizer + prefix: l_hi + +- type: entity + name: large super-capacity power cell + description: A rechargeable standardized power cell, size M. This premium high-capacity brand stores up to 50% more energy than the competition. + id: PowerCellLargeSuper + parent: PowerCellLargeBase + components: + - type: Sprite + sprite: Objects/Power/PowerCells/power_cell_large_sup.rsi + layers: + - state: l_sup + - type: PowerCell + maxCharge: 54000 + startingCharge: 54000 + - type: Appearance + visuals: + - type: PowerCellVisualizer + prefix: l_sup + +- type: entity + name: large hyper-capacity power cell + description: A rechargeable standardized power cell, size L. This one looks like a rare and powerful prototype. + id: PowerCellLargeHyper + parent: PowerCellLargeBase + components: + - type: Sprite + sprite: Objects/Power/PowerCells/power_cell_large_hy.rsi + layers: + - state: l_hy + - type: PowerCell + maxCharge: 72000 + startingCharge: 72000 + - type: Appearance + visuals: + - type: PowerCellVisualizer + prefix: l_hy + - type: entity name: cell recharger id: PowerCellRecharger diff --git a/Resources/Prototypes/Entities/Objects/Specific/medical.yml b/Resources/Prototypes/Entities/Objects/Specific/medical.yml index 578a550161..4b12c1b339 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/medical.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/medical.yml @@ -84,4 +84,4 @@ - type: Stack max: 5 count: 5 - stacktype: enum.StackType.Gauze + stacktype: enum.StackType.Gauze \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Objects/Specific/morgue.yml b/Resources/Prototypes/Entities/Objects/Specific/morgue.yml new file mode 100644 index 0000000000..efbd62ae2c --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Specific/morgue.yml @@ -0,0 +1,202 @@ +- type: entity + id: BodyBag_Container + name: body bag + description: A plastic bag designed for the storage and transportation of cadavers. + components: + - type: Sprite + netsync: false + sprite: Objects/Specific/Morgue/bodybags.rsi + layers: + - state: bag + - state: open_overlay + map: ["enum.StorageVisualLayers.Door"] + - state: label_overlay + map: ["enum.BodyBagVisualLayers.Label"] + - type: Icon + sprite: Objects/Specific/Morgue/bodybags.rsi + state: bag + - type: Clickable + - type: InteractionOutline + - type: MovedByPressure + - type: Physics + mass: 5 + anchored: false + shapes: + - !type:PhysShapeAabb + bounds: "-0.45,-0.5,0.1,0.5" + layer: + - Clickable + - type: BodyBagEntityStorage + CanWeldShut: false + Capacity: 1 + closeSound: /Audio/Misc/zip.ogg + openSound: /Audio/Misc/zip.ogg + - type: Appearance + visuals: + - type: StorageVisualizer + state_open: open_overlay + state_closed: bag + - type: BodyBagVisualizer + - type: Pullable + +- type: entity + id: BodyBag_Item + name: body bag + description: A plastic bag designed for the storage and transportation of cadavers. + parent: BaseItem + components: + - type: Sprite + netsync: false + sprite: Objects/Specific/Morgue/bodybags.rsi + state: item +# - type: BodyBagItem #TODO: we need some kind of generic placable, like thus: +# - type: Placeable +# prototype: someId +# snap: Center + + +- type: entity + id: Morgue + name: morgue + description: Used to keep bodies in until someone fetches them. Includes a high-tech alert system for false-positives! + components: + - type: Sprite + netsync: false + sprite: Objects/Specific/Morgue/morgue.rsi + layers: + - state: morgue_closed + map: ["enum.MorgueVisualLayers.Base"] + - state: morgue_nomob_light + visible: false + map: ["enum.MorgueVisualLayers.Light"] + shader: unshaded + - type: Clickable + - type: InteractionOutline + - type: Physics + mass: 25 + anchored: true + shapes: + - !type:PhysShapeAabb + bounds: "-0.5, -0.5, 0.5, 0.5" + mask: + - Impassable + - MobImpassable + - VaultImpassable + - SmallImpassable + layer: + - Opaque + - MobImpassable + - VaultImpassable + - SmallImpassable + - type: MorgueEntityStorage + CanWeldShut: false + IsCollidableWhenOpen: true + Capacity: 1 + closeSound: /Audio/Items/deconstruct.ogg + openSound: /Audio/Items/deconstruct.ogg + trayPrototype: MorgueTray + - type: Appearance + visuals: + - type: MorgueVisualizer + state_open: morgue_open + state_closed: morgue_closed + light_contents: morgue_nomob_light + light_mob: morgue_nosoul_light + light_soul: morgue_soul_light + - type: SnapGrid + offset: Center + +- type: entity + id: MorgueTray + name: morgue tray + description: If you lay down to have a rest on this, you'll soon have a problem. + components: + - type: Sprite + netsync: false + sprite: Objects/Specific/Morgue/morgue.rsi + state: morgue_tray + - type: Clickable + - type: InteractionOutline + - type: Physics + mass: 15 + anchored: true + shapes: + - !type:PhysShapeAabb + bounds: "-0.5, -0.5, 0.5, 0.5" + layer: + - Clickable + - type: MorgueTray + + +- type: entity + id: Crematorium + name: crematorium + description: A human incinerator. Works well on barbecue nights. + components: + - type: Sprite + netsync: false + sprite: Objects/Specific/Morgue/morgue.rsi + layers: + - state: crema_closed + map: ["enum.CrematoriumVisualLayers.Base"] + - state: crema_contents_light + visible: false + map: ["enum.CrematoriumVisualLayers.Light"] + shader: unshaded + - type: Clickable + - type: InteractionOutline + - type: Physics + mass: 25 + anchored: true + shapes: + - !type:PhysShapeAabb + bounds: "-0.5, -0.5, 0.5, 0.5" + mask: + - Impassable + - MobImpassable + - VaultImpassable + - SmallImpassable + layer: + - Opaque + - MobImpassable + - VaultImpassable + - SmallImpassable + - type: CrematoriumEntityStorage + CanWeldShut: false + IsCollidableWhenOpen: true + Capacity: 1 + closeSound: /Audio/Items/deconstruct.ogg + openSound: /Audio/Items/deconstruct.ogg + trayPrototype: CrematoriumTray + doSoulBeep: false + - type: LoopingSound + - type: Appearance + visuals: + - type: CrematoriumVisualizer + state_open: crema_open + state_closed: crema_closed + light_contents: crema_contents_light + light_burning: crema_active_light + - type: SnapGrid + offset: Center + +- type: entity + id: CrematoriumTray + name: crematorium tray + parent: MorgueTray + components: + - type: Sprite + netsync: false + sprite: Objects/Specific/Morgue/morgue.rsi + state: crema_tray + +- type: entity + id: Ash + name: ash + description: This used to be something, but now it's not. + parent: BaseItem + components: + - type: Sprite + netsync: false + sprite: Objects/Consumable/Trash/ash.rsi + state: icon \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Objects/Tools/flashlight.yml b/Resources/Prototypes/Entities/Objects/Tools/flashlight.yml index e1de7745b0..7fa4d153b3 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/flashlight.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/flashlight.yml @@ -5,6 +5,7 @@ description: They light the way to freedom. components: - type: HandheldLight + - type: PowerCellSlot - type: Sprite sprite: Objects/Tools/flashlight.rsi layers: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/security.yml b/Resources/Prototypes/Entities/Objects/Weapons/security.yml index ea46c881b4..222a3b788b 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/security.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/security.yml @@ -1,8 +1,8 @@ - type: entity name: stun baton + description: A stun baton for incapacitating people with. parent: BaseItem id: Stunbaton - description: A melee weapon which delivers an incapacitating shock, knocking them to the ground or at least disorientating them. components: - type: Sprite sprite: Objects/Weapons/Melee/stunbaton.rsi @@ -16,6 +16,10 @@ arcwidth: 0 arc: default + - type: PowerCellSlot + slotSize: Medium + startingCellType: PowerCellMediumHigh + - type: Item size: 10 sprite: Objects/Weapons/Melee/stunbaton.rsi diff --git a/Resources/Prototypes/Entities/Objects/shards.yml b/Resources/Prototypes/Entities/Objects/shards.yml new file mode 100644 index 0000000000..0807101774 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/shards.yml @@ -0,0 +1,53 @@ +- type: entity + id: ShardBase + name: shard + description: It's a shard of some unknown material. + parent: BaseItem + abstract: true + components: + - type: Sprite + sprite: Objects/Materials/Shards/shard.rsi + state: shard1 + - type: RandomSpriteState + spriteStates: + - shard1 + - shard2 + - shard3 + - type: ItemCooldown + - type: MeleeWeapon + damageType: Slash + - type: Item + sprite: Objects/Materials/Shards/shard.rsi + +- type: entity + id: ShardGlass + name: glass shard + description: A small piece of glass. It looks sharp, you wouldn't want to step on it barefoot. + parent: ShardBase + components: + - type: Sprite + color: "#bbeeff" + - type: Item + color: "#bbeeff" + +- type: entity + id: ShardGlassReinforced + name: reinforced glass shard + description: A small piece of reinforced glass. It looks sharp, you wouldn't want to step on it barefoot. + parent: ShardBase + components: + - type: Sprite + color: "#96cdef" + - type: Item + color: "#96cdef" + +- type: entity + id: ShardGlassPhoron + name: phoron glass shard + description: A small piece of phoron glass. It looks sharp, you wouldn't want to step on it barefoot. + parent: ShardBase + components: + - type: Sprite + color: "#f3b489" + - type: Item + color: "#f3b489" diff --git a/Resources/Prototypes/Entities/Objects/tiles.yml b/Resources/Prototypes/Entities/Objects/tiles.yml index 5bd88b6541..5c2fa2e9a5 100644 --- a/Resources/Prototypes/Entities/Objects/tiles.yml +++ b/Resources/Prototypes/Entities/Objects/tiles.yml @@ -7,7 +7,6 @@ - type: Sprite sprite: Objects/Tiles/tile.rsi state: tile_steel - - type: FloorTile output: floor_steel - type: Stack @@ -24,23 +23,6 @@ sprite: Objects/Tiles/tile.rsi HeldPrefix: tile_steel -- type: entity - name: carpet floor tile - parent: FloorTileItemBase - id: FloorTileItemCarpet - components: - - type: Sprite - sprite: Objects/Tiles/tile.rsi - state: tile_carpet - - - type: Item - sprite: Objects/Tiles/tile.rsi - HeldPrefix: tile_carpet - - type: FloorTile - output: floor_carpet - - type: Stack - stacktype: FloorTileCarpet - - type: entity name: wood floor tile parent: FloorTileItemBase @@ -49,7 +31,6 @@ - type: Sprite sprite: Objects/Tiles/tile.rsi state: tile_wood - - type: Item sprite: Objects/Tiles/tile.rsi HeldPrefix: tile_wood @@ -68,7 +49,6 @@ - type: Sprite sprite: Objects/Tiles/tile.rsi state: tile_white - - type: Item sprite: Objects/Tiles/tile.rsi HeldPrefix: tile_white @@ -87,7 +67,6 @@ - type: Sprite sprite: Objects/Tiles/tile.rsi state: tile_dark - - type: Item sprite: Objects/Tiles/tile.rsi HeldPrefix: tile_dark @@ -106,7 +85,6 @@ - type: Sprite sprite: Objects/Tiles/tile.rsi state: tile_dark_techfloor_grid - - type: Item sprite: Objects/Tiles/tile.rsi HeldPrefix: tile_dark @@ -121,7 +99,6 @@ - type: Sprite sprite: Objects/Tiles/tile.rsi state: tile_showroom - - type: Item sprite: Objects/Tiles/tile.rsi HeldPrefix: tile_showroom @@ -136,7 +113,6 @@ - type: Sprite sprite: Objects/Tiles/tile.rsi state: tile_showroom - - type: Item sprite: Objects/Tiles/tile.rsi HeldPrefix: tile_showroom @@ -151,7 +127,6 @@ - type: Sprite sprite: Objects/Tiles/tile.rsi state: tile_snow - - type: Item sprite: Objects/Tiles/tile.rsi HeldPrefix: tile_silver @@ -166,7 +141,6 @@ - type: Sprite sprite: Objects/Tiles/tile.rsi state: tile_gcircuit - - type: Item sprite: Objects/Tiles/tile.rsi HeldPrefix: tile_silver @@ -181,7 +155,6 @@ - type: Sprite sprite: Objects/Tiles/tile.rsi state: tile_gold - - type: Item sprite: Objects/Tiles/tile.rsi HeldPrefix: tile_gold @@ -196,7 +169,6 @@ - type: Sprite sprite: Objects/Tiles/tile.rsi state: tile_reinforced - - type: Item sprite: Objects/Tiles/tile.rsi HeldPrefix: tile_reinforced @@ -211,7 +183,6 @@ - type: Sprite sprite: Objects/Tiles/tile.rsi state: tile_rockvault - - type: Item sprite: Objects/Tiles/tile.rsi HeldPrefix: tile_steel @@ -226,7 +197,6 @@ - type: Sprite sprite: Objects/Tiles/tile.rsi state: tile_white_monofloor - - type: Item sprite: Objects/Tiles/tile.rsi HeldPrefix: tile_steel @@ -241,7 +211,6 @@ - type: Sprite sprite: Objects/Tiles/tile.rsi state: tile_white_monofloor - - type: Item sprite: Objects/Tiles/tile.rsi HeldPrefix: tile_steel @@ -256,7 +225,6 @@ - type: Sprite sprite: Objects/Tiles/tile.rsi state: tile_white - - type: Item sprite: Objects/Tiles/tile.rsi HeldPrefix: tile_brown @@ -271,7 +239,6 @@ - type: Sprite sprite: Objects/Tiles/tile.rsi state: tile_hydro - - type: Item sprite: Objects/Tiles/tile.rsi HeldPrefix: tile_hydro @@ -286,7 +253,6 @@ - type: Sprite sprite: Objects/Tiles/tile.rsi state: tile_dirty - - type: Item sprite: Objects/Tiles/tile.rsi HeldPrefix: tile_brown diff --git a/Resources/Prototypes/Entities/singularity.yml b/Resources/Prototypes/Entities/singularity.yml new file mode 100644 index 0000000000..a466e02059 --- /dev/null +++ b/Resources/Prototypes/Entities/singularity.yml @@ -0,0 +1,133 @@ +- type: entity + name: "Gravitational Singularity" + description: "A mesmerizing swirl of darkness that sucks in everything.\nIf it's moving towards you, run." + id: Singularity + components: + - type: Clickable + - type: Physics + anchored: false + shapes: + - !type:PhysShapeCircle + radius: 0.5 + layer: [Impassable] + mask: + - AllMask + mass: 5 + - type: Singularity + - type: RadiationPulse + range: 15 + decay: false + - type: Sprite + sprite: Effects/Singularity/singularity_1.rsi + state: singularity_1 + - type: Icon + sprite: Effects/Singularity/singularity_1.rsi + state: singularity_1 + drawdepth: Items + +- type: entity + id: RadiationCollector + name: Radiation Collector + description: A machine that collects Radiation and turns it into power. + placement: + mode: SnapgridCenter + components: + - type: Clickable + - type: InteractionOutline + - type: Physics + anchored: true + shapes: + - !type:PhysShapeAabb + bounds: "-0.5, -0.5, 0.5, 0.5" + layer: [MobMask, Opaque] + - type: SnapGrid + offset: Center + - type: Sprite + sprite: Constructible/Power/radiation_collector.rsi + layers: + - state: ca_on + map: ["enum.RadiationCollectorVisualLayers.Main"] + - type: Appearance + visuals: + - type: RadiationCollectorVisualizer + - type: NodeContainer + nodes: + - !type:AdjacentNode + nodeGroupID: HVPower + - type: RadiationCollector + - type: Anchorable + - type: Pullable + +- type: entity + name: Containment Field Generator + description: "A machine that generates a containment field when powered by an emitter.\nKeeps the Singularity docile." + id: ContainmentFieldGenerator + placement: + mode: SnapgridCenter + components: + - type: InteractionOutline + - type: Clickable + - type: Physics + anchored: true + shapes: + - !type:PhysShapeAabb + bounds: "-0.5, -0.5, 0.5, 0.5" + layer: [MobMask, Opaque] + - type: SnapGrid + offset: Center + - type: Sprite + sprite: Constructible/Power/field_generator.rsi + state: Field_Gen + - type: Icon + sprite: Constructible/Power/field_generator.rsi + state: Field_Gen + - type: ContainmentFieldGenerator + - type: Anchorable + - type: Pullable + +- type: entity + name: Containment Field + description: "A containment field that repels gravitational singularities." + id: ContainmentField + placement: + mode: SnapgridCenter + components: + - type: InteractionOutline + - type: Clickable + - type: Physics + anchored: true + shapes: + - !type:PhysShapeAabb + bounds: "-0.5, -0.5, 0.5, 0.5" + layer: [MobMask, Opaque] + - type: SnapGrid + offset: Center + - type: Sprite + sprite: Effects/contain_f.rsi + state: Contain_F + - type: Icon + sprite: Effects/contain_f.rsi + state: Contain_F + - type: ContainmentField + +- type: entity + name: Gravitational Singularity Generator + description: An Odd Device which produces a Gravitational Singularity when set up. + id: SinguloGenerator + components: + - type: Sprite + sprite: Effects/Singularity/singulo_gen.rsi + state: singulo_gen + - type: SingularityGenerator + - type: InteractionOutline + - type: Clickable + - type: Physics + anchored: true + shapes: + - !type:PhysShapeAabb + bounds: "-0.5, -0.5, 0.5, 0.5" + layer: [ MobMask ] + - type: SnapGrid + offset: Center + - type: Anchorable + - type: Pullable diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/particle_accelerator.yml b/Resources/Prototypes/Recipes/Construction/Graphs/particle_accelerator.yml new file mode 100644 index 0000000000..ece30ad06e --- /dev/null +++ b/Resources/Prototypes/Recipes/Construction/Graphs/particle_accelerator.yml @@ -0,0 +1,358 @@ +- type: constructionGraph + id: particleAcceleratorControlBox + start: start + graph: + - node: start + entity: ParticleAcceleratorControlBoxUnfinished + actions: + - !type:SpriteStateChange + state: "control_box" + edges: + - to: wired + conditions: + - !type:EntityAnchored {} + steps: + - material: Cable + doAfter: 0.5 + + - node: wired + entity: ParticleAcceleratorControlBoxUnfinished + actions: + - !type:SpriteStateChange + state: "control_boxw" + edges: + - to: completed + conditions: + - !type:EntityAnchored {} + completed: + - !type:SnapToGrid {} + steps: + - tool: Screwing + doAfter: 0.5 + - to: start + conditions: + - !type:EntityAnchored {} + completed: + - !type:SpawnPrototype + prototype: ApcExtensionCableStack1 + steps: + - tool: Cutting + doAfter: 0.5 + + - node: completed + entity: ParticleAcceleratorControlBox + edges: + - to: wired + conditions: + - !type:EntityAnchored { } + steps: + - tool: Prying + doAfter: 0.5 + + +- type: constructionGraph + id: particleAcceleratorPowerBox + start: start + graph: + - node: start + entity: ParticleAcceleratorPowerBoxUnfinished + actions: + - !type:SpriteStateChange + state: "power_box" + edges: + - to: wired + conditions: + - !type:EntityAnchored {} + steps: + - material: Cable + doAfter: 0.5 + + - node: wired + entity: ParticleAcceleratorPowerBoxUnfinished + actions: + - !type:SpriteStateChange + state: "power_boxw" + edges: + - to: completed + conditions: + - !type:EntityAnchored {} + completed: + - !type:SnapToGrid {} + steps: + - tool: Screwing + doAfter: 0.5 + - to: start + conditions: + - !type:EntityAnchored {} + completed: + - !type:SpawnPrototype + prototype: ApcExtensionCableStack1 + steps: + - tool: Cutting + doAfter: 0.5 + + - node: completed + entity: ParticleAcceleratorPowerBox + edges: + - to: wired + conditions: + - !type:EntityAnchored { } + steps: + - tool: Screwing + doAfter: 0.5 + + +- type: constructionGraph + id: particleAcceleratorFuelChamber + start: start + graph: + - node: start + entity: ParticleAcceleratorFuelChamberUnfinished + actions: + - !type:SpriteStateChange + state: "fuel_chamber" + edges: + - to: wired + conditions: + - !type:EntityAnchored {} + steps: + - material: Cable + doAfter: 0.5 + + - node: wired + entity: ParticleAcceleratorFuelChamberUnfinished + actions: + - !type:SpriteStateChange + state: "fuel_chamberw" + edges: + - to: completed + conditions: + - !type:EntityAnchored {} + completed: + - !type:SnapToGrid {} + steps: + - tool: Screwing + doAfter: 0.5 + - to: start + conditions: + - !type:EntityAnchored {} + completed: + - !type:SpawnPrototype + prototype: ApcExtensionCableStack1 + steps: + - tool: Cutting + doAfter: 0.5 + + - node: completed + entity: ParticleAcceleratorFuelChamber + edges: + - to: wired + conditions: + - !type:EntityAnchored { } + steps: + - tool: Screwing + doAfter: 0.5 + +- type: constructionGraph + id: particleAcceleratorEndCap + start: start + graph: + - node: start + entity: ParticleAcceleratorEndCapUnfinished + actions: + - !type:SpriteStateChange + state: "end_cap" + edges: + - to: wired + conditions: + - !type:EntityAnchored {} + steps: + - material: Cable + doAfter: 0.5 + + - node: wired + entity: ParticleAcceleratorEndCapUnfinished + actions: + - !type:SpriteStateChange + state: "end_capw" + edges: + - to: completed + conditions: + - !type:EntityAnchored {} + completed: + - !type:SnapToGrid {} + steps: + - tool: Screwing + doAfter: 0.5 + - to: start + conditions: + - !type:EntityAnchored {} + completed: + - !type:SpawnPrototype + prototype: ApcExtensionCableStack1 + steps: + - tool: Cutting + doAfter: 0.5 + + - node: completed + entity: ParticleAcceleratorEndCap + edges: + - to: wired + conditions: + - !type:EntityAnchored { } + steps: + - tool: Screwing + doAfter: 0.5 + +- type: constructionGraph + id: particleAcceleratorEmitterLeft + start: start + graph: + - node: start + entity: ParticleAcceleratorEmitterLeftUnfinished + actions: + - !type:SpriteStateChange + state: "emitter_left" + edges: + - to: wired + conditions: + - !type:EntityAnchored {} + steps: + - material: Cable + doAfter: 0.5 + + - node: wired + entity: ParticleAcceleratorEmitterLeftUnfinished + actions: + - !type:SpriteStateChange + state: "emitter_leftw" + edges: + - to: completed + conditions: + - !type:EntityAnchored {} + completed: + - !type:SnapToGrid {} + steps: + - tool: Screwing + doAfter: 0.5 + - to: start + conditions: + - !type:EntityAnchored {} + completed: + - !type:SpawnPrototype + prototype: ApcExtensionCableStack1 + steps: + - tool: Cutting + doAfter: 0.5 + + - node: completed + entity: ParticleAcceleratorEmitterLeft + edges: + - to: wired + conditions: + - !type:EntityAnchored { } + steps: + - tool: Screwing + doAfter: 0.5 + +- type: constructionGraph + id: particleAcceleratorEmitterCenter + start: start + graph: + - node: start + entity: ParticleAcceleratorEmitterCenterUnfinished + actions: + - !type:SpriteStateChange + state: "emitter_center" + edges: + - to: wired + conditions: + - !type:EntityAnchored {} + steps: + - material: Cable + doAfter: 0.5 + + - node: wired + entity: ParticleAcceleratorEmitterCenterUnfinished + actions: + - !type:SpriteStateChange + state: "emitter_centerw" + edges: + - to: completed + conditions: + - !type:EntityAnchored {} + completed: + - !type:SnapToGrid {} + steps: + - tool: Screwing + doAfter: 0.5 + - to: start + conditions: + - !type:EntityAnchored {} + completed: + - !type:SpawnPrototype + prototype: ApcExtensionCableStack1 + steps: + - tool: Cutting + doAfter: 0.5 + + - node: completed + entity: ParticleAcceleratorEmitterCenter + edges: + - to: wired + conditions: + - !type:EntityAnchored { } + steps: + - tool: Screwing + doAfter: 0.5 + +- type: constructionGraph + id: particleAcceleratorEmitterRight + start: start + graph: + - node: start + entity: ParticleAcceleratorEmitterRightUnfinished + actions: + - !type:SpriteStateChange + state: "emitter_right" + edges: + - to: wired + conditions: + - !type:EntityAnchored {} + steps: + - material: Cable + doAfter: 0.5 + + - node: wired + entity: ParticleAcceleratorEmitterRightUnfinished + actions: + - !type:SpriteStateChange + state: "emitter_rightw" + edges: + - to: completed + conditions: + - !type:EntityAnchored {} + completed: + - !type:SnapToGrid {} + steps: + - tool: Screwing + doAfter: 0.5 + - to: start + conditions: + - !type:EntityAnchored {} + completed: + - !type:SpawnPrototype + prototype: ApcExtensionCableStack1 + steps: + - tool: Cutting + doAfter: 0.5 + + - node: completed + entity: ParticleAcceleratorEmitterRight + edges: + - to: wired + conditions: + - !type:EntityAnchored { } + steps: + - tool: Screwing + doAfter: 0.5 diff --git a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml new file mode 100644 index 0000000000..3125f420a0 --- /dev/null +++ b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml @@ -0,0 +1,22 @@ +- type: job + id: Quartermaster + name: "quartermaster" + positions: 1 + spawnPositions: 1 + startingGear: QuartermasterGear + department: + - Cargo + icon: "QuarterMaster" + access: + - Cargo + - Quartermaster + - Maintenance + +- type: startingGear + id: QuartermasterGear + equipment: + innerclothing: UniformQM + backpack: BackpackClothingFilled + shoes: ShoesBrown + idcard: QuartermasterPDA + ears: HeadsetCargo diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/botanist.yml b/Resources/Prototypes/Roles/Jobs/Civilian/botanist.yml new file mode 100644 index 0000000000..53fdd5d039 --- /dev/null +++ b/Resources/Prototypes/Roles/Jobs/Civilian/botanist.yml @@ -0,0 +1,22 @@ +- type: job + id: Botanist + name: "botanist" + positions: 2 + spawnPositions: 2 + startingGear: BotanistGear + department: + - Civilian + icon: "Botanist" + access: + - Service + - Hydroponics + - Maintenance + +- type: startingGear + id: BotanistGear + equipment: + innerclothing: UniformHydroponics + backpack: BackpackClothingFilled + shoes: ShoesBrown + idcard: BotanistPDA + ears: HeadsetService diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml b/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml new file mode 100644 index 0000000000..34b9d5faef --- /dev/null +++ b/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml @@ -0,0 +1,20 @@ +- type: job + id: Chaplain + name: "chaplain" + positions: 1 + startingGear: ChaplainGear + department: + - Civilian + icon: "Chaplain" + access: + - Chapel + - Maintenance + +- type: startingGear + id: ChaplainGear + equipment: + innerclothing: UniformChaplain + backpack: BackpackClothing + shoes: ShoesBlack + idcard: ChaplainPDA + ears: HeadsetService diff --git a/Resources/Prototypes/Roles/Jobs/Security/warden.yml b/Resources/Prototypes/Roles/Jobs/Security/warden.yml new file mode 100644 index 0000000000..9e223a4a9a --- /dev/null +++ b/Resources/Prototypes/Roles/Jobs/Security/warden.yml @@ -0,0 +1,25 @@ +- type: job + id: Warden + name: "warden" + positions: 1 + spawnPositions: 1 + startingGear: WardenGear + department: + - Security + icon: "Warden" + access: + - Security + - Brig + - Maintenance + - Service + +- type: startingGear + id: WardenGear + equipment: + innerclothing: UniformWarden + backpack: SecPackFilled + shoes: ShoesJackboots + eyes: SecGlasses + outerclothing: OuterclothingArmorVest + idcard: WardenPDA + ears: HeadsetSecurity diff --git a/Resources/Prototypes/Shaders/greyscale.yml b/Resources/Prototypes/Shaders/greyscale.yml new file mode 100644 index 0000000000..176893ab89 --- /dev/null +++ b/Resources/Prototypes/Shaders/greyscale.yml @@ -0,0 +1,4 @@ +- type: shader + id: Greyscale + kind: source + path: "/Textures/Shaders/greyscale.swsl" diff --git a/Resources/Textures/Clothing/Head/cake0.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/cake.rsi/equipped-HELMET.png similarity index 100% rename from Resources/Textures/Clothing/Head/cake0.rsi/equipped-HELMET.png rename to Resources/Textures/Clothing/Head/cake.rsi/equipped-HELMET.png diff --git a/Resources/Textures/Clothing/Head/cake0.rsi/icon.png b/Resources/Textures/Clothing/Head/cake.rsi/icon.png similarity index 100% rename from Resources/Textures/Clothing/Head/cake0.rsi/icon.png rename to Resources/Textures/Clothing/Head/cake.rsi/icon.png diff --git a/Resources/Textures/Clothing/Head/cake0.rsi/inhand-left.png b/Resources/Textures/Clothing/Head/cake.rsi/inhand-left.png similarity index 100% rename from Resources/Textures/Clothing/Head/cake0.rsi/inhand-left.png rename to Resources/Textures/Clothing/Head/cake.rsi/inhand-left.png diff --git a/Resources/Textures/Clothing/Head/cake0.rsi/inhand-right.png b/Resources/Textures/Clothing/Head/cake.rsi/inhand-right.png similarity index 100% rename from Resources/Textures/Clothing/Head/cake0.rsi/inhand-right.png rename to Resources/Textures/Clothing/Head/cake.rsi/inhand-right.png diff --git a/Resources/Textures/Clothing/Head/cake.rsi/meta.json b/Resources/Textures/Clothing/Head/cake.rsi/meta.json new file mode 100644 index 0000000000..9a60601fd5 --- /dev/null +++ b/Resources/Textures/Clothing/Head/cake.rsi/meta.json @@ -0,0 +1,137 @@ +{ + "version":1, + "size":{ + "x":32, + "y":32 + }, + "license":"CC-BY-SA-3.0", + "copyright":"https://github.com/discordia-space/CEV-Eris/raw/40b254106b46981b8ad95ccd5589deb8fa56e765/icons/inventory/head/mob.dmi", + "states":[ + { + "name":"equipped-HELMET", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"inhand-left", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"inhand-right", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"icon", + "directions":1, + "delays":[ + [ + 1.0 + ] + ] + }, + { + "name":"on-equipped-HELMET", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"on-inhand-left", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"on-inhand-right", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"on-icon", + "directions":1, + "delays":[ + [ + 1.0 + ] + ] + } + ] +} diff --git a/Resources/Textures/Clothing/Head/cake1.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/cake.rsi/on-equipped-HELMET.png similarity index 100% rename from Resources/Textures/Clothing/Head/cake1.rsi/equipped-HELMET.png rename to Resources/Textures/Clothing/Head/cake.rsi/on-equipped-HELMET.png diff --git a/Resources/Textures/Clothing/Head/cake1.rsi/icon.png b/Resources/Textures/Clothing/Head/cake.rsi/on-icon.png similarity index 100% rename from Resources/Textures/Clothing/Head/cake1.rsi/icon.png rename to Resources/Textures/Clothing/Head/cake.rsi/on-icon.png diff --git a/Resources/Textures/Clothing/Head/cake1.rsi/inhand-left.png b/Resources/Textures/Clothing/Head/cake.rsi/on-inhand-left.png similarity index 100% rename from Resources/Textures/Clothing/Head/cake1.rsi/inhand-left.png rename to Resources/Textures/Clothing/Head/cake.rsi/on-inhand-left.png diff --git a/Resources/Textures/Clothing/Head/cake1.rsi/inhand-right.png b/Resources/Textures/Clothing/Head/cake.rsi/on-inhand-right.png similarity index 100% rename from Resources/Textures/Clothing/Head/cake1.rsi/inhand-right.png rename to Resources/Textures/Clothing/Head/cake.rsi/on-inhand-right.png diff --git a/Resources/Textures/Clothing/Head/cake0.rsi/meta.json b/Resources/Textures/Clothing/Head/cake0.rsi/meta.json deleted file mode 100644 index f590b6ee18..0000000000 --- a/Resources/Textures/Clothing/Head/cake0.rsi/meta.json +++ /dev/null @@ -1 +0,0 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/40b254106b46981b8ad95ccd5589deb8fa56e765/icons/inventory/head/mob.dmi", "states": [{"name": "equipped-HELMET", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-left", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-right", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "icon", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Clothing/Head/cake1.rsi/meta.json b/Resources/Textures/Clothing/Head/cake1.rsi/meta.json deleted file mode 100644 index f590b6ee18..0000000000 --- a/Resources/Textures/Clothing/Head/cake1.rsi/meta.json +++ /dev/null @@ -1 +0,0 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/40b254106b46981b8ad95ccd5589deb8fa56e765/icons/inventory/head/mob.dmi", "states": [{"name": "equipped-HELMET", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-left", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-right", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "icon", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Clothing/Head/hardhat0_dblue.rsi/meta.json b/Resources/Textures/Clothing/Head/hardhat0_dblue.rsi/meta.json deleted file mode 100644 index f590b6ee18..0000000000 --- a/Resources/Textures/Clothing/Head/hardhat0_dblue.rsi/meta.json +++ /dev/null @@ -1 +0,0 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/40b254106b46981b8ad95ccd5589deb8fa56e765/icons/inventory/head/mob.dmi", "states": [{"name": "equipped-HELMET", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-left", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-right", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "icon", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Clothing/Head/hardhat0_orange.rsi/meta.json b/Resources/Textures/Clothing/Head/hardhat0_orange.rsi/meta.json deleted file mode 100644 index f590b6ee18..0000000000 --- a/Resources/Textures/Clothing/Head/hardhat0_orange.rsi/meta.json +++ /dev/null @@ -1 +0,0 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/40b254106b46981b8ad95ccd5589deb8fa56e765/icons/inventory/head/mob.dmi", "states": [{"name": "equipped-HELMET", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-left", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-right", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "icon", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Clothing/Head/hardhat0_pumpkin.rsi/meta.json b/Resources/Textures/Clothing/Head/hardhat0_pumpkin.rsi/meta.json deleted file mode 100644 index f590b6ee18..0000000000 --- a/Resources/Textures/Clothing/Head/hardhat0_pumpkin.rsi/meta.json +++ /dev/null @@ -1 +0,0 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/40b254106b46981b8ad95ccd5589deb8fa56e765/icons/inventory/head/mob.dmi", "states": [{"name": "equipped-HELMET", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-left", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-right", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "icon", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Clothing/Head/hardhat0_red.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/hardhat0_red.rsi/equipped-HELMET.png deleted file mode 100644 index 5192e5d7ba..0000000000 Binary files a/Resources/Textures/Clothing/Head/hardhat0_red.rsi/equipped-HELMET.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Head/hardhat0_red.rsi/meta.json b/Resources/Textures/Clothing/Head/hardhat0_red.rsi/meta.json deleted file mode 100644 index f590b6ee18..0000000000 --- a/Resources/Textures/Clothing/Head/hardhat0_red.rsi/meta.json +++ /dev/null @@ -1 +0,0 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/40b254106b46981b8ad95ccd5589deb8fa56e765/icons/inventory/head/mob.dmi", "states": [{"name": "equipped-HELMET", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-left", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-right", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "icon", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Clothing/Head/hardhat0_white.rsi/meta.json b/Resources/Textures/Clothing/Head/hardhat0_white.rsi/meta.json deleted file mode 100644 index f590b6ee18..0000000000 --- a/Resources/Textures/Clothing/Head/hardhat0_white.rsi/meta.json +++ /dev/null @@ -1 +0,0 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/40b254106b46981b8ad95ccd5589deb8fa56e765/icons/inventory/head/mob.dmi", "states": [{"name": "equipped-HELMET", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-left", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-right", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "icon", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Clothing/Head/hardhat0_yellow.rsi/meta.json b/Resources/Textures/Clothing/Head/hardhat0_yellow.rsi/meta.json deleted file mode 100644 index f590b6ee18..0000000000 --- a/Resources/Textures/Clothing/Head/hardhat0_yellow.rsi/meta.json +++ /dev/null @@ -1 +0,0 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/40b254106b46981b8ad95ccd5589deb8fa56e765/icons/inventory/head/mob.dmi", "states": [{"name": "equipped-HELMET", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-left", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-right", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "icon", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Clothing/Head/hardhat1_pumpkin.rsi/meta.json b/Resources/Textures/Clothing/Head/hardhat1_pumpkin.rsi/meta.json deleted file mode 100644 index f590b6ee18..0000000000 --- a/Resources/Textures/Clothing/Head/hardhat1_pumpkin.rsi/meta.json +++ /dev/null @@ -1 +0,0 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/40b254106b46981b8ad95ccd5589deb8fa56e765/icons/inventory/head/mob.dmi", "states": [{"name": "equipped-HELMET", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-left", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-right", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "icon", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Clothing/Head/hardhat0_dblue.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/hardhat_blue.rsi/equipped-HELMET.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat0_dblue.rsi/equipped-HELMET.png rename to Resources/Textures/Clothing/Head/hardhat_blue.rsi/equipped-HELMET.png diff --git a/Resources/Textures/Clothing/Head/hardhat0_dblue.rsi/icon.png b/Resources/Textures/Clothing/Head/hardhat_blue.rsi/icon.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat0_dblue.rsi/icon.png rename to Resources/Textures/Clothing/Head/hardhat_blue.rsi/icon.png diff --git a/Resources/Textures/Clothing/Head/hardhat0_dblue.rsi/inhand-left.png b/Resources/Textures/Clothing/Head/hardhat_blue.rsi/inhand-left.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat0_dblue.rsi/inhand-left.png rename to Resources/Textures/Clothing/Head/hardhat_blue.rsi/inhand-left.png diff --git a/Resources/Textures/Clothing/Head/hardhat0_dblue.rsi/inhand-right.png b/Resources/Textures/Clothing/Head/hardhat_blue.rsi/inhand-right.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat0_dblue.rsi/inhand-right.png rename to Resources/Textures/Clothing/Head/hardhat_blue.rsi/inhand-right.png diff --git a/Resources/Textures/Clothing/Head/hardhat_blue.rsi/meta.json b/Resources/Textures/Clothing/Head/hardhat_blue.rsi/meta.json new file mode 100644 index 0000000000..9a60601fd5 --- /dev/null +++ b/Resources/Textures/Clothing/Head/hardhat_blue.rsi/meta.json @@ -0,0 +1,137 @@ +{ + "version":1, + "size":{ + "x":32, + "y":32 + }, + "license":"CC-BY-SA-3.0", + "copyright":"https://github.com/discordia-space/CEV-Eris/raw/40b254106b46981b8ad95ccd5589deb8fa56e765/icons/inventory/head/mob.dmi", + "states":[ + { + "name":"equipped-HELMET", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"inhand-left", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"inhand-right", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"icon", + "directions":1, + "delays":[ + [ + 1.0 + ] + ] + }, + { + "name":"on-equipped-HELMET", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"on-inhand-left", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"on-inhand-right", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"on-icon", + "directions":1, + "delays":[ + [ + 1.0 + ] + ] + } + ] +} diff --git a/Resources/Textures/Clothing/Head/hardhat_blue.rsi/on-equipped-HELMET.png b/Resources/Textures/Clothing/Head/hardhat_blue.rsi/on-equipped-HELMET.png new file mode 100644 index 0000000000..e20f2aeda3 Binary files /dev/null and b/Resources/Textures/Clothing/Head/hardhat_blue.rsi/on-equipped-HELMET.png differ diff --git a/Resources/Textures/Clothing/Head/hardhat_blue.rsi/on-icon.png b/Resources/Textures/Clothing/Head/hardhat_blue.rsi/on-icon.png new file mode 100644 index 0000000000..3833f5be96 Binary files /dev/null and b/Resources/Textures/Clothing/Head/hardhat_blue.rsi/on-icon.png differ diff --git a/Resources/Textures/Clothing/Head/hardhat_blue.rsi/on-inhand-left.png b/Resources/Textures/Clothing/Head/hardhat_blue.rsi/on-inhand-left.png new file mode 100644 index 0000000000..e9bdb52b15 Binary files /dev/null and b/Resources/Textures/Clothing/Head/hardhat_blue.rsi/on-inhand-left.png differ diff --git a/Resources/Textures/Clothing/Head/hardhat_blue.rsi/on-inhand-right.png b/Resources/Textures/Clothing/Head/hardhat_blue.rsi/on-inhand-right.png new file mode 100644 index 0000000000..dbba1db1ad Binary files /dev/null and b/Resources/Textures/Clothing/Head/hardhat_blue.rsi/on-inhand-right.png differ diff --git a/Resources/Textures/Clothing/Head/hardhat0_orange.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/hardhat_orange.rsi/equipped-HELMET.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat0_orange.rsi/equipped-HELMET.png rename to Resources/Textures/Clothing/Head/hardhat_orange.rsi/equipped-HELMET.png diff --git a/Resources/Textures/Clothing/Head/hardhat0_orange.rsi/icon.png b/Resources/Textures/Clothing/Head/hardhat_orange.rsi/icon.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat0_orange.rsi/icon.png rename to Resources/Textures/Clothing/Head/hardhat_orange.rsi/icon.png diff --git a/Resources/Textures/Clothing/Head/hardhat0_orange.rsi/inhand-left.png b/Resources/Textures/Clothing/Head/hardhat_orange.rsi/inhand-left.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat0_orange.rsi/inhand-left.png rename to Resources/Textures/Clothing/Head/hardhat_orange.rsi/inhand-left.png diff --git a/Resources/Textures/Clothing/Head/hardhat0_orange.rsi/inhand-right.png b/Resources/Textures/Clothing/Head/hardhat_orange.rsi/inhand-right.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat0_orange.rsi/inhand-right.png rename to Resources/Textures/Clothing/Head/hardhat_orange.rsi/inhand-right.png diff --git a/Resources/Textures/Clothing/Head/hardhat_orange.rsi/meta.json b/Resources/Textures/Clothing/Head/hardhat_orange.rsi/meta.json new file mode 100644 index 0000000000..9a60601fd5 --- /dev/null +++ b/Resources/Textures/Clothing/Head/hardhat_orange.rsi/meta.json @@ -0,0 +1,137 @@ +{ + "version":1, + "size":{ + "x":32, + "y":32 + }, + "license":"CC-BY-SA-3.0", + "copyright":"https://github.com/discordia-space/CEV-Eris/raw/40b254106b46981b8ad95ccd5589deb8fa56e765/icons/inventory/head/mob.dmi", + "states":[ + { + "name":"equipped-HELMET", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"inhand-left", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"inhand-right", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"icon", + "directions":1, + "delays":[ + [ + 1.0 + ] + ] + }, + { + "name":"on-equipped-HELMET", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"on-inhand-left", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"on-inhand-right", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"on-icon", + "directions":1, + "delays":[ + [ + 1.0 + ] + ] + } + ] +} diff --git a/Resources/Textures/Clothing/Head/hardhat_orange.rsi/on-equipped-HELMET.png b/Resources/Textures/Clothing/Head/hardhat_orange.rsi/on-equipped-HELMET.png new file mode 100644 index 0000000000..29fc6fa730 Binary files /dev/null and b/Resources/Textures/Clothing/Head/hardhat_orange.rsi/on-equipped-HELMET.png differ diff --git a/Resources/Textures/Clothing/Head/hardhat_orange.rsi/on-icon.png b/Resources/Textures/Clothing/Head/hardhat_orange.rsi/on-icon.png new file mode 100644 index 0000000000..001a1f5d3b Binary files /dev/null and b/Resources/Textures/Clothing/Head/hardhat_orange.rsi/on-icon.png differ diff --git a/Resources/Textures/Clothing/Head/hardhat_orange.rsi/on-inhand-left.png b/Resources/Textures/Clothing/Head/hardhat_orange.rsi/on-inhand-left.png new file mode 100644 index 0000000000..42647c87af Binary files /dev/null and b/Resources/Textures/Clothing/Head/hardhat_orange.rsi/on-inhand-left.png differ diff --git a/Resources/Textures/Clothing/Head/hardhat_orange.rsi/on-inhand-right.png b/Resources/Textures/Clothing/Head/hardhat_orange.rsi/on-inhand-right.png new file mode 100644 index 0000000000..dfec425178 Binary files /dev/null and b/Resources/Textures/Clothing/Head/hardhat_orange.rsi/on-inhand-right.png differ diff --git a/Resources/Textures/Clothing/Head/hardhat_red.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/hardhat_red.rsi/equipped-HELMET.png new file mode 100644 index 0000000000..1d81ff8edc Binary files /dev/null and b/Resources/Textures/Clothing/Head/hardhat_red.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/Clothing/Head/hardhat0_red.rsi/icon.png b/Resources/Textures/Clothing/Head/hardhat_red.rsi/icon.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat0_red.rsi/icon.png rename to Resources/Textures/Clothing/Head/hardhat_red.rsi/icon.png diff --git a/Resources/Textures/Clothing/Head/hardhat0_red.rsi/inhand-left.png b/Resources/Textures/Clothing/Head/hardhat_red.rsi/inhand-left.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat0_red.rsi/inhand-left.png rename to Resources/Textures/Clothing/Head/hardhat_red.rsi/inhand-left.png diff --git a/Resources/Textures/Clothing/Head/hardhat0_red.rsi/inhand-right.png b/Resources/Textures/Clothing/Head/hardhat_red.rsi/inhand-right.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat0_red.rsi/inhand-right.png rename to Resources/Textures/Clothing/Head/hardhat_red.rsi/inhand-right.png diff --git a/Resources/Textures/Clothing/Head/hardhat_red.rsi/meta.json b/Resources/Textures/Clothing/Head/hardhat_red.rsi/meta.json new file mode 100644 index 0000000000..9a60601fd5 --- /dev/null +++ b/Resources/Textures/Clothing/Head/hardhat_red.rsi/meta.json @@ -0,0 +1,137 @@ +{ + "version":1, + "size":{ + "x":32, + "y":32 + }, + "license":"CC-BY-SA-3.0", + "copyright":"https://github.com/discordia-space/CEV-Eris/raw/40b254106b46981b8ad95ccd5589deb8fa56e765/icons/inventory/head/mob.dmi", + "states":[ + { + "name":"equipped-HELMET", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"inhand-left", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"inhand-right", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"icon", + "directions":1, + "delays":[ + [ + 1.0 + ] + ] + }, + { + "name":"on-equipped-HELMET", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"on-inhand-left", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"on-inhand-right", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"on-icon", + "directions":1, + "delays":[ + [ + 1.0 + ] + ] + } + ] +} diff --git a/Resources/Textures/Clothing/Head/hardhat_red.rsi/on-equipped-HELMET.png b/Resources/Textures/Clothing/Head/hardhat_red.rsi/on-equipped-HELMET.png new file mode 100644 index 0000000000..a1cbbd79a7 Binary files /dev/null and b/Resources/Textures/Clothing/Head/hardhat_red.rsi/on-equipped-HELMET.png differ diff --git a/Resources/Textures/Clothing/Head/hardhat_red.rsi/on-icon.png b/Resources/Textures/Clothing/Head/hardhat_red.rsi/on-icon.png new file mode 100644 index 0000000000..8640074077 Binary files /dev/null and b/Resources/Textures/Clothing/Head/hardhat_red.rsi/on-icon.png differ diff --git a/Resources/Textures/Clothing/Head/hardhat_red.rsi/on-inhand-left.png b/Resources/Textures/Clothing/Head/hardhat_red.rsi/on-inhand-left.png new file mode 100644 index 0000000000..d8a465ba1f Binary files /dev/null and b/Resources/Textures/Clothing/Head/hardhat_red.rsi/on-inhand-left.png differ diff --git a/Resources/Textures/Clothing/Head/hardhat_red.rsi/on-inhand-right.png b/Resources/Textures/Clothing/Head/hardhat_red.rsi/on-inhand-right.png new file mode 100644 index 0000000000..abb0ee0352 Binary files /dev/null and b/Resources/Textures/Clothing/Head/hardhat_red.rsi/on-inhand-right.png differ diff --git a/Resources/Textures/Clothing/Head/hardhat0_white.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/hardhat_white.rsi/equipped-HELMET.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat0_white.rsi/equipped-HELMET.png rename to Resources/Textures/Clothing/Head/hardhat_white.rsi/equipped-HELMET.png diff --git a/Resources/Textures/Clothing/Head/hardhat0_white.rsi/icon.png b/Resources/Textures/Clothing/Head/hardhat_white.rsi/icon.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat0_white.rsi/icon.png rename to Resources/Textures/Clothing/Head/hardhat_white.rsi/icon.png diff --git a/Resources/Textures/Clothing/Head/hardhat0_white.rsi/inhand-left.png b/Resources/Textures/Clothing/Head/hardhat_white.rsi/inhand-left.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat0_white.rsi/inhand-left.png rename to Resources/Textures/Clothing/Head/hardhat_white.rsi/inhand-left.png diff --git a/Resources/Textures/Clothing/Head/hardhat0_white.rsi/inhand-right.png b/Resources/Textures/Clothing/Head/hardhat_white.rsi/inhand-right.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat0_white.rsi/inhand-right.png rename to Resources/Textures/Clothing/Head/hardhat_white.rsi/inhand-right.png diff --git a/Resources/Textures/Clothing/Head/hardhat_white.rsi/meta.json b/Resources/Textures/Clothing/Head/hardhat_white.rsi/meta.json new file mode 100644 index 0000000000..9a60601fd5 --- /dev/null +++ b/Resources/Textures/Clothing/Head/hardhat_white.rsi/meta.json @@ -0,0 +1,137 @@ +{ + "version":1, + "size":{ + "x":32, + "y":32 + }, + "license":"CC-BY-SA-3.0", + "copyright":"https://github.com/discordia-space/CEV-Eris/raw/40b254106b46981b8ad95ccd5589deb8fa56e765/icons/inventory/head/mob.dmi", + "states":[ + { + "name":"equipped-HELMET", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"inhand-left", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"inhand-right", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"icon", + "directions":1, + "delays":[ + [ + 1.0 + ] + ] + }, + { + "name":"on-equipped-HELMET", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"on-inhand-left", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"on-inhand-right", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"on-icon", + "directions":1, + "delays":[ + [ + 1.0 + ] + ] + } + ] +} diff --git a/Resources/Textures/Clothing/Head/hardhat_white.rsi/on-equipped-HELMET.png b/Resources/Textures/Clothing/Head/hardhat_white.rsi/on-equipped-HELMET.png new file mode 100644 index 0000000000..e7000cc2c9 Binary files /dev/null and b/Resources/Textures/Clothing/Head/hardhat_white.rsi/on-equipped-HELMET.png differ diff --git a/Resources/Textures/Clothing/Head/hardhat_white.rsi/on-icon.png b/Resources/Textures/Clothing/Head/hardhat_white.rsi/on-icon.png new file mode 100644 index 0000000000..f1c549fdb9 Binary files /dev/null and b/Resources/Textures/Clothing/Head/hardhat_white.rsi/on-icon.png differ diff --git a/Resources/Textures/Clothing/Head/hardhat_white.rsi/on-inhand-left.png b/Resources/Textures/Clothing/Head/hardhat_white.rsi/on-inhand-left.png new file mode 100644 index 0000000000..8d06c56c1f Binary files /dev/null and b/Resources/Textures/Clothing/Head/hardhat_white.rsi/on-inhand-left.png differ diff --git a/Resources/Textures/Clothing/Head/hardhat_white.rsi/on-inhand-right.png b/Resources/Textures/Clothing/Head/hardhat_white.rsi/on-inhand-right.png new file mode 100644 index 0000000000..186f070303 Binary files /dev/null and b/Resources/Textures/Clothing/Head/hardhat_white.rsi/on-inhand-right.png differ diff --git a/Resources/Textures/Clothing/Head/hardhat0_yellow.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/hardhat_yellow.rsi/equipped-HELMET.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat0_yellow.rsi/equipped-HELMET.png rename to Resources/Textures/Clothing/Head/hardhat_yellow.rsi/equipped-HELMET.png diff --git a/Resources/Textures/Clothing/Head/hardhat0_yellow.rsi/icon.png b/Resources/Textures/Clothing/Head/hardhat_yellow.rsi/icon.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat0_yellow.rsi/icon.png rename to Resources/Textures/Clothing/Head/hardhat_yellow.rsi/icon.png diff --git a/Resources/Textures/Clothing/Head/hardhat0_yellow.rsi/inhand-left.png b/Resources/Textures/Clothing/Head/hardhat_yellow.rsi/inhand-left.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat0_yellow.rsi/inhand-left.png rename to Resources/Textures/Clothing/Head/hardhat_yellow.rsi/inhand-left.png diff --git a/Resources/Textures/Clothing/Head/hardhat0_yellow.rsi/inhand-right.png b/Resources/Textures/Clothing/Head/hardhat_yellow.rsi/inhand-right.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat0_yellow.rsi/inhand-right.png rename to Resources/Textures/Clothing/Head/hardhat_yellow.rsi/inhand-right.png diff --git a/Resources/Textures/Clothing/Head/hardhat_yellow.rsi/meta.json b/Resources/Textures/Clothing/Head/hardhat_yellow.rsi/meta.json new file mode 100644 index 0000000000..9a60601fd5 --- /dev/null +++ b/Resources/Textures/Clothing/Head/hardhat_yellow.rsi/meta.json @@ -0,0 +1,137 @@ +{ + "version":1, + "size":{ + "x":32, + "y":32 + }, + "license":"CC-BY-SA-3.0", + "copyright":"https://github.com/discordia-space/CEV-Eris/raw/40b254106b46981b8ad95ccd5589deb8fa56e765/icons/inventory/head/mob.dmi", + "states":[ + { + "name":"equipped-HELMET", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"inhand-left", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"inhand-right", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"icon", + "directions":1, + "delays":[ + [ + 1.0 + ] + ] + }, + { + "name":"on-equipped-HELMET", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"on-inhand-left", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"on-inhand-right", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"on-icon", + "directions":1, + "delays":[ + [ + 1.0 + ] + ] + } + ] +} diff --git a/Resources/Textures/Clothing/Head/hardhat_yellow.rsi/on-equipped-HELMET.png b/Resources/Textures/Clothing/Head/hardhat_yellow.rsi/on-equipped-HELMET.png new file mode 100644 index 0000000000..2694053934 Binary files /dev/null and b/Resources/Textures/Clothing/Head/hardhat_yellow.rsi/on-equipped-HELMET.png differ diff --git a/Resources/Textures/Clothing/Head/hardhat_yellow.rsi/on-icon.png b/Resources/Textures/Clothing/Head/hardhat_yellow.rsi/on-icon.png new file mode 100644 index 0000000000..dad960c290 Binary files /dev/null and b/Resources/Textures/Clothing/Head/hardhat_yellow.rsi/on-icon.png differ diff --git a/Resources/Textures/Clothing/Head/hardhat_yellow.rsi/on-inhand-left.png b/Resources/Textures/Clothing/Head/hardhat_yellow.rsi/on-inhand-left.png new file mode 100644 index 0000000000..d065fc1995 Binary files /dev/null and b/Resources/Textures/Clothing/Head/hardhat_yellow.rsi/on-inhand-left.png differ diff --git a/Resources/Textures/Clothing/Head/hardhat_yellow.rsi/on-inhand-right.png b/Resources/Textures/Clothing/Head/hardhat_yellow.rsi/on-inhand-right.png new file mode 100644 index 0000000000..553cb45028 Binary files /dev/null and b/Resources/Textures/Clothing/Head/hardhat_yellow.rsi/on-inhand-right.png differ diff --git a/Resources/Textures/Clothing/Head/light_riot.rsi/meta.json b/Resources/Textures/Clothing/Head/light_riot.rsi/meta.json index f590b6ee18..9a60601fd5 100644 --- a/Resources/Textures/Clothing/Head/light_riot.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/light_riot.rsi/meta.json @@ -1 +1,137 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/40b254106b46981b8ad95ccd5589deb8fa56e765/icons/inventory/head/mob.dmi", "states": [{"name": "equipped-HELMET", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-left", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-right", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "icon", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{ + "version":1, + "size":{ + "x":32, + "y":32 + }, + "license":"CC-BY-SA-3.0", + "copyright":"https://github.com/discordia-space/CEV-Eris/raw/40b254106b46981b8ad95ccd5589deb8fa56e765/icons/inventory/head/mob.dmi", + "states":[ + { + "name":"equipped-HELMET", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"inhand-left", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"inhand-right", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"icon", + "directions":1, + "delays":[ + [ + 1.0 + ] + ] + }, + { + "name":"on-equipped-HELMET", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"on-inhand-left", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"on-inhand-right", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"on-icon", + "directions":1, + "delays":[ + [ + 1.0 + ] + ] + } + ] +} diff --git a/Resources/Textures/Clothing/Head/light_riot_on.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/light_riot.rsi/on-equipped-HELMET.png similarity index 100% rename from Resources/Textures/Clothing/Head/light_riot_on.rsi/equipped-HELMET.png rename to Resources/Textures/Clothing/Head/light_riot.rsi/on-equipped-HELMET.png diff --git a/Resources/Textures/Clothing/Head/light_riot_on.rsi/icon.png b/Resources/Textures/Clothing/Head/light_riot.rsi/on-icon.png similarity index 100% rename from Resources/Textures/Clothing/Head/light_riot_on.rsi/icon.png rename to Resources/Textures/Clothing/Head/light_riot.rsi/on-icon.png diff --git a/Resources/Textures/Clothing/Head/light_riot_on.rsi/inhand-left.png b/Resources/Textures/Clothing/Head/light_riot.rsi/on-inhand-left.png similarity index 100% rename from Resources/Textures/Clothing/Head/light_riot_on.rsi/inhand-left.png rename to Resources/Textures/Clothing/Head/light_riot.rsi/on-inhand-left.png diff --git a/Resources/Textures/Clothing/Head/light_riot_on.rsi/inhand-right.png b/Resources/Textures/Clothing/Head/light_riot.rsi/on-inhand-right.png similarity index 100% rename from Resources/Textures/Clothing/Head/light_riot_on.rsi/inhand-right.png rename to Resources/Textures/Clothing/Head/light_riot.rsi/on-inhand-right.png diff --git a/Resources/Textures/Clothing/Head/light_riot_on.rsi/meta.json b/Resources/Textures/Clothing/Head/light_riot_on.rsi/meta.json deleted file mode 100644 index f590b6ee18..0000000000 --- a/Resources/Textures/Clothing/Head/light_riot_on.rsi/meta.json +++ /dev/null @@ -1 +0,0 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/40b254106b46981b8ad95ccd5589deb8fa56e765/icons/inventory/head/mob.dmi", "states": [{"name": "equipped-HELMET", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-left", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "inhand-right", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "icon", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Clothing/Head/hardhat0_pumpkin.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/pumpkin.rsi/equipped-HELMET.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat0_pumpkin.rsi/equipped-HELMET.png rename to Resources/Textures/Clothing/Head/pumpkin.rsi/equipped-HELMET.png diff --git a/Resources/Textures/Clothing/Head/hardhat0_pumpkin.rsi/icon.png b/Resources/Textures/Clothing/Head/pumpkin.rsi/icon.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat0_pumpkin.rsi/icon.png rename to Resources/Textures/Clothing/Head/pumpkin.rsi/icon.png diff --git a/Resources/Textures/Clothing/Head/hardhat0_pumpkin.rsi/inhand-left.png b/Resources/Textures/Clothing/Head/pumpkin.rsi/inhand-left.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat0_pumpkin.rsi/inhand-left.png rename to Resources/Textures/Clothing/Head/pumpkin.rsi/inhand-left.png diff --git a/Resources/Textures/Clothing/Head/hardhat0_pumpkin.rsi/inhand-right.png b/Resources/Textures/Clothing/Head/pumpkin.rsi/inhand-right.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat0_pumpkin.rsi/inhand-right.png rename to Resources/Textures/Clothing/Head/pumpkin.rsi/inhand-right.png diff --git a/Resources/Textures/Clothing/Head/pumpkin.rsi/meta.json b/Resources/Textures/Clothing/Head/pumpkin.rsi/meta.json new file mode 100644 index 0000000000..9a60601fd5 --- /dev/null +++ b/Resources/Textures/Clothing/Head/pumpkin.rsi/meta.json @@ -0,0 +1,137 @@ +{ + "version":1, + "size":{ + "x":32, + "y":32 + }, + "license":"CC-BY-SA-3.0", + "copyright":"https://github.com/discordia-space/CEV-Eris/raw/40b254106b46981b8ad95ccd5589deb8fa56e765/icons/inventory/head/mob.dmi", + "states":[ + { + "name":"equipped-HELMET", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"inhand-left", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"inhand-right", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"icon", + "directions":1, + "delays":[ + [ + 1.0 + ] + ] + }, + { + "name":"on-equipped-HELMET", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"on-inhand-left", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"on-inhand-right", + "directions":4, + "delays":[ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name":"on-icon", + "directions":1, + "delays":[ + [ + 1.0 + ] + ] + } + ] +} diff --git a/Resources/Textures/Clothing/Head/hardhat1_pumpkin.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/pumpkin.rsi/on-equipped-HELMET.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat1_pumpkin.rsi/equipped-HELMET.png rename to Resources/Textures/Clothing/Head/pumpkin.rsi/on-equipped-HELMET.png diff --git a/Resources/Textures/Clothing/Head/hardhat1_pumpkin.rsi/icon.png b/Resources/Textures/Clothing/Head/pumpkin.rsi/on-icon.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat1_pumpkin.rsi/icon.png rename to Resources/Textures/Clothing/Head/pumpkin.rsi/on-icon.png diff --git a/Resources/Textures/Clothing/Head/hardhat1_pumpkin.rsi/inhand-left.png b/Resources/Textures/Clothing/Head/pumpkin.rsi/on-inhand-left.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat1_pumpkin.rsi/inhand-left.png rename to Resources/Textures/Clothing/Head/pumpkin.rsi/on-inhand-left.png diff --git a/Resources/Textures/Clothing/Head/hardhat1_pumpkin.rsi/inhand-right.png b/Resources/Textures/Clothing/Head/pumpkin.rsi/on-inhand-right.png similarity index 100% rename from Resources/Textures/Clothing/Head/hardhat1_pumpkin.rsi/inhand-right.png rename to Resources/Textures/Clothing/Head/pumpkin.rsi/on-inhand-right.png diff --git a/Resources/Textures/Clothing/Uniforms/uniform_chaplain.rsi/chaplain_skirt-equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/uniform_chaplain.rsi/chaplain_skirt-equipped-INNERCLOTHING.png new file mode 100644 index 0000000000..600f014582 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/uniform_chaplain.rsi/chaplain_skirt-equipped-INNERCLOTHING.png differ diff --git a/Resources/Textures/Clothing/Uniforms/uniform_chaplain.rsi/chaplain_skirt.png b/Resources/Textures/Clothing/Uniforms/uniform_chaplain.rsi/chaplain_skirt.png new file mode 100644 index 0000000000..a72665e993 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/uniform_chaplain.rsi/chaplain_skirt.png differ diff --git a/Resources/Textures/Clothing/Uniforms/uniform_chaplain.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/uniform_chaplain.rsi/equipped-INNERCLOTHING.png new file mode 100644 index 0000000000..7423a21e65 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/uniform_chaplain.rsi/equipped-INNERCLOTHING.png differ diff --git a/Resources/Textures/Clothing/Uniforms/uniform_chaplain.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/uniform_chaplain.rsi/icon.png new file mode 100644 index 0000000000..01d31abcc8 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/uniform_chaplain.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Uniforms/uniform_chaplain.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/uniform_chaplain.rsi/inhand-left.png new file mode 100644 index 0000000000..3520c2732a Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/uniform_chaplain.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Uniforms/uniform_chaplain.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/uniform_chaplain.rsi/inhand-right.png new file mode 100644 index 0000000000..2c8df85d4d Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/uniform_chaplain.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Uniforms/uniform_chaplain.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/uniform_chaplain.rsi/meta.json new file mode 100644 index 0000000000..b303e0d2b2 --- /dev/null +++ b/Resources/Textures/Clothing/Uniforms/uniform_chaplain.rsi/meta.json @@ -0,0 +1,101 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/tgstation/tgstation/commit/f2a314f575fd3ed9c6abf3b2cada6ebf5a8c1a4b", + "states": [ + { + "name": "chaplain_skirt-equipped-INNERCLOTHING", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "equipped-INNERCLOTHING", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "inhand-left", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "inhand-right", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "icon", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "chaplain_skirt", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + } + ] +} diff --git a/Resources/Textures/Constructible/Misc/furniture.rsi/bar_stool.png b/Resources/Textures/Constructible/Misc/furniture.rsi/bar_stool.png index 90cda80d0b..db4e5d185a 100644 Binary files a/Resources/Textures/Constructible/Misc/furniture.rsi/bar_stool.png and b/Resources/Textures/Constructible/Misc/furniture.rsi/bar_stool.png differ diff --git a/Resources/Textures/Constructible/Power/PA/control_box.rsi/control_box.png b/Resources/Textures/Constructible/Power/PA/control_box.rsi/control_box.png new file mode 100644 index 0000000000..b0f742dbe5 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/control_box.rsi/control_box.png differ diff --git a/Resources/Textures/Constructible/Power/PA/control_box.rsi/control_box_unlitp.png b/Resources/Textures/Constructible/Power/PA/control_box.rsi/control_box_unlitp.png new file mode 100644 index 0000000000..7fb11ea3d6 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/control_box.rsi/control_box_unlitp.png differ diff --git a/Resources/Textures/Constructible/Power/PA/control_box.rsi/control_box_unlitp0.png b/Resources/Textures/Constructible/Power/PA/control_box.rsi/control_box_unlitp0.png new file mode 100644 index 0000000000..b7316a64a7 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/control_box.rsi/control_box_unlitp0.png differ diff --git a/Resources/Textures/Constructible/Power/PA/control_box.rsi/control_box_unlitp1.png b/Resources/Textures/Constructible/Power/PA/control_box.rsi/control_box_unlitp1.png new file mode 100644 index 0000000000..065b9d36d6 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/control_box.rsi/control_box_unlitp1.png differ diff --git a/Resources/Textures/Constructible/Power/PA/control_box.rsi/control_box_unlitp2.png b/Resources/Textures/Constructible/Power/PA/control_box.rsi/control_box_unlitp2.png new file mode 100644 index 0000000000..ce98927bd4 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/control_box.rsi/control_box_unlitp2.png differ diff --git a/Resources/Textures/Constructible/Power/PA/control_box.rsi/control_box_unlitp3.png b/Resources/Textures/Constructible/Power/PA/control_box.rsi/control_box_unlitp3.png new file mode 100644 index 0000000000..6faa6c5088 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/control_box.rsi/control_box_unlitp3.png differ diff --git a/Resources/Textures/Constructible/Power/PA/control_box.rsi/control_boxc.png b/Resources/Textures/Constructible/Power/PA/control_box.rsi/control_boxc.png new file mode 100644 index 0000000000..cb9e35f3b7 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/control_box.rsi/control_boxc.png differ diff --git a/Resources/Textures/Constructible/Power/PA/control_box.rsi/control_boxw.png b/Resources/Textures/Constructible/Power/PA/control_box.rsi/control_boxw.png new file mode 100644 index 0000000000..6e0409e9cf Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/control_box.rsi/control_boxw.png differ diff --git a/Resources/Textures/Constructible/Power/PA/control_box.rsi/meta.json b/Resources/Textures/Constructible/Power/PA/control_box.rsi/meta.json new file mode 100644 index 0000000000..1e22cb2d96 --- /dev/null +++ b/Resources/Textures/Constructible/Power/PA/control_box.rsi/meta.json @@ -0,0 +1 @@ +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "states": [{"name": "control_box", "directions": 1, "delays": [[1.0]]},{"name": "control_boxc", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "control_box_unlitp", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "control_box_unlitp0", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "control_box_unlitp1", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "control_box_unlitp2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "control_box_unlitp3", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "control_boxw", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}]} diff --git a/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/emitter_center.png b/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/emitter_center.png new file mode 100644 index 0000000000..1b56db7025 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/emitter_center.png differ diff --git a/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/emitter_center_unlitp.png b/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/emitter_center_unlitp.png new file mode 100644 index 0000000000..2b3c1cce63 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/emitter_center_unlitp.png differ diff --git a/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/emitter_center_unlitp0.png b/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/emitter_center_unlitp0.png new file mode 100644 index 0000000000..c34a3c568e Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/emitter_center_unlitp0.png differ diff --git a/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/emitter_center_unlitp1.png b/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/emitter_center_unlitp1.png new file mode 100644 index 0000000000..c1165932d0 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/emitter_center_unlitp1.png differ diff --git a/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/emitter_center_unlitp2.png b/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/emitter_center_unlitp2.png new file mode 100644 index 0000000000..338dee3ed2 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/emitter_center_unlitp2.png differ diff --git a/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/emitter_center_unlitp3.png b/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/emitter_center_unlitp3.png new file mode 100644 index 0000000000..c5c3bdb0ee Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/emitter_center_unlitp3.png differ diff --git a/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/emitter_centerc.png b/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/emitter_centerc.png new file mode 100644 index 0000000000..68ac450053 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/emitter_centerc.png differ diff --git a/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/emitter_centerw.png b/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/emitter_centerw.png new file mode 100644 index 0000000000..f5f28201cc Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/emitter_centerw.png differ diff --git a/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/meta.json b/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/meta.json new file mode 100644 index 0000000000..c5d382f096 --- /dev/null +++ b/Resources/Textures/Constructible/Power/PA/emitter_center.rsi/meta.json @@ -0,0 +1 @@ +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "states": [{"name": "emitter_center", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "emitter_centerc", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "emitter_center_unlitp", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "emitter_center_unlitp0", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "emitter_center_unlitp1", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "emitter_center_unlitp2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "emitter_center_unlitp3", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "emitter_centerw", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}]} diff --git a/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/emitter_left.png b/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/emitter_left.png new file mode 100644 index 0000000000..4451d486fd Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/emitter_left.png differ diff --git a/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/emitter_left_unlitp.png b/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/emitter_left_unlitp.png new file mode 100644 index 0000000000..2b3c1cce63 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/emitter_left_unlitp.png differ diff --git a/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/emitter_left_unlitp0.png b/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/emitter_left_unlitp0.png new file mode 100644 index 0000000000..4f3141c5fb Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/emitter_left_unlitp0.png differ diff --git a/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/emitter_left_unlitp1.png b/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/emitter_left_unlitp1.png new file mode 100644 index 0000000000..e161218ec8 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/emitter_left_unlitp1.png differ diff --git a/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/emitter_left_unlitp2.png b/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/emitter_left_unlitp2.png new file mode 100644 index 0000000000..97ae2e0273 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/emitter_left_unlitp2.png differ diff --git a/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/emitter_left_unlitp3.png b/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/emitter_left_unlitp3.png new file mode 100644 index 0000000000..3dce6b4d2f Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/emitter_left_unlitp3.png differ diff --git a/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/emitter_leftc.png b/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/emitter_leftc.png new file mode 100644 index 0000000000..cdb99dfde0 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/emitter_leftc.png differ diff --git a/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/emitter_leftw.png b/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/emitter_leftw.png new file mode 100644 index 0000000000..df5a30d404 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/emitter_leftw.png differ diff --git a/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/meta.json b/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/meta.json new file mode 100644 index 0000000000..4177e9af75 --- /dev/null +++ b/Resources/Textures/Constructible/Power/PA/emitter_left.rsi/meta.json @@ -0,0 +1 @@ +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "states": [{"name": "emitter_left", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "emitter_leftc", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "emitter_left_unlitp", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "emitter_left_unlitp0", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "emitter_left_unlitp1", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "emitter_left_unlitp2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "emitter_left_unlitp3", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "emitter_leftw", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}]} diff --git a/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/emitter_right.png b/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/emitter_right.png new file mode 100644 index 0000000000..a02a371563 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/emitter_right.png differ diff --git a/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/emitter_right_unlitp.png b/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/emitter_right_unlitp.png new file mode 100644 index 0000000000..2b3c1cce63 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/emitter_right_unlitp.png differ diff --git a/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/emitter_right_unlitp0.png b/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/emitter_right_unlitp0.png new file mode 100644 index 0000000000..d82fa071a6 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/emitter_right_unlitp0.png differ diff --git a/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/emitter_right_unlitp1.png b/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/emitter_right_unlitp1.png new file mode 100644 index 0000000000..6a351133a5 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/emitter_right_unlitp1.png differ diff --git a/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/emitter_right_unlitp2.png b/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/emitter_right_unlitp2.png new file mode 100644 index 0000000000..4e45f2dd04 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/emitter_right_unlitp2.png differ diff --git a/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/emitter_right_unlitp3.png b/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/emitter_right_unlitp3.png new file mode 100644 index 0000000000..28dffcf55e Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/emitter_right_unlitp3.png differ diff --git a/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/emitter_rightc.png b/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/emitter_rightc.png new file mode 100644 index 0000000000..14158c6f69 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/emitter_rightc.png differ diff --git a/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/emitter_rightw.png b/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/emitter_rightw.png new file mode 100644 index 0000000000..19dc6de461 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/emitter_rightw.png differ diff --git a/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/meta.json b/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/meta.json new file mode 100644 index 0000000000..8e31a7922b --- /dev/null +++ b/Resources/Textures/Constructible/Power/PA/emitter_right.rsi/meta.json @@ -0,0 +1 @@ +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "states": [{"name": "emitter_right", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "emitter_rightc", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "emitter_right_unlitp", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "emitter_right_unlitp0", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "emitter_right_unlitp1", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "emitter_right_unlitp2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "emitter_right_unlitp3", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "emitter_rightw", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}]} diff --git a/Resources/Textures/Constructible/Power/PA/end_cap.rsi/end_cap.png b/Resources/Textures/Constructible/Power/PA/end_cap.rsi/end_cap.png new file mode 100644 index 0000000000..91f3b12767 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/end_cap.rsi/end_cap.png differ diff --git a/Resources/Textures/Constructible/Power/PA/end_cap.rsi/end_capc.png b/Resources/Textures/Constructible/Power/PA/end_cap.rsi/end_capc.png new file mode 100644 index 0000000000..47cb9802c7 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/end_cap.rsi/end_capc.png differ diff --git a/Resources/Textures/Constructible/Power/PA/end_cap.rsi/end_capw.png b/Resources/Textures/Constructible/Power/PA/end_cap.rsi/end_capw.png new file mode 100644 index 0000000000..cd4b9fbd38 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/end_cap.rsi/end_capw.png differ diff --git a/Resources/Textures/Constructible/Power/PA/end_cap.rsi/meta.json b/Resources/Textures/Constructible/Power/PA/end_cap.rsi/meta.json new file mode 100644 index 0000000000..8ba5704628 --- /dev/null +++ b/Resources/Textures/Constructible/Power/PA/end_cap.rsi/meta.json @@ -0,0 +1 @@ +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "states": [{"name": "end_cap", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "end_capc", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "end_capw", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}]} diff --git a/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/fuel_chamber.png b/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/fuel_chamber.png new file mode 100644 index 0000000000..0ba7ce55bc Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/fuel_chamber.png differ diff --git a/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/fuel_chamber_unlitp.png b/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/fuel_chamber_unlitp.png new file mode 100644 index 0000000000..a32b339fd8 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/fuel_chamber_unlitp.png differ diff --git a/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/fuel_chamber_unlitp0.png b/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/fuel_chamber_unlitp0.png new file mode 100644 index 0000000000..8d822ae6d2 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/fuel_chamber_unlitp0.png differ diff --git a/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/fuel_chamber_unlitp1.png b/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/fuel_chamber_unlitp1.png new file mode 100644 index 0000000000..781e214182 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/fuel_chamber_unlitp1.png differ diff --git a/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/fuel_chamber_unlitp2.png b/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/fuel_chamber_unlitp2.png new file mode 100644 index 0000000000..d10bee925a Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/fuel_chamber_unlitp2.png differ diff --git a/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/fuel_chamber_unlitp3.png b/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/fuel_chamber_unlitp3.png new file mode 100644 index 0000000000..2fee6e0daa Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/fuel_chamber_unlitp3.png differ diff --git a/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/fuel_chamberc.png b/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/fuel_chamberc.png new file mode 100644 index 0000000000..3867b13ec1 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/fuel_chamberc.png differ diff --git a/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/fuel_chamberw.png b/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/fuel_chamberw.png new file mode 100644 index 0000000000..69b72b24a3 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/fuel_chamberw.png differ diff --git a/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/meta.json b/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/meta.json new file mode 100644 index 0000000000..50256eca64 --- /dev/null +++ b/Resources/Textures/Constructible/Power/PA/fuel_chamber.rsi/meta.json @@ -0,0 +1 @@ +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "states": [{"name": "fuel_chamber", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "fuel_chamberc", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "fuel_chamber_unlitp", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "fuel_chamber_unlitp0", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "fuel_chamber_unlitp1", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "fuel_chamber_unlitp2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "fuel_chamber_unlitp3", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "fuel_chamberw", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}]} diff --git a/Resources/Textures/Constructible/Power/PA/particle.rsi/meta.json b/Resources/Textures/Constructible/Power/PA/particle.rsi/meta.json new file mode 100644 index 0000000000..fb8e4970cd --- /dev/null +++ b/Resources/Textures/Constructible/Power/PA/particle.rsi/meta.json @@ -0,0 +1 @@ +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "states": [{"name": "particle0", "directions": 4, "delays": [[0.1, 0.1], [0.1, 0.1], [0.1, 0.1], [0.1, 0.1]]}, {"name": "particle1", "directions": 4, "delays": [[0.1, 0.1], [0.1, 0.1], [0.1, 0.1], [0.1, 0.1]]}, {"name": "particle2", "directions": 4, "delays": [[0.1, 0.1], [0.1, 0.1], [0.1, 0.1], [0.1, 0.1]]}, {"name": "particle3", "directions": 4, "delays": [[0.1, 0.1], [0.1, 0.1], [0.1, 0.1], [0.1, 0.1]]}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Power/PA/particle.rsi/particle0.png b/Resources/Textures/Constructible/Power/PA/particle.rsi/particle0.png new file mode 100644 index 0000000000..2ac765f12a Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/particle.rsi/particle0.png differ diff --git a/Resources/Textures/Constructible/Power/PA/particle.rsi/particle1.png b/Resources/Textures/Constructible/Power/PA/particle.rsi/particle1.png new file mode 100644 index 0000000000..2ac765f12a Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/particle.rsi/particle1.png differ diff --git a/Resources/Textures/Constructible/Power/PA/particle.rsi/particle2.png b/Resources/Textures/Constructible/Power/PA/particle.rsi/particle2.png new file mode 100644 index 0000000000..2ac765f12a Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/particle.rsi/particle2.png differ diff --git a/Resources/Textures/Constructible/Power/PA/particle.rsi/particle3.png b/Resources/Textures/Constructible/Power/PA/particle.rsi/particle3.png new file mode 100644 index 0000000000..ab1131a565 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/particle.rsi/particle3.png differ diff --git a/Resources/Textures/Constructible/Power/PA/power_box.rsi/meta.json b/Resources/Textures/Constructible/Power/PA/power_box.rsi/meta.json new file mode 100644 index 0000000000..c06afab80b --- /dev/null +++ b/Resources/Textures/Constructible/Power/PA/power_box.rsi/meta.json @@ -0,0 +1 @@ +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "states": [{"name": "power_box", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "power_boxc", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "power_box_unlitp", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "power_box_unlitp0", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "power_box_unlitp1", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "power_box_unlitp2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "power_box_unlitp3", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "power_boxw", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}]} diff --git a/Resources/Textures/Constructible/Power/PA/power_box.rsi/power_box.png b/Resources/Textures/Constructible/Power/PA/power_box.rsi/power_box.png new file mode 100644 index 0000000000..a5abb283a1 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/power_box.rsi/power_box.png differ diff --git a/Resources/Textures/Constructible/Power/PA/power_box.rsi/power_box_unlitp.png b/Resources/Textures/Constructible/Power/PA/power_box.rsi/power_box_unlitp.png new file mode 100644 index 0000000000..a928000e47 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/power_box.rsi/power_box_unlitp.png differ diff --git a/Resources/Textures/Constructible/Power/PA/power_box.rsi/power_box_unlitp0.png b/Resources/Textures/Constructible/Power/PA/power_box.rsi/power_box_unlitp0.png new file mode 100644 index 0000000000..289099a071 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/power_box.rsi/power_box_unlitp0.png differ diff --git a/Resources/Textures/Constructible/Power/PA/power_box.rsi/power_box_unlitp1.png b/Resources/Textures/Constructible/Power/PA/power_box.rsi/power_box_unlitp1.png new file mode 100644 index 0000000000..517a8eb736 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/power_box.rsi/power_box_unlitp1.png differ diff --git a/Resources/Textures/Constructible/Power/PA/power_box.rsi/power_box_unlitp2.png b/Resources/Textures/Constructible/Power/PA/power_box.rsi/power_box_unlitp2.png new file mode 100644 index 0000000000..68e76c220c Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/power_box.rsi/power_box_unlitp2.png differ diff --git a/Resources/Textures/Constructible/Power/PA/power_box.rsi/power_box_unlitp3.png b/Resources/Textures/Constructible/Power/PA/power_box.rsi/power_box_unlitp3.png new file mode 100644 index 0000000000..bdded3b3b3 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/power_box.rsi/power_box_unlitp3.png differ diff --git a/Resources/Textures/Constructible/Power/PA/power_box.rsi/power_boxc.png b/Resources/Textures/Constructible/Power/PA/power_box.rsi/power_boxc.png new file mode 100644 index 0000000000..e290f086c6 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/power_box.rsi/power_boxc.png differ diff --git a/Resources/Textures/Constructible/Power/PA/power_box.rsi/power_boxw.png b/Resources/Textures/Constructible/Power/PA/power_box.rsi/power_boxw.png new file mode 100644 index 0000000000..98a5804157 Binary files /dev/null and b/Resources/Textures/Constructible/Power/PA/power_box.rsi/power_boxw.png differ diff --git a/Resources/Textures/Constructible/Power/emitter.rsi/emitter-beam.png b/Resources/Textures/Constructible/Power/emitter.rsi/emitter-beam.png new file mode 100644 index 0000000000..2b849ce52f Binary files /dev/null and b/Resources/Textures/Constructible/Power/emitter.rsi/emitter-beam.png differ diff --git a/Resources/Textures/Constructible/Power/emitter.rsi/emitter-lock.png b/Resources/Textures/Constructible/Power/emitter.rsi/emitter-lock.png new file mode 100644 index 0000000000..1afb76f9b9 Binary files /dev/null and b/Resources/Textures/Constructible/Power/emitter.rsi/emitter-lock.png differ diff --git a/Resources/Textures/Constructible/Power/emitter.rsi/emitter-underpowered.png b/Resources/Textures/Constructible/Power/emitter.rsi/emitter-underpowered.png new file mode 100644 index 0000000000..255b57873d Binary files /dev/null and b/Resources/Textures/Constructible/Power/emitter.rsi/emitter-underpowered.png differ diff --git a/Resources/Textures/Constructible/Power/emitter.rsi/emitter0.png b/Resources/Textures/Constructible/Power/emitter.rsi/emitter0.png new file mode 100644 index 0000000000..ef59df7509 Binary files /dev/null and b/Resources/Textures/Constructible/Power/emitter.rsi/emitter0.png differ diff --git a/Resources/Textures/Constructible/Power/emitter.rsi/emitter1.png b/Resources/Textures/Constructible/Power/emitter.rsi/emitter1.png new file mode 100644 index 0000000000..babb79a194 Binary files /dev/null and b/Resources/Textures/Constructible/Power/emitter.rsi/emitter1.png differ diff --git a/Resources/Textures/Constructible/Power/emitter.rsi/emitter2.png b/Resources/Textures/Constructible/Power/emitter.rsi/emitter2.png new file mode 100644 index 0000000000..9b85d68e94 Binary files /dev/null and b/Resources/Textures/Constructible/Power/emitter.rsi/emitter2.png differ diff --git a/Resources/Textures/Constructible/Power/emitter.rsi/emitter_projectile.png b/Resources/Textures/Constructible/Power/emitter.rsi/emitter_projectile.png new file mode 100644 index 0000000000..a1c706d409 Binary files /dev/null and b/Resources/Textures/Constructible/Power/emitter.rsi/emitter_projectile.png differ diff --git a/Resources/Textures/Constructible/Power/emitter.rsi/meta.json b/Resources/Textures/Constructible/Power/emitter.rsi/meta.json new file mode 100644 index 0000000000..a880d0e5b6 --- /dev/null +++ b/Resources/Textures/Constructible/Power/emitter.rsi/meta.json @@ -0,0 +1 @@ +{"version":1,"size":{"x":32,"y":32},"license":"CC-BY-SA-3.0","copyright":"Taken from https://github.com/tgstation/tgstation","states":[{"name":"emitter-beam","directions":4,"delays":[[0.1],[0.1],[0.1],[0.1]]},{"name":"emitter-underpowered","directions":4,"delays":[[0.1,0.1],[0.1,0.1],[0.1,0.1],[0.1,0.1]]},{"name":"emitter-lock","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"emitter0","directions":4,"delays":[[0.1],[0.1],[0.1],[0.1]]},{"name":"emitter1","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"emitter2","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"emitter_projectile","directions":1,"delays":[[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Power/field_generator.rsi/+a1.png b/Resources/Textures/Constructible/Power/field_generator.rsi/+a1.png new file mode 100644 index 0000000000..7d5fc9ef89 Binary files /dev/null and b/Resources/Textures/Constructible/Power/field_generator.rsi/+a1.png differ diff --git a/Resources/Textures/Constructible/Power/field_generator.rsi/+a2.png b/Resources/Textures/Constructible/Power/field_generator.rsi/+a2.png new file mode 100644 index 0000000000..78aee61a4f Binary files /dev/null and b/Resources/Textures/Constructible/Power/field_generator.rsi/+a2.png differ diff --git a/Resources/Textures/Constructible/Power/field_generator.rsi/+a3.png b/Resources/Textures/Constructible/Power/field_generator.rsi/+a3.png new file mode 100644 index 0000000000..104e27493c Binary files /dev/null and b/Resources/Textures/Constructible/Power/field_generator.rsi/+a3.png differ diff --git a/Resources/Textures/Constructible/Power/field_generator.rsi/+on.png b/Resources/Textures/Constructible/Power/field_generator.rsi/+on.png new file mode 100644 index 0000000000..9b69664237 Binary files /dev/null and b/Resources/Textures/Constructible/Power/field_generator.rsi/+on.png differ diff --git a/Resources/Textures/Constructible/Power/field_generator.rsi/+p1.png b/Resources/Textures/Constructible/Power/field_generator.rsi/+p1.png new file mode 100644 index 0000000000..ca2219ddf3 Binary files /dev/null and b/Resources/Textures/Constructible/Power/field_generator.rsi/+p1.png differ diff --git a/Resources/Textures/Constructible/Power/field_generator.rsi/+p2.png b/Resources/Textures/Constructible/Power/field_generator.rsi/+p2.png new file mode 100644 index 0000000000..9246a7ea9b Binary files /dev/null and b/Resources/Textures/Constructible/Power/field_generator.rsi/+p2.png differ diff --git a/Resources/Textures/Constructible/Power/field_generator.rsi/+p3.png b/Resources/Textures/Constructible/Power/field_generator.rsi/+p3.png new file mode 100644 index 0000000000..c9a1ce32bb Binary files /dev/null and b/Resources/Textures/Constructible/Power/field_generator.rsi/+p3.png differ diff --git a/Resources/Textures/Constructible/Power/field_generator.rsi/+p4.png b/Resources/Textures/Constructible/Power/field_generator.rsi/+p4.png new file mode 100644 index 0000000000..d75c431c8d Binary files /dev/null and b/Resources/Textures/Constructible/Power/field_generator.rsi/+p4.png differ diff --git a/Resources/Textures/Constructible/Power/field_generator.rsi/+p5.png b/Resources/Textures/Constructible/Power/field_generator.rsi/+p5.png new file mode 100644 index 0000000000..0b3c771a33 Binary files /dev/null and b/Resources/Textures/Constructible/Power/field_generator.rsi/+p5.png differ diff --git a/Resources/Textures/Constructible/Power/field_generator.rsi/+p6.png b/Resources/Textures/Constructible/Power/field_generator.rsi/+p6.png new file mode 100644 index 0000000000..a3cbb40d24 Binary files /dev/null and b/Resources/Textures/Constructible/Power/field_generator.rsi/+p6.png differ diff --git a/Resources/Textures/Constructible/Power/field_generator.rsi/Field_Gen.png b/Resources/Textures/Constructible/Power/field_generator.rsi/Field_Gen.png new file mode 100644 index 0000000000..c47df306f3 Binary files /dev/null and b/Resources/Textures/Constructible/Power/field_generator.rsi/Field_Gen.png differ diff --git a/Resources/Textures/Constructible/Power/field_generator.rsi/meta.json b/Resources/Textures/Constructible/Power/field_generator.rsi/meta.json new file mode 100644 index 0000000000..5afd9bc022 --- /dev/null +++ b/Resources/Textures/Constructible/Power/field_generator.rsi/meta.json @@ -0,0 +1 @@ +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation", "states": [{"name": "+a1", "directions": 1, "delays": [[1.0]]}, {"name": "+a2", "directions": 1, "delays": [[1.0]]}, {"name": "+a3", "directions": 1, "delays": [[1.0]]}, {"name": "+on", "directions": 1, "delays": [[1.0]]}, {"name": "+p1", "directions": 1, "delays": [[1.0]]}, {"name": "+p2", "directions": 1, "delays": [[1.0]]}, {"name": "+p3", "directions": 1, "delays": [[1.0]]}, {"name": "+p4", "directions": 1, "delays": [[1.0]]}, {"name": "+p5", "directions": 1, "delays": [[1.0]]}, {"name": "+p6", "directions": 1, "delays": [[1.0]]}, {"name": "Field_Gen", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Power/radiation_collector.rsi/ca_active.png b/Resources/Textures/Constructible/Power/radiation_collector.rsi/ca_active.png new file mode 100644 index 0000000000..39dbf8d014 Binary files /dev/null and b/Resources/Textures/Constructible/Power/radiation_collector.rsi/ca_active.png differ diff --git a/Resources/Textures/Constructible/Power/radiation_collector.rsi/ca_deactive.png b/Resources/Textures/Constructible/Power/radiation_collector.rsi/ca_deactive.png new file mode 100644 index 0000000000..81f95545f4 Binary files /dev/null and b/Resources/Textures/Constructible/Power/radiation_collector.rsi/ca_deactive.png differ diff --git a/Resources/Textures/Constructible/Power/radiation_collector.rsi/ca_off.png b/Resources/Textures/Constructible/Power/radiation_collector.rsi/ca_off.png new file mode 100644 index 0000000000..fa2741995e Binary files /dev/null and b/Resources/Textures/Constructible/Power/radiation_collector.rsi/ca_off.png differ diff --git a/Resources/Textures/Constructible/Power/radiation_collector.rsi/ca_on.png b/Resources/Textures/Constructible/Power/radiation_collector.rsi/ca_on.png new file mode 100644 index 0000000000..122c0ce45f Binary files /dev/null and b/Resources/Textures/Constructible/Power/radiation_collector.rsi/ca_on.png differ diff --git a/Resources/Textures/Constructible/Power/radiation_collector.rsi/cu.png b/Resources/Textures/Constructible/Power/radiation_collector.rsi/cu.png new file mode 100644 index 0000000000..896c844149 Binary files /dev/null and b/Resources/Textures/Constructible/Power/radiation_collector.rsi/cu.png differ diff --git a/Resources/Textures/Constructible/Power/radiation_collector.rsi/meta.json b/Resources/Textures/Constructible/Power/radiation_collector.rsi/meta.json new file mode 100644 index 0000000000..f6d83c3c76 --- /dev/null +++ b/Resources/Textures/Constructible/Power/radiation_collector.rsi/meta.json @@ -0,0 +1 @@ +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/goonstation/goonstation-2020", "states": [{"name": "ca_off", "directions": 1, "delays": [[1.0]]}, {"name": "ca_on", "directions": 1, "delays": [[1.0]]}, {"name": "ca_active", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "ca_deactive", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "cu", "directions": 1, "delays": [[1.0]]}]} diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/0_1.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/0_1.png new file mode 100644 index 0000000000..70f7702f1e Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/0_1.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/0_2.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/0_2.png new file mode 100644 index 0000000000..eb948341bd Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/0_2.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/0_3.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/0_3.png new file mode 100644 index 0000000000..6308ed96a8 Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/0_3.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/0_4.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/0_4.png new file mode 100644 index 0000000000..347c7a94ae Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/0_4.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/0_5.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/0_5.png new file mode 100644 index 0000000000..628b156132 Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/0_5.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/1_1.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/1_1.png new file mode 100644 index 0000000000..2c6ab38760 Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/1_1.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/1_2.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/1_2.png new file mode 100644 index 0000000000..4d2acc510b Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/1_2.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/1_3.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/1_3.png new file mode 100644 index 0000000000..9fc9978d84 Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/1_3.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/1_4.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/1_4.png new file mode 100644 index 0000000000..44a8a680d4 Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/1_4.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/1_5.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/1_5.png new file mode 100644 index 0000000000..8ce309da10 Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/1_5.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/2_1.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/2_1.png new file mode 100644 index 0000000000..70f7702f1e Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/2_1.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/2_2.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/2_2.png new file mode 100644 index 0000000000..eb948341bd Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/2_2.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/2_3.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/2_3.png new file mode 100644 index 0000000000..6308ed96a8 Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/2_3.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/2_4.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/2_4.png new file mode 100644 index 0000000000..347c7a94ae Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/2_4.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/2_5.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/2_5.png new file mode 100644 index 0000000000..628b156132 Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/2_5.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/3_1.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/3_1.png new file mode 100644 index 0000000000..2c6ab38760 Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/3_1.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/3_2.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/3_2.png new file mode 100644 index 0000000000..4d2acc510b Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/3_2.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/3_3.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/3_3.png new file mode 100644 index 0000000000..9fc9978d84 Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/3_3.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/3_4.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/3_4.png new file mode 100644 index 0000000000..44a8a680d4 Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/3_4.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/3_5.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/3_5.png new file mode 100644 index 0000000000..8ce309da10 Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/3_5.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/4_1.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/4_1.png new file mode 100644 index 0000000000..a678b5f0a9 Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/4_1.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/4_2.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/4_2.png new file mode 100644 index 0000000000..dacceac27b Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/4_2.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/4_3.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/4_3.png new file mode 100644 index 0000000000..38c3949aa0 Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/4_3.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/4_4.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/4_4.png new file mode 100644 index 0000000000..98cd4234eb Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/4_4.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/4_5.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/4_5.png new file mode 100644 index 0000000000..b1c9a90c1c Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/4_5.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/5_1.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/5_1.png new file mode 100644 index 0000000000..b89cfc2f20 Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/5_1.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/5_2.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/5_2.png new file mode 100644 index 0000000000..5faa4761b2 Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/5_2.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/5_3.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/5_3.png new file mode 100644 index 0000000000..6b74db91cd Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/5_3.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/5_4.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/5_4.png new file mode 100644 index 0000000000..91f5cd962a Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/5_4.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/5_5.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/5_5.png new file mode 100644 index 0000000000..fd8e09e2a9 Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/5_5.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/6_1.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/6_1.png new file mode 100644 index 0000000000..a678b5f0a9 Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/6_1.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/6_2.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/6_2.png new file mode 100644 index 0000000000..dacceac27b Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/6_2.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/6_3.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/6_3.png new file mode 100644 index 0000000000..38c3949aa0 Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/6_3.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/6_4.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/6_4.png new file mode 100644 index 0000000000..98cd4234eb Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/6_4.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/6_5.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/6_5.png new file mode 100644 index 0000000000..b1c9a90c1c Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/6_5.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/7_1.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/7_1.png new file mode 100644 index 0000000000..fdb4f85d92 Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/7_1.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/7_2.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/7_2.png new file mode 100644 index 0000000000..ee9e116047 Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/7_2.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/7_3.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/7_3.png new file mode 100644 index 0000000000..3ccbba05e3 Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/7_3.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/7_4.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/7_4.png new file mode 100644 index 0000000000..d10caaacf4 Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/7_4.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/7_5.png b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/7_5.png new file mode 100644 index 0000000000..23bbc0dce7 Binary files /dev/null and b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/7_5.png differ diff --git a/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/meta.json b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/meta.json new file mode 100644 index 0000000000..397ef62ebd --- /dev/null +++ b/Resources/Textures/Constructible/Structures/Windows/cracks.rsi/meta.json @@ -0,0 +1,731 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "brndd", + "states": [ + { + "name": "0_1", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "0_2", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "0_3", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "0_4", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "0_5", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "1_1", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "1_2", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "1_3", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "1_4", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "1_5", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "2_1", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "2_2", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "2_3", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "2_4", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "2_5", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "3_1", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "3_2", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "3_3", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "3_4", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "3_5", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "4_1", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "4_2", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "4_3", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "4_4", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "4_5", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "5_1", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "5_2", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "5_3", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "5_4", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "5_5", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "6_1", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "6_2", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "6_3", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "6_4", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "6_5", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "7_1", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "7_2", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "7_3", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "7_4", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + }, + { + "name": "7_5", + "directions": 4, + "delays": [ + [ + 1 + ], + [ + 1 + ], + [ + 1 + ], + [ + 1 + ] + ] + } + ] +} diff --git a/Resources/Textures/Effects/Singularity/singularity_1.rsi/meta.json b/Resources/Textures/Effects/Singularity/singularity_1.rsi/meta.json new file mode 100644 index 0000000000..265b9125e9 --- /dev/null +++ b/Resources/Textures/Effects/Singularity/singularity_1.rsi/meta.json @@ -0,0 +1 @@ +{"version":1,"size":{"x":32,"y":32},"copyright":"Taken from https://github.com/vgstation-coders/vgstation13/blob/8eef5a676f66551bd0fb40d506486a6b3b2b0f1a/icons/obj/singularity.dmi","license":"CC-BY-SA-3.0","states":[{"name":"singularity_1","directions":1,"delays":[[0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1]]}]} diff --git a/Resources/Textures/Effects/Singularity/singularity_1.rsi/singularity_1.png b/Resources/Textures/Effects/Singularity/singularity_1.rsi/singularity_1.png new file mode 100644 index 0000000000..4a862b604d Binary files /dev/null and b/Resources/Textures/Effects/Singularity/singularity_1.rsi/singularity_1.png differ diff --git a/Resources/Textures/Effects/Singularity/singularity_2.rsi/meta.json b/Resources/Textures/Effects/Singularity/singularity_2.rsi/meta.json new file mode 100644 index 0000000000..44c79e7964 --- /dev/null +++ b/Resources/Textures/Effects/Singularity/singularity_2.rsi/meta.json @@ -0,0 +1 @@ +{"version":1,"size":{"x":96,"y":96},"copyright":"Taken from https://github.com/vgstation-coders/vgstation13/blob/8eef5a676f66551bd0fb40d506486a6b3b2b0f1a/icons/effects/96x96.dmi","license":"CC-BY-SA-3.0","states":[{"name":"singularity_2","directions":1,"delays":[[0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1]]}]} diff --git a/Resources/Textures/Effects/Singularity/singularity_2.rsi/singularity_2.png b/Resources/Textures/Effects/Singularity/singularity_2.rsi/singularity_2.png new file mode 100644 index 0000000000..b4e91a1136 Binary files /dev/null and b/Resources/Textures/Effects/Singularity/singularity_2.rsi/singularity_2.png differ diff --git a/Resources/Textures/Effects/Singularity/singularity_3.rsi/meta.json b/Resources/Textures/Effects/Singularity/singularity_3.rsi/meta.json new file mode 100644 index 0000000000..2d500fd12f --- /dev/null +++ b/Resources/Textures/Effects/Singularity/singularity_3.rsi/meta.json @@ -0,0 +1 @@ +{"version":1,"size":{"x":160,"y":160},"copyright":"Taken from https://github.com/vgstation-coders/vgstation13/blob/8eef5a676f66551bd0fb40d506486a6b3b2b0f1a/icons/effects/160x160.dmi","license":"CC-BY-SA-3.0","states":[{"name":"singularity_3","directions":1,"delays":[[0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1]]}]} diff --git a/Resources/Textures/Effects/Singularity/singularity_3.rsi/singularity_3.png b/Resources/Textures/Effects/Singularity/singularity_3.rsi/singularity_3.png new file mode 100644 index 0000000000..3f334e0ab2 Binary files /dev/null and b/Resources/Textures/Effects/Singularity/singularity_3.rsi/singularity_3.png differ diff --git a/Resources/Textures/Effects/Singularity/singularity_4.rsi/meta.json b/Resources/Textures/Effects/Singularity/singularity_4.rsi/meta.json new file mode 100644 index 0000000000..1313bc34c5 --- /dev/null +++ b/Resources/Textures/Effects/Singularity/singularity_4.rsi/meta.json @@ -0,0 +1 @@ +{"version":1,"size":{"x":224,"y":224},"copyright":"Taken from https://github.com/vgstation-coders/vgstation13/blob/8eef5a676f66551bd0fb40d506486a6b3b2b0f1a/icons/effects/224x224.dmi","license":"CC-BY-SA-3.0","states":[{"name":"singularity_4","directions":1,"delays":[[0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1]]}]} diff --git a/Resources/Textures/Effects/Singularity/singularity_4.rsi/singularity_4.png b/Resources/Textures/Effects/Singularity/singularity_4.rsi/singularity_4.png new file mode 100644 index 0000000000..5c8107ef23 Binary files /dev/null and b/Resources/Textures/Effects/Singularity/singularity_4.rsi/singularity_4.png differ diff --git a/Resources/Textures/Effects/Singularity/singularity_5.rsi/meta.json b/Resources/Textures/Effects/Singularity/singularity_5.rsi/meta.json new file mode 100644 index 0000000000..ac26dee9ef --- /dev/null +++ b/Resources/Textures/Effects/Singularity/singularity_5.rsi/meta.json @@ -0,0 +1 @@ +{"version":1,"size":{"x":288,"y":288},"copyright":"Taken from https://github.com/vgstation-coders/vgstation13/blob/8eef5a676f66551bd0fb40d506486a6b3b2b0f1a/icons/effects/288x288.dmi","license":"CC-BY-SA-3.0","states":[{"name":"singularity_5","directions":1,"delays":[[0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1]]}]} diff --git a/Resources/Textures/Effects/Singularity/singularity_5.rsi/singularity_5.png b/Resources/Textures/Effects/Singularity/singularity_5.rsi/singularity_5.png new file mode 100644 index 0000000000..03c49487ee Binary files /dev/null and b/Resources/Textures/Effects/Singularity/singularity_5.rsi/singularity_5.png differ diff --git a/Resources/Textures/Effects/Singularity/singularity_6.rsi/meta.json b/Resources/Textures/Effects/Singularity/singularity_6.rsi/meta.json new file mode 100644 index 0000000000..6f2a6d5cca --- /dev/null +++ b/Resources/Textures/Effects/Singularity/singularity_6.rsi/meta.json @@ -0,0 +1 @@ +{"version":1,"size":{"x":352,"y":352},"copyright":"Taken from https://github.com/vgstation-coders/vgstation13/blob/8eef5a676f66551bd0fb40d506486a6b3b2b0f1a/icons/effects/352x352.dmi","license":"CC-BY-SA-3.0","states":[{"name":"singularity_6","directions":1,"delays":[[0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1]]}]} diff --git a/Resources/Textures/Effects/Singularity/singularity_6.rsi/singularity_6.png b/Resources/Textures/Effects/Singularity/singularity_6.rsi/singularity_6.png new file mode 100644 index 0000000000..3f187d4354 Binary files /dev/null and b/Resources/Textures/Effects/Singularity/singularity_6.rsi/singularity_6.png differ diff --git a/Resources/Textures/Effects/Singularity/singulo_gen.rsi/meta.json b/Resources/Textures/Effects/Singularity/singulo_gen.rsi/meta.json new file mode 100644 index 0000000000..7edbcf5edc --- /dev/null +++ b/Resources/Textures/Effects/Singularity/singulo_gen.rsi/meta.json @@ -0,0 +1 @@ +{"version":1,"size":{"x":32,"y":32},"copyright":"Taken from https://github.com/vgstation-coders/vgstation13/blob/68357f0b64a296d122ff1bdb2f13e9b0cb04a003/icons/obj/singularity.dmi","license":"CC-BY-SA-3.0","states":[{"name":"singulo_gen","directions":1,"delays":[[1]]}]} diff --git a/Resources/Textures/Effects/Singularity/singulo_gen.rsi/singulo_gen.png b/Resources/Textures/Effects/Singularity/singulo_gen.rsi/singulo_gen.png new file mode 100644 index 0000000000..493928c921 Binary files /dev/null and b/Resources/Textures/Effects/Singularity/singulo_gen.rsi/singulo_gen.png differ diff --git a/Resources/Textures/Effects/contain_f.rsi/Contain_F.png b/Resources/Textures/Effects/contain_f.rsi/Contain_F.png new file mode 100644 index 0000000000..bbd284cfcb Binary files /dev/null and b/Resources/Textures/Effects/contain_f.rsi/Contain_F.png differ diff --git a/Resources/Textures/Effects/contain_f.rsi/meta.json b/Resources/Textures/Effects/contain_f.rsi/meta.json new file mode 100644 index 0000000000..1603277d1d --- /dev/null +++ b/Resources/Textures/Effects/contain_f.rsi/meta.json @@ -0,0 +1 @@ +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation", "states": [{"name": "Contain_F", "directions": 4, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}]} \ No newline at end of file diff --git a/Resources/Textures/Interface/Inventory/blocked.png b/Resources/Textures/Interface/Inventory/blocked.png new file mode 100644 index 0000000000..0d6482f99e Binary files /dev/null and b/Resources/Textures/Interface/Inventory/blocked.png differ diff --git a/Resources/Textures/Interface/StatusEffects/Weightless/weightless.png b/Resources/Textures/Interface/StatusEffects/Weightless/weightless.png new file mode 100644 index 0000000000..7ee4f01083 Binary files /dev/null and b/Resources/Textures/Interface/StatusEffects/Weightless/weightless.png differ diff --git a/Resources/Textures/Objects/Materials/Shards/piece.rsi/meta.json b/Resources/Textures/Objects/Materials/Shards/piece.rsi/meta.json new file mode 100644 index 0000000000..9ef15adc64 --- /dev/null +++ b/Resources/Textures/Objects/Materials/Shards/piece.rsi/meta.json @@ -0,0 +1,38 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/discordia-space/CEV-Eris/commit/b5b4edd4e46efc2ee2d3c1ce5aff82d80ddc461e", + "states": [ + { + "name": "piecelarge", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "piecemedium", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "piecesmall", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Materials/Shards/piece.rsi/piecelarge.png b/Resources/Textures/Objects/Materials/Shards/piece.rsi/piecelarge.png new file mode 100644 index 0000000000..74950bdabd Binary files /dev/null and b/Resources/Textures/Objects/Materials/Shards/piece.rsi/piecelarge.png differ diff --git a/Resources/Textures/Objects/Materials/Shards/piece.rsi/piecemedium.png b/Resources/Textures/Objects/Materials/Shards/piece.rsi/piecemedium.png new file mode 100644 index 0000000000..9d20740776 Binary files /dev/null and b/Resources/Textures/Objects/Materials/Shards/piece.rsi/piecemedium.png differ diff --git a/Resources/Textures/Objects/Materials/Shards/piece.rsi/piecesmall.png b/Resources/Textures/Objects/Materials/Shards/piece.rsi/piecesmall.png new file mode 100644 index 0000000000..d206eca823 Binary files /dev/null and b/Resources/Textures/Objects/Materials/Shards/piece.rsi/piecesmall.png differ diff --git a/Resources/Textures/Objects/Materials/Shards/shard.rsi/inhand-left.png b/Resources/Textures/Objects/Materials/Shards/shard.rsi/inhand-left.png new file mode 100644 index 0000000000..7a58c53e47 Binary files /dev/null and b/Resources/Textures/Objects/Materials/Shards/shard.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Materials/Shards/shard.rsi/inhand-right.png b/Resources/Textures/Objects/Materials/Shards/shard.rsi/inhand-right.png new file mode 100644 index 0000000000..028c6e8cce Binary files /dev/null and b/Resources/Textures/Objects/Materials/Shards/shard.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Materials/Shards/shard.rsi/meta.json b/Resources/Textures/Objects/Materials/Shards/shard.rsi/meta.json new file mode 100644 index 0000000000..117b0d53ca --- /dev/null +++ b/Resources/Textures/Objects/Materials/Shards/shard.rsi/meta.json @@ -0,0 +1,74 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/discordia-space/CEV-Eris/commit/b5b4edd4e46efc2ee2d3c1ce5aff82d80ddc461e", + "states": [ + { + "name": "inhand-left", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "inhand-right", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "shard3", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "shard2", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "shard1", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Materials/Shards/shard.rsi/shard1.png b/Resources/Textures/Objects/Materials/Shards/shard.rsi/shard1.png new file mode 100644 index 0000000000..9970675e67 Binary files /dev/null and b/Resources/Textures/Objects/Materials/Shards/shard.rsi/shard1.png differ diff --git a/Resources/Textures/Objects/Materials/Shards/shard.rsi/shard2.png b/Resources/Textures/Objects/Materials/Shards/shard.rsi/shard2.png new file mode 100644 index 0000000000..c01b48e9e3 Binary files /dev/null and b/Resources/Textures/Objects/Materials/Shards/shard.rsi/shard2.png differ diff --git a/Resources/Textures/Objects/Materials/Shards/shard.rsi/shard3.png b/Resources/Textures/Objects/Materials/Shards/shard.rsi/shard3.png new file mode 100644 index 0000000000..2c0a42c607 Binary files /dev/null and b/Resources/Textures/Objects/Materials/Shards/shard.rsi/shard3.png differ diff --git a/Resources/Textures/Objects/Materials/Shards/shrapnel.rsi/meta.json b/Resources/Textures/Objects/Materials/Shards/shrapnel.rsi/meta.json new file mode 100644 index 0000000000..d585dca469 --- /dev/null +++ b/Resources/Textures/Objects/Materials/Shards/shrapnel.rsi/meta.json @@ -0,0 +1,38 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/discordia-space/CEV-Eris/commit/b5b4edd4e46efc2ee2d3c1ce5aff82d80ddc461e", + "states": [ + { + "name": "shrapnellarge", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "shrapnelmedium", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "shrapnelsmall", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Materials/Shards/shrapnel.rsi/shrapnellarge.png b/Resources/Textures/Objects/Materials/Shards/shrapnel.rsi/shrapnellarge.png new file mode 100644 index 0000000000..ce064b642f Binary files /dev/null and b/Resources/Textures/Objects/Materials/Shards/shrapnel.rsi/shrapnellarge.png differ diff --git a/Resources/Textures/Objects/Materials/Shards/shrapnel.rsi/shrapnelmedium.png b/Resources/Textures/Objects/Materials/Shards/shrapnel.rsi/shrapnelmedium.png new file mode 100644 index 0000000000..156c3ad3db Binary files /dev/null and b/Resources/Textures/Objects/Materials/Shards/shrapnel.rsi/shrapnelmedium.png differ diff --git a/Resources/Textures/Objects/Materials/Shards/shrapnel.rsi/shrapnelsmall.png b/Resources/Textures/Objects/Materials/Shards/shrapnel.rsi/shrapnelsmall.png new file mode 100644 index 0000000000..ad9244f88f Binary files /dev/null and b/Resources/Textures/Objects/Materials/Shards/shrapnel.rsi/shrapnelsmall.png differ diff --git a/Resources/Textures/Objects/Materials/Shards/splinters.rsi/meta.json b/Resources/Textures/Objects/Materials/Shards/splinters.rsi/meta.json new file mode 100644 index 0000000000..c81a36f2cb --- /dev/null +++ b/Resources/Textures/Objects/Materials/Shards/splinters.rsi/meta.json @@ -0,0 +1,38 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/discordia-space/CEV-Eris/commit/b5b4edd4e46efc2ee2d3c1ce5aff82d80ddc461e", + "states": [ + { + "name": "splinterslarge", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "splintersmedium", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "splinterssmall", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Materials/Shards/splinters.rsi/splinterslarge.png b/Resources/Textures/Objects/Materials/Shards/splinters.rsi/splinterslarge.png new file mode 100644 index 0000000000..f58e4915d0 Binary files /dev/null and b/Resources/Textures/Objects/Materials/Shards/splinters.rsi/splinterslarge.png differ diff --git a/Resources/Textures/Objects/Materials/Shards/splinters.rsi/splintersmedium.png b/Resources/Textures/Objects/Materials/Shards/splinters.rsi/splintersmedium.png new file mode 100644 index 0000000000..bfb7cef071 Binary files /dev/null and b/Resources/Textures/Objects/Materials/Shards/splinters.rsi/splintersmedium.png differ diff --git a/Resources/Textures/Objects/Materials/Shards/splinters.rsi/splinterssmall.png b/Resources/Textures/Objects/Materials/Shards/splinters.rsi/splinterssmall.png new file mode 100644 index 0000000000..eed868a49f Binary files /dev/null and b/Resources/Textures/Objects/Materials/Shards/splinters.rsi/splinterssmall.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/assigned.png b/Resources/Textures/Objects/Misc/id_cards.rsi/assigned.png index 07cfb13662..ffaf2654cc 100644 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/assigned.png and b/Resources/Textures/Objects/Misc/id_cards.rsi/assigned.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/centcom.png b/Resources/Textures/Objects/Misc/id_cards.rsi/centcom.png new file mode 100644 index 0000000000..d6ee9844f0 Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/centcom.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/default.png b/Resources/Textures/Objects/Misc/id_cards.rsi/default.png index deb2d35c6b..1252002516 100644 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/default.png and b/Resources/Textures/Objects/Misc/id_cards.rsi/default.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/ert_chaplain.png b/Resources/Textures/Objects/Misc/id_cards.rsi/ert_chaplain.png new file mode 100644 index 0000000000..7dc38a4c60 Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/ert_chaplain.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/ert_commander.png b/Resources/Textures/Objects/Misc/id_cards.rsi/ert_commander.png new file mode 100644 index 0000000000..b1ae7ea755 Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/ert_commander.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/ert_engineer.png b/Resources/Textures/Objects/Misc/id_cards.rsi/ert_engineer.png new file mode 100644 index 0000000000..16218ebd3a Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/ert_engineer.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/ert_janitor.png b/Resources/Textures/Objects/Misc/id_cards.rsi/ert_janitor.png new file mode 100644 index 0000000000..da667d4ac5 Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/ert_janitor.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/ert_medic.png b/Resources/Textures/Objects/Misc/id_cards.rsi/ert_medic.png new file mode 100644 index 0000000000..05710e9e87 Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/ert_medic.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/ert_security.png b/Resources/Textures/Objects/Misc/id_cards.rsi/ert_security.png new file mode 100644 index 0000000000..830ea41793 Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/ert_security.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/gold.png b/Resources/Textures/Objects/Misc/id_cards.rsi/gold.png index fa8d36dfaa..06dd13ac40 100644 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/gold.png and b/Resources/Textures/Objects/Misc/id_cards.rsi/gold.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idassistant.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idassistant.png index 397b416a59..0f92b2edf1 100644 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idassistant.png and b/Resources/Textures/Objects/Misc/id_cards.rsi/idassistant.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idassistant_icon.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idassistant_icon.png deleted file mode 100644 index 128ce26f12..0000000000 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idassistant_icon.png and /dev/null differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idatmospherictechnician.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idatmospherictechnician.png new file mode 100644 index 0000000000..3bd5446a3b Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/idatmospherictechnician.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idbartender.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idbartender.png index 372e732578..435ea39ad6 100644 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idbartender.png and b/Resources/Textures/Objects/Misc/id_cards.rsi/idbartender.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idbartender_icon.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idbartender_icon.png deleted file mode 100644 index 92b2be60b2..0000000000 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idbartender_icon.png and /dev/null differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idbotanist.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idbotanist.png new file mode 100644 index 0000000000..effef4daf3 Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/idbotanist.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idcaptain.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idcaptain.png index 73f0d871bc..e59e7c3d04 100644 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idcaptain.png and b/Resources/Textures/Objects/Misc/id_cards.rsi/idcaptain.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idcaptain_icon.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idcaptain_icon.png deleted file mode 100644 index 9410b08ecb..0000000000 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idcaptain_icon.png and /dev/null differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idcargotechnician.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idcargotechnician.png index f97f5d7e9d..cfa0a35dcc 100644 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idcargotechnician.png and b/Resources/Textures/Objects/Misc/id_cards.rsi/idcargotechnician.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idcargotechnician_icon.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idcargotechnician_icon.png deleted file mode 100644 index cf786cae71..0000000000 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idcargotechnician_icon.png and /dev/null differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idcentcom.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idcentcom.png index 25b7017a70..c0ee96e365 100644 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idcentcom.png and b/Resources/Textures/Objects/Misc/id_cards.rsi/idcentcom.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idcentcom_icon.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idcentcom_icon.png deleted file mode 100644 index b0d93bb128..0000000000 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idcentcom_icon.png and /dev/null differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idchaplain.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idchaplain.png new file mode 100644 index 0000000000..e10e3c82a6 Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/idchaplain.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idchemist.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idchemist.png new file mode 100644 index 0000000000..2dba29c206 Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/idchemist.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idchiefengineer.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idchiefengineer.png index 3595cbf4aa..259d125daf 100644 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idchiefengineer.png and b/Resources/Textures/Objects/Misc/id_cards.rsi/idchiefengineer.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idchiefengineer_icon.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idchiefengineer_icon.png deleted file mode 100644 index 6187d0af61..0000000000 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idchiefengineer_icon.png and /dev/null differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idchiefmedicalofficer.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idchiefmedicalofficer.png index 82a608a9a1..70cc3c0abb 100644 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idchiefmedicalofficer.png and b/Resources/Textures/Objects/Misc/id_cards.rsi/idchiefmedicalofficer.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idchiefmedicalofficer_icon.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idchiefmedicalofficer_icon.png deleted file mode 100644 index 53bc0bbdef..0000000000 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idchiefmedicalofficer_icon.png and /dev/null differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idclown.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idclown.png index 33a9f40eb4..e037202044 100644 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idclown.png and b/Resources/Textures/Objects/Misc/id_cards.rsi/idclown.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idclown_icon.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idclown_icon.png deleted file mode 100644 index 9578881011..0000000000 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idclown_icon.png and /dev/null differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idcook.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idcook.png index 4dbab6d125..4a98a9b57a 100644 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idcook.png and b/Resources/Textures/Objects/Misc/id_cards.rsi/idcook.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idcook_icon.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idcook_icon.png deleted file mode 100644 index d42abaab81..0000000000 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idcook_icon.png and /dev/null differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idcurator.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idcurator.png new file mode 100644 index 0000000000..cd01dc7770 Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/idcurator.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/iddetective.png b/Resources/Textures/Objects/Misc/id_cards.rsi/iddetective.png new file mode 100644 index 0000000000..4707ff4826 Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/iddetective.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idgeneticist.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idgeneticist.png new file mode 100644 index 0000000000..56d8e50c90 Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/idgeneticist.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idheadofpersonnel.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idheadofpersonnel.png index 929fc47494..be72e37e57 100644 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idheadofpersonnel.png and b/Resources/Textures/Objects/Misc/id_cards.rsi/idheadofpersonnel.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idheadofpersonnel_icon.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idheadofpersonnel_icon.png deleted file mode 100644 index 50910a8422..0000000000 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idheadofpersonnel_icon.png and /dev/null differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idheadofsecurity.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idheadofsecurity.png index 2a15b2baa9..bb03adc665 100644 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idheadofsecurity.png and b/Resources/Textures/Objects/Misc/id_cards.rsi/idheadofsecurity.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idheadofsecurity_icon.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idheadofsecurity_icon.png deleted file mode 100644 index b6abed66a3..0000000000 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idheadofsecurity_icon.png and /dev/null differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idjanitor.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idjanitor.png index 72b63d920e..320c3885e7 100644 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idjanitor.png and b/Resources/Textures/Objects/Misc/id_cards.rsi/idjanitor.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idjanitor_icon.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idjanitor_icon.png deleted file mode 100644 index 11a6cb8179..0000000000 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idjanitor_icon.png and /dev/null differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idlawyer.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idlawyer.png new file mode 100644 index 0000000000..b86f437aee Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/idlawyer.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idmedicaldoctor.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idmedicaldoctor.png index 72a1d36b66..3e716b0195 100644 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idmedicaldoctor.png and b/Resources/Textures/Objects/Misc/id_cards.rsi/idmedicaldoctor.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idmedicaldoctor_icon.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idmedicaldoctor_icon.png deleted file mode 100644 index 58774fec33..0000000000 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idmedicaldoctor_icon.png and /dev/null differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idmime.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idmime.png index 5f2c9cec76..b917612dae 100644 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idmime.png and b/Resources/Textures/Objects/Misc/id_cards.rsi/idmime.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idmime_icon.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idmime_icon.png deleted file mode 100644 index 3eb8ce03d4..0000000000 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idmime_icon.png and /dev/null differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idparamedic.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idparamedic.png new file mode 100644 index 0000000000..2a1fe45f39 Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/idparamedic.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idprisoner.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idprisoner.png new file mode 100644 index 0000000000..f9337a37c5 Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/idprisoner.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idquartermaster.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idquartermaster.png new file mode 100644 index 0000000000..d65c0cbda7 Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/idquartermaster.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idresearchdirector.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idresearchdirector.png index 46abf0dc6f..13f4957204 100644 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idresearchdirector.png and b/Resources/Textures/Objects/Misc/id_cards.rsi/idresearchdirector.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idresearchdirector_icon.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idresearchdirector_icon.png deleted file mode 100644 index 083e7b7762..0000000000 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idresearchdirector_icon.png and /dev/null differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idroboticist.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idroboticist.png new file mode 100644 index 0000000000..4571a5e345 Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/idroboticist.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idscientist.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idscientist.png index b99f716ef1..7322d0b8bc 100644 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idscientist.png and b/Resources/Textures/Objects/Misc/id_cards.rsi/idscientist.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idscientist_icon.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idscientist_icon.png deleted file mode 100644 index c6e8c39113..0000000000 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idscientist_icon.png and /dev/null differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idsecurityofficer.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idsecurityofficer.png index 72e192ff42..f0e1562168 100644 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idsecurityofficer.png and b/Resources/Textures/Objects/Misc/id_cards.rsi/idsecurityofficer.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idsecurityofficer_icon.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idsecurityofficer_icon.png deleted file mode 100644 index a9d669f53a..0000000000 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idsecurityofficer_icon.png and /dev/null differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idshaftminer.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idshaftminer.png new file mode 100644 index 0000000000..c232dd439d Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/idshaftminer.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idstationengineer.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idstationengineer.png index a729081ca2..2e046fbacd 100644 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idstationengineer.png and b/Resources/Textures/Objects/Misc/id_cards.rsi/idstationengineer.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idstationengineer_icon.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idstationengineer_icon.png deleted file mode 100644 index bb9177eba8..0000000000 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/idstationengineer_icon.png and /dev/null differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idunknown.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idunknown.png new file mode 100644 index 0000000000..bc792fe1a1 Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/idunknown.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idvirologist.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idvirologist.png new file mode 100644 index 0000000000..bbcf4456f0 Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/idvirologist.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idwarden.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idwarden.png new file mode 100644 index 0000000000..f2c207fa17 Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/idwarden.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/meta.json b/Resources/Textures/Objects/Misc/id_cards.rsi/meta.json index 860f04eb6e..d0f801dde0 100644 --- a/Resources/Textures/Objects/Misc/id_cards.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/id_cards.rsi/meta.json @@ -1,495 +1,603 @@ { - "version": 1, - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "assigned", - "directions": 1, - "delays": [ - [ - 1 - ] - ] + "version": 1, + "size": { + "x": 32, + "y": 32 }, - { - "name": "gold", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "default", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idassistant", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idcaptain", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idcargotechnician", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idcentcom", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idchiefengineer", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idchiefmedicalofficer", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idclown", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idheadofpersonnel", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idheadofsecurity", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idjanitor", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idmedicaldoctor", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idresearchdirector", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idscientist", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idsecurityofficer", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idcargotechnician", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idstationengineer", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idmime", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idassistant_icon", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idcaptain_icon", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idcargotechnician_icon", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idcentcom_icon", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idchiefengineer_icon", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idchiefmedicalofficer_icon", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idclown_icon", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idheadofpersonnel_icon", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idheadofsecurity_icon", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idjanitor_icon", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idmedicaldoctor_icon", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idresearchdirector_icon", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idscientist_icon", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idsecurityofficer_icon", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idcargotechnician_icon", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idstationengineer_icon", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idmime_icon", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "silver", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "default-inhand-left", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] - }, - { - "name": "gold-inhand-left", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] - }, - { - "name": "silver-inhand-left", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] - }, - { - "name": "default-inhand-right", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] - }, - { - "name": "gold-inhand-right", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] - }, - { - "name": "silver-inhand-right", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] - }, - { - "name": "idbartender", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idcook", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idbartender_icon", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - }, - { - "name": "idcook_icon", - "directions": 1, - "delays": [ - [ - 1 - ] - ] - } - ] -} + "states": [ + { + "name": "assigned", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "centcom", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "default", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "default-inhand-left", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "default-inhand-right", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "ert_chaplain", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "ert_commander", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "ert_engineer", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "ert_janitor", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "ert_medic", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "ert_security", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "gold", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "gold-inhand-left", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "gold-inhand-right", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "idassistant", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idatmospherictechnician", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idbartender", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idbotanist", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idcaptain", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idcargotechnician", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idcentcom", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idchaplain", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idchemist", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idchiefengineer", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idchiefmedicalofficer", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idclown", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idcook", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idcurator", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "iddetective", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idgeneticist", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idheadofpersonnel", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idheadofsecurity", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idjanitor", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idlawyer", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idmedicaldoctor", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idmime", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idparamedic", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idprisoner", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idquartermaster", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idresearchdirector", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idroboticist", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idscientist", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idsecurityofficer", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idshaftminer", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idstationengineer", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idunknown", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idvirologist", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "idwarden", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "orange", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "prisoner_001", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "prisoner_002", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "prisoner_003", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "prisoner_004", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "prisoner_005", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "prisoner_006", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "prisoner_007", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "silver", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "silver-inhand-left", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "silver-inhand-right", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "syndie", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/orange.png b/Resources/Textures/Objects/Misc/id_cards.rsi/orange.png new file mode 100644 index 0000000000..432f16af2c Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/orange.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/prisoner_001.png b/Resources/Textures/Objects/Misc/id_cards.rsi/prisoner_001.png new file mode 100644 index 0000000000..3cfc5596d5 Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/prisoner_001.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/prisoner_002.png b/Resources/Textures/Objects/Misc/id_cards.rsi/prisoner_002.png new file mode 100644 index 0000000000..95e07a47d7 Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/prisoner_002.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/prisoner_003.png b/Resources/Textures/Objects/Misc/id_cards.rsi/prisoner_003.png new file mode 100644 index 0000000000..590a7fb487 Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/prisoner_003.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/prisoner_004.png b/Resources/Textures/Objects/Misc/id_cards.rsi/prisoner_004.png new file mode 100644 index 0000000000..7f2d2f4173 Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/prisoner_004.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/prisoner_005.png b/Resources/Textures/Objects/Misc/id_cards.rsi/prisoner_005.png new file mode 100644 index 0000000000..afede7b7b0 Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/prisoner_005.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/prisoner_006.png b/Resources/Textures/Objects/Misc/id_cards.rsi/prisoner_006.png new file mode 100644 index 0000000000..1791dff0b4 Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/prisoner_006.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/prisoner_007.png b/Resources/Textures/Objects/Misc/id_cards.rsi/prisoner_007.png new file mode 100644 index 0000000000..877f17d40c Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/prisoner_007.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/silver.png b/Resources/Textures/Objects/Misc/id_cards.rsi/silver.png index bebf6a9296..90e6343b8e 100644 Binary files a/Resources/Textures/Objects/Misc/id_cards.rsi/silver.png and b/Resources/Textures/Objects/Misc/id_cards.rsi/silver.png differ diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/syndie.png b/Resources/Textures/Objects/Misc/id_cards.rsi/syndie.png new file mode 100644 index 0000000000..96e9f1cae2 Binary files /dev/null and b/Resources/Textures/Objects/Misc/id_cards.rsi/syndie.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/potato_battery.rsi/meta.json b/Resources/Textures/Objects/Power/PowerCells/potato_battery.rsi/meta.json new file mode 100644 index 0000000000..273a0a949b --- /dev/null +++ b/Resources/Textures/Objects/Power/PowerCells/potato_battery.rsi/meta.json @@ -0,0 +1,20 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/tgstation/tgstation/commit/7dcdbc1468ffdc8689b984cb6b181d48ae41dbf2", + "states": [ + { + "name": "potato_battery", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + } + ] +} diff --git a/Resources/Textures/Objects/Power/PowerCells/potato_battery.rsi/potato_battery.png b/Resources/Textures/Objects/Power/PowerCells/potato_battery.rsi/potato_battery.png new file mode 100644 index 0000000000..5b0f7a5fe0 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/potato_battery.rsi/potato_battery.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hi.rsi/l_hi.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hi.rsi/l_hi.png new file mode 100644 index 0000000000..24319ba7b6 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hi.rsi/l_hi.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hi.rsi/l_hi_0.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hi.rsi/l_hi_0.png new file mode 100644 index 0000000000..7f189021e5 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hi.rsi/l_hi_0.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hi.rsi/l_hi_100.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hi.rsi/l_hi_100.png new file mode 100644 index 0000000000..7500ff37b6 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hi.rsi/l_hi_100.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hi.rsi/l_hi_25.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hi.rsi/l_hi_25.png new file mode 100644 index 0000000000..9ec9c4a60f Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hi.rsi/l_hi_25.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hi.rsi/l_hi_50.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hi.rsi/l_hi_50.png new file mode 100644 index 0000000000..e78b3016f9 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hi.rsi/l_hi_50.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hi.rsi/l_hi_75.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hi.rsi/l_hi_75.png new file mode 100644 index 0000000000..0e1badd891 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hi.rsi/l_hi_75.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hi.rsi/meta.json b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hi.rsi/meta.json new file mode 100644 index 0000000000..42532664e4 --- /dev/null +++ b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hi.rsi/meta.json @@ -0,0 +1,66 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/", + "states": [ + { + "name": "l_hi", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "l_hi_0", + "directions": 1, + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "l_hi_100", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "l_hi_25", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "l_hi_50", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "l_hi_75", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + } + ] +} diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hy.rsi/l_hy.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hy.rsi/l_hy.png new file mode 100644 index 0000000000..4f6aaee081 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hy.rsi/l_hy.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hy.rsi/l_hy_0.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hy.rsi/l_hy_0.png new file mode 100644 index 0000000000..7969203665 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hy.rsi/l_hy_0.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hy.rsi/l_hy_100.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hy.rsi/l_hy_100.png new file mode 100644 index 0000000000..97c6df65ae Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hy.rsi/l_hy_100.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hy.rsi/l_hy_25.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hy.rsi/l_hy_25.png new file mode 100644 index 0000000000..b4d7074179 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hy.rsi/l_hy_25.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hy.rsi/l_hy_50.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hy.rsi/l_hy_50.png new file mode 100644 index 0000000000..fb1540d6b3 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hy.rsi/l_hy_50.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hy.rsi/l_hy_75.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hy.rsi/l_hy_75.png new file mode 100644 index 0000000000..7de1faebd2 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hy.rsi/l_hy_75.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hy.rsi/meta.json b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hy.rsi/meta.json new file mode 100644 index 0000000000..f81f46f26b --- /dev/null +++ b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_hy.rsi/meta.json @@ -0,0 +1,66 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/", + "states": [ + { + "name": "l_hy", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "l_hy_0", + "directions": 1, + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "l_hy_100", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "l_hy_25", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "l_hy_50", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "l_hy_75", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + } + ] +} diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_st.rsi/l_st.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_st.rsi/l_st.png new file mode 100644 index 0000000000..bbe727eea7 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_st.rsi/l_st.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_st.rsi/l_st_0.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_st.rsi/l_st_0.png new file mode 100644 index 0000000000..e87e324901 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_st.rsi/l_st_0.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_st.rsi/l_st_100.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_st.rsi/l_st_100.png new file mode 100644 index 0000000000..d5f070f7c4 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_st.rsi/l_st_100.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_st.rsi/l_st_25.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_st.rsi/l_st_25.png new file mode 100644 index 0000000000..a15d4eac39 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_st.rsi/l_st_25.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_st.rsi/l_st_50.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_st.rsi/l_st_50.png new file mode 100644 index 0000000000..a10e8e9126 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_st.rsi/l_st_50.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_st.rsi/l_st_75.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_st.rsi/l_st_75.png new file mode 100644 index 0000000000..5d62807d25 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_st.rsi/l_st_75.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_st.rsi/meta.json b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_st.rsi/meta.json new file mode 100644 index 0000000000..f70ce1df73 --- /dev/null +++ b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_st.rsi/meta.json @@ -0,0 +1,66 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/", + "states": [ + { + "name": "l_st", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "l_st_0", + "directions": 1, + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "l_st_100", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "l_st_25", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "l_st_50", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "l_st_75", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_sup.rsi/l_sup.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_sup.rsi/l_sup.png new file mode 100644 index 0000000000..b19282034e Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_sup.rsi/l_sup.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_sup.rsi/l_sup_0.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_sup.rsi/l_sup_0.png new file mode 100644 index 0000000000..099a6cb151 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_sup.rsi/l_sup_0.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_sup.rsi/l_sup_100.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_sup.rsi/l_sup_100.png new file mode 100644 index 0000000000..f21fd15b25 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_sup.rsi/l_sup_100.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_sup.rsi/l_sup_25.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_sup.rsi/l_sup_25.png new file mode 100644 index 0000000000..d6180813b4 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_sup.rsi/l_sup_25.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_sup.rsi/l_sup_50.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_sup.rsi/l_sup_50.png new file mode 100644 index 0000000000..93a0899293 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_sup.rsi/l_sup_50.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_sup.rsi/l_sup_75.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_sup.rsi/l_sup_75.png new file mode 100644 index 0000000000..25191ae890 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_sup.rsi/l_sup_75.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_large_sup.rsi/meta.json b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_sup.rsi/meta.json new file mode 100644 index 0000000000..e61dbb4cb9 --- /dev/null +++ b/Resources/Textures/Objects/Power/PowerCells/power_cell_large_sup.rsi/meta.json @@ -0,0 +1,66 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/", + "states": [ + { + "name": "l_sup", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "l_sup_0", + "directions": 1, + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "l_sup_100", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "l_sup_25", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "l_sup_50", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "l_sup_75", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hi.rsi/m_hi.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hi.rsi/m_hi.png new file mode 100644 index 0000000000..45f00d2a64 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hi.rsi/m_hi.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hi.rsi/m_hi_0.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hi.rsi/m_hi_0.png new file mode 100644 index 0000000000..023a923808 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hi.rsi/m_hi_0.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hi.rsi/m_hi_100.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hi.rsi/m_hi_100.png new file mode 100644 index 0000000000..5f73abd4f0 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hi.rsi/m_hi_100.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hi.rsi/m_hi_25.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hi.rsi/m_hi_25.png new file mode 100644 index 0000000000..bccefded5d Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hi.rsi/m_hi_25.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hi.rsi/m_hi_50.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hi.rsi/m_hi_50.png new file mode 100644 index 0000000000..6069362b2b Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hi.rsi/m_hi_50.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hi.rsi/m_hi_75.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hi.rsi/m_hi_75.png new file mode 100644 index 0000000000..1b59115d33 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hi.rsi/m_hi_75.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hi.rsi/meta.json b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hi.rsi/meta.json new file mode 100644 index 0000000000..65521cece4 --- /dev/null +++ b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hi.rsi/meta.json @@ -0,0 +1,66 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/", + "states": [ + { + "name": "m_hi", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "m_hi_0", + "directions": 1, + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "m_hi_100", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "m_hi_25", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "m_hi_50", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "m_hi_75", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hy.rsi/m_hy.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hy.rsi/m_hy.png new file mode 100644 index 0000000000..99b9d25e87 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hy.rsi/m_hy.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hy.rsi/m_hy_0.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hy.rsi/m_hy_0.png new file mode 100644 index 0000000000..e87acc3dcd Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hy.rsi/m_hy_0.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hy.rsi/m_hy_100.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hy.rsi/m_hy_100.png new file mode 100644 index 0000000000..18c2cdbf0f Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hy.rsi/m_hy_100.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hy.rsi/m_hy_25.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hy.rsi/m_hy_25.png new file mode 100644 index 0000000000..fbf162abc2 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hy.rsi/m_hy_25.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hy.rsi/m_hy_50.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hy.rsi/m_hy_50.png new file mode 100644 index 0000000000..3ec152d2e4 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hy.rsi/m_hy_50.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hy.rsi/m_hy_75.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hy.rsi/m_hy_75.png new file mode 100644 index 0000000000..aec9b65dca Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hy.rsi/m_hy_75.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hy.rsi/meta.json b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hy.rsi/meta.json new file mode 100644 index 0000000000..9c2c5af5e3 --- /dev/null +++ b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_hy.rsi/meta.json @@ -0,0 +1,66 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/", + "states": [ + { + "name": "m_hy", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "m_hy_0", + "directions": 1, + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "m_hy_100", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "m_hy_25", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "m_hy_50", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "m_hy_75", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_st.rsi/m_st.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_st.rsi/m_st.png new file mode 100644 index 0000000000..fa74c07965 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_st.rsi/m_st.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_st.rsi/m_st_0.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_st.rsi/m_st_0.png new file mode 100644 index 0000000000..d9df7bb487 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_st.rsi/m_st_0.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_st.rsi/m_st_100.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_st.rsi/m_st_100.png new file mode 100644 index 0000000000..b00811e0c0 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_st.rsi/m_st_100.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_st.rsi/m_st_25.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_st.rsi/m_st_25.png new file mode 100644 index 0000000000..797a8f8189 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_st.rsi/m_st_25.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_st.rsi/m_st_50.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_st.rsi/m_st_50.png new file mode 100644 index 0000000000..5756932076 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_st.rsi/m_st_50.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_st.rsi/m_st_75.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_st.rsi/m_st_75.png new file mode 100644 index 0000000000..0ac081dcaf Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_st.rsi/m_st_75.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_st.rsi/meta.json b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_st.rsi/meta.json new file mode 100644 index 0000000000..3ada43a2e9 --- /dev/null +++ b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_st.rsi/meta.json @@ -0,0 +1,66 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/", + "states": [ + { + "name": "m_st", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "m_st_0", + "directions": 1, + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "m_st_100", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "m_st_25", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "m_st_50", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "m_st_75", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_sup.rsi/m_sup.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_sup.rsi/m_sup.png new file mode 100644 index 0000000000..a966f9ad4a Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_sup.rsi/m_sup.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_sup.rsi/m_sup_0.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_sup.rsi/m_sup_0.png new file mode 100644 index 0000000000..43a174574c Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_sup.rsi/m_sup_0.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_sup.rsi/m_sup_100.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_sup.rsi/m_sup_100.png new file mode 100644 index 0000000000..3d38694cb6 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_sup.rsi/m_sup_100.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_sup.rsi/m_sup_25.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_sup.rsi/m_sup_25.png new file mode 100644 index 0000000000..e6172f39a7 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_sup.rsi/m_sup_25.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_sup.rsi/m_sup_50.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_sup.rsi/m_sup_50.png new file mode 100644 index 0000000000..56b6bef020 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_sup.rsi/m_sup_50.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_sup.rsi/m_sup_75.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_sup.rsi/m_sup_75.png new file mode 100644 index 0000000000..1f90ad41d9 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_sup.rsi/m_sup_75.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_sup.rsi/meta.json b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_sup.rsi/meta.json new file mode 100644 index 0000000000..ba4e9c2c2a --- /dev/null +++ b/Resources/Textures/Objects/Power/PowerCells/power_cell_medium_sup.rsi/meta.json @@ -0,0 +1,66 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/", + "states": [ + { + "name": "m_sup", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "m_sup_0", + "directions": 1, + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "m_sup_100", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "m_sup_25", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "m_sup_50", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "m_sup_75", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_small_autorecharge.rsi/meta.json b/Resources/Textures/Objects/Power/PowerCells/power_cell_small_autorecharge.rsi/meta.json new file mode 100644 index 0000000000..711a1300f4 --- /dev/null +++ b/Resources/Textures/Objects/Power/PowerCells/power_cell_small_autorecharge.rsi/meta.json @@ -0,0 +1,66 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/discordia-space/CEV-Eris/blob/master/icons/obj/power_cells.dmi", + "states": [ + { + "name": "s_ar", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "s_ar_0", + "directions": 1, + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "s_ar_100", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "s_ar_25", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "s_ar_50", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "s_ar_75", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_small_autorecharge.rsi/s_ar.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_small_autorecharge.rsi/s_ar.png new file mode 100644 index 0000000000..fec988a177 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_small_autorecharge.rsi/s_ar.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_small_autorecharge.rsi/s_ar_0.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_small_autorecharge.rsi/s_ar_0.png new file mode 100644 index 0000000000..d619413512 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_small_autorecharge.rsi/s_ar_0.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_small_autorecharge.rsi/s_ar_100.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_small_autorecharge.rsi/s_ar_100.png new file mode 100644 index 0000000000..179172cf96 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_small_autorecharge.rsi/s_ar_100.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_small_autorecharge.rsi/s_ar_25.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_small_autorecharge.rsi/s_ar_25.png new file mode 100644 index 0000000000..49e5340fbb Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_small_autorecharge.rsi/s_ar_25.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_small_autorecharge.rsi/s_ar_50.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_small_autorecharge.rsi/s_ar_50.png new file mode 100644 index 0000000000..4d1042d449 Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_small_autorecharge.rsi/s_ar_50.png differ diff --git a/Resources/Textures/Objects/Power/PowerCells/power_cell_small_autorecharge.rsi/s_ar_75.png b/Resources/Textures/Objects/Power/PowerCells/power_cell_small_autorecharge.rsi/s_ar_75.png new file mode 100644 index 0000000000..dee613303f Binary files /dev/null and b/Resources/Textures/Objects/Power/PowerCells/power_cell_small_autorecharge.rsi/s_ar_75.png differ diff --git a/Resources/Textures/Objects/Specific/Morgue/bodybags.rsi/bag.png b/Resources/Textures/Objects/Specific/Morgue/bodybags.rsi/bag.png new file mode 100644 index 0000000000..d7b0baefd0 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Morgue/bodybags.rsi/bag.png differ diff --git a/Resources/Textures/Objects/Specific/Morgue/bodybags.rsi/item.png b/Resources/Textures/Objects/Specific/Morgue/bodybags.rsi/item.png new file mode 100644 index 0000000000..99ac0ce453 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Morgue/bodybags.rsi/item.png differ diff --git a/Resources/Textures/Objects/Specific/Morgue/bodybags.rsi/label_overlay.png b/Resources/Textures/Objects/Specific/Morgue/bodybags.rsi/label_overlay.png new file mode 100644 index 0000000000..b0c5a78d23 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Morgue/bodybags.rsi/label_overlay.png differ diff --git a/Resources/Textures/Objects/Specific/Morgue/bodybags.rsi/meta.json b/Resources/Textures/Objects/Specific/Morgue/bodybags.rsi/meta.json new file mode 100644 index 0000000000..9eaad9e7d7 --- /dev/null +++ b/Resources/Textures/Objects/Specific/Morgue/bodybags.rsi/meta.json @@ -0,0 +1,47 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC BY-SA 3.0", + "copyright": "Taken from https://github.com/tgstation/tgstation at commit 39659000f380583c35fb814ee2fadab24c2f8076", + "states": [ + { + "name": "bag", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "item", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "label_overlay", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "open_overlay", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Morgue/bodybags.rsi/open_overlay.png b/Resources/Textures/Objects/Specific/Morgue/bodybags.rsi/open_overlay.png new file mode 100644 index 0000000000..48e9bbc6c2 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Morgue/bodybags.rsi/open_overlay.png differ diff --git a/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/crema_active_light.png b/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/crema_active_light.png new file mode 100644 index 0000000000..8846f209cb Binary files /dev/null and b/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/crema_active_light.png differ diff --git a/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/crema_closed.png b/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/crema_closed.png new file mode 100644 index 0000000000..540b15234b Binary files /dev/null and b/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/crema_closed.png differ diff --git a/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/crema_contents_light.png b/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/crema_contents_light.png new file mode 100644 index 0000000000..5626219773 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/crema_contents_light.png differ diff --git a/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/crema_open.png b/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/crema_open.png new file mode 100644 index 0000000000..32730eedcb Binary files /dev/null and b/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/crema_open.png differ diff --git a/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/crema_tray.png b/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/crema_tray.png new file mode 100644 index 0000000000..57f9c47271 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/crema_tray.png differ diff --git a/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/meta.json b/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/meta.json new file mode 100644 index 0000000000..c6b02159b8 --- /dev/null +++ b/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/meta.json @@ -0,0 +1,209 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/tgstation/tgstation at commit 31d88c7454e429a64fbae4a9f7b4aecaf838e9a1", + "states": [ + { + "name": "crema_active_light", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "crema_closed", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "crema_contents_light", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "crema_open", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "crema_tray", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "morgue_closed", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "morgue_nomob_light", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "morgue_nosoul_light", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "morgue_open", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "morgue_soul_light", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "morgue_tray", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/morgue_closed.png b/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/morgue_closed.png new file mode 100644 index 0000000000..d71250933d Binary files /dev/null and b/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/morgue_closed.png differ diff --git a/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/morgue_nomob_light.png b/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/morgue_nomob_light.png new file mode 100644 index 0000000000..88a4126b92 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/morgue_nomob_light.png differ diff --git a/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/morgue_nosoul_light.png b/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/morgue_nosoul_light.png new file mode 100644 index 0000000000..abdd7d8ccb Binary files /dev/null and b/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/morgue_nosoul_light.png differ diff --git a/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/morgue_open.png b/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/morgue_open.png new file mode 100644 index 0000000000..15ca16ae64 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/morgue_open.png differ diff --git a/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/morgue_soul_light.png b/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/morgue_soul_light.png new file mode 100644 index 0000000000..62f5e1c678 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/morgue_soul_light.png differ diff --git a/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/morgue_tray.png b/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/morgue_tray.png new file mode 100644 index 0000000000..d9edb8b218 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Morgue/morgue.rsi/morgue_tray.png differ diff --git a/Resources/Textures/Objects/Tanks/anesthetic.rsi/equipped-BACKPACK.png b/Resources/Textures/Objects/Tanks/anesthetic.rsi/equipped-BACKPACK.png new file mode 100644 index 0000000000..57675fec22 Binary files /dev/null and b/Resources/Textures/Objects/Tanks/anesthetic.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/Objects/Tanks/anesthetic.rsi/icon.png b/Resources/Textures/Objects/Tanks/anesthetic.rsi/icon.png new file mode 100644 index 0000000000..027abc289f Binary files /dev/null and b/Resources/Textures/Objects/Tanks/anesthetic.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Tanks/anesthetic.rsi/inhand-left.png b/Resources/Textures/Objects/Tanks/anesthetic.rsi/inhand-left.png new file mode 100644 index 0000000000..628e74edbd Binary files /dev/null and b/Resources/Textures/Objects/Tanks/anesthetic.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Tanks/anesthetic.rsi/inhand-right.png b/Resources/Textures/Objects/Tanks/anesthetic.rsi/inhand-right.png new file mode 100644 index 0000000000..f6e2438c9a Binary files /dev/null and b/Resources/Textures/Objects/Tanks/anesthetic.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Tanks/anesthetic.rsi/meta.json b/Resources/Textures/Objects/Tanks/anesthetic.rsi/meta.json new file mode 100644 index 0000000000..5fdc78ab33 --- /dev/null +++ b/Resources/Textures/Objects/Tanks/anesthetic.rsi/meta.json @@ -0,0 +1,27 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/tgstation/tgstation at commit e1142f20f5e4661cb6845cfcf2dd69f864d67432", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon", + "directions": 1 + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Tanks/emergency.rsi/icon.png b/Resources/Textures/Objects/Tanks/emergency.rsi/icon.png new file mode 100644 index 0000000000..a1f124628b Binary files /dev/null and b/Resources/Textures/Objects/Tanks/emergency.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Tanks/emergency.rsi/inhand-left.png b/Resources/Textures/Objects/Tanks/emergency.rsi/inhand-left.png new file mode 100644 index 0000000000..4cb29ce56c Binary files /dev/null and b/Resources/Textures/Objects/Tanks/emergency.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Tanks/emergency.rsi/inhand-right.png b/Resources/Textures/Objects/Tanks/emergency.rsi/inhand-right.png new file mode 100644 index 0000000000..6703263be1 Binary files /dev/null and b/Resources/Textures/Objects/Tanks/emergency.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Tanks/emergency.rsi/meta.json b/Resources/Textures/Objects/Tanks/emergency.rsi/meta.json new file mode 100644 index 0000000000..5123c111a0 --- /dev/null +++ b/Resources/Textures/Objects/Tanks/emergency.rsi/meta.json @@ -0,0 +1,38 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/tgstation/tgstation at commit e1142f20f5e4661cb6845cfcf2dd69f864d67432", + "states": [ + { + "name": "icon", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "inhand-left", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "inhand-right", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Tanks/emergency_double.rsi/icon.png b/Resources/Textures/Objects/Tanks/emergency_double.rsi/icon.png new file mode 100644 index 0000000000..78f1677a2b Binary files /dev/null and b/Resources/Textures/Objects/Tanks/emergency_double.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Tanks/emergency_double.rsi/inhand-left.png b/Resources/Textures/Objects/Tanks/emergency_double.rsi/inhand-left.png new file mode 100644 index 0000000000..55ff15618f Binary files /dev/null and b/Resources/Textures/Objects/Tanks/emergency_double.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Tanks/emergency_double.rsi/inhand-right.png b/Resources/Textures/Objects/Tanks/emergency_double.rsi/inhand-right.png new file mode 100644 index 0000000000..e72d222b94 Binary files /dev/null and b/Resources/Textures/Objects/Tanks/emergency_double.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Tanks/emergency_double.rsi/meta.json b/Resources/Textures/Objects/Tanks/emergency_double.rsi/meta.json new file mode 100644 index 0000000000..5123c111a0 --- /dev/null +++ b/Resources/Textures/Objects/Tanks/emergency_double.rsi/meta.json @@ -0,0 +1,38 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/tgstation/tgstation at commit e1142f20f5e4661cb6845cfcf2dd69f864d67432", + "states": [ + { + "name": "icon", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "inhand-left", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "inhand-right", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Tanks/emergency_yellow.rsi/icon.png b/Resources/Textures/Objects/Tanks/emergency_yellow.rsi/icon.png new file mode 100644 index 0000000000..ab8bebedb6 Binary files /dev/null and b/Resources/Textures/Objects/Tanks/emergency_yellow.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Tanks/emergency_yellow.rsi/inhand-left.png b/Resources/Textures/Objects/Tanks/emergency_yellow.rsi/inhand-left.png new file mode 100644 index 0000000000..55ff15618f Binary files /dev/null and b/Resources/Textures/Objects/Tanks/emergency_yellow.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Tanks/emergency_yellow.rsi/inhand-right.png b/Resources/Textures/Objects/Tanks/emergency_yellow.rsi/inhand-right.png new file mode 100644 index 0000000000..e72d222b94 Binary files /dev/null and b/Resources/Textures/Objects/Tanks/emergency_yellow.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Tanks/emergency_yellow.rsi/meta.json b/Resources/Textures/Objects/Tanks/emergency_yellow.rsi/meta.json new file mode 100644 index 0000000000..5123c111a0 --- /dev/null +++ b/Resources/Textures/Objects/Tanks/emergency_yellow.rsi/meta.json @@ -0,0 +1,38 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/tgstation/tgstation at commit e1142f20f5e4661cb6845cfcf2dd69f864d67432", + "states": [ + { + "name": "icon", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "inhand-left", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "inhand-right", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Tanks/generic.rsi/equipped-BACKPACK.png b/Resources/Textures/Objects/Tanks/generic.rsi/equipped-BACKPACK.png new file mode 100644 index 0000000000..332f1d08f3 Binary files /dev/null and b/Resources/Textures/Objects/Tanks/generic.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/Objects/Tanks/generic.rsi/icon.png b/Resources/Textures/Objects/Tanks/generic.rsi/icon.png new file mode 100644 index 0000000000..0202db50aa Binary files /dev/null and b/Resources/Textures/Objects/Tanks/generic.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Tanks/generic.rsi/inhand-left.png b/Resources/Textures/Objects/Tanks/generic.rsi/inhand-left.png new file mode 100644 index 0000000000..c590366755 Binary files /dev/null and b/Resources/Textures/Objects/Tanks/generic.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Tanks/generic.rsi/inhand-right.png b/Resources/Textures/Objects/Tanks/generic.rsi/inhand-right.png new file mode 100644 index 0000000000..e8680785b6 Binary files /dev/null and b/Resources/Textures/Objects/Tanks/generic.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Tanks/generic.rsi/meta.json b/Resources/Textures/Objects/Tanks/generic.rsi/meta.json new file mode 100644 index 0000000000..19e8d88681 --- /dev/null +++ b/Resources/Textures/Objects/Tanks/generic.rsi/meta.json @@ -0,0 +1,27 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/e1142f20f5e4661cb6845cfcf2dd69f864d67432", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon", + "directions": 1 + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Tanks/oxygen.rsi/equipped-BACKPACK.png b/Resources/Textures/Objects/Tanks/oxygen.rsi/equipped-BACKPACK.png new file mode 100644 index 0000000000..d890d08c1a Binary files /dev/null and b/Resources/Textures/Objects/Tanks/oxygen.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/Objects/Tanks/oxygen.rsi/icon.png b/Resources/Textures/Objects/Tanks/oxygen.rsi/icon.png new file mode 100644 index 0000000000..95c148e604 Binary files /dev/null and b/Resources/Textures/Objects/Tanks/oxygen.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Tanks/oxygen.rsi/inhand-left.png b/Resources/Textures/Objects/Tanks/oxygen.rsi/inhand-left.png new file mode 100644 index 0000000000..33f244834b Binary files /dev/null and b/Resources/Textures/Objects/Tanks/oxygen.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Tanks/oxygen.rsi/inhand-right.png b/Resources/Textures/Objects/Tanks/oxygen.rsi/inhand-right.png new file mode 100644 index 0000000000..c6368e4f39 Binary files /dev/null and b/Resources/Textures/Objects/Tanks/oxygen.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Tanks/oxygen.rsi/meta.json b/Resources/Textures/Objects/Tanks/oxygen.rsi/meta.json new file mode 100644 index 0000000000..19e8d88681 --- /dev/null +++ b/Resources/Textures/Objects/Tanks/oxygen.rsi/meta.json @@ -0,0 +1,27 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/e1142f20f5e4661cb6845cfcf2dd69f864d67432", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon", + "directions": 1 + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Tanks/phoron.rsi/icon.png b/Resources/Textures/Objects/Tanks/phoron.rsi/icon.png new file mode 100644 index 0000000000..a7fdcf8f67 Binary files /dev/null and b/Resources/Textures/Objects/Tanks/phoron.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Tanks/phoron.rsi/inhand-left.png b/Resources/Textures/Objects/Tanks/phoron.rsi/inhand-left.png new file mode 100644 index 0000000000..a8654c7d9c Binary files /dev/null and b/Resources/Textures/Objects/Tanks/phoron.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Tanks/phoron.rsi/inhand-right.png b/Resources/Textures/Objects/Tanks/phoron.rsi/inhand-right.png new file mode 100644 index 0000000000..7dd141ed66 Binary files /dev/null and b/Resources/Textures/Objects/Tanks/phoron.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Tanks/phoron.rsi/meta.json b/Resources/Textures/Objects/Tanks/phoron.rsi/meta.json new file mode 100644 index 0000000000..5123c111a0 --- /dev/null +++ b/Resources/Textures/Objects/Tanks/phoron.rsi/meta.json @@ -0,0 +1,38 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/tgstation/tgstation at commit e1142f20f5e4661cb6845cfcf2dd69f864d67432", + "states": [ + { + "name": "icon", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "inhand-left", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "inhand-right", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Tanks/plasmaman.rsi/equipped-BACKPACK.png b/Resources/Textures/Objects/Tanks/plasmaman.rsi/equipped-BACKPACK.png new file mode 100644 index 0000000000..2aee6424a8 Binary files /dev/null and b/Resources/Textures/Objects/Tanks/plasmaman.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/Objects/Tanks/plasmaman.rsi/icon.png b/Resources/Textures/Objects/Tanks/plasmaman.rsi/icon.png new file mode 100644 index 0000000000..3ceb604b4c Binary files /dev/null and b/Resources/Textures/Objects/Tanks/plasmaman.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Tanks/plasmaman.rsi/inhand-left.png b/Resources/Textures/Objects/Tanks/plasmaman.rsi/inhand-left.png new file mode 100644 index 0000000000..495c4f398d Binary files /dev/null and b/Resources/Textures/Objects/Tanks/plasmaman.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Tanks/plasmaman.rsi/inhand-right.png b/Resources/Textures/Objects/Tanks/plasmaman.rsi/inhand-right.png new file mode 100644 index 0000000000..f02675bccd Binary files /dev/null and b/Resources/Textures/Objects/Tanks/plasmaman.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Tanks/plasmaman.rsi/meta.json b/Resources/Textures/Objects/Tanks/plasmaman.rsi/meta.json new file mode 100644 index 0000000000..19e8d88681 --- /dev/null +++ b/Resources/Textures/Objects/Tanks/plasmaman.rsi/meta.json @@ -0,0 +1,27 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/e1142f20f5e4661cb6845cfcf2dd69f864d67432", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon", + "directions": 1 + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Tanks/red.rsi/equipped-BACKPACK.png b/Resources/Textures/Objects/Tanks/red.rsi/equipped-BACKPACK.png new file mode 100644 index 0000000000..6c36a11d4d Binary files /dev/null and b/Resources/Textures/Objects/Tanks/red.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/Objects/Tanks/red.rsi/icon.png b/Resources/Textures/Objects/Tanks/red.rsi/icon.png new file mode 100644 index 0000000000..eb8ed16dce Binary files /dev/null and b/Resources/Textures/Objects/Tanks/red.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Tanks/red.rsi/inhand-left.png b/Resources/Textures/Objects/Tanks/red.rsi/inhand-left.png new file mode 100644 index 0000000000..fe2a53b1ba Binary files /dev/null and b/Resources/Textures/Objects/Tanks/red.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Tanks/red.rsi/inhand-right.png b/Resources/Textures/Objects/Tanks/red.rsi/inhand-right.png new file mode 100644 index 0000000000..a81bd42a1a Binary files /dev/null and b/Resources/Textures/Objects/Tanks/red.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Tanks/red.rsi/meta.json b/Resources/Textures/Objects/Tanks/red.rsi/meta.json new file mode 100644 index 0000000000..5fdc78ab33 --- /dev/null +++ b/Resources/Textures/Objects/Tanks/red.rsi/meta.json @@ -0,0 +1,27 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/tgstation/tgstation at commit e1142f20f5e4661cb6845cfcf2dd69f864d67432", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon", + "directions": 1 + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Tanks/yellow.rsi/equipped-BACKPACK.png b/Resources/Textures/Objects/Tanks/yellow.rsi/equipped-BACKPACK.png new file mode 100644 index 0000000000..0ae5d0fe8b Binary files /dev/null and b/Resources/Textures/Objects/Tanks/yellow.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/Objects/Tanks/yellow.rsi/icon.png b/Resources/Textures/Objects/Tanks/yellow.rsi/icon.png new file mode 100644 index 0000000000..e290d453be Binary files /dev/null and b/Resources/Textures/Objects/Tanks/yellow.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Tanks/yellow.rsi/inhand-left.png b/Resources/Textures/Objects/Tanks/yellow.rsi/inhand-left.png new file mode 100644 index 0000000000..d9c79703ca Binary files /dev/null and b/Resources/Textures/Objects/Tanks/yellow.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Tanks/yellow.rsi/inhand-right.png b/Resources/Textures/Objects/Tanks/yellow.rsi/inhand-right.png new file mode 100644 index 0000000000..b79125ee7c Binary files /dev/null and b/Resources/Textures/Objects/Tanks/yellow.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Tanks/yellow.rsi/meta.json b/Resources/Textures/Objects/Tanks/yellow.rsi/meta.json new file mode 100644 index 0000000000..5fdc78ab33 --- /dev/null +++ b/Resources/Textures/Objects/Tanks/yellow.rsi/meta.json @@ -0,0 +1,27 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/tgstation/tgstation at commit e1142f20f5e4661cb6845cfcf2dd69f864d67432", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon", + "directions": 1 + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Tools/flashlight.rsi/Flashlight.png b/Resources/Textures/Objects/Tools/flashlight.rsi/Flashlight.png deleted file mode 100644 index a7b3b4678d..0000000000 Binary files a/Resources/Textures/Objects/Tools/flashlight.rsi/Flashlight.png and /dev/null differ diff --git a/Resources/Textures/Shaders/greyscale.swsl b/Resources/Textures/Shaders/greyscale.swsl new file mode 100644 index 0000000000..918f86ae00 --- /dev/null +++ b/Resources/Textures/Shaders/greyscale.swsl @@ -0,0 +1,6 @@ +void fragment() { + highp vec4 color = zTexture(UV); + highp float grey = dot(color.rgb, vec3(0.299, 0.587, 0.114)); + + COLOR = vec4(vec3(grey), color.a); +} diff --git a/Resources/engineCommandPerms.yml b/Resources/engineCommandPerms.yml index 80c10aafbf..4a97e25a55 100644 --- a/Resources/engineCommandPerms.yml +++ b/Resources/engineCommandPerms.yml @@ -19,6 +19,7 @@ - netaudit - querymappaused - showtime + - inrangeunoccluded - Flags: MAPPING Commands: @@ -39,7 +40,8 @@ - delete - kick - listplayers - - teleport + - tp + - tpto - Flags: SERVER Commands: diff --git a/RobustToolbox b/RobustToolbox index 4bc53ebfe8..2f21a2551e 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 4bc53ebfe87d00dc3e6de41525dbee4616eda38d +Subproject commit 2f21a2551e28a4cff2025e801cd87be08c0d6a97 diff --git a/SpaceStation14.sln.DotSettings b/SpaceStation14.sln.DotSettings index c47b4913df..e9b9cc859f 100644 --- a/SpaceStation14.sln.DotSettings +++ b/SpaceStation14.sln.DotSettings @@ -48,6 +48,7 @@ OGL OOC OS + PA PCM PNG RSI @@ -77,11 +78,13 @@ True <data /> <data><IncludeFilters /><ExcludeFilters><Filter ModuleMask="Lidgren.Network" ModuleVersionMask="*" ClassMask="*" FunctionMask="*" IsEnabled="True" /></ExcludeFilters></data> + True True True True True True + True True True True @@ -127,6 +130,7 @@ True True True + True True True True