diff --git a/Content.Client/EntryPoint.cs b/Content.Client/EntryPoint.cs index 14b0c608fb..c619565968 100644 --- a/Content.Client/EntryPoint.cs +++ b/Content.Client/EntryPoint.cs @@ -61,12 +61,6 @@ namespace Content.Client "Interactable", "Destructible", "Temperature", - "PowerTransfer", - "PowerNode", - "PowerProvider", - "PowerDevice", - "PowerStorage", - "PowerGenerator", "Explosive", "OnUseTimerTrigger", "ToolboxElectricalFill", @@ -92,7 +86,6 @@ namespace Content.Client "Storeable", "Dice", "Construction", - "Apc", "Door", "PoweredLight", "Smes", @@ -104,8 +97,8 @@ namespace Content.Client "Ammo", "HitscanWeaponCapacitor", "PowerCell", - "WeaponCapacitorCharger", "PowerCellCharger", + "WeaponCapacitorCharger", "AiController", "Computer", "AsteroidRock", @@ -175,7 +168,17 @@ namespace Content.Client "UnarmedCombat", "TimedSpawner", "Buckle", - "Strap" + "Strap", + "NodeContainer", + "PowerSupplier", + "PowerConsumer", + "Battery", + "BatteryStorage", + "BatteryDischarger", + "Apc", + "PowerProvider", + "PowerReceiver", + "Wire", }; foreach (var ignoreName in registerIgnore) diff --git a/Content.Client/GameObjects/Components/Power/PowerDebugTool.cs b/Content.Client/GameObjects/Components/Power/PowerDebugTool.cs deleted file mode 100644 index 4bc96dafc4..0000000000 --- a/Content.Client/GameObjects/Components/Power/PowerDebugTool.cs +++ /dev/null @@ -1,36 +0,0 @@ -using Content.Shared.GameObjects.Components.Power; -using Robust.Client.UserInterface.Controls; -using Robust.Client.UserInterface.CustomControls; -using Robust.Shared.GameObjects; -using Robust.Shared.Interfaces.GameObjects; -using Robust.Shared.Interfaces.Network; -using Robust.Shared.Players; - -namespace Content.Client.GameObjects.Components.Power -{ - [RegisterComponent] - public class PowerDebugTool : SharedPowerDebugTool - { - SS14Window LastWindow; - public override void HandleNetworkMessage(ComponentMessage message, INetChannel channel, ICommonSession session = null) - { - base.HandleNetworkMessage(message, channel, session); - - switch (message) - { - case OpenDataWindowMsg msg: - if (LastWindow != null && !LastWindow.Disposed) - { - LastWindow.Dispose(); - } - LastWindow = new SS14Window() - { - Title = "Power Debug Tool", - }; - LastWindow.Contents.AddChild(new Label() { Text = msg.Data }); - LastWindow.Open(); - break; - } - } - } -} diff --git a/Content.IntegrationTests/Tests/GravityGridTest.cs b/Content.IntegrationTests/Tests/GravityGridTest.cs index 0b35fa603a..3abe58f685 100644 --- a/Content.IntegrationTests/Tests/GravityGridTest.cs +++ b/Content.IntegrationTests/Tests/GravityGridTest.cs @@ -1,6 +1,7 @@ -using System.Threading.Tasks; +using System.Threading.Tasks; using Content.Client.GameObjects.Components.Gravity; using Content.Server.GameObjects.Components.Gravity; +using Content.Server.GameObjects.Components.Power.ApcNetComponents; using Content.Server.GameObjects.Components.Power; using NUnit.Framework; using Robust.Shared.Interfaces.GameObjects; @@ -40,11 +41,11 @@ namespace Content.IntegrationTests.Tests generator = entityMan.SpawnEntity("GravityGenerator", new GridCoordinates(new Vector2(0, 0), grid2.Index)); Assert.That(generator.HasComponent()); - Assert.That(generator.HasComponent()); + Assert.That(generator.HasComponent()); var generatorComponent = generator.GetComponent(); - var powerComponent = generator.GetComponent(); + var powerComponent = generator.GetComponent(); Assert.AreEqual(generatorComponent.Status, GravityGeneratorStatus.Unpowered); - powerComponent.ExternalPowered = true; + powerComponent.NeedsPower = false; }); server.RunTicks(1); diff --git a/Content.Server/EntryPoint.cs b/Content.Server/EntryPoint.cs index cec8708c97..82ef1754d2 100644 --- a/Content.Server/EntryPoint.cs +++ b/Content.Server/EntryPoint.cs @@ -1,4 +1,6 @@ -using Content.Server.Interfaces; +using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; +using Content.Server.GameObjects.Components.NodeContainer.Nodes; +using Content.Server.Interfaces; using Content.Server.AI.WorldState; using Content.Server.Interfaces.Chat; using Content.Server.Interfaces.GameTicking; @@ -75,7 +77,8 @@ namespace Content.Server logManager.GetSawmill("Storage").Level = LogLevel.Info; IoCManager.Resolve().StartInit(); - + IoCManager.Resolve().Initialize(); + IoCManager.Resolve().Initialize(); } public override void PostInit() diff --git a/Content.Server/GameObjects/Components/BarSign/BarSignComponent.cs b/Content.Server/GameObjects/Components/BarSign/BarSignComponent.cs index 4054c4fcf0..d6b1ae3233 100644 --- a/Content.Server/GameObjects/Components/BarSign/BarSignComponent.cs +++ b/Content.Server/GameObjects/Components/BarSign/BarSignComponent.cs @@ -1,5 +1,5 @@ -using System.Linq; -using Content.Server.GameObjects.Components.Power; +using System.Linq; +using Content.Server.GameObjects.Components.Power.ApcNetComponents; using Robust.Server.GameObjects; using Robust.Server.Interfaces.GameObjects; using Robust.Shared.GameObjects; @@ -26,7 +26,7 @@ namespace Content.Server.GameObjects.Components.BarSign private string _currentSign; - private PowerDeviceComponent _power; + private PowerReceiverComponent _power; private SpriteComponent _sprite; [ViewVariables(VVAccess.ReadWrite)] @@ -80,7 +80,7 @@ namespace Content.Server.GameObjects.Components.BarSign { base.Initialize(); - _power = Owner.GetComponent(); + _power = Owner.GetComponent(); _sprite = Owner.GetComponent(); _power.OnPowerStateChanged += PowerOnOnPowerStateChanged; @@ -88,6 +88,12 @@ namespace Content.Server.GameObjects.Components.BarSign UpdateSignInfo(); } + public override void OnRemove() + { + _power.OnPowerStateChanged -= PowerOnOnPowerStateChanged; + base.OnRemove(); + } + private void PowerOnOnPowerStateChanged(object sender, PowerStateEventArgs e) { UpdateSignInfo(); diff --git a/Content.Server/GameObjects/Components/Cargo/CargoConsoleComponent.cs b/Content.Server/GameObjects/Components/Cargo/CargoConsoleComponent.cs index 4e0d8d7124..11fc7e832f 100644 --- a/Content.Server/GameObjects/Components/Cargo/CargoConsoleComponent.cs +++ b/Content.Server/GameObjects/Components/Cargo/CargoConsoleComponent.cs @@ -1,5 +1,6 @@ using Content.Server.Cargo; using Content.Server.GameObjects.Components.Power; +using Content.Server.GameObjects.Components.Power.ApcNetComponents; using Content.Server.GameObjects.EntitySystems; using Content.Shared.GameObjects.Components.Cargo; using Content.Shared.Prototypes.Cargo; @@ -65,8 +66,8 @@ namespace Content.Server.GameObjects.Components.Cargo private bool _requestOnly = false; - private PowerDeviceComponent _powerDevice; - private bool Powered => _powerDevice.Powered; + private PowerReceiverComponent _powerReceiver; + private bool Powered => _powerReceiver.Powered; private CargoConsoleSystem _cargoConsoleSystem; public override void Initialize() @@ -76,7 +77,7 @@ namespace Content.Server.GameObjects.Components.Cargo Orders = Owner.GetComponent(); _userInterface = Owner.GetComponent().GetBoundUserInterface(CargoConsoleUiKey.Key); _userInterface.OnReceiveMessage += UserInterfaceOnOnReceiveMessage; - _powerDevice = Owner.GetComponent(); + _powerReceiver = Owner.GetComponent(); _cargoConsoleSystem = EntitySystem.Get(); BankAccount = _cargoConsoleSystem.StationAccount; } diff --git a/Content.Server/GameObjects/Components/Chemistry/ReagentDispenserComponent.cs b/Content.Server/GameObjects/Components/Chemistry/ReagentDispenserComponent.cs index e9ff6f744f..099d8b20eb 100644 --- a/Content.Server/GameObjects/Components/Chemistry/ReagentDispenserComponent.cs +++ b/Content.Server/GameObjects/Components/Chemistry/ReagentDispenserComponent.cs @@ -22,6 +22,7 @@ using Robust.Shared.Serialization; using Robust.Shared.ViewVariables; using Robust.Server.GameObjects.EntitySystems; using Robust.Shared.GameObjects.Systems; +using Content.Server.GameObjects.Components.Power.ApcNetComponents; namespace Content.Server.GameObjects.Components.Chemistry { @@ -51,9 +52,8 @@ namespace Content.Server.GameObjects.Components.Chemistry [ViewVariables] private SolutionComponent Solution => _beakerContainer.ContainedEntity.GetComponent(); - ///implementing PowerDeviceComponent - private PowerDeviceComponent _powerDevice; - private bool Powered => _powerDevice.Powered; + private PowerReceiverComponent _powerReceiver; + private bool Powered => _powerReceiver.Powered; /// @@ -80,7 +80,7 @@ namespace Content.Server.GameObjects.Components.Chemistry _beakerContainer = ContainerManagerComponent.Ensure($"{Name}-reagentContainerContainer", Owner); - _powerDevice = Owner.GetComponent(); + _powerReceiver = Owner.GetComponent(); InitializeFromPrototype(); UpdateUserInterface(); diff --git a/Content.Server/GameObjects/Components/Command/CommunicationsConsoleComponent.cs b/Content.Server/GameObjects/Components/Command/CommunicationsConsoleComponent.cs index f8ca433024..50db5f1ba3 100644 --- a/Content.Server/GameObjects/Components/Command/CommunicationsConsoleComponent.cs +++ b/Content.Server/GameObjects/Components/Command/CommunicationsConsoleComponent.cs @@ -1,3 +1,4 @@ +using Content.Server.GameObjects.Components.Power.ApcNetComponents; using Content.Server.GameObjects.Components.Power; using Content.Server.GameObjects.EntitySystems; using Content.Server.Interfaces.GameTicking; @@ -21,8 +22,8 @@ namespace Content.Server.GameObjects.Components.Command #pragma warning restore 649 private BoundUserInterface _userInterface; - private PowerDeviceComponent _powerDevice; - private bool Powered => _powerDevice.Powered; + private PowerReceiverComponent _powerReceiver; + private bool Powered => _powerReceiver.Powered; private RoundEndSystem RoundEndSystem => _entitySystemManager.GetEntitySystem(); public override void Initialize() @@ -31,7 +32,7 @@ namespace Content.Server.GameObjects.Components.Command _userInterface = Owner.GetComponent().GetBoundUserInterface(CommunicationsConsoleUiKey.Key); _userInterface.OnReceiveMessage += UserInterfaceOnOnReceiveMessage; - _powerDevice = Owner.GetComponent(); + _powerReceiver = Owner.GetComponent(); RoundEndSystem.OnRoundEndCountdownStarted += UpdateBoundInterface; RoundEndSystem.OnRoundEndCountdownCancelled += UpdateBoundInterface; diff --git a/Content.Server/GameObjects/Components/ComputerComponent.cs b/Content.Server/GameObjects/Components/ComputerComponent.cs index 7c1c6765cb..bef1ff8355 100644 --- a/Content.Server/GameObjects/Components/ComputerComponent.cs +++ b/Content.Server/GameObjects/Components/ComputerComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.GameObjects.Components.Power; +using Content.Server.GameObjects.Components.Power.ApcNetComponents; using Content.Shared.GameObjects.Components; using Robust.Server.GameObjects; using Robust.Shared.GameObjects; @@ -12,18 +12,28 @@ namespace Content.Server.GameObjects.Components { base.Initialize(); - if (Owner.TryGetComponent(out PowerDeviceComponent powerDevice)) + if (Owner.TryGetComponent(out PowerReceiverComponent powerReceiver)) { - powerDevice.OnPowerStateChanged += PowerDeviceOnOnPowerStateChanged; + powerReceiver.OnPowerStateChanged += PowerReceiverOnOnPowerStateChanged; if (Owner.TryGetComponent(out AppearanceComponent appearance)) { - appearance.SetData(ComputerVisuals.Powered, powerDevice.Powered); + appearance.SetData(ComputerVisuals.Powered, powerReceiver.Powered); } } } - private void PowerDeviceOnOnPowerStateChanged(object sender, PowerStateEventArgs e) + public override void OnRemove() + { + if (Owner.TryGetComponent(out PowerReceiverComponent powerReceiver)) + { + powerReceiver.OnPowerStateChanged -= PowerReceiverOnOnPowerStateChanged; + } + + base.OnRemove(); + } + + private void PowerReceiverOnOnPowerStateChanged(object sender, PowerStateEventArgs e) { if (Owner.TryGetComponent(out AppearanceComponent appearance)) { diff --git a/Content.Server/GameObjects/Components/Doors/AirlockComponent.cs b/Content.Server/GameObjects/Components/Doors/AirlockComponent.cs index 1e9d75e53d..2f2543c113 100644 --- a/Content.Server/GameObjects/Components/Doors/AirlockComponent.cs +++ b/Content.Server/GameObjects/Components/Doors/AirlockComponent.cs @@ -1,7 +1,8 @@ using System; using System.Threading; using Content.Server.GameObjects.Components.Interactable; -using Content.Server.GameObjects.Components.Power; +using Content.Server.GameObjects.Components.Power.ApcNetComponents; +using Content.Server.GameObjects.Components.Power.PowerNetComponents; using Content.Server.GameObjects.Components.VendingMachines; using Content.Server.GameObjects.EntitySystems; using Content.Server.Interfaces; @@ -31,7 +32,7 @@ namespace Content.Server.GameObjects.Components.Doors /// private static readonly TimeSpan PowerWiresTimeout = TimeSpan.FromSeconds(5.0); - private PowerDeviceComponent _powerDevice; + private PowerReceiverComponent _powerReceiver; private WiresComponent _wires; private CancellationTokenSource _powerWiresPulsedTimerCancel; @@ -82,7 +83,7 @@ namespace Content.Server.GameObjects.Components.Doors private void UpdatePowerCutStatus() { - _powerDevice.IsPowerCut = PowerWiresPulsed || + _powerReceiver.PowerDisabled = PowerWiresPulsed || _wires.IsWireCut(Wires.MainPower) || _wires.IsWireCut(Wires.BackupPower); } @@ -100,10 +101,20 @@ namespace Content.Server.GameObjects.Components.Doors public override void Initialize() { base.Initialize(); - _powerDevice = Owner.GetComponent(); + _powerReceiver = Owner.GetComponent(); _wires = Owner.GetComponent(); - _powerDevice.OnPowerStateChanged += PowerDeviceOnOnPowerStateChanged; + _powerReceiver.OnPowerStateChanged += PowerDeviceOnOnPowerStateChanged; + if (Owner.TryGetComponent(out AppearanceComponent appearance)) + { + appearance.SetData(DoorVisuals.Powered, _powerReceiver.Powered); + } + } + + public override void OnRemove() + { + _powerReceiver.OnPowerStateChanged -= PowerDeviceOnOnPowerStateChanged; + base.OnRemove(); } private void PowerDeviceOnOnPowerStateChanged(object sender, PowerStateEventArgs e) @@ -217,7 +228,7 @@ namespace Content.Server.GameObjects.Components.Doors private bool IsPowered() { - return _powerDevice.Powered; + return _powerReceiver.Powered; } public bool InteractUsing(InteractUsingEventArgs eventArgs) diff --git a/Content.Server/GameObjects/Components/Gravity/GravityGeneratorComponent.cs b/Content.Server/GameObjects/Components/Gravity/GravityGeneratorComponent.cs index 189ced218f..a553c3e4bf 100644 --- a/Content.Server/GameObjects/Components/Gravity/GravityGeneratorComponent.cs +++ b/Content.Server/GameObjects/Components/Gravity/GravityGeneratorComponent.cs @@ -1,5 +1,6 @@ -using Content.Server.GameObjects.Components.Damage; +using Content.Server.GameObjects.Components.Damage; using Content.Server.GameObjects.Components.Interactable; +using Content.Server.GameObjects.Components.Power.ApcNetComponents; using Content.Server.GameObjects.Components.Power; using Content.Server.GameObjects.EntitySystems; using Content.Server.Interfaces; @@ -27,7 +28,7 @@ namespace Content.Server.GameObjects.Components.Gravity { private BoundUserInterface _userInterface; - private PowerDeviceComponent _powerDevice; + private PowerReceiverComponent _powerReceiver; private SpriteComponent _sprite; @@ -37,7 +38,7 @@ namespace Content.Server.GameObjects.Components.Gravity private GravityGeneratorStatus _status; - public bool Powered => _powerDevice.Powered; + public bool Powered => _powerReceiver.Powered; public bool SwitchedOn => _switchedOn; @@ -74,7 +75,7 @@ namespace Content.Server.GameObjects.Components.Gravity _userInterface = Owner.GetComponent() .GetBoundUserInterface(GravityGeneratorUiKey.Key); _userInterface.OnReceiveMessage += HandleUIMessage; - _powerDevice = Owner.GetComponent(); + _powerReceiver = Owner.GetComponent(); _sprite = Owner.GetComponent(); _switchedOn = true; _intact = true; diff --git a/Content.Server/GameObjects/Components/Interactable/HandheldLightComponent.cs b/Content.Server/GameObjects/Components/Interactable/HandheldLightComponent.cs index 9f9a5b303a..3348ab0593 100644 --- a/Content.Server/GameObjects/Components/Interactable/HandheldLightComponent.cs +++ b/Content.Server/GameObjects/Components/Interactable/HandheldLightComponent.cs @@ -1,8 +1,6 @@ using Content.Server.GameObjects.Components.Power; -using Content.Server.GameObjects.Components.Sound; using Content.Server.GameObjects.EntitySystems; using Content.Server.Interfaces.GameObjects; -using Content.Server.Utility; using Content.Shared.GameObjects; using Content.Shared.GameObjects.Components; using Content.Shared.GameObjects.EntitySystems; @@ -18,6 +16,7 @@ using Robust.Shared.IoC; using Robust.Shared.Localization; using Robust.Shared.Utility; using Robust.Shared.ViewVariables; +using System; namespace Content.Server.GameObjects.Components.Interactable { @@ -39,13 +38,13 @@ namespace Content.Server.GameObjects.Components.Interactable private ClothingComponent _clothingComponent; [ViewVariables] - private PowerCellComponent Cell + private BatteryComponent Cell { get { if (_cellContainer.ContainedEntity == null) return null; - _cellContainer.ContainedEntity.TryGetComponent(out PowerCellComponent cell); + _cellContainer.ContainedEntity.TryGetComponent(out BatteryComponent cell); return cell; } } @@ -58,7 +57,7 @@ namespace Content.Server.GameObjects.Components.Interactable bool IInteractUsing.InteractUsing(InteractUsingEventArgs eventArgs) { - if (!eventArgs.Using.HasComponent()) return false; + if (!eventArgs.Using.HasComponent()) return false; if (Cell != null) return false; @@ -100,7 +99,8 @@ namespace Content.Server.GameObjects.Components.Interactable _spriteComponent = Owner.GetComponent(); Owner.TryGetComponent(out _clothingComponent); _cellContainer = - ContainerManagerComponent.Ensure("flashlight_cell_container", Owner, out var existed); + ContainerManagerComponent.Ensure("flashlight_cell_container", Owner, out _); + Dirty(); } /// @@ -160,7 +160,7 @@ namespace Content.Server.GameObjects.Components.Interactable // 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 (cell.AvailableCharge(1) < Wattage) + if (Wattage > cell.CurrentCharge) { EntitySystem.Get().PlayFromEntity("/Audio/machines/button.ogg", Owner); _notifyManager.PopupMessage(Owner, user, _localizationManager.GetString("Dead cell...")); @@ -189,7 +189,7 @@ namespace Content.Server.GameObjects.Components.Interactable if (!Activated) return; var cell = Cell; - if (cell == null || !cell.TryDeductWattage(Wattage, frameTime)) TurnOff(); + if (cell == null || !cell.TryUseCharge(Wattage * frameTime)) TurnOff(); Dirty(); } @@ -229,14 +229,14 @@ namespace Content.Server.GameObjects.Components.Interactable return new HandheldLightComponentState(null); } - if (Cell.AvailableCharge(1) < Wattage) + if (Wattage > Cell.CurrentCharge) { // Practically zero. // This is so the item status works correctly. return new HandheldLightComponentState(0); } - return new HandheldLightComponentState(Cell.Charge / Cell.Capacity); + return new HandheldLightComponentState(Cell.CurrentCharge / Cell.MaxCharge); } [Verb] diff --git a/Content.Server/GameObjects/Components/Items/Storage/Fill/ToolLockerFillComponent.cs b/Content.Server/GameObjects/Components/Items/Storage/Fill/ToolLockerFillComponent.cs index 35d7ef593e..0a49b6fdbd 100644 --- a/Content.Server/GameObjects/Components/Items/Storage/Fill/ToolLockerFillComponent.cs +++ b/Content.Server/GameObjects/Components/Items/Storage/Fill/ToolLockerFillComponent.cs @@ -81,7 +81,7 @@ namespace Content.Server.GameObjects.Components.Items.Storage.Fill { if (random.Prob(0.3f)) { - Spawn("CableStack"); + Spawn("ApcExtensionCableStack"); } } } diff --git a/Content.Server/GameObjects/Components/Items/Storage/Fill/ToolboxElectricalFillComponent.cs b/Content.Server/GameObjects/Components/Items/Storage/Fill/ToolboxElectricalFillComponent.cs index 8332822734..bd48fd78c9 100644 --- a/Content.Server/GameObjects/Components/Items/Storage/Fill/ToolboxElectricalFillComponent.cs +++ b/Content.Server/GameObjects/Components/Items/Storage/Fill/ToolboxElectricalFillComponent.cs @@ -30,11 +30,9 @@ namespace Content.Server.GameObjects.Components.Items.Storage.Fill Spawn("Screwdriver"); Spawn("Crowbar"); Spawn("Wirecutter"); - Spawn("CableStack"); - Spawn("CableStack"); - - // 5% chance for a pair of fancy insulated gloves, else just a third cable coil. - Spawn(random.Prob(0.05f) ? "GlovesYellow" : "CableStack"); + Spawn("ApcExtensionCableStack"); + Spawn("MVWireStack"); + Spawn(random.Prob(0.05f) ? "GlovesYellow" : "HVWireStack"); } } } diff --git a/Content.Server/GameObjects/Components/Items/Storage/Fill/UtilityBeltClothingFillComponent.cs b/Content.Server/GameObjects/Components/Items/Storage/Fill/UtilityBeltClothingFillComponent.cs index bda1fa3344..b99f03464c 100644 --- a/Content.Server/GameObjects/Components/Items/Storage/Fill/UtilityBeltClothingFillComponent.cs +++ b/Content.Server/GameObjects/Components/Items/Storage/Fill/UtilityBeltClothingFillComponent.cs @@ -30,7 +30,7 @@ namespace Content.Server.GameObjects.Components.Items.Storage.Fill Spawn("Wirecutter"); Spawn("Welder"); Spawn("Multitool"); - Spawn("CableStack"); + Spawn("ApcExtensionCableStack"); } } } diff --git a/Content.Server/GameObjects/Components/Kitchen/MicrowaveComponent.cs b/Content.Server/GameObjects/Components/Kitchen/MicrowaveComponent.cs index 619c925ece..8f58925ccb 100644 --- a/Content.Server/GameObjects/Components/Kitchen/MicrowaveComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/MicrowaveComponent.cs @@ -26,6 +26,7 @@ using Content.Server.Interfaces.Chat; using Content.Server.BodySystem; using Content.Shared.BodySystem; using Robust.Shared.GameObjects.Systems; +using Content.Server.GameObjects.Components.Power.ApcNetComponents; namespace Content.Server.GameObjects.Components.Kitchen { @@ -63,7 +64,7 @@ namespace Content.Server.GameObjects.Components.Kitchen private uint _currentCookTimerTime = 1; #endregion - private bool _powered => _powerDevice.Powered; + private bool _powered => _powerReceiver.Powered; private bool _hasContents => _solution.ReagentList.Count > 0 || _storage.ContainedEntities.Count > 0; private bool _uiDirty = true; private bool _lostPower = false; @@ -72,7 +73,7 @@ namespace Content.Server.GameObjects.Components.Kitchen void ISolutionChange.SolutionChanged(SolutionChangeEventArgs eventArgs) => _uiDirty = true; private AudioSystem _audioSystem; private AppearanceComponent _appearance; - private PowerDeviceComponent _powerDevice; + private PowerReceiverComponent _powerReceiver; private BoundUserInterface _userInterface; private Container _storage; @@ -95,7 +96,7 @@ namespace Content.Server.GameObjects.Components.Kitchen _storage = ContainerManagerComponent.Ensure("microwave_entity_container", Owner, out var existed); _appearance = Owner.GetComponent(); - _powerDevice = Owner.GetComponent(); + _powerReceiver = Owner.GetComponent(); _audioSystem = EntitySystem.Get(); _userInterface = Owner.GetComponent() .GetBoundUserInterface(MicrowaveUiKey.Key); diff --git a/Content.Server/GameObjects/Components/Medical/MedicalScannerComponent.cs b/Content.Server/GameObjects/Components/Medical/MedicalScannerComponent.cs index 08d7c86f77..f8bbdaa168 100644 --- a/Content.Server/GameObjects/Components/Medical/MedicalScannerComponent.cs +++ b/Content.Server/GameObjects/Components/Medical/MedicalScannerComponent.cs @@ -14,6 +14,7 @@ using Robust.Shared.GameObjects; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Maths; using Robust.Shared.Utility; +using Content.Server.GameObjects.Components.Power.ApcNetComponents; namespace Content.Server.GameObjects.Components.Medical { @@ -27,9 +28,8 @@ namespace Content.Server.GameObjects.Components.Medical private readonly Vector2 _ejectOffset = new Vector2(-0.5f, 0f); public bool IsOccupied => _bodyContainer.ContainedEntity != null; - ///implementing PowerDeviceComponent - private PowerDeviceComponent _powerDevice; - private bool Powered => _powerDevice.Powered; + private PowerReceiverComponent _powerReceiver; + private bool Powered => _powerReceiver.Powered; public override void Initialize() { @@ -38,7 +38,7 @@ namespace Content.Server.GameObjects.Components.Medical _userInterface = Owner.GetComponent() .GetBoundUserInterface(MedicalScannerUiKey.Key); _bodyContainer = ContainerManagerComponent.Ensure($"{Name}-bodyContainer", Owner); - _powerDevice = Owner.GetComponent(); + _powerReceiver = Owner.GetComponent(); UpdateUserInterface(); } diff --git a/Content.Server/GameObjects/Components/NodeContainer/NodeContainerComponent.cs b/Content.Server/GameObjects/Components/NodeContainer/NodeContainerComponent.cs new file mode 100644 index 0000000000..cf7279185f --- /dev/null +++ b/Content.Server/GameObjects/Components/NodeContainer/NodeContainerComponent.cs @@ -0,0 +1,73 @@ +using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; +using Content.Server.GameObjects.Components.NodeContainer.Nodes; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.IoC; +using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; +using System.Collections.Generic; + +namespace Content.Server.GameObjects.Components.NodeContainer +{ + /// + /// Creates and maintains a set of s. + /// + [RegisterComponent] + public class NodeContainerComponent : Component + { + public override string Name => "NodeContainer"; + + [ViewVariables] + public IReadOnlyList Nodes => _nodes; + private List _nodes = new List(); + +#pragma warning disable 649 + [Dependency] private readonly INodeFactory _nodeFactory; +#pragma warning restore 649 + + /// + /// A set of s and implementation names + /// to be created and held in this container. + /// + [ViewVariables] + private Dictionary> _nodeTypes; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _nodeTypes, "nodeTypes", new Dictionary> { }); + } + + protected override void Startup() + { + base.Startup(); + foreach (var nodeType in _nodeTypes) + { + var nodeGroupID = nodeType.Key; + foreach (var nodeName in nodeType.Value) + { + _nodes.Add(MakeNewNode(nodeName, nodeGroupID, Owner)); + } + } + foreach (var node in _nodes) + { + node.OnContainerInitialize(); + } + } + + public override void OnRemove() + { + foreach (var node in _nodes) + { + node.OnContainerRemove(); + } + _nodes = null; + base.OnRemove(); + } + + private Node MakeNewNode(string nodeName, NodeGroupID groupID, IEntity owner) + { + return _nodeFactory.MakeNode(nodeName, groupID, owner); + } + } +} diff --git a/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/ApcNetNodeGroup.cs b/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/ApcNetNodeGroup.cs new file mode 100644 index 0000000000..310fa35dba --- /dev/null +++ b/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/ApcNetNodeGroup.cs @@ -0,0 +1,122 @@ +using Content.Server.GameObjects.Components.Power; +using Content.Server.GameObjects.Components.Power.ApcNetComponents; +using Robust.Shared.ViewVariables; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; + +namespace Content.Server.GameObjects.Components.NodeContainer.NodeGroups +{ + public interface IApcNet + { + void AddApc(ApcComponent apc); + + void RemoveApc(ApcComponent apc); + + void AddPowerProvider(PowerProviderComponent provider); + + void RemovePowerProvider(PowerProviderComponent provider); + + void UpdatePowerProviderReceivers(PowerProviderComponent provider); + + void Update(float frameTime); + } + + [NodeGroup(NodeGroupID.Apc)] + public class ApcNetNodeGroup : BaseNetConnectorNodeGroup, IApcNet + { + [ViewVariables] + private readonly Dictionary _apcBatteries = new Dictionary(); + + [ViewVariables] + private readonly Dictionary> _providerReceivers = new Dictionary>(); + + //Debug property + [ViewVariables] + private int TotalReceivers => _providerReceivers.SelectMany(kvp => kvp.Value).Count(); + + private IEnumerable AvailableBatteries => _apcBatteries.Where(kvp => kvp.Key.MainBreakerEnabled).Select(kvp => kvp.Value); + + public static readonly IApcNet NullNet = new NullApcNet(); + + #region IApcNet Methods + + protected override void SetNetConnectorNet(BaseApcNetComponent netConnectorComponent) + { + netConnectorComponent.Net = this; + } + + public void AddApc(ApcComponent apc) + { + _apcBatteries.Add(apc, apc.Battery); + } + + public void RemoveApc(ApcComponent apc) + { + _apcBatteries.Remove(apc); + if (!_apcBatteries.Any()) + { + foreach (var receiver in _providerReceivers.SelectMany(kvp => kvp.Value)) + { + receiver.HasApcPower = false; + } + } + } + + public void AddPowerProvider(PowerProviderComponent provider) + { + _providerReceivers.Add(provider, provider.LinkedReceivers.ToList()); + } + + public void RemovePowerProvider(PowerProviderComponent provider) + { + _providerReceivers.Remove(provider); + } + + public void UpdatePowerProviderReceivers(PowerProviderComponent provider) + { + Debug.Assert(_providerReceivers.ContainsKey(provider)); + _providerReceivers[provider] = provider.LinkedReceivers.ToList(); + } + + public void Update(float frameTime) + { + var totalCharge = 0.0; + var totalMaxCharge = 0; + foreach (var battery in AvailableBatteries) + { + totalCharge += battery.CurrentCharge; + totalMaxCharge += battery.MaxCharge; + } + var availablePowerFraction = totalCharge / totalMaxCharge; + foreach (var receiver in _providerReceivers.SelectMany(kvp => kvp.Value)) + { + receiver.HasApcPower = TryUsePower(receiver.Load * frameTime); + } + } + + private bool TryUsePower(float neededCharge) + { + foreach (var battery in AvailableBatteries) + { + if (battery.TryUseCharge(neededCharge)) //simplification - all power needed must come from one battery + { + return true; + } + } + return false; + } + + #endregion + + private class NullApcNet : IApcNet + { + public void AddApc(ApcComponent apc) { } + public void AddPowerProvider(PowerProviderComponent provider) { } + public void RemoveApc(ApcComponent apc) { } + public void RemovePowerProvider(PowerProviderComponent provider) { } + public void UpdatePowerProviderReceivers(PowerProviderComponent provider) { } + public void Update(float frameTime) { } + } + } +} diff --git a/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/BaseNetConnectorNodeGroup.cs b/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/BaseNetConnectorNodeGroup.cs new file mode 100644 index 0000000000..789d9ce466 --- /dev/null +++ b/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/BaseNetConnectorNodeGroup.cs @@ -0,0 +1,36 @@ +using Content.Server.GameObjects.Components.Power; +using Content.Server.GameObjects.Components.NodeContainer.Nodes; +using System.Collections.Generic; +using System.Linq; + +namespace Content.Server.GameObjects.Components.NodeContainer.NodeGroups +{ + public abstract class BaseNetConnectorNodeGroup : BaseNodeGroup where TNetConnector : BaseNetConnectorComponent + { + private readonly Dictionary> _netConnectorComponents = new Dictionary>(); + + protected override void OnAddNode(Node node) + { + var newNetConnectorComponents = node.Owner + .GetAllComponents() + .Where(powerComp => (NodeGroupID) powerComp.Voltage == node.NodeGroupID) + .ToList(); + _netConnectorComponents.Add(node, newNetConnectorComponents); + foreach (var netConnectorComponent in newNetConnectorComponents) + { + SetNetConnectorNet(netConnectorComponent); + } + } + + protected abstract void SetNetConnectorNet(TNetConnector netConnectorComponent); + + protected override void OnRemoveNode(Node node) + { + foreach (var netConnectorComponent in _netConnectorComponents[node]) + { + netConnectorComponent.ClearNet(); + } + _netConnectorComponents.Remove(node); + } + } +} diff --git a/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/INodeGroup.cs b/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/INodeGroup.cs new file mode 100644 index 0000000000..00a1d32561 --- /dev/null +++ b/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/INodeGroup.cs @@ -0,0 +1,121 @@ +using Content.Server.GameObjects.Components.NodeContainer.Nodes; +using Robust.Shared.ViewVariables; +using System.Collections.Generic; + +namespace Content.Server.GameObjects.Components.NodeContainer.NodeGroups +{ + /// + /// Maintains a collection of s, and performs operations requiring a list of + /// all connected s. + /// + public interface INodeGroup + { + public IReadOnlyList Nodes { get; } + + void AddNode(Node node); + + void RemoveNode(Node node); + + void CombineGroup(INodeGroup newGroup); + + void BeforeCombine(); + + void AfterCombine(); + + void BeforeRemakeSpread(); + + void AfterRemakeSpread(); + } + + [NodeGroup(NodeGroupID.Default)] + public class BaseNodeGroup : INodeGroup + { + [ViewVariables] + public IReadOnlyList Nodes => _nodes; + private readonly List _nodes = new List(); + + [ViewVariables] + public int NodeCount => Nodes.Count; + + public static readonly INodeGroup NullGroup = new NullNodeGroup(); + + public void AddNode(Node node) + { + _nodes.Add(node); + OnAddNode(node); + } + + public void RemoveNode(Node node) + { + _nodes.Remove(node); + OnRemoveNode(node); + RemakeGroup(); + } + + public void CombineGroup(INodeGroup newGroup) + { + if (newGroup.Nodes.Count < Nodes.Count) + { + newGroup.CombineGroup(this); + return; + } + BeforeCombine(); + newGroup.BeforeCombine(); + foreach (var node in Nodes) + { + node.NodeGroup = newGroup; + } + AfterCombine(); + newGroup.AfterCombine(); + } + + /// + /// Causes all s to remake their groups. Called when a is removed + /// and may have split a group in two, so multiple new groups may need to be formed. + /// + private void RemakeGroup() + { + BeforeRemake(); + foreach (var node in Nodes) + { + node.ClearNodeGroup(); + } + foreach (var node in Nodes) + { + if (node.TryAssignGroupIfNeeded()) + { + node.StartSpreadingGroup(); + } + } + } + + protected virtual void OnAddNode(Node node) { } + + protected virtual void OnRemoveNode(Node node) { } + + protected virtual void BeforeRemake() { } + + protected virtual void AfterRemake() { } + + public virtual void BeforeCombine() { } + + public virtual void AfterCombine() { } + + public virtual void BeforeRemakeSpread() { } + + public virtual void AfterRemakeSpread() { } + + private class NullNodeGroup : INodeGroup + { + public IReadOnlyList Nodes => _nodes; + private readonly List _nodes = new List(); + public void AddNode(Node node) { } + public void CombineGroup(INodeGroup newGroup) { } + public void RemoveNode(Node node) { } + public void BeforeCombine() { } + public void AfterCombine() { } + public void BeforeRemakeSpread() { } + public void AfterRemakeSpread() { } + } + } +} diff --git a/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/NodeGroupAttribute.cs b/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/NodeGroupAttribute.cs new file mode 100644 index 0000000000..5f47956656 --- /dev/null +++ b/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/NodeGroupAttribute.cs @@ -0,0 +1,20 @@ +using System; + +namespace Content.Server.GameObjects.Components.NodeContainer.NodeGroups +{ + /// + /// Associates a implementation with a . + /// This is used to gurantee all s of the same + /// have the same type of . Used by . + /// + [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)] + public class NodeGroupAttribute : Attribute + { + public NodeGroupID[] NodeGroupIDs { get; } + + public NodeGroupAttribute(params NodeGroupID[] nodeGroupTypes) + { + NodeGroupIDs = nodeGroupTypes; + } + } +} diff --git a/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/NodeGroupFactory.cs b/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/NodeGroupFactory.cs new file mode 100644 index 0000000000..49cda47a7f --- /dev/null +++ b/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/NodeGroupFactory.cs @@ -0,0 +1,65 @@ +using Robust.Shared.Interfaces.Reflection; +using Robust.Shared.IoC; +using System; +using System.Collections.Generic; +using System.Reflection; + +namespace Content.Server.GameObjects.Components.NodeContainer.NodeGroups +{ + public interface INodeGroupFactory + { + /// + /// Performs reflection to associate implementations with the + /// string specified in their . + /// + void Initialize(); + + /// + /// Returns a new instance. + /// + INodeGroup MakeNodeGroup(NodeGroupID nodeGroupType); + } + + public class NodeGroupFactory : INodeGroupFactory + { + private readonly Dictionary _groupTypes = new Dictionary(); + +#pragma warning disable 649 + [Dependency] private readonly IReflectionManager _reflectionManager; + [Dependency] private readonly IDynamicTypeFactory _typeFactory; +#pragma warning restore 649 + + public void Initialize() + { + var nodeGroupTypes = _reflectionManager.GetAllChildren(); + foreach (var nodeGroupType in nodeGroupTypes) + { + var att = nodeGroupType.GetCustomAttribute(); + if (att != null) + { + foreach (var groupID in att.NodeGroupIDs) + { + _groupTypes.Add(groupID, nodeGroupType); + } + } + } + } + + public INodeGroup MakeNodeGroup(NodeGroupID nodeGroupType) + { + if (_groupTypes.TryGetValue(nodeGroupType, out var type)) + { + return _typeFactory.CreateInstance(type); + } + throw new ArgumentException($"{nodeGroupType} did not have an associated {nameof(INodeGroup)}."); + } + } + + public enum NodeGroupID + { + Default, + HVPower, + MVPower, + Apc, + } +} diff --git a/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/PowerNetNodeGroup.cs b/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/PowerNetNodeGroup.cs new file mode 100644 index 0000000000..676242f894 --- /dev/null +++ b/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/PowerNetNodeGroup.cs @@ -0,0 +1,192 @@ +using Content.Server.GameObjects.Components.Power.PowerNetComponents; +using Robust.Shared.ViewVariables; +using System; +using System.Collections.Generic; +using System.Diagnostics; + +namespace Content.Server.GameObjects.Components.NodeContainer.NodeGroups +{ + public interface IPowerNet + { + void AddSupplier(PowerSupplierComponent supplier); + + void RemoveSupplier(PowerSupplierComponent supplier); + + void UpdateSupplierSupply(PowerSupplierComponent supplier, int oldSupplyRate, int newSupplyRate); + + void AddConsumer(PowerConsumerComponent consumer); + + void RemoveConsumer(PowerConsumerComponent consumer); + + void UpdateConsumerDraw(PowerConsumerComponent consumer, int oldDrawRate, int newDrawRate); + + void UpdateConsumerPriority(PowerConsumerComponent consumer, Priority oldPriority, Priority newPriority); + } + + [NodeGroup(NodeGroupID.HVPower, NodeGroupID.MVPower)] + public class PowerNetNodeGroup : BaseNetConnectorNodeGroup, IPowerNet + { + [ViewVariables] + private readonly List _suppliers = new List(); + + [ViewVariables] + private int _totalSupply = 0; + + [ViewVariables] + private readonly Dictionary> _consumersByPriority = new Dictionary>(); + + [ViewVariables] + private readonly Dictionary _drawByPriority = new Dictionary(); + + [ViewVariables] + private bool _supressPowerRecalculation = false; + + public static readonly IPowerNet NullNet = new NullPowerNet(); + + public PowerNetNodeGroup() + { + foreach(Priority priority in Enum.GetValues(typeof(Priority))) + { + _consumersByPriority.Add(priority, new List()); + _drawByPriority.Add(priority, 0); + } + } + + #region BaseNodeGroup Overrides + + protected override void SetNetConnectorNet(BasePowerNetComponent netConnectorComponent) + { + netConnectorComponent.Net = this; + } + + public override void BeforeCombine() + { + _supressPowerRecalculation = true; + } + + public override void AfterCombine() + { + _supressPowerRecalculation = false; + UpdateConsumerReceivedPower(); + } + + protected override void BeforeRemake() + { + _supressPowerRecalculation = true; + } + + public override void BeforeRemakeSpread() + { + _supressPowerRecalculation = true; + } + + public override void AfterRemakeSpread() + { + _supressPowerRecalculation = false; + UpdateConsumerReceivedPower(); + } + + #endregion + + #region IPowerNet Methods + + public void AddSupplier(PowerSupplierComponent supplier) + { + _suppliers.Add(supplier); + _totalSupply += supplier.SupplyRate; + UpdateConsumerReceivedPower(); + } + + public void RemoveSupplier(PowerSupplierComponent supplier) + { + Debug.Assert(_suppliers.Contains(supplier)); + _suppliers.Remove(supplier); + _totalSupply -= supplier.SupplyRate; + UpdateConsumerReceivedPower(); + } + + public void UpdateSupplierSupply(PowerSupplierComponent supplier, int oldSupplyRate, int newSupplyRate) + { + Debug.Assert(_suppliers.Contains(supplier)); + _totalSupply -= oldSupplyRate; + _totalSupply += newSupplyRate; + UpdateConsumerReceivedPower(); + } + + public void AddConsumer(PowerConsumerComponent consumer) + { + _consumersByPriority[consumer.Priority].Add(consumer); + _drawByPriority[consumer.Priority] += consumer.DrawRate; + UpdateConsumerReceivedPower(); + } + + public void RemoveConsumer(PowerConsumerComponent consumer) + { + Debug.Assert(_consumersByPriority[consumer.Priority].Contains(consumer)); + _consumersByPriority[consumer.Priority].Add(consumer); + _drawByPriority[consumer.Priority] -= consumer.DrawRate; + UpdateConsumerReceivedPower(); + } + + public void UpdateConsumerDraw(PowerConsumerComponent consumer, int oldDrawRate, int newDrawRate) + { + Debug.Assert(_consumersByPriority[consumer.Priority].Contains(consumer)); + _drawByPriority[consumer.Priority] -= oldDrawRate; + _drawByPriority[consumer.Priority] += newDrawRate; + UpdateConsumerReceivedPower(); + } + + public void UpdateConsumerPriority(PowerConsumerComponent consumer, Priority oldPriority, Priority newPriority) + { + Debug.Assert(_consumersByPriority[oldPriority].Contains(consumer)); + _consumersByPriority[oldPriority].Remove(consumer); + _drawByPriority[oldPriority] -= consumer.DrawRate; + _consumersByPriority[newPriority].Add(consumer); + _drawByPriority[newPriority] += consumer.DrawRate; + UpdateConsumerReceivedPower(); + } + + private void UpdateConsumerReceivedPower() + { + if (_supressPowerRecalculation) + { + return; + } + var remainingSupply = _totalSupply; + foreach (Priority priority in Enum.GetValues(typeof(Priority))) + { + var categoryPowerDemand = _drawByPriority[priority]; + if (remainingSupply - categoryPowerDemand >= 0) //can fully power all in category + { + remainingSupply -= categoryPowerDemand; + foreach (var consumer in _consumersByPriority[priority]) + { + consumer.ReceivedPower = consumer.DrawRate; + } + } + else if (remainingSupply - categoryPowerDemand < 0) //cannot fully power all, split power + { + var availiablePowerFraction = (float) remainingSupply / categoryPowerDemand; + remainingSupply = 0; + foreach (var consumer in _consumersByPriority[priority]) + { + consumer.ReceivedPower = (int) (consumer.DrawRate * availiablePowerFraction); //give each consumer a fraction of what they requested (rounded down to nearest int) + } + } + } + } + + #endregion + + private class NullPowerNet : IPowerNet + { + public void AddConsumer(PowerConsumerComponent consumer) { } + public void AddSupplier(PowerSupplierComponent supplier) { } + public void UpdateSupplierSupply(PowerSupplierComponent supplier, int oldSupplyRate, int newSupplyRate) { } + public void RemoveConsumer(PowerConsumerComponent consumer) { } + public void RemoveSupplier(PowerSupplierComponent supplier) { } + public void UpdateConsumerDraw(PowerConsumerComponent consumer, int oldDrawRate, int newDrawRate) { } + public void UpdateConsumerPriority(PowerConsumerComponent consumer, Priority oldPriority, Priority newPriority) { } + } + } +} diff --git a/Content.Server/GameObjects/Components/NodeContainer/Nodes/AdjacentNode.cs b/Content.Server/GameObjects/Components/NodeContainer/Nodes/AdjacentNode.cs new file mode 100644 index 0000000000..ef2eae7313 --- /dev/null +++ b/Content.Server/GameObjects/Components/NodeContainer/Nodes/AdjacentNode.cs @@ -0,0 +1,25 @@ +using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; +using Robust.Shared.GameObjects.Components.Transform; +using System.Collections.Generic; +using System.Linq; + +namespace Content.Server.GameObjects.Components.NodeContainer.Nodes +{ + /// + /// A that can reach other s that are directly adjacent to it. + /// + [Node("AdjacentNode")] + public class AdjacentNode : Node + { + protected override IEnumerable GetReachableNodes() + { + return Owner.GetComponent() + .GetCardinalNeighborCells() + .SelectMany(sgc => sgc.GetLocal()) + .Select(entity => entity.TryGetComponent(out var container) ? container : null) + .Where(container => container != null) + .SelectMany(container => container.Nodes) + .Where(node => node != null && node != this); + } + } +} diff --git a/Content.Server/GameObjects/Components/NodeContainer/Nodes/Node.cs b/Content.Server/GameObjects/Components/NodeContainer/Nodes/Node.cs new file mode 100644 index 0000000000..dfbd843845 --- /dev/null +++ b/Content.Server/GameObjects/Components/NodeContainer/Nodes/Node.cs @@ -0,0 +1,131 @@ +using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.IoC; +using Robust.Shared.ViewVariables; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; + +namespace Content.Server.GameObjects.Components.NodeContainer.Nodes +{ + /// + /// Organizes themselves into distinct s with other s + /// that they can "reach" and have the same . + /// + public abstract class Node + { + /// + /// An ID used as a criteria for combining into groups. Determines which + /// implementation is used as a group, detailed in . + /// + [ViewVariables] + public NodeGroupID NodeGroupID { get; private set; } + + [ViewVariables] + public INodeGroup NodeGroup { get => _nodeGroup; set => SetNodeGroup(value); } + private INodeGroup _nodeGroup = BaseNodeGroup.NullGroup; + + [ViewVariables] + public IEntity Owner { get; private set; } + + private bool _needsGroup = true; + + private bool _deleting = false; + + +#pragma warning disable 649 + [Dependency] private readonly INodeGroupFactory _nodeGroupFactory; +#pragma warning restore 649 + + public void Initialize(NodeGroupID nodeGroupID, IEntity owner) + { + NodeGroupID = nodeGroupID; + Owner = owner; + } + + public void OnContainerInitialize() + { + TryAssignGroupIfNeeded(); + CombineGroupWithReachable(); + } + + public void OnContainerRemove() + { + _deleting = true; + NodeGroup.RemoveNode(this); + } + + public bool TryAssignGroupIfNeeded() + { + if (!_needsGroup) + { + return false; + } + NodeGroup = GetReachableCompatibleGroups().FirstOrDefault() ?? MakeNewGroup(); + return true; + } + + public void StartSpreadingGroup() + { + NodeGroup.BeforeRemakeSpread(); + SpreadGroup(); + NodeGroup.AfterRemakeSpread(); + } + + public void SpreadGroup() + { + Debug.Assert(!_needsGroup); + foreach (var node in GetReachableCompatibleNodes().Where(node => node._needsGroup == true)) + { + node.NodeGroup = NodeGroup; + node.SpreadGroup(); + } + } + + public void ClearNodeGroup() + { + _nodeGroup = BaseNodeGroup.NullGroup; + _needsGroup = true; + } + + /// + /// How this node will attempt to find other reachable s to group with. + /// Returns a set of s to consider grouping with. Should not return this current . + /// + protected abstract IEnumerable GetReachableNodes(); + + private IEnumerable GetReachableCompatibleNodes() + { + return GetReachableNodes().Where(node => node.NodeGroupID == NodeGroupID) + .Where(node => node._deleting == false); + } + + private IEnumerable GetReachableCompatibleGroups() + { + return GetReachableCompatibleNodes().Where(node => node._needsGroup == false) + .Select(node => node.NodeGroup) + .Where(group => group != NodeGroup); + } + + private void CombineGroupWithReachable() + { + Debug.Assert(!_needsGroup); + foreach (var group in GetReachableCompatibleGroups()) + { + NodeGroup.CombineGroup(group); + } + } + + private void SetNodeGroup(INodeGroup newGroup) + { + _nodeGroup = newGroup; + NodeGroup.AddNode(this); + _needsGroup = false; + } + + private INodeGroup MakeNewGroup() + { + return _nodeGroupFactory.MakeNodeGroup(NodeGroupID); + } + } +} diff --git a/Content.Server/GameObjects/Components/NodeContainer/Nodes/NodeAttribute.cs b/Content.Server/GameObjects/Components/NodeContainer/Nodes/NodeAttribute.cs new file mode 100644 index 0000000000..b11554c7af --- /dev/null +++ b/Content.Server/GameObjects/Components/NodeContainer/Nodes/NodeAttribute.cs @@ -0,0 +1,20 @@ +using System; + +namespace Content.Server.GameObjects.Components.NodeContainer.Nodes +{ + /// + /// Associates a implementation with a string. This is used + /// to specify an 's strategy in yaml. Used by . + /// + [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)] + public class + NodeAttribute : Attribute + { + public string Name { get; } + + public NodeAttribute(string name) + { + Name = name; + } + } +} diff --git a/Content.Server/GameObjects/Components/NodeContainer/Nodes/NodeFactory.cs b/Content.Server/GameObjects/Components/NodeContainer/Nodes/NodeFactory.cs new file mode 100644 index 0000000000..6f0b3ed263 --- /dev/null +++ b/Content.Server/GameObjects/Components/NodeContainer/Nodes/NodeFactory.cs @@ -0,0 +1,58 @@ +using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Interfaces.Reflection; +using Robust.Shared.IoC; +using System; +using System.Collections.Generic; +using System.Reflection; + +namespace Content.Server.GameObjects.Components.NodeContainer.Nodes +{ + public interface INodeFactory + { + /// + /// Performs reflection to associate implementations with the + /// string specified in their . + /// + void Initialize(); + + /// + /// Returns a new instance. + /// + Node MakeNode(string nodeName, NodeGroupID groupID, IEntity owner); + } + + public class NodeFactory : INodeFactory + { + private readonly Dictionary _groupTypes = new Dictionary(); + +#pragma warning disable 649 + [Dependency] private readonly IReflectionManager _reflectionManager; + [Dependency] private readonly IDynamicTypeFactory _typeFactory; +#pragma warning restore 649 + + public void Initialize() + { + var nodeTypes = _reflectionManager.GetAllChildren(); + foreach (var nodeType in nodeTypes) + { + var att = nodeType.GetCustomAttribute(); + if (att != null) + { + _groupTypes.Add(att.Name, nodeType); + } + } + } + + public Node MakeNode(string nodeName, NodeGroupID groupID, IEntity owner) + { + if (_groupTypes.TryGetValue(nodeName, out var type)) + { + var newNode = _typeFactory.CreateInstance(type); + newNode.Initialize(groupID, owner); + return newNode; + } + throw new ArgumentException($"{nodeName} did not have an associated {nameof(Node)}."); + } + } +} diff --git a/Content.Server/GameObjects/Components/Power/ApcComponent.cs b/Content.Server/GameObjects/Components/Power/ApcComponent.cs deleted file mode 100644 index 1af7714a77..0000000000 --- a/Content.Server/GameObjects/Components/Power/ApcComponent.cs +++ /dev/null @@ -1,127 +0,0 @@ -using Content.Server.GameObjects.EntitySystems; -using Content.Shared.GameObjects.Components.Power; -using Robust.Server.GameObjects; -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.Systems; -using Robust.Shared.Interfaces.GameObjects; -using Robust.Shared.IoC; - -namespace Content.Server.GameObjects.Components.Power -{ - [RegisterComponent] - [ComponentReference(typeof(IActivate))] - public sealed class ApcComponent : SharedApcComponent, IActivate - { - PowerStorageComponent Storage; - AppearanceComponent Appearance; - private PowerProviderComponent _provider; - - ApcChargeState LastChargeState; - private float _lastCharge = 0f; - private ApcExternalPowerState _lastExternalPowerState; - private BoundUserInterface _userInterface; - private bool _uiDirty = true; - - public override void Initialize() - { - base.Initialize(); - Storage = Owner.GetComponent(); - Appearance = Owner.GetComponent(); - _provider = Owner.GetComponent(); - _userInterface = Owner.GetComponent().GetBoundUserInterface(ApcUiKey.Key); - _userInterface.OnReceiveMessage += UserInterfaceOnOnReceiveMessage; - } - - private void UserInterfaceOnOnReceiveMessage(ServerBoundUserInterfaceMessage serverMsg) - { - var obj = serverMsg.Message; - if (obj is ApcToggleMainBreakerMessage) - { - _provider.MainBreaker = !_provider.MainBreaker; - _uiDirty = true; - _clickSound(); - } - } - - public void OnUpdate() - { - var newState = CalcChargeState(); - if (newState != LastChargeState) - { - LastChargeState = newState; - Appearance.SetData(ApcVisuals.ChargeState, newState); - } - - var newCharge = Storage.Charge; - if (newCharge != _lastCharge) - { - _lastCharge = newCharge; - _uiDirty = true; - } - - var extPowerState = CalcExtPowerState(); - if (extPowerState != _lastExternalPowerState) - { - _lastExternalPowerState = extPowerState; - _uiDirty = true; - } - - if (_uiDirty) - { - _userInterface.SetState(new ApcBoundInterfaceState(_provider.MainBreaker, extPowerState, - newCharge / Storage.Capacity)); - _uiDirty = false; - } - } - - private ApcChargeState CalcChargeState() - { - var storageCharge = Storage.GetChargeState(); - switch (storageCharge) - { - case ChargeState.Discharging: - return ApcChargeState.Lack; - case ChargeState.Charging: - return ApcChargeState.Charging; - default: - // Still. - return Storage.Full ? ApcChargeState.Full : ApcChargeState.Lack; - } - } - - private ApcExternalPowerState CalcExtPowerState() - { - if (!Owner.TryGetComponent(out PowerNodeComponent node) || node.Parent == null) - { - return ApcExternalPowerState.None; - } - - var net = node.Parent; - if (net.LastTotalAvailable <= 0) - { - return ApcExternalPowerState.None; - } - - return net.Lack > 0 ? ApcExternalPowerState.Low : ApcExternalPowerState.Good; - } - - void IActivate.Activate(ActivateEventArgs eventArgs) - { - if (!eventArgs.User.TryGetComponent(out IActorComponent actor)) - { - return; - } - - _userInterface.Open(actor.playerSession); - } - - private void _clickSound() - { - EntitySystem.Get().PlayFromEntity("/Audio/machines/machine_switch.ogg", Owner,AudioParams.Default.WithVolume(-2f)); - } - } -} diff --git a/Content.Server/GameObjects/Components/Power/ApcNetComponents/ApcComponent.cs b/Content.Server/GameObjects/Components/Power/ApcNetComponents/ApcComponent.cs new file mode 100644 index 0000000000..6c4ad336e4 --- /dev/null +++ b/Content.Server/GameObjects/Components/Power/ApcNetComponents/ApcComponent.cs @@ -0,0 +1,161 @@ +using Content.Server.GameObjects.Components.Power.PowerNetComponents; +using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; +using Content.Server.GameObjects.EntitySystems; +using Content.Shared.GameObjects.Components.Power; +using Robust.Server.GameObjects; +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.Systems; +using Robust.Shared.ViewVariables; +using System; +using Robust.Shared.IoC; +using Robust.Shared.Interfaces.Timing; + +namespace Content.Server.GameObjects.Components.Power.ApcNetComponents +{ + [RegisterComponent] + [ComponentReference(typeof(IActivate))] + public class ApcComponent : BaseApcNetComponent, IActivate + { + public override string Name => "Apc"; + + [ViewVariables] + public BatteryComponent Battery { get; private set; } + + public bool MainBreakerEnabled { get; private set; } = true; + + private BoundUserInterface _userInterface; + + private AppearanceComponent _appearance; + + private ApcChargeState _lastChargeState; + + private TimeSpan _lastChargeStateChange; + + private ApcExternalPowerState _lastExternalPowerState; + + private TimeSpan _lastExternalPowerStateChange; + + private float _lastCharge = 0f; + + private bool _uiDirty = true; + + private const float HighPowerThreshold = 0.9f; + + private const int VisualsChangeDelay = 1; + +#pragma warning disable 649 + [Dependency] private readonly IGameTiming _gameTiming; +#pragma warning restore 649 + + public override void Initialize() + { + base.Initialize(); + Battery = Owner.GetComponent(); + _appearance = Owner.GetComponent(); + _userInterface = Owner.GetComponent().GetBoundUserInterface(ApcUiKey.Key); + _userInterface.OnReceiveMessage += UserInterfaceOnReceiveMessage; + Update(); + } + + protected override void AddSelfToNet(IApcNet apcNet) + { + apcNet.AddApc(this); + } + + protected override void RemoveSelfFromNet(IApcNet apcNet) + { + apcNet.RemoveApc(this); + } + + private void UserInterfaceOnReceiveMessage(ServerBoundUserInterfaceMessage serverMsg) + { + if (serverMsg.Message is ApcToggleMainBreakerMessage) + { + MainBreakerEnabled = !MainBreakerEnabled; + _uiDirty = true; + EntitySystem.Get().PlayFromEntity("/Audio/machines/machine_switch.ogg", Owner, AudioParams.Default.WithVolume(-2f)); + } + } + + public void Update() + { + var newState = CalcChargeState(); + if (newState != _lastChargeState && _lastChargeStateChange + TimeSpan.FromSeconds(VisualsChangeDelay) < _gameTiming.CurTime) + { + _lastChargeState = newState; + _lastChargeStateChange = _gameTiming.CurTime; + _appearance.SetData(ApcVisuals.ChargeState, newState); + } + var newCharge = Battery.CurrentCharge; + if (newCharge != _lastCharge) + { + _lastCharge = newCharge; + _uiDirty = true; + } + var extPowerState = CalcExtPowerState(); + if (extPowerState != _lastExternalPowerState && _lastExternalPowerStateChange + TimeSpan.FromSeconds(VisualsChangeDelay) < _gameTiming.CurTime) + { + _lastExternalPowerState = extPowerState; + _lastExternalPowerStateChange = _gameTiming.CurTime; + _uiDirty = true; + } + if (_uiDirty) + { + _userInterface.SetState(new ApcBoundInterfaceState(MainBreakerEnabled, extPowerState, newCharge / Battery.MaxCharge)); + _uiDirty = false; + } + } + + private ApcChargeState CalcChargeState() + { + var chargeFraction = Battery.CurrentCharge / Battery.MaxCharge; + if (chargeFraction > HighPowerThreshold) + { + return ApcChargeState.Full; + } + var consumer = Owner.GetComponent(); + if (consumer.DrawRate == consumer.ReceivedPower) + { + return ApcChargeState.Charging; + } + else + { + return ApcChargeState.Lack; + } + } + + private ApcExternalPowerState CalcExtPowerState() + { + if (!Owner.TryGetComponent(out BatteryStorageComponent batteryStorage)) + { + return ApcExternalPowerState.None; + } + var consumer = batteryStorage.Consumer; + if (consumer.ReceivedPower == 0 && consumer.DrawRate != 0) + { + return ApcExternalPowerState.None; + } + else if (consumer.ReceivedPower < consumer.DrawRate) + { + return ApcExternalPowerState.Low; + } + else + { + return ApcExternalPowerState.Good; + } + } + + void IActivate.Activate(ActivateEventArgs eventArgs) + { + if (!eventArgs.User.TryGetComponent(out IActorComponent actor)) + { + return; + } + _userInterface.Open(actor.playerSession); + } + } +} diff --git a/Content.Server/GameObjects/Components/Power/ApcNetComponents/BaseApcNetComponent.cs b/Content.Server/GameObjects/Components/Power/ApcNetComponents/BaseApcNetComponent.cs new file mode 100644 index 0000000000..b8f6c13d15 --- /dev/null +++ b/Content.Server/GameObjects/Components/Power/ApcNetComponents/BaseApcNetComponent.cs @@ -0,0 +1,9 @@ +using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; + +namespace Content.Server.GameObjects.Components.Power.ApcNetComponents +{ + public abstract class BaseApcNetComponent : BaseNetConnectorComponent + { + protected override IApcNet NullNet => ApcNetNodeGroup.NullNet; + } +} diff --git a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerProviderComponent.cs b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerProviderComponent.cs new file mode 100644 index 0000000000..94f789252a --- /dev/null +++ b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerProviderComponent.cs @@ -0,0 +1,131 @@ +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.Serialization; +using Robust.Shared.ViewVariables; +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Content.Server.GameObjects.Components.Power.ApcNetComponents +{ + /// + /// Relays s in an area to a so they can receive power. + /// + public interface IPowerProvider + { + void AddReceiver(PowerReceiverComponent receiver); + + void RemoveReceiver(PowerReceiverComponent receiver); + } + + [RegisterComponent] + public class PowerProviderComponent : BaseApcNetComponent, IPowerProvider + { + public override string Name => "PowerProvider"; + + /// + /// The max distance this can transmit power to s from. + /// + [ViewVariables(VVAccess.ReadWrite)] + public int PowerTransferRange { get => _powerTransferRange; set => SetPowerTransferRange(value); } + private int _powerTransferRange; + + [ViewVariables] + public IReadOnlyList LinkedReceivers => _linkedReceivers; + private List _linkedReceivers = new List(); + + /// + /// If s should consider connecting to this. + /// + [ViewVariables(VVAccess.ReadWrite)] + public bool Connectable { get; private set; } = true; + + public static readonly IPowerProvider NullProvider = new NullPowerProvider(); + + public void AddReceiver(PowerReceiverComponent receiver) + { + _linkedReceivers.Add(receiver); + Net.UpdatePowerProviderReceivers(this); + } + + public void RemoveReceiver(PowerReceiverComponent receiver) + { + _linkedReceivers.Remove(receiver); + Net.UpdatePowerProviderReceivers(this); + } + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _powerTransferRange, "powerTransferRange", 3); + } + + protected override void Startup() + { + base.Startup(); + foreach (var receiver in FindAvailableReceivers()) + { + receiver.Provider = this; + } + } + + public override void OnRemove() + { + Connectable = false; + var receivers = _linkedReceivers.ToArray(); + foreach (var receiver in receivers) + { + receiver.ClearProvider(); + } + _linkedReceivers = new List(); + Net.UpdatePowerProviderReceivers(this); + foreach (var receiver in receivers) + { + receiver.TryFindAndSetProvider(); + } + base.OnRemove(); + } + + private List FindAvailableReceivers() + { + var mapManager = IoCManager.Resolve(); + var nearbyEntities = IoCManager.Resolve() + .GetEntitiesInRange(Owner, PowerTransferRange); + return nearbyEntities.Select(entity => entity.TryGetComponent(out var receiver) ? receiver : null) + .Where(receiver => receiver != null) + .Where(receiver => receiver.NeedsProvider) + .Where(receiver => receiver.Owner.Transform.GridPosition.Distance(mapManager, Owner.Transform.GridPosition) < Math.Min(PowerTransferRange, receiver.PowerReceptionRange)) + .ToList(); + } + + protected override void AddSelfToNet(IApcNet apcNet) + { + apcNet.AddPowerProvider(this); + } + + protected override void RemoveSelfFromNet(IApcNet apcNet) + { + apcNet.RemovePowerProvider(this); + } + + private void SetPowerTransferRange(int newPowerTransferRange) + { + foreach (var receiver in _linkedReceivers) + { + receiver.ClearProvider(); + } + _powerTransferRange = newPowerTransferRange; + _linkedReceivers = FindAvailableReceivers(); + Net.UpdatePowerProviderReceivers(this); + } + + private class NullPowerProvider : IPowerProvider + { + public void AddReceiver(PowerReceiverComponent receiver) { } + public void RemoveReceiver(PowerReceiverComponent receiver) { } + } + } +} diff --git a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverComponent.cs b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverComponent.cs new file mode 100644 index 0000000000..2839482512 --- /dev/null +++ b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverComponent.cs @@ -0,0 +1,198 @@ +using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; +using Content.Shared.GameObjects.Components.Power; +using Robust.Server.GameObjects; +using Robust.Server.Interfaces.GameObjects; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.Map; +using Robust.Shared.IoC; +using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; +using System; + +namespace Content.Server.GameObjects.Components.Power.ApcNetComponents +{ + /// + /// Attempts to link with a nearby s so that it can receive power from a . + /// + [RegisterComponent] + public class PowerReceiverComponent : Component + { + public override string Name => "PowerReceiver"; + + public event EventHandler OnPowerStateChanged; + + [ViewVariables] + public bool Powered => (HasApcPower || !NeedsPower) && !PowerDisabled; + + [ViewVariables] + public bool HasApcPower { get => _hasApcPower; set => SetHasApcPower(value); } + private bool _hasApcPower; + + /// + /// The max distance from a that this can receive power from. + /// + [ViewVariables(VVAccess.ReadWrite)] + public int PowerReceptionRange { get => _powerReceptionRange; set => SetPowerReceptionRange(value); } + private int _powerReceptionRange; + + [ViewVariables] + public IPowerProvider Provider { get => _provider; set => SetProvider(value); } + private IPowerProvider _provider = PowerProviderComponent.NullProvider; + + [ViewVariables] + public bool NeedsProvider { get; private set; } = true; + + /// + /// Amount of charge this needs from an APC per second to function. + /// + [ViewVariables] + public int Load { get => _load; set => SetLoad(value); } + private int _load; + + /// + /// When true, causes this to appear powered even if not receiving power from an Apc. + /// + [ViewVariables(VVAccess.ReadWrite)] + public bool NeedsPower { get => _needsPower; set => SetNeedsPower(value); } + private bool _needsPower; + + /// + /// When true, causes this to never appear powered. + /// + public bool PowerDisabled { get => _powerDisabled; set => SetPowerDisabled(value); } + private bool _powerDisabled; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _powerReceptionRange, "powerReceptionRange", 3); + serializer.DataField(ref _load, "powerLoad", 5); + serializer.DataField(ref _needsPower, "needsPower", true); + serializer.DataField(ref _powerDisabled, "powerDisabled", false); + } + + protected override void Startup() + { + base.Startup(); + if (NeedsProvider) + { + TryFindAndSetProvider(); + } + } + + public override void OnRemove() + { + _provider.RemoveReceiver(this); + base.OnRemove(); + } + + public void TryFindAndSetProvider() + { + if (TryFindAvailableProvider(out var provider)) + { + Provider = provider; + } + } + + private bool TryFindAvailableProvider(out IPowerProvider foundProvider) + { + var nearbyEntities = IoCManager.Resolve() + .GetEntitiesInRange(Owner, PowerReceptionRange); + var mapManager = IoCManager.Resolve(); + foreach (var entity in nearbyEntities) + { + if (entity.TryGetComponent(out var provider)) + { + if (provider.Connectable) + { + var distanceToProvider = provider.Owner.Transform.GridPosition.Distance(mapManager, Owner.Transform.GridPosition); + if (distanceToProvider < Math.Min(PowerReceptionRange, provider.PowerTransferRange)) + { + foundProvider = provider; + return true; + } + } + } + } + foundProvider = default; + return false; + } + + public void ClearProvider() + { + _provider.RemoveReceiver(this); + _provider = PowerProviderComponent.NullProvider; + NeedsProvider = true; + HasApcPower = false; + } + + private void SetProvider(IPowerProvider newProvider) + { + _provider.RemoveReceiver(this); + _provider = newProvider; + newProvider.AddReceiver(this); + NeedsProvider = false; + } + + private void SetHasApcPower(bool newHasApcPower) + { + var oldPowered = Powered; + _hasApcPower = newHasApcPower; + if (oldPowered != Powered) + { + OnNewPowerState(); + } + } + + private void SetPowerReceptionRange(int newPowerReceptionRange) + { + ClearProvider(); + _powerReceptionRange = newPowerReceptionRange; + TryFindAndSetProvider(); + } + + private void SetLoad(int newLoad) + { + _load = newLoad; + } + + private void SetNeedsPower(bool newNeedsPower) + { + var oldPowered = Powered; + _needsPower = newNeedsPower; + if (oldPowered != Powered) + { + OnNewPowerState(); + } + } + + private void SetPowerDisabled(bool newPowerDisabled) + { + var oldPowered = Powered; + _powerDisabled = newPowerDisabled; + if (oldPowered != Powered) + { + OnNewPowerState(); + } + } + + private void OnNewPowerState() + { + OnPowerStateChanged?.Invoke(this, new PowerStateEventArgs(Powered)); + if (Owner.TryGetComponent(out AppearanceComponent appearance)) + { + appearance.SetData(PowerDeviceVisuals.Powered, Powered); + } + } + } + + public class PowerStateEventArgs : EventArgs + { + public readonly bool Powered; + + public PowerStateEventArgs(bool powered) + { + Powered = powered; + } + } +} diff --git a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/BaseCharger.cs b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/BaseCharger.cs new file mode 100644 index 0000000000..7645f43d8d --- /dev/null +++ b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/BaseCharger.cs @@ -0,0 +1,282 @@ +using System; +using Content.Server.GameObjects.Components.Power.ApcNetComponents; +using Content.Server.GameObjects.Components.Weapon.Ranged.Barrels; +using Content.Server.GameObjects.EntitySystems; +using Content.Shared.GameObjects; +using Content.Shared.GameObjects.Components.Power; +using Content.Shared.GameObjects.EntitySystems; +using Content.Shared.Interfaces; +using Robust.Server.GameObjects; +using Robust.Server.GameObjects.Components.Container; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.IoC; +using Robust.Shared.Localization; +using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; + +namespace Content.Server.GameObjects.Components.Power.Chargers +{ + [ComponentReference(typeof(IActivate))] + [ComponentReference(typeof(IInteractUsing))] + public abstract class BaseCharger : Component, IActivate, IInteractUsing + { + [ViewVariables] + private BatteryComponent _heldBattery; + + [ViewVariables] + private ContainerSlot _container; + + [ViewVariables] + private PowerReceiverComponent _powerReceiver; + + [ViewVariables] + private CellChargerStatus _status; + + private AppearanceComponent _appearanceComponent; + + [ViewVariables] + private int _chargeRate; + + [ViewVariables] + private float _transferEfficiency; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _chargeRate, "chargeRate", 100); + serializer.DataField(ref _transferEfficiency, "transferEfficiency", 0.85f); + } + + public override void Initialize() + { + base.Initialize(); + _powerReceiver = Owner.GetComponent(); + _container = ContainerManagerComponent.Ensure($"{Name}-powerCellContainer", Owner); + _appearanceComponent = Owner.GetComponent(); + // Default state in the visualizer is OFF, so when this gets powered on during initialization it will generally show empty + _powerReceiver.OnPowerStateChanged += PowerUpdate; + } + + public override void OnRemove() + { + _powerReceiver.OnPowerStateChanged -= PowerUpdate; + base.OnRemove(); + } + + bool IInteractUsing.InteractUsing(InteractUsingEventArgs eventArgs) + { + var result = TryInsertItem(eventArgs.Using); + if (!result) + { + var localizationManager = IoCManager.Resolve(); + eventArgs.User.PopupMessage(Owner, localizationManager.GetString("Unable to insert capacitor")); + } + + return result; + } + + void IActivate.Activate(ActivateEventArgs eventArgs) + { + RemoveItem(eventArgs.User); + } + + /// + /// This will remove the item directly into the user's hand / floor + /// + /// + private void RemoveItem(IEntity user) + { + var heldItem = _container.ContainedEntity; + if (heldItem == null) + { + return; + } + + _container.Remove(heldItem); + _heldBattery = null; + if (user.TryGetComponent(out HandsComponent handsComponent)) + { + handsComponent.PutInHandOrDrop(heldItem.GetComponent()); + } + + if (heldItem.TryGetComponent(out ServerBatteryBarrelComponent batteryBarrelComponent)) + { + batteryBarrelComponent.UpdateAppearance(); + } + + UpdateStatus(); + } + + private void PowerUpdate(object sender, PowerStateEventArgs eventArgs) + { + UpdateStatus(); + } + + [Verb] + private sealed class InsertVerb : Verb + { + protected override void GetData(IEntity user, BaseCharger component, VerbData data) + { + if (!ActionBlockerSystem.CanInteract(user)) + { + data.Visibility = VerbVisibility.Invisible; + return; + } + if (!user.TryGetComponent(out HandsComponent handsComponent)) + { + data.Visibility = VerbVisibility.Invisible; + return; + } + + if (component._container.ContainedEntity != null || handsComponent.GetActiveHand == null) + { + data.Visibility = VerbVisibility.Disabled; + data.Text = "Insert"; + return; + } + + data.Text = $"Insert {handsComponent.GetActiveHand.Owner.Name}"; + } + + protected override void Activate(IEntity user, BaseCharger component) + { + if (!user.TryGetComponent(out HandsComponent handsComponent)) + { + return; + } + + if (handsComponent.GetActiveHand == null) + { + return; + } + var userItem = handsComponent.GetActiveHand.Owner; + handsComponent.Drop(userItem); + component.TryInsertItem(userItem); + } + } + + [Verb] + private sealed class EjectVerb : Verb + { + protected override void GetData(IEntity user, BaseCharger component, VerbData data) + { + if (!ActionBlockerSystem.CanInteract(user)) + { + data.Visibility = VerbVisibility.Invisible; + return; + } + if (component._container.ContainedEntity == null) + { + data.Text = "Eject"; + data.Visibility = VerbVisibility.Disabled; + return; + } + + data.Text = $"Eject {component._container.ContainedEntity.Name}"; + } + + protected override void Activate(IEntity user, BaseCharger component) + { + component.RemoveItem(user); + } + } + + private CellChargerStatus GetStatus() + { + if (!_powerReceiver.Powered) + { + return CellChargerStatus.Off; + } + if (_container.ContainedEntity == null) + { + return CellChargerStatus.Empty; + } + if (_heldBattery != null && Math.Abs(_heldBattery.MaxCharge - _heldBattery.CurrentCharge) < 0.01) + { + return CellChargerStatus.Charged; + } + return CellChargerStatus.Charging; + } + + private bool TryInsertItem(IEntity entity) + { + if (!IsEntityCompatible(entity) || _container.ContainedEntity != null) + { + return false; + } + if (!_container.Insert(entity)) + { + return false; + } + _heldBattery = GetBatteryFrom(entity); + UpdateStatus(); + return true; + } + + /// + /// If the supplied entity should fit into the charger. + /// + protected abstract bool IsEntityCompatible(IEntity entity); + + protected abstract BatteryComponent GetBatteryFrom(IEntity entity); + + private void UpdateStatus() + { + // Not called UpdateAppearance just because it messes with the load + var status = GetStatus(); + if (_status == status) + { + return; + } + _status = status; + switch (_status) + { + // Update load just in case + case CellChargerStatus.Off: + _powerReceiver.Load = 0; + _appearanceComponent?.SetData(CellVisual.Light, CellChargerStatus.Off); + break; + case CellChargerStatus.Empty: + _powerReceiver.Load = 0; + _appearanceComponent?.SetData(CellVisual.Light, CellChargerStatus.Empty); ; + break; + case CellChargerStatus.Charging: + _powerReceiver.Load = (int) (_chargeRate / _transferEfficiency); + _appearanceComponent?.SetData(CellVisual.Light, CellChargerStatus.Charging); + break; + case CellChargerStatus.Charged: + _powerReceiver.Load = 0; + _appearanceComponent?.SetData(CellVisual.Light, CellChargerStatus.Charged); + break; + default: + throw new ArgumentOutOfRangeException(); + } + _appearanceComponent?.SetData(CellVisual.Occupied, _container.ContainedEntity != null); + } + + public void OnUpdate(float frameTime) //todo: make single system for this + { + if (_status == CellChargerStatus.Empty || _status == CellChargerStatus.Charged || _container.ContainedEntity == null) + { + return; + } + TransferPower(frameTime); + } + + private void TransferPower(float frameTime) + { + if (!_powerReceiver.Powered) + { + return; + } + _heldBattery.CurrentCharge += _chargeRate * frameTime; + // Just so the sprite won't be set to 99.99999% visibility + if (_heldBattery.MaxCharge - _heldBattery.CurrentCharge < 0.01) + { + _heldBattery.CurrentCharge = _heldBattery.MaxCharge; + } + UpdateStatus(); + } + } +} diff --git a/Content.Server/GameObjects/Components/Power/LightBulbComponent.cs b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/LightBulbComponent.cs similarity index 98% rename from Content.Server/GameObjects/Components/Power/LightBulbComponent.cs rename to Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/LightBulbComponent.cs index fd865a8b87..62742bb113 100644 --- a/Content.Server/GameObjects/Components/Power/LightBulbComponent.cs +++ b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/LightBulbComponent.cs @@ -68,8 +68,8 @@ namespace Content.Server.GameObjects.Components.Power private int _burningTemperature; public int BurningTemperature => _burningTemperature; - private float _powerUse; - public float PowerUse => _powerUse; + private int _powerUse; + public int PowerUse => _powerUse; /// /// The current state of the light bulb. Invokes the OnLightBulbStateChange event when set. diff --git a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/PowerCellChargerComponent.cs b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/PowerCellChargerComponent.cs new file mode 100644 index 0000000000..ba066745d3 --- /dev/null +++ b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/PowerCellChargerComponent.cs @@ -0,0 +1,27 @@ +using Content.Server.GameObjects.EntitySystems; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; + +namespace Content.Server.GameObjects.Components.Power.Chargers +{ + /// + /// Recharges an entity with a . + /// + [RegisterComponent] + [ComponentReference(typeof(IActivate))] + [ComponentReference(typeof(BaseCharger))] + public sealed class PowerCellChargerComponent : BaseCharger + { + public override string Name => "PowerCellCharger"; + + protected override bool IsEntityCompatible(IEntity entity) + { + return entity.HasComponent(); + } + + protected override BatteryComponent GetBatteryFrom(IEntity entity) + { + return entity.GetComponent(); + } + } +} diff --git a/Content.Server/GameObjects/Components/Power/PoweredLightComponent.cs b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/PoweredLightComponent.cs similarity index 91% rename from Content.Server/GameObjects/Components/Power/PoweredLightComponent.cs rename to Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/PoweredLightComponent.cs index f0fcfbb807..4847424727 100644 --- a/Content.Server/GameObjects/Components/Power/PoweredLightComponent.cs +++ b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/PoweredLightComponent.cs @@ -1,4 +1,5 @@ using System; +using Content.Server.GameObjects.Components.Power.ApcNetComponents; using Content.Server.GameObjects.Components.Sound; using Content.Server.GameObjects.EntitySystems; using Content.Server.Utility; @@ -148,12 +149,12 @@ namespace Content.Server.GameObjects.Components.Power /// public void UpdateLight() { - var device = Owner.GetComponent(); + var powerReceiver = Owner.GetComponent(); var sprite = Owner.GetComponent(); var light = Owner.GetComponent(); if (LightBulb == null) // No light bulb. { - device.Load = 0; + powerReceiver.Load = 0; sprite.LayerSetState(0, "empty"); light.Enabled = false; return; @@ -162,8 +163,8 @@ namespace Content.Server.GameObjects.Components.Power switch (LightBulb.State) { case LightBulbState.Normal: - device.Load = LightBulb.PowerUse; - if (device.Powered) + powerReceiver.Load = LightBulb.PowerUse; + if (powerReceiver.Powered) { sprite.LayerSetState(0, "on"); light.Enabled = true; @@ -182,12 +183,12 @@ namespace Content.Server.GameObjects.Components.Power } break; case LightBulbState.Broken: - device.Load = 0; + powerReceiver.Load = 0; sprite.LayerSetState(0, "broken"); light.Enabled = false; break; case LightBulbState.Burned: - device.Load = 0; + powerReceiver.Load = 0; sprite.LayerSetState(0, "burned"); light.Enabled = false; break; @@ -198,8 +199,7 @@ namespace Content.Server.GameObjects.Components.Power { base.Initialize(); - var device = Owner.GetComponent(); - device.OnPowerStateChanged += UpdateLight; + Owner.GetComponent().OnPowerStateChanged += UpdateLight; _lightBulbContainer = ContainerManagerComponent.Ensure("light_bulb", Owner, out var existed); @@ -216,5 +216,11 @@ namespace Content.Server.GameObjects.Components.Power } } } + + public override void OnRemove() + { + Owner.GetComponent().OnPowerStateChanged -= UpdateLight; + base.OnRemove(); + } } } diff --git a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/WeaponCapacitorChargerComponent.cs b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/WeaponCapacitorChargerComponent.cs new file mode 100644 index 0000000000..4257742afa --- /dev/null +++ b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/WeaponCapacitorChargerComponent.cs @@ -0,0 +1,28 @@ +using Content.Server.GameObjects.Components.Weapon.Ranged.Barrels; +using Content.Server.GameObjects.EntitySystems; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; + +namespace Content.Server.GameObjects.Components.Power.Chargers +{ + /// + /// Recharges the battery in a . + /// + [RegisterComponent] + [ComponentReference(typeof(IActivate))] + [ComponentReference(typeof(BaseCharger))] + public sealed class WeaponCapacitorChargerComponent : BaseCharger + { + public override string Name => "WeaponCapacitorCharger"; + + protected override bool IsEntityCompatible(IEntity entity) + { + return entity.HasComponent(); + } + + protected override BatteryComponent GetBatteryFrom(IEntity entity) + { + return entity.GetComponent().PowerCell; + } + } +} diff --git a/Content.Server/GameObjects/Components/Power/BaseNetConnectorComponent.cs b/Content.Server/GameObjects/Components/Power/BaseNetConnectorComponent.cs new file mode 100644 index 0000000000..d6d4362da0 --- /dev/null +++ b/Content.Server/GameObjects/Components/Power/BaseNetConnectorComponent.cs @@ -0,0 +1,113 @@ +using Content.Server.GameObjects.Components.NodeContainer; +using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; +using Robust.Shared.GameObjects; +using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; +using System.Linq; + +namespace Content.Server.GameObjects.Components.Power +{ + public abstract class BaseNetConnectorComponent : Component + { + [ViewVariables(VVAccess.ReadWrite)] + public Voltage Voltage { get => _voltage; set => SetVoltage(value); } + private Voltage _voltage; + + [ViewVariables] + public TNetType Net { get => _net; set => SetNet(value); } + private TNetType _net; + + protected abstract TNetType NullNet { get; } + + [ViewVariables] + private bool _needsNet = true; + + public override void OnAdd() + { + base.OnAdd(); + _net = NullNet; + } + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _voltage, "voltage", Voltage.High); + } + + public override void Initialize() + { + base.Initialize(); + if (_needsNet) + { + TryFindAndSetNet(); + } + } + + public override void OnRemove() + { + ClearNet(); + base.OnRemove(); + } + + public void TryFindAndSetNet() + { + if (TryFindNet(out var net)) + { + Net = net; + } + } + + public void ClearNet() + { + RemoveSelfFromNet(_net); + _net = NullNet; + _needsNet = true; + } + + protected abstract void AddSelfToNet(TNetType net); + + protected abstract void RemoveSelfFromNet(TNetType net); + + private bool TryFindNet(out TNetType foundNet) + { + if (Owner.TryGetComponent(out var container)) + { + var compatibleNet = container.Nodes + .Where(node => node.NodeGroupID == (NodeGroupID) Voltage) + .Select(node => node.NodeGroup) + .OfType() + .FirstOrDefault(); + + if (compatibleNet != null) + { + foundNet = compatibleNet; + return true; + } + } + foundNet = default; + return false; + } + + private void SetNet(TNetType newNet) + { + RemoveSelfFromNet(_net); + AddSelfToNet(newNet); + _net = newNet; + _needsNet = false; + } + + private void SetVoltage(Voltage newVoltage) + { + ClearNet(); + _voltage = newVoltage; + TryFindAndSetNet(); + } + } + + public enum Voltage + { + High = NodeGroupID.HVPower, + Medium = NodeGroupID.MVPower, + Apc = NodeGroupID.Apc, + } +} diff --git a/Content.Server/GameObjects/Components/Power/BatteryComponent.cs b/Content.Server/GameObjects/Components/Power/BatteryComponent.cs new file mode 100644 index 0000000000..2b52388c18 --- /dev/null +++ b/Content.Server/GameObjects/Components/Power/BatteryComponent.cs @@ -0,0 +1,115 @@ +using Robust.Shared.GameObjects; +using Robust.Shared.Maths; +using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; +using System; + +namespace Content.Server.GameObjects.Components.Power +{ + [RegisterComponent] + public class BatteryComponent : Component + { + public override string Name => "Battery"; + + [ViewVariables(VVAccess.ReadWrite)] + public int MaxCharge { get => _maxCharge; set => SetMaxCharge(value); } + private int _maxCharge; + + [ViewVariables(VVAccess.ReadWrite)] + public float CurrentCharge { get => _currentCharge; set => SetCurrentCharge(value); } + private float _currentCharge; + + [ViewVariables] + public BatteryState BatteryState { get; private set; } + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _maxCharge, "maxCharge", 1000); + serializer.DataField(ref _currentCharge, "startingCharge", 500); + } + + public override void Initialize() + { + base.Initialize(); + UpdateStorageState(); + } + + /// + /// If sufficient charge is avaiable on the battery, use it. Otherwise, don't. + /// + public bool TryUseCharge(float chargeToUse) + { + if (chargeToUse >= CurrentCharge) + { + return false; + } + else + { + CurrentCharge -= chargeToUse; + return true; + } + } + + public float UseCharge(float toDeduct) + { + var chargeChangedBy = Math.Min(CurrentCharge, toDeduct); + CurrentCharge -= chargeChangedBy; + return chargeChangedBy; + } + + public void FillFrom(BatteryComponent battery) + { + var powerDeficit = MaxCharge - CurrentCharge; + if (battery.TryUseCharge(powerDeficit)) + { + CurrentCharge += powerDeficit; + } + else + { + CurrentCharge += battery.CurrentCharge; + battery.CurrentCharge = 0; + } + } + + protected virtual void OnChargeChanged() { } + + private void UpdateStorageState() + { + if (CurrentCharge == MaxCharge) + { + BatteryState = BatteryState.Full; + } + else if (CurrentCharge == 0) + { + BatteryState = BatteryState.Empty; + } + else + { + BatteryState = BatteryState.PartlyFull; + } + } + + private void SetMaxCharge(int newMax) + { + _maxCharge = Math.Max(newMax, 0); + _currentCharge = Math.Min( _currentCharge, MaxCharge); + UpdateStorageState(); + OnChargeChanged(); + } + + private void SetCurrentCharge(float newChargeAmount) + { + _currentCharge = FloatMath.Clamp(newChargeAmount, 0, MaxCharge); + UpdateStorageState(); + OnChargeChanged(); + } + } + + public enum BatteryState + { + Full, + PartlyFull, + Empty + } +} diff --git a/Content.Server/GameObjects/Components/Power/Chargers/BaseCharger.cs b/Content.Server/GameObjects/Components/Power/Chargers/BaseCharger.cs deleted file mode 100644 index 655fa634ca..0000000000 --- a/Content.Server/GameObjects/Components/Power/Chargers/BaseCharger.cs +++ /dev/null @@ -1,144 +0,0 @@ -using System; -using Content.Server.GameObjects.Components.Weapon.Ranged.Barrels; -using Content.Shared.GameObjects.Components.Power; -using Robust.Server.GameObjects; -using Robust.Server.GameObjects.Components.Container; -using Robust.Shared.GameObjects; -using Robust.Shared.Interfaces.GameObjects; -using Robust.Shared.Log; -using Robust.Shared.Serialization; -using Robust.Shared.ViewVariables; - -namespace Content.Server.GameObjects.Components.Power.Chargers -{ - public abstract class BaseCharger : Component - { - - protected IEntity _heldItem; - protected ContainerSlot _container; - protected PowerDeviceComponent _powerDevice; - public CellChargerStatus Status => _status; - protected CellChargerStatus _status; - - protected AppearanceComponent _appearanceComponent; - - public abstract double CellChargePercent { get; } - - // Powered items have their own charge rates, this is just a way to have chargers with different rates as well - public float TransferRatio => _transferRatio; - [ViewVariables] - protected float _transferRatio; - - public float TransferEfficiency => _transferEfficiency; - [ViewVariables] - protected float _transferEfficiency; - - public override void ExposeData(ObjectSerializer serializer) - { - base.ExposeData(serializer); - - serializer.DataField(ref _transferRatio, "transfer_ratio", 0.1f); - serializer.DataField(ref _transferEfficiency, "transfer_efficiency", 0.85f); - } - - public override void Initialize() - { - base.Initialize(); - _powerDevice = Owner.GetComponent(); - if (_powerDevice == null) - { - var exc = new InvalidOperationException("Chargers requires a PowerDevice to function"); - Logger.FatalS("charger", exc.Message); - throw exc; - } - _container = - ContainerManagerComponent.Ensure($"{Name}-powerCellContainer", Owner); - _appearanceComponent = Owner.GetComponent(); - // Default state in the visualizer is OFF, so when this gets powered on during initialization it will generally show empty - _powerDevice.OnPowerStateChanged += PowerUpdate; - } - - /// - /// This will remove the item directly into the user's hand / floor - /// - /// - public void RemoveItem(IEntity user) - { - var heldItem = _container.ContainedEntity; - if (heldItem == null) - { - return; - } - - _container.Remove(heldItem); - if (user.TryGetComponent(out HandsComponent handsComponent)) - { - handsComponent.PutInHandOrDrop(heldItem.GetComponent()); - } - - if (heldItem.TryGetComponent(out ServerBatteryBarrelComponent batteryBarrelComponent)) - { - batteryBarrelComponent.UpdateAppearance(); - } - - UpdateStatus(); - } - - protected void PowerUpdate(object sender, PowerStateEventArgs eventArgs) - { - UpdateStatus(); - } - - protected abstract CellChargerStatus GetStatus(); - protected abstract void TransferPower(float frameTime); - - protected void UpdateStatus() - { - // Not called UpdateAppearance just because it messes with the load - var status = GetStatus(); - - if (_status == status) - { - return; - } - - _status = status; - - switch (_status) - { - // Update load just in case - case CellChargerStatus.Off: - _powerDevice.Load = 0; - _appearanceComponent?.SetData(CellVisual.Light, CellChargerStatus.Off); - break; - case CellChargerStatus.Empty: - _powerDevice.Load = 0; - _appearanceComponent?.SetData(CellVisual.Light, CellChargerStatus.Empty); ; - break; - case CellChargerStatus.Charging: - _appearanceComponent?.SetData(CellVisual.Light, CellChargerStatus.Charging); - break; - case CellChargerStatus.Charged: - _powerDevice.Load = 0; - _appearanceComponent?.SetData(CellVisual.Light, CellChargerStatus.Charged); - break; - default: - throw new ArgumentOutOfRangeException(); - } - - _appearanceComponent?.SetData(CellVisual.Occupied, _container.ContainedEntity != null); - } - - public void OnUpdate(float frameTime) - { - if (_status == CellChargerStatus.Empty || _status == CellChargerStatus.Charged || - _container.ContainedEntity == null) - { - return; - } - - TransferPower(frameTime); - } - - } -} diff --git a/Content.Server/GameObjects/Components/Power/Chargers/PowerCellChargerComponent.cs b/Content.Server/GameObjects/Components/Power/Chargers/PowerCellChargerComponent.cs deleted file mode 100644 index 0cd13e4ecc..0000000000 --- a/Content.Server/GameObjects/Components/Power/Chargers/PowerCellChargerComponent.cs +++ /dev/null @@ -1,193 +0,0 @@ -using System; -using Content.Server.GameObjects.EntitySystems; -using Content.Server.Utility; -using Content.Shared.GameObjects; -using Content.Shared.GameObjects.Components.Power; -using Content.Shared.GameObjects.EntitySystems; -using Content.Shared.Interfaces; -using Robust.Server.GameObjects; -using Robust.Server.GameObjects.Components.Container; -using Robust.Shared.GameObjects; -using Robust.Shared.Interfaces.GameObjects; -using Robust.Shared.IoC; -using Robust.Shared.Localization; - -namespace Content.Server.GameObjects.Components.Power.Chargers -{ - /// - /// This is used for the standalone cell rechargers (e.g. from a flashlight) - /// - [RegisterComponent] - [ComponentReference(typeof(IActivate))] - [ComponentReference(typeof(IInteractUsing))] - public sealed class PowerCellChargerComponent : BaseCharger, IActivate, IInteractUsing - { - public override string Name => "PowerCellCharger"; - public override double CellChargePercent => _container.ContainedEntity != null ? - _container.ContainedEntity.GetComponent().Charge / - _container.ContainedEntity.GetComponent().Capacity * 100 : 0.0f; - - public override void Initialize() - { - base.Initialize(); - _powerDevice = Owner.GetComponent(); - _container = - ContainerManagerComponent.Ensure($"{Name}-powerCellContainer", Owner); - _appearanceComponent = Owner.GetComponent(); - // Default state in the visualizer is OFF, so when this gets powered on during initialization it will generally show empty - _powerDevice.OnPowerStateChanged += PowerUpdate; - } - - bool IInteractUsing.InteractUsing(InteractUsingEventArgs eventArgs) - { - var result = TryInsertItem(eventArgs.Using); - if (result) - { - return true; - } - - var localizationManager = IoCManager.Resolve(); - eventArgs.User.PopupMessage(Owner, localizationManager.GetString("Unable to insert capacitor")); - - return false; - } - - void IActivate.Activate(ActivateEventArgs eventArgs) - { - RemoveItem(eventArgs.User); - } - - [Verb] - private sealed class InsertVerb : Verb - { - protected override void GetData(IEntity user, PowerCellChargerComponent component, VerbData data) - { - if (!ActionBlockerSystem.CanInteract(user)) - { - data.Visibility = VerbVisibility.Invisible; - return; - } - - if (!user.TryGetComponent(out HandsComponent handsComponent)) - { - data.Visibility = VerbVisibility.Invisible; - return; - } - - if (component._container.ContainedEntity != null || handsComponent.GetActiveHand == null) - { - data.Visibility = VerbVisibility.Disabled; - data.Text = "Insert"; - return; - } - - data.Text = $"Insert {handsComponent.GetActiveHand.Owner.Name}"; - } - - protected override void Activate(IEntity user, PowerCellChargerComponent component) - { - if (!user.TryGetComponent(out HandsComponent handsComponent)) - { - return; - } - - if (handsComponent.GetActiveHand == null) - { - return; - } - var userItem = handsComponent.GetActiveHand.Owner; - handsComponent.Drop(userItem); - component.TryInsertItem(userItem); - } - } - - [Verb] - private sealed class EjectVerb : Verb - { - protected override void GetData(IEntity user, PowerCellChargerComponent component, VerbData data) - { - if (!ActionBlockerSystem.CanInteract(user)) - { - data.Visibility = VerbVisibility.Invisible; - return; - } - - if (component._container.ContainedEntity == null) - { - data.Text = "Eject"; - data.Visibility = VerbVisibility.Disabled; - return; - } - - data.Text = $"Eject {component._container.ContainedEntity.Name}"; - } - - protected override void Activate(IEntity user, PowerCellChargerComponent component) - { - component.RemoveItem(user); - } - } - - public bool TryInsertItem(IEntity entity) - { - if (!entity.HasComponent() || - _container.ContainedEntity != null) - { - return false; - } - - if (!_container.Insert(entity)) - { - return false; - } - UpdateStatus(); - return true; - } - - protected override CellChargerStatus GetStatus() - { - if (!_powerDevice.Powered) - { - return CellChargerStatus.Off; - } - - if (_container.ContainedEntity == null) - { - return CellChargerStatus.Empty; - } - - if (_container.ContainedEntity.TryGetComponent(out PowerCellComponent component) && - Math.Abs(component.Capacity - component.Charge) < 0.01) - { - return CellChargerStatus.Charged; - } - - return CellChargerStatus.Charging; - } - - protected override void TransferPower(float frameTime) - { - // Two numbers: One for how much power actually goes into the device (chargeAmount) and - // chargeLoss which is how much is drawn from the powernet - var cellComponent = _container.ContainedEntity.GetComponent(); - var chargeLoss = cellComponent.RequestCharge(frameTime) * _transferRatio; - _powerDevice.Load = chargeLoss; - - if (!_powerDevice.Powered) - { - // No power: Event should update to Off status - return; - } - - var chargeAmount = chargeLoss * _transferEfficiency; - - cellComponent.AddCharge(chargeAmount); - // Just so the sprite won't be set to 99.99999% visibility - if (cellComponent.Capacity - cellComponent.Charge < 0.01) - { - cellComponent.Charge = cellComponent.Capacity; - } - UpdateStatus(); - } - } -} diff --git a/Content.Server/GameObjects/Components/Power/Chargers/WeaponCapacitorChargerComponent.cs b/Content.Server/GameObjects/Components/Power/Chargers/WeaponCapacitorChargerComponent.cs deleted file mode 100644 index a376d37300..0000000000 --- a/Content.Server/GameObjects/Components/Power/Chargers/WeaponCapacitorChargerComponent.cs +++ /dev/null @@ -1,183 +0,0 @@ -using System; -using Content.Server.GameObjects.Components.Weapon.Ranged.Barrels; -using Content.Server.GameObjects.EntitySystems; -using Content.Shared.GameObjects; -using Content.Shared.GameObjects.Components.Power; -using Content.Shared.GameObjects.EntitySystems; -using Content.Shared.Interfaces; -using Robust.Shared.GameObjects; -using Robust.Shared.Interfaces.GameObjects; -using Robust.Shared.IoC; -using Robust.Shared.Localization; - -namespace Content.Server.GameObjects.Components.Power.Chargers -{ - /// - /// This is used for the lasergun / flash rechargers - /// - [RegisterComponent] - [ComponentReference(typeof(IActivate))] - [ComponentReference(typeof(IInteractUsing))] - public sealed class WeaponCapacitorChargerComponent : BaseCharger, IActivate, IInteractUsing - { - public override string Name => "WeaponCapacitorCharger"; - public override double CellChargePercent => _container.ContainedEntity != null ? - _container.ContainedEntity.GetComponent().PowerCell.Charge / - _container.ContainedEntity.GetComponent().PowerCell.Capacity * 100 : 0.0f; - - bool IInteractUsing.InteractUsing(InteractUsingEventArgs eventArgs) - { - var result = TryInsertItem(eventArgs.Using); - if (!result) - { - var localizationManager = IoCManager.Resolve(); - eventArgs.User.PopupMessage(Owner, localizationManager.GetString("Unable to insert capacitor")); - } - - return result; - } - - void IActivate.Activate(ActivateEventArgs eventArgs) - { - RemoveItem(eventArgs.User); - } - - [Verb] - private sealed class InsertVerb : Verb - { - protected override void GetData(IEntity user, WeaponCapacitorChargerComponent component, VerbData data) - { - if (!ActionBlockerSystem.CanInteract(user)) - { - data.Visibility = VerbVisibility.Invisible; - return; - } - - if (!user.TryGetComponent(out HandsComponent handsComponent)) - { - data.Visibility = VerbVisibility.Invisible; - return; - } - - if (handsComponent.GetActiveHand == null) - { - data.Visibility = VerbVisibility.Disabled; - data.Text = "Insert"; - return; - } - - if (component._container.ContainedEntity != null) - { - data.Visibility = VerbVisibility.Disabled; - } - - data.Text = $"Insert {handsComponent.GetActiveHand.Owner.Name}"; - } - - protected override void Activate(IEntity user, WeaponCapacitorChargerComponent component) - { - if (!user.TryGetComponent(out HandsComponent handsComponent)) - { - return; - } - - if (handsComponent.GetActiveHand == null) - { - return; - } - var userItem = handsComponent.GetActiveHand.Owner; - handsComponent.Drop(userItem); - component.TryInsertItem(userItem); - } - } - - [Verb] - private sealed class EjectVerb : Verb - { - protected override void GetData(IEntity user, WeaponCapacitorChargerComponent component, VerbData data) - { - if (!ActionBlockerSystem.CanInteract(user)) - { - data.Visibility = VerbVisibility.Invisible; - return; - } - - if (component._container.ContainedEntity == null) - { - data.Visibility = VerbVisibility.Disabled; - data.Text = "Eject"; - return; - } - - data.Text = $"Eject {component._container.ContainedEntity.Name}"; - } - - protected override void Activate(IEntity user, WeaponCapacitorChargerComponent component) - { - component.RemoveItem(user); - } - } - - public bool TryInsertItem(IEntity entity) - { - if (!entity.HasComponent() || - _container.ContainedEntity != null) - { - return false; - } - - if (!_container.Insert(entity)) - { - return false; - } - UpdateStatus(); - return true; - } - - protected override CellChargerStatus GetStatus() - { - if (!_powerDevice.Powered) - { - return CellChargerStatus.Off; - } - - if (_container.ContainedEntity == null) - { - return CellChargerStatus.Empty; - } - - if (_container.ContainedEntity.TryGetComponent(out ServerBatteryBarrelComponent component) && - Math.Abs(component.PowerCell.Capacity - component.PowerCell.Charge) < 0.01) - { - return CellChargerStatus.Charged; - } - - return CellChargerStatus.Charging; - } - - protected override void TransferPower(float frameTime) - { - // Two numbers: One for how much power actually goes into the device (chargeAmount) and - // chargeLoss which is how much is drawn from the powernet - var powerCell = _container.ContainedEntity.GetComponent().PowerCell; - var chargeLoss = powerCell.RequestCharge(frameTime) * _transferRatio; - _powerDevice.Load = chargeLoss; - - if (!_powerDevice.Powered) - { - // No power: Event should update to Off status - return; - } - - var chargeAmount = chargeLoss * _transferEfficiency; - - powerCell.AddCharge(chargeAmount); - // Just so the sprite won't be set to 99.99999% visibility - if (powerCell.Capacity - powerCell.Charge < 0.01) - { - powerCell.Charge = powerCell.Capacity; - } - UpdateStatus(); - } - } -} diff --git a/Content.Server/GameObjects/Components/Power/PowerCellComponent.cs b/Content.Server/GameObjects/Components/Power/PowerCellComponent.cs index fdaaf412be..ca14c4aa44 100644 --- a/Content.Server/GameObjects/Components/Power/PowerCellComponent.cs +++ b/Content.Server/GameObjects/Components/Power/PowerCellComponent.cs @@ -1,53 +1,37 @@ -using Content.Shared.GameObjects.Components.Power; +using Content.Shared.GameObjects.Components.Power; using Robust.Server.GameObjects; using Robust.Shared.GameObjects; namespace Content.Server.GameObjects.Components.Power { + /// + /// Batteries that have update an based on their charge percent. + /// [RegisterComponent] - [ComponentReference(typeof(PowerStorageComponent))] - public class PowerCellComponent : PowerStorageComponent + [ComponentReference(typeof(BatteryComponent))] + public class PowerCellComponent : BatteryComponent { public override string Name => "PowerCell"; private AppearanceComponent _appearance; - public override float Charge - { - get => base.Charge; - set - { - base.Charge = value; - _updateAppearance(); - } - } - public override void Initialize() { base.Initialize(); - - Owner.TryGetComponent(out _appearance); + _appearance = Owner.GetComponent(); + CurrentCharge = MaxCharge; + UpdateVisuals(); } - public override void DeductCharge(float toDeduct) + protected override void OnChargeChanged() { - base.DeductCharge(toDeduct); - - _updateAppearance(); - ChargeChanged(); + base.OnChargeChanged(); + UpdateVisuals(); } - public override void AddCharge(float charge) + private void UpdateVisuals() { - base.AddCharge(charge); - - _updateAppearance(); - ChargeChanged(); - } - - private void _updateAppearance() - { - _appearance?.SetData(PowerCellVisuals.ChargeLevel, Charge / Capacity); + _appearance?.SetData(PowerCellVisuals.ChargeLevel, CurrentCharge / MaxCharge); } } } diff --git a/Content.Server/GameObjects/Components/Power/PowerDebugTool.cs b/Content.Server/GameObjects/Components/Power/PowerDebugTool.cs deleted file mode 100644 index fe17946205..0000000000 --- a/Content.Server/GameObjects/Components/Power/PowerDebugTool.cs +++ /dev/null @@ -1,108 +0,0 @@ -using System; -using System.Text; -using Content.Server.GameObjects.EntitySystems; -using Content.Shared.GameObjects.Components.Power; -using Robust.Server.Interfaces.GameObjects; -using Robust.Shared.GameObjects; -using Robust.Shared.Interfaces.GameObjects; -using Robust.Shared.Interfaces.GameObjects.Components; - -namespace Content.Server.GameObjects.Components.Power -{ - [RegisterComponent] - public class PowerDebugTool : SharedPowerDebugTool, IAfterInteract - { - void IAfterInteract.AfterInteract(AfterInteractEventArgs eventArgs) - { - if (eventArgs.Target == null) - { - return; - } - - var builder = new StringBuilder(); - - builder.AppendFormat("Entity: {0} ({1})\n", eventArgs.Target.Name, eventArgs.Target.Uid); - - if (eventArgs.Target.TryGetComponent(out var node)) - { - builder.AppendFormat("Power Node:\n"); - if (node.Parent == null) - { - builder.Append(" No Powernet!\n"); - } - else - { - var net = node.Parent; - builder.AppendFormat(@" Powernet: {0} - Wires: {1}, Nodes: {2} - Generators: {3}, Loaders: {4}, - StorageS: {5}, StorageC: {6}, - Load: {7}, Supply: {8}, - LAvail: {9}, LDraw: {10}, - LDemand: {11}, LDemandWS: {12}, -", - net.Uid, - net.NodeList.Count, net.WireList.Count, - net.GeneratorCount, net.DeviceCount, - net.PowerStorageSupplierCount, net.PowerStorageConsumerCount, - net.Load, net.Supply, - net.LastTotalAvailable, net.LastTotalDraw, - net.LastTotalDemand, net.LastTotalDemandWithSuppliers); - } - } - - if (eventArgs.Target.TryGetComponent(out var device)) - { - builder.AppendFormat(@"Power Device: - Load: {0} W - Priority: {1} - Drawtype: {2}, Connected: {3} - Powered: {4} -", device.Load, device.Priority, device.DrawType, device.Connected, device.Powered); - - if (device.Connected == DrawTypes.Provider || device.Connected == DrawTypes.Both) - { - builder.Append(" Providers:\n"); - foreach (var provider in device.AvailableProviders) - { - var providerTransform = provider.Owner.GetComponent(); - builder.AppendFormat(" {0} ({1}) @ {2}", provider.Owner.Name, provider.Owner.Uid, providerTransform.GridPosition); - if (device.Provider == provider) - { - builder.Append(" (CURRENT)"); - } - builder.Append('\n'); - } - } - } - - if (eventArgs.Target.TryGetComponent(out var storage)) - { - var stateSeconds = (DateTime.Now - storage.LastChargeStateChange).TotalSeconds; - builder.AppendFormat(@"Power Storage: - Capacity: {0}, Charge: {1}, ChargeRate: {2}, DistributionRate: {3}, ChargePowernet: {4} - LastChargeState: {5} ({6}), LastChargeStateChange: {7:0.00} seconds ago. -", storage.Capacity, storage.Charge, storage.ChargeRate, storage.DistributionRate, storage.ChargePowernet, storage.LastChargeState, storage.GetChargeState(), stateSeconds); - } - - if (eventArgs.Target.TryGetComponent(out var transfer)) - { - builder.AppendFormat(@"Power Transfer: - Powernet: {0} -", transfer.Parent.Uid); - } - - OpenDataWindowClientSide(eventArgs.User, builder.ToString()); - } - - private void OpenDataWindowClientSide(IEntity user, string data) - { - if (!user.TryGetComponent(out var actor)) - { - return; - } - - SendNetworkMessage(new OpenDataWindowMsg(data), actor.playerSession.ConnectedClient); - } - } -} diff --git a/Content.Server/GameObjects/Components/Power/PowerDevice.cs b/Content.Server/GameObjects/Components/Power/PowerDevice.cs deleted file mode 100644 index 03e7bd363a..0000000000 --- a/Content.Server/GameObjects/Components/Power/PowerDevice.cs +++ /dev/null @@ -1,432 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Content.Server.GameObjects.EntitySystems; -using Content.Shared.GameObjects.Components.Power; -using Robust.Server.GameObjects; -using Robust.Shared.GameObjects; -using Robust.Shared.Interfaces.GameObjects; -using Robust.Shared.Interfaces.GameObjects.Components; -using Robust.Shared.IoC; -using Robust.Shared.Localization; -using Robust.Shared.Serialization; -using Robust.Shared.Utility; -using Robust.Shared.ViewVariables; - -namespace Content.Server.GameObjects.Components.Power -{ - /// - /// Component that requires power to function - /// - [RegisterComponent] - public class PowerDeviceComponent : Component, IExamine - { - public override string Name => "PowerDevice"; - - protected override void Startup() - { - base.Startup(); - if (DrawType != DrawTypes.Node) - { - var componentMgr = IoCManager.Resolve(); - AvailableProviders = componentMgr.GetAllComponents().Where(x => x.CanServiceDevice(this)).ToList(); - ConnectToBestProvider(); - } - } - - protected virtual bool SaveLoad => true; - - /// - /// The method of draw we will try to use to place our load set via component parameter, defaults to using power providers - /// - [ViewVariables] - public DrawTypes DrawType - { - get => _drawType ?? DefaultDrawType; - protected set => _drawType = value; - } - - private DrawTypes? _drawType; - - protected virtual DrawTypes DefaultDrawType => DrawTypes.Provider; - - - /// - /// The power draw method we are currently connected to and using - /// - [ViewVariables] - public DrawTypes Connected { get; protected set; } = DrawTypes.None; - - [ViewVariables] - public bool Powered { get; private set; } = false; - - - /// - /// Is an external power source currently available? - /// - [ViewVariables] - public bool ExternalPowered - { - get => _externalPowered; - set - { - _externalPowered = value; - UpdatePowered(); - } - } - private bool _externalPowered = false; - - /// - /// Is an internal power source currently available? - /// - [ViewVariables] - protected bool InternalPowered - { - get => _internalPowered; - set - { - _internalPowered = value; - UpdatePowered(); - } - } - private bool _internalPowered = false; - - /// - /// Priority for powernet draw, lower will draw first, defined in powernet.cs - /// - [ViewVariables] - public virtual Powernet.Priority Priority - { - get => _priority; - protected set => _priority = value; - } - private Powernet.Priority _priority = Powernet.Priority.Medium; - - [ViewVariables(VVAccess.ReadWrite)] - public bool IsPowerCut - { - get => _isPowerCut; - set - { - _isPowerCut = value; - UpdatePowered(); - } - } - - private float _load = 100; //arbitrary magic number to start - /// - /// Power load from this entity. - /// In Watts. - /// - [ViewVariables] - public float Load - { - get => _load; - set => UpdateLoad(value); - } - - /// - /// All the power providers that we are within range of - /// - public List AvailableProviders = new List(); - - - private PowerProviderComponent _provider; - private bool _isPowerCut; - - /// - /// A power provider that will handle our load, if we are linked to any - /// - [ViewVariables] - public PowerProviderComponent Provider - { - get => _provider; - set - { - Connected = DrawTypes.Provider; - if (_provider != null) - { - _provider.RemoveDevice(this); - } - - _provider = value; - if (value != null) - { - _provider.AddDevice(this); - } - else - { - Connected = DrawTypes.None; - } - - } - } - - public event EventHandler OnPowerStateChanged; - - public override void OnAdd() - { - base.OnAdd(); - - if (DrawType == DrawTypes.Node || DrawType == DrawTypes.Both) - { - if (!Owner.TryGetComponent(out PowerNodeComponent node)) - { - Owner.AddComponent(); - node = Owner.GetComponent(); - } - node.OnPowernetConnect += PowernetConnect; - node.OnPowernetDisconnect += PowernetDisconnect; - node.OnPowernetRegenerate += PowernetRegenerate; - } - } - - /// - protected override void Shutdown() - { - if (Owner.TryGetComponent(out PowerNodeComponent node)) - { - if (node.Parent != null && node.Parent.HasDevice(this)) - { - node.Parent.RemoveDevice(this); - } - - node.OnPowernetConnect -= PowernetConnect; - node.OnPowernetDisconnect -= PowernetDisconnect; - node.OnPowernetRegenerate -= PowernetRegenerate; - } - - Connected = DrawTypes.None; - - if (Provider != null) - { - Provider = null; - } - - base.Shutdown(); - } - - public override void ExposeData(ObjectSerializer serializer) - { - base.ExposeData(serializer); - - var drawType = DrawType; - serializer.DataField(ref drawType, "drawtype", DefaultDrawType); - DrawType = drawType; - serializer.DataField(ref _priority, "priority", Powernet.Priority.Medium); - - if (SaveLoad) - { - serializer.DataField(ref _load, "load", 100); - } - } - - void IExamine.Examine(FormattedMessage message, bool inDetailsRange) - { - var loc = IoCManager.Resolve(); - - if (!Powered && inDetailsRange) - { - message.AddMarkup(loc.GetString("The device is [color=orange]not powered[/color].")); - } - } - - private void UpdateLoad(float value) - { - var oldLoad = _load; - _load = value; - if (Connected == DrawTypes.Node) - { - var node = Owner.GetComponent(); - node.Parent.UpdateDevice(this, oldLoad); - } - else if (Connected == DrawTypes.Provider) - { - Provider.UpdateDevice(this, oldLoad); - } - } - - /// - /// Updates the state of whether or not this device is powered, - /// and fires off events if said state has changed. - /// - private void UpdatePowered() - { - var oldPowered = Powered; - Powered = !IsPowerCut && (ExternalPowered || InternalPowered); - - if (oldPowered != Powered) - { - OnPowerStateChanged?.Invoke(this, new PowerStateEventArgs(Powered)); - - if (Owner.TryGetComponent(out AppearanceComponent appearance)) - { - appearance.SetData(PowerDeviceVisuals.Powered, Powered); - } - } - } - - /// - /// Register a new power provider as a possible connection to this device - /// - /// - public void AddProvider(PowerProviderComponent provider) - { - AvailableProviders.Add(provider); - - if (Connected != DrawTypes.Node) - { - ConnectToBestProvider(); - } - } - - /// - /// Find the nearest registered power provider and connect to it - /// - private void ConnectToBestProvider() - { - //Any values we can connect to or are we already connected to a node, cancel! - if (!AvailableProviders.Any() || Connected == DrawTypes.Node || Deleted || Owner.Deleted) - return; - - //Get the starting value for our loop - var position = Owner.GetComponent().WorldPosition; - var bestprovider = AvailableProviders[0]; - - //If we are already connected to a power provider we need to do a loop to find the nearest one, otherwise skip it and use first entry - if (Connected == DrawTypes.Provider) - { - var bestdistance = (bestprovider.Owner.GetComponent().WorldPosition - position).LengthSquared; - - foreach (var availprovider in AvailableProviders) - { - if (availprovider.Owner.Deleted) - continue; - - //Find distance to new provider - var distance = (availprovider.Owner.GetComponent().WorldPosition - position).LengthSquared; - - //If new provider distance is shorter it becomes new best possible provider - if (distance < bestdistance) - { - bestdistance = distance; - bestprovider = availprovider; - } - } - } - - if (Provider != bestprovider) - Provider = bestprovider; - } - - /// - /// Remove a power provider from being a possible connection to this device - /// - /// - public void RemoveProvider(PowerProviderComponent provider) - { - if (!AvailableProviders.Contains(provider)) - return; - - AvailableProviders.Remove(provider); - - if (provider == Provider) - { - Provider = null; - ExternalPowered = false; - } - - if (Connected != DrawTypes.Node) - { - ConnectToBestProvider(); - } - } - - /// - /// Node has become anchored to a powernet - /// - /// - /// - protected virtual void PowernetConnect(object sender, PowernetEventArgs eventarg) - { - //This sets connected = none so it must be first - Provider = null; - - eventarg.Powernet.AddDevice(this); - Connected = DrawTypes.Node; - } - - /// - /// Powernet wire was remove so we need to regenerate the powernet - /// - /// - /// - protected virtual void PowernetRegenerate(object sender, PowernetEventArgs eventarg) - { - eventarg.Powernet.AddDevice(this); - } - - /// - /// Node has become unanchored from a powernet - /// - /// - /// - protected virtual void PowernetDisconnect(object sender, PowernetEventArgs eventarg) - { - eventarg.Powernet.RemoveDevice(this); - Connected = DrawTypes.None; - - ConnectToBestProvider(); - } - - /// - /// Process mechanism to keep track of internal battery and power status. - /// - /// Time since the last process frame. - internal virtual void ProcessInternalPower(float frametime) - { - if (Owner.TryGetComponent(out var storage) && storage.CanDeductCharge(Load)) - { - // We still keep InternalPowered correct if connected externally, - // but don't use it. - if (!ExternalPowered) - { - storage.DeductCharge(Load); - } - InternalPowered = true; - } - else - { - InternalPowered = false; - } - } - } - - /// - /// The different methods that a can use to connect to a power network. - /// - public enum DrawTypes - { - /// - /// This device cannot be connected to a power network. - /// - None = 0, - - /// - /// This device can connect to a - /// - Node = 1, - Provider = 2, - Both = 3, - } - - public class PowerStateEventArgs : EventArgs - { - public readonly bool Powered; - - public PowerStateEventArgs(bool powered) - { - Powered = powered; - } - } -} diff --git a/Content.Server/GameObjects/Components/Power/PowerGeneratorComponent.cs b/Content.Server/GameObjects/Components/Power/PowerGeneratorComponent.cs deleted file mode 100644 index df10e90df4..0000000000 --- a/Content.Server/GameObjects/Components/Power/PowerGeneratorComponent.cs +++ /dev/null @@ -1,101 +0,0 @@ -using Robust.Shared.GameObjects; -using Robust.Shared.Serialization; -using Robust.Shared.ViewVariables; - -namespace Content.Server.GameObjects.Components.Power -{ - /// - /// Component that creates power and supplies it to the powernet - /// - [RegisterComponent] - public class PowerGeneratorComponent : Component - { - public override string Name => "PowerGenerator"; - - /// - /// Power supply from this entity - /// - private float _supply = 1000; //arbitrary initial magic number to start - [ViewVariables(VVAccess.ReadWrite)] - public float Supply - { - get => _supply; - set { UpdateSupply(value); } - } - - public override void ExposeData(ObjectSerializer serializer) - { - base.ExposeData(serializer); - - serializer.DataField(ref _supply, "supply", 1000); - } - - public override void OnAdd() - { - base.OnAdd(); - - if (!Owner.TryGetComponent(out PowerNodeComponent node)) - { - Owner.AddComponent(); - node = Owner.GetComponent(); - } - node.OnPowernetConnect += PowernetConnect; - node.OnPowernetDisconnect += PowernetDisconnect; - node.OnPowernetRegenerate += PowernetRegenerate; - } - - public override void OnRemove() - { - if (Owner.TryGetComponent(out PowerNodeComponent node)) - { - if (node.Parent != null) - { - node.Parent.RemoveGenerator(this); - } - - node.OnPowernetConnect -= PowernetConnect; - node.OnPowernetDisconnect -= PowernetDisconnect; - node.OnPowernetRegenerate -= PowernetRegenerate; - } - - base.OnRemove(); - } - - private void UpdateSupply(float value) - { - _supply = value; - var node = Owner.GetComponent(); - node?.Parent?.UpdateGenerator(this); - } - - /// - /// Node has become anchored to a powernet - /// - /// - /// - private void PowernetConnect(object sender, PowernetEventArgs eventarg) - { - eventarg.Powernet.AddGenerator(this); - } - - /// - /// Node has had its powernet regenerated - /// - /// - /// - private void PowernetRegenerate(object sender, PowernetEventArgs eventarg) - { - eventarg.Powernet.AddGenerator(this); - } - - /// - /// Node has become unanchored from a powernet - /// - /// - /// - private void PowernetDisconnect(object sender, PowernetEventArgs eventarg) - { - eventarg.Powernet.RemoveGenerator(this); - } - } -} diff --git a/Content.Server/GameObjects/Components/Power/PowerNetComponents/BasePowerNetComponent.cs b/Content.Server/GameObjects/Components/Power/PowerNetComponents/BasePowerNetComponent.cs new file mode 100644 index 0000000000..3482d225a0 --- /dev/null +++ b/Content.Server/GameObjects/Components/Power/PowerNetComponents/BasePowerNetComponent.cs @@ -0,0 +1,9 @@ +using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; + +namespace Content.Server.GameObjects.Components.Power.PowerNetComponents +{ + public abstract class BasePowerNetComponent : BaseNetConnectorComponent + { + protected override IPowerNet NullNet => PowerNetNodeGroup.NullNet; + } +} diff --git a/Content.Server/GameObjects/Components/Power/PowerNetComponents/BatteryDischargerComponent.cs b/Content.Server/GameObjects/Components/Power/PowerNetComponents/BatteryDischargerComponent.cs new file mode 100644 index 0000000000..af543ae52d --- /dev/null +++ b/Content.Server/GameObjects/Components/Power/PowerNetComponents/BatteryDischargerComponent.cs @@ -0,0 +1,73 @@ +using Robust.Shared.GameObjects; +using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; + +namespace Content.Server.GameObjects.Components.Power.PowerNetComponents +{ + /// + /// Uses charge from a to supply power via a . + /// + [RegisterComponent] + public class BatteryDischargerComponent : Component + { + public override string Name => "BatteryDischarger"; + + [ViewVariables] + private BatteryComponent _battery; + + [ViewVariables] + private PowerSupplierComponent _supplier; + + [ViewVariables(VVAccess.ReadWrite)] + public int ActiveSupplyRate { get => _activeSupplyRate; set => SetActiveSupplyRate(value); } + private int _activeSupplyRate; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _activeSupplyRate, "activeSupplyRate", 50); + } + + public override void Initialize() + { + base.Initialize(); + _battery = Owner.GetComponent(); + _supplier = Owner.GetComponent(); + UpdateSupplyRate(); + } + + public void Update(float frameTime) + { + //Simplified implementation - if the battery is empty, and charge is being added to the battery + //at a lower rate that this is using it, the charge is used without creating power supply. + _battery.CurrentCharge -= ActiveSupplyRate * frameTime; + UpdateSupplyRate(); + } + + private void UpdateSupplyRate() + { + if (_battery.BatteryState == BatteryState.Empty) + { + SetSupplierSupplyRate(0); + } + else + { + SetSupplierSupplyRate(ActiveSupplyRate); + } + } + + private void SetSupplierSupplyRate(int newSupplierSupplyRate) + { + if (_supplier.SupplyRate != newSupplierSupplyRate) + { + _supplier.SupplyRate = newSupplierSupplyRate; + } + } + + private void SetActiveSupplyRate(int newEnabledSupplyRate) + { + _activeSupplyRate = newEnabledSupplyRate; + UpdateSupplyRate(); + } + } +} diff --git a/Content.Server/GameObjects/Components/Power/PowerNetComponents/BatteryStorageComponent.cs b/Content.Server/GameObjects/Components/Power/PowerNetComponents/BatteryStorageComponent.cs new file mode 100644 index 0000000000..d94452a977 --- /dev/null +++ b/Content.Server/GameObjects/Components/Power/PowerNetComponents/BatteryStorageComponent.cs @@ -0,0 +1,72 @@ +using Robust.Shared.GameObjects; +using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; + +namespace Content.Server.GameObjects.Components.Power.PowerNetComponents +{ + /// + /// Takes power via a to charge a . + /// + [RegisterComponent] + public class BatteryStorageComponent : Component + { + public override string Name => "BatteryStorage"; + + [ViewVariables(VVAccess.ReadWrite)] + public int ActiveDrawRate { get => _activeDrawRate; set => SetActiveDrawRate(value); } + private int _activeDrawRate; + + [ViewVariables] + private BatteryComponent _battery; + + [ViewVariables] + public PowerConsumerComponent Consumer { get; private set; } + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _activeDrawRate, "activeDrawRate", 100); + } + + public override void Initialize() + { + base.Initialize(); + _battery = Owner.GetComponent(); + Consumer = Owner.GetComponent(); + UpdateDrawRate(); + } + + public void Update(float frameTime) + { + //Simplified implementation - If a frame adds more power to a partially full battery than it can hold, the power is lost. + _battery.CurrentCharge += Consumer.ReceivedPower * frameTime; + UpdateDrawRate(); + } + + private void UpdateDrawRate() + { + if (_battery.BatteryState == BatteryState.Full) + { + SetConsumerDraw(0); + } + else + { + SetConsumerDraw(ActiveDrawRate); + } + } + + private void SetConsumerDraw(int newConsumerDrawRate) + { + if (Consumer.DrawRate != newConsumerDrawRate) + { + Consumer.DrawRate = newConsumerDrawRate; + } + } + + private void SetActiveDrawRate(int newEnabledDrawRate) + { + _activeDrawRate = newEnabledDrawRate; + UpdateDrawRate(); + } + } +} diff --git a/Content.Server/GameObjects/Components/Power/PowerNetComponents/PowerConsumerComponent.cs b/Content.Server/GameObjects/Components/Power/PowerNetComponents/PowerConsumerComponent.cs new file mode 100644 index 0000000000..15d31d9d05 --- /dev/null +++ b/Content.Server/GameObjects/Components/Power/PowerNetComponents/PowerConsumerComponent.cs @@ -0,0 +1,78 @@ +using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; +using Robust.Shared.GameObjects; +using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; +using System.Diagnostics; + +namespace Content.Server.GameObjects.Components.Power.PowerNetComponents +{ + [RegisterComponent] + public class PowerConsumerComponent : BasePowerNetComponent + { + public override string Name => "PowerConsumer"; + + /// + /// How much power this needs to be fully powered. + /// + [ViewVariables(VVAccess.ReadWrite)] + public int DrawRate { get => _drawRate; set => SetDrawRate(value); } + private int _drawRate; + + /// + /// Determines which s receive power when there is not enough + /// power for each. + /// + [ViewVariables(VVAccess.ReadWrite)] + public Priority Priority { get => _priority; set => SetPriority(value); } + private Priority _priority; + + /// + /// How much power this is currently receiving from s. + /// + [ViewVariables] + public int ReceivedPower { get => _receivedPower; set => SetReceivedPower(value); } + private int _receivedPower; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _drawRate, "drawRate", 0); + serializer.DataField(ref _priority, "priority", Priority.First); + } + + protected override void AddSelfToNet(IPowerNet powerNet) + { + powerNet.AddConsumer(this); + } + + protected override void RemoveSelfFromNet(IPowerNet powerNet) + { + powerNet.RemoveConsumer(this); + } + + private void SetDrawRate(int newDrawRate) + { + var oldDrawRate = DrawRate; + _drawRate = newDrawRate; //must be set before updating powernet, as it checks the DrawRate of every consumer + Net.UpdateConsumerDraw(this, oldDrawRate, newDrawRate); + } + + private void SetReceivedPower(int newReceivedPower) + { + Debug.Assert(newReceivedPower >= 0 && newReceivedPower <= DrawRate); + _receivedPower = newReceivedPower; + } + + private void SetPriority(Priority newPriority) + { + Net.UpdateConsumerPriority(this, Priority, newPriority); + _priority = newPriority; + } + } + + public enum Priority + { + First, + Last, + } +} diff --git a/Content.Server/GameObjects/Components/Power/PowerNetComponents/PowerSupplierComponent.cs b/Content.Server/GameObjects/Components/Power/PowerNetComponents/PowerSupplierComponent.cs new file mode 100644 index 0000000000..b843c1bee7 --- /dev/null +++ b/Content.Server/GameObjects/Components/Power/PowerNetComponents/PowerSupplierComponent.cs @@ -0,0 +1,39 @@ +using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; +using Robust.Shared.GameObjects; +using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; + +namespace Content.Server.GameObjects.Components.Power.PowerNetComponents +{ + [RegisterComponent] + public class PowerSupplierComponent : BasePowerNetComponent + { + public override string Name => "PowerSupplier"; + + [ViewVariables(VVAccess.ReadWrite)] + public int SupplyRate { get => _supplyRate; set => SetSupplyRate(value); } + private int _supplyRate; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _supplyRate, "supplyRate", 0); + } + + protected override void AddSelfToNet(IPowerNet powerNet) + { + powerNet.AddSupplier(this); + } + + protected override void RemoveSelfFromNet(IPowerNet powerNet) + { + powerNet.RemoveSupplier(this); + } + + private void SetSupplyRate(int newSupplyRate) + { + Net.UpdateSupplierSupply(this, SupplyRate, newSupplyRate); + _supplyRate = newSupplyRate; + } + } +} diff --git a/Content.Server/GameObjects/Components/Power/PowerNetComponents/SmesComponent.cs b/Content.Server/GameObjects/Components/Power/PowerNetComponents/SmesComponent.cs new file mode 100644 index 0000000000..4bd35df847 --- /dev/null +++ b/Content.Server/GameObjects/Components/Power/PowerNetComponents/SmesComponent.cs @@ -0,0 +1,89 @@ +using Content.Server.GameObjects.Components.Power.PowerNetComponents; +using Content.Shared.GameObjects.Components.Power; +using Content.Shared.Utility; +using Robust.Server.GameObjects; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.Timing; +using Robust.Shared.IoC; +using System; + +namespace Content.Server.GameObjects.Components.Power +{ + /// + /// Handles the "user-facing" side of the actual SMES object. + /// This is operations that are specific to the SMES, like UI and visuals. + /// Code interfacing with the powernet is handled in and . + /// + [RegisterComponent] + public class SmesComponent : Component + { + public override string Name => "Smes"; + + private BatteryComponent _battery; + + private AppearanceComponent _appearance; + + private int _lastChargeLevel = 0; + + private TimeSpan _lastChargeLevelChange; + + private ChargeState _lastChargeState; + + private TimeSpan _lastChargeStateChange; + + private const int VisualsChangeDelay = 1; + +#pragma warning disable 649 + [Dependency] private readonly IGameTiming _gameTiming; +#pragma warning restore 649 + + public override void Initialize() + { + base.Initialize(); + _battery = Owner.GetComponent(); + _appearance = Owner.GetComponent(); + } + + public void OnUpdate() + { + var newLevel = GetNewChargeLevel(); + if (newLevel != _lastChargeLevel && _lastChargeLevelChange + TimeSpan.FromSeconds(VisualsChangeDelay) < _gameTiming.CurTime) + { + _lastChargeLevel = newLevel; + _lastChargeLevelChange = _gameTiming.CurTime; + _appearance.SetData(SmesVisuals.LastChargeLevel, newLevel); + } + + var newChargeState = GetNewChargeState(); + if (newChargeState != _lastChargeState && _lastChargeStateChange + TimeSpan.FromSeconds(VisualsChangeDelay) < _gameTiming.CurTime) + { + _lastChargeState = newChargeState; + _lastChargeStateChange = _gameTiming.CurTime; + _appearance.SetData(SmesVisuals.LastChargeState, newChargeState); + } + } + + private int GetNewChargeLevel() + { + return ContentHelpers.RoundToLevels(_battery.CurrentCharge, _battery.MaxCharge, 6); + } + + private ChargeState GetNewChargeState() + { + var supplier = Owner.GetComponent(); + var consumer = Owner.GetComponent(); + if (supplier.SupplyRate > 0 && consumer.DrawRate != consumer.ReceivedPower) + { + return ChargeState.Discharging; + } + else if (supplier.SupplyRate == 0 && consumer.DrawRate > 0) + { + return ChargeState.Charging; + } + else + { + return ChargeState.Still; + } + } + } +} diff --git a/Content.Server/GameObjects/Components/Power/SolarControlConsoleComponent.cs b/Content.Server/GameObjects/Components/Power/PowerNetComponents/SolarControlConsoleComponent.cs similarity index 91% rename from Content.Server/GameObjects/Components/Power/SolarControlConsoleComponent.cs rename to Content.Server/GameObjects/Components/Power/PowerNetComponents/SolarControlConsoleComponent.cs index ab9e77003e..954dc1bcec 100644 --- a/Content.Server/GameObjects/Components/Power/SolarControlConsoleComponent.cs +++ b/Content.Server/GameObjects/Components/Power/PowerNetComponents/SolarControlConsoleComponent.cs @@ -1,3 +1,4 @@ +using Content.Server.GameObjects.Components.Power.ApcNetComponents; using Content.Server.GameObjects.Components.Power; using Content.Server.GameObjects.EntitySystems; using Content.Server.Interfaces.GameTicking; @@ -20,9 +21,9 @@ namespace Content.Server.GameObjects.Components.Power #pragma warning restore 649 private BoundUserInterface _userInterface; - private PowerDeviceComponent _powerDevice; + private PowerReceiverComponent _powerReceiver; private PowerSolarSystem _powerSolarSystem; - private bool Powered => _powerDevice.Powered; + private bool Powered => _powerReceiver.Powered; public override void Initialize() { @@ -30,7 +31,7 @@ namespace Content.Server.GameObjects.Components.Power _userInterface = Owner.GetComponent().GetBoundUserInterface(SolarControlConsoleUiKey.Key); _userInterface.OnReceiveMessage += UserInterfaceOnReceiveMessage; - _powerDevice = Owner.GetComponent(); + _powerReceiver = Owner.GetComponent(); _powerSolarSystem = _entitySystemManager.GetEntitySystem(); } diff --git a/Content.Server/GameObjects/Components/Power/SolarPanelComponent.cs b/Content.Server/GameObjects/Components/Power/PowerNetComponents/SolarPanelComponent.cs similarity index 87% rename from Content.Server/GameObjects/Components/Power/SolarPanelComponent.cs rename to Content.Server/GameObjects/Components/Power/PowerNetComponents/SolarPanelComponent.cs index d6daefeb90..7884358cfe 100644 --- a/Content.Server/GameObjects/Components/Power/SolarPanelComponent.cs +++ b/Content.Server/GameObjects/Components/Power/PowerNetComponents/SolarPanelComponent.cs @@ -1,5 +1,6 @@ -using System; +using System; using Content.Server.GameObjects.Components.Damage; +using Content.Server.GameObjects.Components.Power.PowerNetComponents; using Content.Server.GameObjects.EntitySystems; using Content.Shared.Audio; using Robust.Server.GameObjects; @@ -27,14 +28,14 @@ namespace Content.Server.GameObjects.Components.Power { public override string Name => "SolarPanel"; - private PowerGeneratorComponent _powerGenerator; + private PowerSupplierComponent _powerSupplier; /// /// Maximum supply output by this panel (coverage = 1) /// - private float _maxSupply = 1500; + private int _maxSupply = 1500; [ViewVariables(VVAccess.ReadWrite)] - public float MaxSupply + public int MaxSupply { get => _maxSupply; set { @@ -72,15 +73,15 @@ namespace Content.Server.GameObjects.Components.Power private void UpdateSupply() { - if (_powerGenerator != null) - _powerGenerator.Supply = _maxSupply * _coverage; + if (_powerSupplier != null) + _powerSupplier.SupplyRate = (int) (_maxSupply * _coverage); } public override void Initialize() { base.Initialize(); - _powerGenerator = Owner.GetComponent(); + _powerSupplier = Owner.GetComponent(); UpdateSupply(); } diff --git a/Content.Server/GameObjects/Components/Power/PowerNodeComponent.cs b/Content.Server/GameObjects/Components/Power/PowerNodeComponent.cs deleted file mode 100644 index 48d515b10d..0000000000 --- a/Content.Server/GameObjects/Components/Power/PowerNodeComponent.cs +++ /dev/null @@ -1,131 +0,0 @@ -using System; -using System.Linq; -using Robust.Server.Interfaces.GameObjects; -using Robust.Shared.GameObjects; -using Robust.Shared.GameObjects.Components.Transform; -using Robust.Shared.Interfaces.GameObjects.Components; -using Robust.Shared.IoC; -using Robust.Shared.ViewVariables; - -namespace Content.Server.GameObjects.Components.Power -{ - /// - /// Component that connects to the powernet - /// - [RegisterComponent] - public class PowerNodeComponent : Component - { - public override string Name => "PowerNode"; - - /// - /// The powernet this node is connected to - /// - [ViewVariables] - public Powernet Parent { get; set; } - - /// - /// An event handling when this node connects to a powernet - /// - public event EventHandler OnPowernetConnect; - - /// - /// An event handling when this node disconnects from a powernet - /// - public event EventHandler OnPowernetDisconnect; - - /// - /// An event that registers us to a regenerating powernet - /// - public event EventHandler OnPowernetRegenerate; - - protected override void Startup() - { - base.Startup(); - - TryCreatePowernetConnection(); - } - - public override void OnRemove() - { - DisconnectFromPowernet(); - - base.OnRemove(); - } - - /// - /// Find a nearby wire which will have a powernet and connect ourselves to its powernet - /// - public void TryCreatePowernetConnection() - { - if (Parent != null) - { - return; - } - - var position = Owner.Transform.WorldPosition; - - var sgc = Owner.GetComponent(); - var wire = sgc.GetCardinalNeighborCells() - .SelectMany(x => x.GetLocal()).Distinct() - .Select(x => x.TryGetComponent(out var c) ? c : null) - .Where(x => x != null).Distinct() - .ToArray() - .OrderByDescending(x => (x.Owner.Transform.WorldPosition - position).Length) - .FirstOrDefault(); - - if (wire?.Parent != null) - { - ConnectToPowernet(wire.Parent); - } - } - - /// - /// Triggers event telling power components that we connected to a powernet - /// - /// - public void ConnectToPowernet(Powernet toconnect) - { - Parent = toconnect; - Parent.NodeList.Add(this); - OnPowernetConnect?.Invoke(this, new PowernetEventArgs(Parent)); - } - - /// - /// Triggers event telling power components that we haven't disconnected but have readded ourselves to a regenerated powernet - /// - /// - public void RegeneratePowernet(Powernet toconnect) - { - //This removes the device from things that will be powernet disconnected when dirty powernet is killed - Parent.NodeList.Remove(this); - - Parent = toconnect; - Parent.NodeList.Add(this); - OnPowernetRegenerate?.Invoke(this, new PowernetEventArgs(Parent)); - } - - /// - /// Triggers event telling power components we have exited any powernets - /// - public void DisconnectFromPowernet() - { - if (Parent == null) - { - return; - } - Parent.NodeList.Remove(this); - OnPowernetDisconnect?.Invoke(this, new PowernetEventArgs(Parent)); - Parent = null; - } - } - - public class PowernetEventArgs : EventArgs - { - public PowernetEventArgs(Powernet powernet) - { - Powernet = powernet; - } - - public Powernet Powernet { get; } - } -} diff --git a/Content.Server/GameObjects/Components/Power/PowerProviderComponent.cs b/Content.Server/GameObjects/Components/Power/PowerProviderComponent.cs deleted file mode 100644 index 165203b181..0000000000 --- a/Content.Server/GameObjects/Components/Power/PowerProviderComponent.cs +++ /dev/null @@ -1,292 +0,0 @@ -// Only unused on .NET Core due to KeyValuePair.Deconstruct -// ReSharper disable once RedundantUsingDirective -using Robust.Shared.Utility; -using System.Collections.Generic; -using System.Linq; -using Robust.Server.Interfaces.GameObjects; -using Robust.Shared.GameObjects; -using Robust.Shared.Interfaces.GameObjects.Components; -using Robust.Shared.IoC; -using Robust.Shared.Log; -using Robust.Shared.Serialization; -using Robust.Shared.ViewVariables; -using Robust.Shared.Map; - -namespace Content.Server.GameObjects.Components.Power -{ - /// - /// Component that wirelessly connects and powers devices, connects to powernet via node and can be combined with internal storage component - /// - [RegisterComponent] - [ComponentReference(typeof(PowerDeviceComponent))] - public class PowerProviderComponent : PowerDeviceComponent - { - public override string Name => "PowerProvider"; - - /// - protected override DrawTypes DefaultDrawType => DrawTypes.Node; - - protected override bool SaveLoad => false; - - /// - /// Variable that determines the range that the power provider will try to supply power to - /// - [ViewVariables] - public int PowerRange - { - get => _range; - private set => _range = value; - } - - private int _range = 0; - - /// - /// List storing all the power devices that we are currently providing power to - /// - public SortedSet DeviceLoadList = - new SortedSet(new Powernet.DevicePriorityCompare()); - - /// - /// List of devices in range that we "advertised" to. - /// - public HashSet AdvertisedDevices = new HashSet(); - - public List DepoweredDevices = new List(); - - public override Powernet.Priority Priority { get; protected set; } = Powernet.Priority.Provider; - - private bool _mainBreaker = true; - - [ViewVariables(VVAccess.ReadWrite)] - public bool MainBreaker - { - get => _mainBreaker; - set - { - if (_mainBreaker == value) - { - return; - } - - _mainBreaker = value; - if (!value) - { - DepowerAllDevices(); - Load = 0; - } - else - { - Load = TheoreticalLoad; - } - } - } - - private float _theoreticalLoad = 0f; - - [ViewVariables] - public float TheoreticalLoad - { - get => _theoreticalLoad; - set - { - _theoreticalLoad = value; - if (MainBreaker) - { - Load = value; - } - } - } - - public PowerProviderComponent() - { - Load = 0; - } - - /// - protected override void Shutdown() - { - base.Shutdown(); - - foreach (var device in AdvertisedDevices.ToList()) - { - device.RemoveProvider(this); - } - - AdvertisedDevices.Clear(); - } - - public override void ExposeData(ObjectSerializer serializer) - { - base.ExposeData(serializer); - - serializer.DataField(ref _range, "range", 0); - } - - internal override void ProcessInternalPower(float frametime) - { - // Right now let's just assume that APCs don't have a power demand themselves and as such they're always marked as powered. - InternalPowered = true; - if (!Owner.TryGetComponent(out var storage)) - { - return; - } - - if (!MainBreaker) - { - return; - } - - if (ExternalPowered) - { - PowerAllDevices(); - return; - } - - if (storage.CanDeductCharge(TheoreticalLoad * frametime)) - { - PowerAllDevices(); - storage.DeductCharge(TheoreticalLoad * frametime); - return; - } - - var remainingEnergy = storage.AvailableCharge(frametime); - var usedEnergy = 0f; - foreach (var device in DeviceLoadList) - { - var deviceLoad = device.Load * frametime; - if (deviceLoad > remainingEnergy) - { - device.ExternalPowered = false; - DepoweredDevices.Add(device); - } - else - { - if (!device.ExternalPowered) - { - DepoweredDevices.Remove(device); - device.ExternalPowered = true; - } - - usedEnergy += deviceLoad; - remainingEnergy -= deviceLoad; - } - } - - storage.DeductCharge(usedEnergy); - } - - private void PowerAllDevices() - { - foreach (var device in DepoweredDevices) - { - device.ExternalPowered = true; - } - - DepoweredDevices.Clear(); - } - - private void DepowerAllDevices() - { - foreach (var device in DeviceLoadList) - { - device.ExternalPowered = false; - DepoweredDevices.Add(device); - } - } - - protected override void PowernetConnect(object sender, PowernetEventArgs eventarg) - { - base.PowernetConnect(sender, eventarg); - - //Find devices within range to take under our control - var entMgr = IoCManager.Resolve(); - var position = Owner.GetComponent().WorldPosition; - var entities = entMgr.GetEntitiesInRange(Owner, PowerRange) - .Where(x => x.HasComponent()); - - - foreach (var entity in entities) - { - var device = entity.GetComponent(); - - //Make sure the device can accept power providers to give it power - if (device.DrawType == DrawTypes.Provider || device.DrawType == DrawTypes.Both) - { - if (!AdvertisedDevices.Contains(device)) - { - device.AddProvider(this); - AdvertisedDevices.Add(device); - } - } - } - } - - - protected override void PowernetDisconnect(object sender, PowernetEventArgs eventarg) - { - base.PowernetDisconnect(sender, eventarg); - - //We don't want to make the devices under us think we're still a valid provider if we have no powernet to connect to - foreach (var device in AdvertisedDevices.ToList()) - { - device.RemoveProvider(this); - } - - AdvertisedDevices.Clear(); - } - - /// - /// Register a continuous load from a device connected to the powernet - /// - public void AddDevice(PowerDeviceComponent device) - { - DeviceLoadList.Add(device); - TheoreticalLoad += device.Load; - if (!device.Powered) - DepoweredDevices.Add(device); - } - - /// - /// Update one of the loads from a deviceconnected to the powernet - /// - public void UpdateDevice(PowerDeviceComponent device, float oldLoad) - { - if (DeviceLoadList.Contains(device)) - { - TheoreticalLoad = TheoreticalLoad - oldLoad + device.Load; - } - } - - /// - /// Remove a continuous load from a device connected to the powernet - /// - public void RemoveDevice(PowerDeviceComponent device) - { - if (DeviceLoadList.Contains(device)) - { - TheoreticalLoad -= device.Load; - DeviceLoadList.Remove(device); - if (DepoweredDevices.Contains(device)) - DepoweredDevices.Remove(device); - } - else - { - Logger.WarningS("power", "We tried to remove device {0} twice from the same {1}, somehow.", - device.Owner, Owner); - } - } - - /// - /// Whether the device can be serviced by this provider. - /// - public bool CanServiceDevice(PowerDeviceComponent device) - { - // Stops an APC from trying to connect to itself - if (this == device) - return false; - - return device.Owner.Transform.MapID == Owner.Transform.MapID && - (device.Owner.Transform.WorldPosition - Owner.Transform.WorldPosition).Length <= _range; - } - } -} diff --git a/Content.Server/GameObjects/Components/Power/PowerStorageComponent.cs b/Content.Server/GameObjects/Components/Power/PowerStorageComponent.cs deleted file mode 100644 index d4810679f4..0000000000 --- a/Content.Server/GameObjects/Components/Power/PowerStorageComponent.cs +++ /dev/null @@ -1,179 +0,0 @@ -using System; -using Content.Server.GameObjects.EntitySystems; -using Content.Shared.GameObjects.Components.Power; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; -using Robust.Shared.Localization; -using Robust.Shared.Serialization; -using Robust.Shared.Utility; -using Robust.Shared.ViewVariables; - -namespace Content.Server.GameObjects.Components.Power -{ - /// - /// Stores electrical energy. Used by power cells and SMESes. - /// - public abstract class PowerStorageComponent : Component, IExamine - { - [ViewVariables] - public ChargeState LastChargeState { get; private set; } = ChargeState.Still; - public DateTime LastChargeStateChange { get; private set; } - - /// - /// Maximum amount of energy the internal battery can store. - /// In Joules. - /// - [ViewVariables] - public float Capacity => _capacity; - private float _capacity = 10000; // Arbitrary value, replace. - - /// - /// Energy the battery is currently storing. - /// In Joules. - /// In most cases you should use and to modify this. - /// - [ViewVariables(VVAccess.ReadWrite)] - public virtual float Charge - { - get => _charge; - set => _charge = value; - } - - private float _charge = 0; - - /// - /// Rate at which energy will be taken to charge internal battery. - /// In Watts. - /// - [ViewVariables] - public float ChargeRate => _chargeRate; - private float _chargeRate = 1000; - - /// - /// Rate at which energy will be distributed to the powernet if needed. - /// In Watts. - /// - [ViewVariables] - public float DistributionRate => _distributionRate; - private float _distributionRate = 1000; - - [ViewVariables] - public bool Full => Charge >= Capacity; - - public event Action OnChargeChanged; - public override void ExposeData(ObjectSerializer serializer) - { - base.ExposeData(serializer); - - serializer.DataField(ref _capacity, "capacity", 10000); - serializer.DataField(ref _charge, "charge", 0); - serializer.DataField(ref _chargeRate, "chargerate", 1000); - serializer.DataField(ref _distributionRate, "distributionrate", 1000); - } - - protected virtual void ChargeChanged() - { - if (OnChargeChanged != null) - { //Only fire this event if anyone actually subscribes to it - OnChargeChanged.Invoke(); - } - } - - /// - /// Checks if the storage can supply the amount of charge directly requested - /// - public bool CanDeductCharge(float toDeduct) - { - if (Charge >= toDeduct) - return true; - return false; - } - - /// - /// Deducts the requested charge from the energy storage - /// - public virtual void DeductCharge(float toDeduct) - { - _charge = Math.Max(0, Charge - toDeduct); - LastChargeState = ChargeState.Discharging; - LastChargeStateChange = DateTime.Now; - ChargeChanged(); - } - - public virtual void AddCharge(float charge) - { - _charge = Math.Min(Capacity, Charge + charge); - LastChargeState = ChargeState.Charging; - LastChargeStateChange = DateTime.Now; - ChargeChanged(); - } - - /// - /// Returns the amount of energy that can be taken in by this storage in the specified amount of time. - /// - public float RequestCharge(float frameTime) - { - return Math.Min(ChargeRate * frameTime, Capacity - Charge); - } - - /// - /// Returns the amount of energy available for discharge in the specified amount of time. - /// - public float AvailableCharge(float frameTime) - { - return Math.Min(DistributionRate * frameTime, Charge); - } - - /// - /// Tries to deduct a wattage over a certain amount of time. - /// - /// The wattage of the power drain. - /// The amount of time in this "frame". - /// True if the amount of energy was deducted, false. - public bool TryDeductWattage(float wattage, float frameTime) - { - var avail = AvailableCharge(frameTime); - if (avail < wattage * frameTime) - { - return false; - } - - DeductCharge(wattage * frameTime); - return true; - } - - public ChargeState GetChargeState() - { - return GetChargeState(TimeSpan.FromSeconds(1)); - } - - public ChargeState GetChargeState(TimeSpan timeout) - { - if (LastChargeStateChange + timeout > DateTime.Now) - { - return LastChargeState; - } - return ChargeState.Still; - } - - public void ChargePowerTick(float frameTime) - { - if (Full) - { - return; - } - AddCharge(RequestCharge(frameTime)); - } - - /// - public void Examine(FormattedMessage message, bool inDetailsRange) - { - var loc = IoCManager.Resolve(); - - var chargePercent = Math.Round(100*Charge/Capacity, 2); - message.AddMarkup(loc.GetString( - "[color=yellow]Charge: {0}J / {1}J ({2}%)\nRate: {3}W IN, {4}W OUT[/color]", - Math.Round(Charge, 2), Capacity, chargePercent, ChargeRate, DistributionRate)); - } - } -} diff --git a/Content.Server/GameObjects/Components/Power/PowerStorageNetComponent.cs b/Content.Server/GameObjects/Components/Power/PowerStorageNetComponent.cs deleted file mode 100644 index e2e661dbb9..0000000000 --- a/Content.Server/GameObjects/Components/Power/PowerStorageNetComponent.cs +++ /dev/null @@ -1,103 +0,0 @@ -using Robust.Shared.GameObjects; -using Robust.Shared.Serialization; -using Robust.Shared.ViewVariables; - -namespace Content.Server.GameObjects.Components.Power -{ - /// - /// Feeds energy from the powernet and may have the ability to supply back into it - /// - [RegisterComponent] - [ComponentReference(typeof(PowerStorageComponent))] - public class PowerStorageNetComponent : PowerStorageComponent - { - public override string Name => "PowerStorage"; - - private bool _chargePowernet = false; - - /// - /// Do we distribute power into the powernet from our stores if the powernet requires it? - /// - [ViewVariables(VVAccess.ReadWrite)] - public bool ChargePowernet - { - get => _chargePowernet; - set - { - _chargePowernet = value; - if (Owner.TryGetComponent(out PowerNodeComponent node)) - { - node.Parent?.UpdateStorageType(this); - } - } - } - - public override void ExposeData(ObjectSerializer serializer) - { - base.ExposeData(serializer); - - serializer.DataField(ref _chargePowernet, "chargepowernet", false); - } - - public override void OnAdd() - { - base.OnAdd(); - - if (!Owner.TryGetComponent(out PowerNodeComponent node)) - { - Owner.AddComponent(); - node = Owner.GetComponent(); - } - node.OnPowernetConnect += PowernetConnect; - node.OnPowernetDisconnect += PowernetDisconnect; - node.OnPowernetRegenerate += PowernetRegenerate; - } - - public override void OnRemove() - { - if (Owner.TryGetComponent(out PowerNodeComponent node)) - { - if (node.Parent != null) - { - node.Parent.RemovePowerStorage(this); - } - - node.OnPowernetConnect -= PowernetConnect; - node.OnPowernetDisconnect -= PowernetDisconnect; - node.OnPowernetRegenerate -= PowernetRegenerate; - } - - base.OnRemove(); - } - - /// - /// Node has become anchored to a powernet - /// - /// - /// - private void PowernetConnect(object sender, PowernetEventArgs eventarg) - { - eventarg.Powernet.AddPowerStorage(this); - } - - /// - /// Node has had its powernet regenerated - /// - /// - /// - private void PowernetRegenerate(object sender, PowernetEventArgs eventarg) - { - eventarg.Powernet.AddPowerStorage(this); - } - - /// - /// Node has become unanchored from a powernet - /// - /// - /// - private void PowernetDisconnect(object sender, PowernetEventArgs eventarg) - { - eventarg.Powernet.RemovePowerStorage(this); - } - } -} diff --git a/Content.Server/GameObjects/Components/Power/PowerTransferComponent.cs b/Content.Server/GameObjects/Components/Power/PowerTransferComponent.cs deleted file mode 100644 index e9ca5774bd..0000000000 --- a/Content.Server/GameObjects/Components/Power/PowerTransferComponent.cs +++ /dev/null @@ -1,157 +0,0 @@ -using System.Linq; -using Content.Server.GameObjects.Components.Interactable; -using Content.Server.GameObjects.Components.Stack; -using Content.Server.GameObjects.EntitySystems; -using Content.Shared.GameObjects.Components.Interactable; -using Content.Server.Utility; -using Robust.Server.Interfaces.GameObjects; -using Robust.Shared.GameObjects; -using Robust.Shared.GameObjects.Components.Transform; -using Robust.Shared.Interfaces.GameObjects; -using Robust.Shared.Interfaces.GameObjects.Components; -using Robust.Shared.IoC; -using Robust.Shared.Map; -using Robust.Shared.ViewVariables; - -namespace Content.Server.GameObjects.Components.Power -{ - /// - /// Component to transfer power to nearby components, can create powernets and connect to nodes - /// - [RegisterComponent] - public class PowerTransferComponent : Component, IInteractUsing - { - public override string Name => "PowerTransfer"; - - /// - /// The powernet this component is connected to - /// - [ViewVariables] - public Powernet Parent { get; set; } - - [ViewVariables] - public bool Regenerating { get; set; } = false; - - protected override void Startup() - { - base.Startup(); - - if (Parent == null) - { - SpreadPowernet(); - } - } - - public override void OnRemove() - { - DisconnectFromPowernet(); - - base.OnRemove(); - } - - /// - /// Searches for local powernets to connect to, otherwise creates its own, and spreads powernet to nearby entities - /// - public void SpreadPowernet() - { - var entMgr = IoCManager.Resolve(); - var sgc = Owner.GetComponent(); - var wires = sgc.GetCardinalNeighborCells() - .SelectMany(x => x.GetLocal()).Distinct() - .Select(x => x.TryGetComponent(out var c) ? c : null) - .Where(x => x != null).Distinct() - .ToArray(); - - //we have no parent so lets find a partner we can join his powernet - if (Parent == null || Regenerating) - { - foreach (var wire in wires) - { - if (wire.CanConnectTo()) - { - ConnectToPowernet(wire.Parent); - break; - } - } - - //we couldn't find a partner so none must have spread yet, lets make our own powernet to spread - if (Parent == null || Regenerating) - { - ConnectToPowernet(new Powernet()); - } - } - - //Find nodes intersecting us and if not already assigned to a powernet assign them to us - var nodes = entMgr.GetEntitiesIntersecting(Owner) - .Select(x => x.TryGetComponent(out PowerNodeComponent pnc) ? pnc : null) - .Where(x => x != null); - - foreach (var node in nodes) - { - if (node.Parent == null) - { - node.ConnectToPowernet(Parent); - } - else if (node.Parent.Dirty) - { - node.RegeneratePowernet(Parent); - } - } - - //spread powernet to nearby wires which haven't got one yet, and tell them to spread as well - foreach (var wire in wires) - { - if (wire.Parent == null || Regenerating) - { - wire.ConnectToPowernet(Parent); - wire.SpreadPowernet(); - } - else if (wire.Parent != Parent && !wire.Parent.Dirty) - { - Parent.MergePowernets(wire.Parent); - } - } - } - - /// - /// Called when connecting to a new powernet, either on creation or on regeneration - /// - /// - public void ConnectToPowernet(Powernet toconnect) - { - Parent = toconnect; - Parent.WireList.Add(this); - Regenerating = false; - } - - /// - /// Called when we are removed and telling the powernet that it is now dirty and must regenerate - /// - public void DisconnectFromPowernet() - { - Parent.WireList.Remove(this); - Parent.Dirty = true; - Parent = null; - } - - - public bool CanConnectTo() - { - return Parent != null && Parent.Dirty == false && !Regenerating; - } - - public bool InteractUsing(InteractUsingEventArgs eventArgs) - { - if (!eventArgs.Using.TryGetComponent(out ToolComponent tool)) return false; - if (!tool.UseTool(eventArgs.User, Owner, ToolQuality.Cutting)) return false; - - Owner.Delete(); - var droppedEnt = Owner.EntityManager.SpawnEntity("CableStack", eventArgs.ClickLocation); - - if (droppedEnt.TryGetComponent(out var stackComp)) - stackComp.Count = 1; - - return true; - } - } -} diff --git a/Content.Server/GameObjects/Components/Power/Powernet.cs b/Content.Server/GameObjects/Components/Power/Powernet.cs deleted file mode 100644 index 76db36ae60..0000000000 --- a/Content.Server/GameObjects/Components/Power/Powernet.cs +++ /dev/null @@ -1,555 +0,0 @@ -using System; -using System.Collections.Generic; -using Content.Shared.GameObjects.EntitySystems; -using Robust.Shared.GameObjects.Systems; -using Robust.Shared.Interfaces.GameObjects; -using Robust.Shared.IoC; -using Robust.Shared.Log; -using Robust.Shared.ViewVariables; -using Robust.Shared.Utility; - -namespace Content.Server.GameObjects.Components.Power -{ - /// - /// Master class for group of , takes in and distributes power via nodes - /// - public class Powernet - { - public Powernet() - { - var powerSystem = EntitySystem.Get(); - powerSystem.Powernets.Add(this); - Uid = powerSystem.NewUid(); - } - - /// - /// Unique identifier per powernet, used for debugging mostly. - /// - [ViewVariables] - public int Uid { get; } - - /// - /// The entities that make up the powernet's physical location and allow powernet connection - /// - public readonly List WireList = new List(); - - /// - /// Entities that connect directly to the powernet through above to add power or add power load - /// - public readonly List NodeList = new List(); - - /// - /// Subset of nodelist that adds a continuous power supply to the network - /// - private readonly Dictionary GeneratorList = - new Dictionary(); - - [ViewVariables] - public int GeneratorCount => GeneratorList.Count; - - /// - /// Subset of nodelist that draw power, stores information on current continuous powernet load - /// - private readonly SortedSet DeviceLoadList = - new SortedSet(new DevicePriorityCompare()); - - [ViewVariables] - public int DeviceCount => DeviceLoadList.Count; - - /// - /// All the devices that have been depowered by this powernet or depowered prior to being absorted into this powernet - /// - private readonly List DepoweredDevices = new List(); - - /// - /// A list of the energy storage components that will feed the powernet if necessary, and if there is enough power feed itself - /// - private readonly List PowerStorageSupplierList = new List(); - - [ViewVariables] - public int PowerStorageSupplierCount => PowerStorageSupplierList.Count; - - /// - /// A list of energy storage components that will never feed the powernet, will try to draw energy to feed themselves if possible - /// - private readonly List PowerStorageConsumerList = new List(); - - [ViewVariables] - public int PowerStorageConsumerCount => PowerStorageConsumerList.Count; - - /// - /// Static counter of all continuous load placed from devices on this power network. - /// In Watts. - /// - [ViewVariables] - public float Load { get; private set; } = 0; - - /// - /// Static counter of all continuous supply from generators on this power network. - /// In Watts. - /// - [ViewVariables] - public float Supply { get; private set; } = 0; - - /// - /// Variable that causes powernet to be regenerated from its wires during the next update cycle. - /// - [ViewVariables] - public bool Dirty { get; set; } = false; - - // These are stats for power monitoring equipment such as APCs. - - /// - /// The total supply that was available to us last tick. - /// This does not mean it was used. - /// - [ViewVariables] - public float LastTotalAvailable { get; private set; } - - /// - /// The total power drawn last tick. - /// This is how much power was actually, in practice, drawn. - /// Not how much SHOULD have been drawn. - /// If avail < demand, this will be just <= than the actual avail - /// (e.g. if all machines need 100 W but there's 20 W excess, the 20 W will be avail but not drawn.) - /// - [ViewVariables] - public float LastTotalDraw { get; private set; } - - /// - /// The amount of power that was demanded last tick. - /// This does not mean it was full filled in practice. - /// This does not include the demand from storage suppliers until the suppliers are actually capable of drawing power. - /// As such, this will quite abruptly shoot up if available rises to cover supplier charge demand too. - /// - /// - [ViewVariables] - public float LastTotalDemand { get; private set; } - - /// - /// The amount of power that was demanded last tick, ALWAYS including storage supplier draw. - /// This does not mean it was full filled in practice. - /// See for the difference. - /// - [ViewVariables] - public float LastTotalDemandWithSuppliers { get; private set; } - - /// - /// The amount of power that we are lacking to properly power everything (excluding storage supplier charging). - /// - [ViewVariables] - public float Lack => Math.Max(0, LastTotalDemand - LastTotalAvailable); - - /// - /// The total amount of power that wasn't used last tick. - /// This does not necessarily mean it went to waste, unused supply from storage is also counted. - /// It is ALSO not implied that if this is > 0, that we have sufficient power for everything. - /// See the doc comment on . - /// - [ViewVariables] - public float Excess => Math.Max(0, LastTotalAvailable - LastTotalDraw); - - public void Update(float frameTime) - { - // The amount of energy that is supplied from generators that do not care if it's used or not. - var activeSupply = Supply * frameTime; - // The total load we need to fill for machines. - var activeLoad = Load * frameTime; - - // The total load from storage consumers (batteries that do not supply like an SMES) - float storageConsumerDemand = 0; - foreach (var supply in PowerStorageConsumerList) - { - storageConsumerDemand += supply.RequestCharge(frameTime); - } - - // The total supply from storage suppliers. - float storageSupply = 0; - // The total load from storage suppliers (batteries that DO supply like an SMES) - float storageSupplierDemand = 0; - foreach (var supply in PowerStorageSupplierList) - { - storageSupply += supply.AvailableCharge(frameTime); - storageSupplierDemand += supply.RequestCharge(frameTime); - } - - LastTotalAvailable = (storageSupply + activeSupply) / frameTime; - LastTotalDemandWithSuppliers = (activeLoad + storageConsumerDemand + storageSupplierDemand) / frameTime; - - // The happy case. - // If we have enough power to feed all load and storage demand, then feed everything - if (activeSupply > activeLoad + storageConsumerDemand + storageSupplierDemand) - { - PowerAllDevices(); - ChargeStorageConsumers(frameTime); - ChargeStorageSuppliers(frameTime); - LastTotalDraw = LastTotalDemand = LastTotalDemandWithSuppliers; - return; - } - - LastTotalDemand = (activeLoad + storageConsumerDemand) / frameTime; - - // We don't have enough power for the storage powernet suppliers, ignore powering them - // TODO: This is technically incorrect, it's totally possible to power *some* suppliers here, - // just not all. - if (activeSupply > activeLoad + storageConsumerDemand) - { - PowerAllDevices(); - ChargeStorageConsumers(frameTime); - LastTotalDraw = LastTotalDemand; - return; - } - - // The complex case: There is too little power to power everything without using storage suppliers (SMES). - // We have to keep track of power draw as to not incorrectly detract too much from storage suppliers. - - // Calculate the total potential supply, then go through every normal load and detract. - var totalRemaining = activeSupply + storageSupply; - foreach (var device in DeviceLoadList) - { - var deviceLoad = device.Load * frameTime; - if (deviceLoad > totalRemaining) - { - device.ExternalPowered = false; - DepoweredDevices.Add(device); - } - else - { - totalRemaining -= deviceLoad; - if (!device.ExternalPowered) - { - DepoweredDevices.Remove(device); - device.ExternalPowered = true; - } - } - } - - if (totalRemaining > 0) - { - // What we have left (if any) goes into storage consumers. - foreach (var consumer in PowerStorageConsumerList) - { - if (totalRemaining < 0) - { - break; - } - - var demand = consumer.RequestCharge(frameTime); - if (demand == 0) - { - continue; - } - - var taken = Math.Min(demand, totalRemaining); - totalRemaining -= taken; - consumer.AddCharge(taken); - } - } - - LastTotalDraw = (activeSupply + storageSupply - totalRemaining) / frameTime; - - // activeSupply is free to use, but storageSupply is not. - // Calculate how much of storageSupply, and deduct it from the storage suppliers. - var supplierUsed = storageSupply - totalRemaining; - - // And deduct! - foreach (var supplier in PowerStorageSupplierList) - { - var load = supplier.AvailableCharge(frameTime); - if (load == 0) - { - continue; - } - - var added = Math.Min(load, supplierUsed); - supplierUsed -= added; - supplier.DeductCharge(added); - if (supplierUsed <= 0) - { - return; - } - } - } - - private void PowerAllDevices() - { - foreach (var device in DepoweredDevices) - { - device.ExternalPowered = true; - } - - DepoweredDevices.Clear(); - } - - private void ChargeStorageConsumers(float frametime) - { - foreach (var storage in PowerStorageConsumerList) - { - storage.ChargePowerTick(frametime); - } - } - - private void ChargeStorageSuppliers(float frametime) - { - foreach (var storage in PowerStorageSupplierList) - { - storage.ChargePowerTick(frametime); - } - } - - /// - /// Kills a powernet after it is marked dirty and its component have already been regenerated by the powernet system - /// - public void DirtyKill() - { - WireList.Clear(); - while (NodeList.Count != 0) - { - NodeList[0].DisconnectFromPowernet(); - } - - GeneratorList.Clear(); - DeviceLoadList.Clear(); - DepoweredDevices.Clear(); - PowerStorageSupplierList.Clear(); - PowerStorageConsumerList.Clear(); - - RemoveFromSystem(); - } - - /// - /// Combines two powernets when they connect via powertransfer components - /// - public void MergePowernets(Powernet toMerge) - { - //TODO: load balance reconciliation between powernets on merge tick here - - foreach (var wire in toMerge.WireList) - { - wire.Parent = this; - } - - WireList.AddRange(toMerge.WireList); - toMerge.WireList.Clear(); - - foreach (var node in toMerge.NodeList) - { - node.Parent = this; - } - - NodeList.AddRange(toMerge.NodeList); - toMerge.NodeList.Clear(); - - foreach (var generator in toMerge.GeneratorList) - { - GeneratorList.Add(generator.Key, generator.Value); - } - - Supply += toMerge.Supply; - toMerge.Supply = 0; - toMerge.GeneratorList.Clear(); - - foreach (var device in toMerge.DeviceLoadList) - { - DeviceLoadList.Add(device); - } - - Load += toMerge.Load; - toMerge.Load = 0; - toMerge.DeviceLoadList.Clear(); - - DepoweredDevices.AddRange(toMerge.DepoweredDevices); - toMerge.DepoweredDevices.Clear(); - - PowerStorageSupplierList.AddRange(toMerge.PowerStorageSupplierList); - toMerge.PowerStorageSupplierList.Clear(); - - PowerStorageConsumerList.AddRange(toMerge.PowerStorageConsumerList); - toMerge.PowerStorageConsumerList.Clear(); - - toMerge.RemoveFromSystem(); - } - - /// - /// Removes reference from the powernets list on the powernet system - /// - private void RemoveFromSystem() - { - EntitySystem.Get().Powernets.Remove(this); - } - - #region Registration - - /// - /// Register a continuous load from a device connected to the powernet - /// - public void AddDevice(PowerDeviceComponent device) - { - DeviceLoadList.Add(device); - Load += device.Load; - if (!device.Powered) - DepoweredDevices.Add(device); - } - - /// - /// Update one of the loads from a deviceconnected to the powernet - /// - public void UpdateDevice(PowerDeviceComponent device, float oldLoad) - { - if (DeviceLoadList.Contains(device)) - { - Load -= oldLoad; - Load += device.Load; - } - } - - /// - /// Returns whether or not a power device is in this powernet's load list. - /// - /// The device to check for. - /// True if the device is in the load list, false otherwise. - public bool HasDevice(PowerDeviceComponent device) - { - return DeviceLoadList.Contains(device); - } - - /// - /// Remove a continuous load from a device connected to the powernet - /// - public void RemoveDevice(PowerDeviceComponent device) - { - if (DeviceLoadList.Contains(device)) - { - Load -= device.Load; - DeviceLoadList.Remove(device); - if (DepoweredDevices.Contains(device)) - DepoweredDevices.Remove(device); - } - else - { - Logger.WarningS("power", "We tried to remove device {0} twice from {1}, somehow.", device.Owner, this); - } - } - - /// - /// Register a power supply from a generator connected to the powernet - /// - public void AddGenerator(PowerGeneratorComponent generator) - { - GeneratorList.Add(generator, generator.Supply); - Supply += generator.Supply; - } - - /// - /// Update the value supplied from a generator connected to the powernet - /// - public void UpdateGenerator(PowerGeneratorComponent generator) - { - if (GeneratorList.ContainsKey(generator)) - { - Supply -= GeneratorList[generator]; - GeneratorList[generator] = generator.Supply; - Supply += generator.Supply; - } - } - - /// - /// Remove a power supply from a generator connected to the powernet - /// - public void RemoveGenerator(PowerGeneratorComponent generator) - { - if (GeneratorList.ContainsKey(generator)) - { - Supply -= GeneratorList[generator]; - GeneratorList.Remove(generator); - } - else - { - Logger.WarningS("power", "We tried to remove generator {0} twice from {1}, somehow.", generator.Owner, - this); - } - } - - /// - /// Register a power supply from a generator connected to the powernet - /// - public void AddPowerStorage(PowerStorageNetComponent storage) - { - if (storage.ChargePowernet) - PowerStorageSupplierList.Add(storage); - else - PowerStorageConsumerList.Add(storage); - } - - //How do I even call this? TODO: fix - public void UpdateStorageType(PowerStorageNetComponent storage) - { - //If our chargepowernet settings change we need to tell the powernet of this new setting and remove traces of our old setting - if (PowerStorageSupplierList.Contains(storage)) - PowerStorageSupplierList.Remove(storage); - if (PowerStorageConsumerList.Contains(storage)) - PowerStorageConsumerList.Remove(storage); - - //Apply new setting - if (storage.ChargePowernet) - PowerStorageSupplierList.Add(storage); - else - PowerStorageConsumerList.Add(storage); - } - - /// - /// Remove a power supply from a generator connected to the powernet - /// - public void RemovePowerStorage(PowerStorageNetComponent storage) - { - if (PowerStorageSupplierList.Contains(storage)) - { - PowerStorageSupplierList.Remove(storage); - } - - if (PowerStorageConsumerList.Contains(storage)) - { - PowerStorageSupplierList.Remove(storage); - } - } - - #endregion Registration - - public override string ToString() - { - return $"Powernet {Uid}"; - } - - /// - /// Priority that a device will receive power if powernet cannot supply every device - /// - public enum Priority - { - Necessary = 0, - High = 1, - Medium = 2, - Low = 3, - Provider = 4, - Unnecessary = 5 - } - - /// - /// Comparer that keeps the device dictionary sorted by powernet priority - /// - public class DevicePriorityCompare : IComparer - { - public int Compare(PowerDeviceComponent x, PowerDeviceComponent y) - { - int compare = y.Priority.CompareTo(x.Priority); - - //If the comparer returns 0 sortedset will believe it is a duplicate and return 0, so return 1 instead - if (compare == 0) - { - return y.Owner.Uid.CompareTo(x.Owner.Uid); - } - - return compare; - } - } - } -} diff --git a/Content.Server/GameObjects/Components/Power/SmesComponent.cs b/Content.Server/GameObjects/Components/Power/SmesComponent.cs deleted file mode 100644 index eba642ef27..0000000000 --- a/Content.Server/GameObjects/Components/Power/SmesComponent.cs +++ /dev/null @@ -1,53 +0,0 @@ -using Content.Shared.GameObjects.Components.Power; -using Content.Shared.Utility; -using Robust.Server.GameObjects; -using Robust.Shared.GameObjects; - -namespace Content.Server.GameObjects.Components.Power -{ - /// - /// Handles the "user-facing" side of the actual SMES object. - /// This is operations that are specific to the SMES, like UI and visuals. - /// Code interfacing with the powernet is handled in . - /// - [RegisterComponent] - public class SmesComponent : Component - { - public override string Name => "Smes"; - - PowerStorageComponent Storage; - AppearanceComponent Appearance; - - int LastChargeLevel = 0; - ChargeState LastChargeState; - - public override void Initialize() - { - base.Initialize(); - Storage = Owner.GetComponent(); - Appearance = Owner.GetComponent(); - } - - public void OnUpdate() - { - var newLevel = CalcChargeLevel(); - if (newLevel != LastChargeLevel) - { - LastChargeLevel = newLevel; - Appearance.SetData(SmesVisuals.LastChargeLevel, newLevel); - } - - var newState = Storage.GetChargeState(); - if (newState != LastChargeState) - { - LastChargeState = newState; - Appearance.SetData(SmesVisuals.LastChargeState, newState); - } - } - - int CalcChargeLevel() - { - return ContentHelpers.RoundToLevels(Storage.Charge, Storage.Capacity, 6); - } - } -} diff --git a/Content.Server/GameObjects/Components/Power/WireComponent.cs b/Content.Server/GameObjects/Components/Power/WireComponent.cs new file mode 100644 index 0000000000..dce421d617 --- /dev/null +++ b/Content.Server/GameObjects/Components/Power/WireComponent.cs @@ -0,0 +1,58 @@ +using Content.Server.GameObjects.Components.Interactable; +using Content.Server.GameObjects.Components.Stack; +using Content.Server.GameObjects.EntitySystems; +using Content.Shared.GameObjects.Components.Interactable; +using Robust.Shared.GameObjects; +using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; + +namespace Content.Server.GameObjects.Components.Power +{ + /// + /// Allows the attached entity to be destroyed by a cutting tool, dropping a piece of wire. + /// + [RegisterComponent] + public class WireComponent : Component, IInteractUsing + { + public override string Name => "Wire"; + + [ViewVariables] + private string _wireDroppedOnCutPrototype; + + /// + /// Checked by to determine if there is + /// already a wire of a type on a tile. + /// + [ViewVariables] + public WireType WireType => _wireType; + private WireType _wireType; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _wireDroppedOnCutPrototype, "wireDroppedOnCutPrototype", "HVWireStack1"); + serializer.DataField(ref _wireType, "wireType", WireType.HighVoltage); + } + + public bool InteractUsing(InteractUsingEventArgs eventArgs) + { + if (!eventArgs.Using.TryGetComponent(out ToolComponent tool)) return false; + if (!tool.UseTool(eventArgs.User, Owner, ToolQuality.Cutting)) return false; + + Owner.Delete(); + var droppedEnt = Owner.EntityManager.SpawnEntity(_wireDroppedOnCutPrototype, eventArgs.ClickLocation); + + if (droppedEnt.TryGetComponent(out var stackComp)) + stackComp.Count = 1; + + return true; + } + } + + public enum WireType + { + HighVoltage, + MediumVoltage, + Apc, + } +} diff --git a/Content.Server/GameObjects/Components/Power/WirePlacerComponent.cs b/Content.Server/GameObjects/Components/Power/WirePlacerComponent.cs index 14671cda88..323abcf8c5 100644 --- a/Content.Server/GameObjects/Components/Power/WirePlacerComponent.cs +++ b/Content.Server/GameObjects/Components/Power/WirePlacerComponent.cs @@ -1,14 +1,18 @@ -using Content.Server.GameObjects.Components.Stack; +using Content.Server.GameObjects.Components.NodeContainer; +using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; +using Content.Server.GameObjects.Components.NodeContainer.Nodes; +using Content.Server.GameObjects.Components.Stack; using Content.Server.GameObjects.EntitySystems; using Content.Server.Utility; -using Robust.Server.GameObjects; using Robust.Server.Interfaces.GameObjects; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components.Transform; -using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.Map; using Robust.Shared.IoC; -using Robust.Shared.Map; +using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; +using System.Collections.Generic; +using System.Linq; namespace Content.Server.GameObjects.Components.Power { @@ -23,46 +27,39 @@ namespace Content.Server.GameObjects.Components.Power /// public override string Name => "WirePlacer"; + [ViewVariables] + private string _wirePrototypeID; + + [ViewVariables] + private WireType _blockingWireType; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _wirePrototypeID, "wirePrototypeID", "HVWire"); + serializer.DataField(ref _blockingWireType, "blockingWireType", WireType.HighVoltage); + } + /// public void AfterInteract(AfterInteractEventArgs eventArgs) { if (!InteractionChecks.InRangeUnobstructed(eventArgs)) return; - if(!_mapManager.TryGetGrid(eventArgs.ClickLocation.GridID, out var grid)) return; - var snapPos = grid.SnapGridCellFor(eventArgs.ClickLocation, SnapGridOffset.Center); var snapCell = grid.GetSnapGridCell(snapPos, SnapGridOffset.Center); - if(grid.GetTileRef(snapPos).Tile.IsEmpty) return; - - var found = false; foreach (var snapComp in snapCell) { - if (!snapComp.Owner.HasComponent()) - continue; - - found = true; - break; + if (snapComp.Owner.TryGetComponent(out var wire) && wire.WireType == _blockingWireType) + { + return; + } } - - if (found) - return; - - bool hasItemSpriteComp = Owner.TryGetComponent(out SpriteComponent itemSpriteComp); - if (Owner.TryGetComponent(out StackComponent stack) && !stack.Use(1)) return; - - GridCoordinates coordinates = grid.GridTileToLocal(snapPos); - var newWire = _entityManager.SpawnEntity("Wire", coordinates); - if (newWire.TryGetComponent(out SpriteComponent wireSpriteComp) && hasItemSpriteComp) - { - wireSpriteComp.Color = itemSpriteComp.Color; - } - - //TODO: There is no way to set this wire as above or below the floor + _entityManager.SpawnEntity(_wirePrototypeID, grid.GridTileToLocal(snapPos)); } } } diff --git a/Content.Server/GameObjects/Components/Research/LatheComponent.cs b/Content.Server/GameObjects/Components/Research/LatheComponent.cs index 4f560dfdb3..bc6f16ac72 100644 --- a/Content.Server/GameObjects/Components/Research/LatheComponent.cs +++ b/Content.Server/GameObjects/Components/Research/LatheComponent.cs @@ -20,6 +20,7 @@ using Robust.Server.Interfaces.Player; using Robust.Shared.GameObjects; using Robust.Shared.Timers; using Robust.Shared.ViewVariables; +using Content.Server.GameObjects.Components.Power.ApcNetComponents; namespace Content.Server.GameObjects.Components.Research { @@ -47,8 +48,8 @@ namespace Content.Server.GameObjects.Components.Research } private LatheRecipePrototype _producingRecipe = null; - private PowerDeviceComponent _powerDevice; - private bool Powered => _powerDevice.Powered; + private PowerReceiverComponent _powerReceiver; + private bool Powered => _powerReceiver.Powered; private static readonly TimeSpan InsertionTime = TimeSpan.FromSeconds(0.9f); @@ -57,7 +58,7 @@ namespace Content.Server.GameObjects.Components.Research base.Initialize(); _userInterface = Owner.GetComponent().GetBoundUserInterface(LatheUiKey.Key); _userInterface.OnReceiveMessage += UserInterfaceOnOnReceiveMessage; - _powerDevice = Owner.GetComponent(); + _powerReceiver = Owner.GetComponent(); _appearance = Owner.GetComponent(); } diff --git a/Content.Server/GameObjects/Components/Research/ResearchConsoleComponent.cs b/Content.Server/GameObjects/Components/Research/ResearchConsoleComponent.cs index c30d779ed4..6bef26d671 100644 --- a/Content.Server/GameObjects/Components/Research/ResearchConsoleComponent.cs +++ b/Content.Server/GameObjects/Components/Research/ResearchConsoleComponent.cs @@ -1,4 +1,5 @@ -using Content.Server.GameObjects.Components.Power; +using Content.Server.GameObjects.Components.Power.ApcNetComponents; +using Content.Server.GameObjects.Components.Power; using Content.Server.GameObjects.EntitySystems; using Content.Server.Utility; using Content.Shared.Audio; @@ -31,10 +32,10 @@ namespace Content.Server.GameObjects.Components.Research private BoundUserInterface _userInterface; private ResearchClientComponent _client; - private PowerDeviceComponent _powerDevice; + private PowerReceiverComponent _powerReceiver; private const string _soundCollectionName = "keyboard"; - private bool Powered => _powerDevice.Powered; + private bool Powered => _powerReceiver.Powered; public override void Initialize() { @@ -42,7 +43,7 @@ namespace Content.Server.GameObjects.Components.Research _userInterface = Owner.GetComponent().GetBoundUserInterface(ResearchConsoleUiKey.Key); _userInterface.OnReceiveMessage += UserInterfaceOnOnReceiveMessage; _client = Owner.GetComponent(); - _powerDevice = Owner.GetComponent(); + _powerReceiver = Owner.GetComponent(); } private void UserInterfaceOnOnReceiveMessage(ServerBoundUserInterfaceMessage message) diff --git a/Content.Server/GameObjects/Components/Research/ResearchPointSourceComponent.cs b/Content.Server/GameObjects/Components/Research/ResearchPointSourceComponent.cs index 6f7aedb757..b273e41c26 100644 --- a/Content.Server/GameObjects/Components/Research/ResearchPointSourceComponent.cs +++ b/Content.Server/GameObjects/Components/Research/ResearchPointSourceComponent.cs @@ -1,3 +1,4 @@ +using Content.Server.GameObjects.Components.Power.ApcNetComponents; using Content.Server.GameObjects.Components.Power; using Content.Server.GameObjects.EntitySystems; using Robust.Shared.GameObjects; @@ -14,7 +15,7 @@ namespace Content.Server.GameObjects.Components.Research private int _pointsPerSecond; private bool _active; - private PowerDeviceComponent _powerDevice; + private PowerReceiverComponent _powerReceiver; [ViewVariables] public int PointsPerSecond @@ -33,13 +34,13 @@ namespace Content.Server.GameObjects.Components.Research /// /// Whether this can be used to produce research points. /// - /// If no is found, it's assumed power is not required. - public bool CanProduce => Active && (_powerDevice is null || _powerDevice.Powered); + /// If no is found, it's assumed power is not required. + public bool CanProduce => Active && (_powerReceiver is null || _powerReceiver.Powered); public override void Initialize() { base.Initialize(); - Owner.TryGetComponent(out _powerDevice); + Owner.TryGetComponent(out _powerReceiver); } public override void ExposeData(ObjectSerializer serializer) diff --git a/Content.Server/GameObjects/Components/Research/ResearchServerComponent.cs b/Content.Server/GameObjects/Components/Research/ResearchServerComponent.cs index 476b6913c4..148663a380 100644 --- a/Content.Server/GameObjects/Components/Research/ResearchServerComponent.cs +++ b/Content.Server/GameObjects/Components/Research/ResearchServerComponent.cs @@ -9,6 +9,7 @@ using Robust.Shared.IoC; using Robust.Shared.Serialization; using Robust.Shared.ViewVariables; using Robust.Shared.Utility; +using Content.Server.GameObjects.Components.Power.ApcNetComponents; namespace Content.Server.GameObjects.Components.Research { @@ -65,11 +66,11 @@ namespace Content.Server.GameObjects.Components.Research } } - /// If no is found, it's assumed power is not required. + /// If no is found, it's assumed power is not required. [ViewVariables] - public bool CanRun => _powerDevice is null || _powerDevice.Powered; + public bool CanRun => _powerReceiver is null || _powerReceiver.Powered; - private PowerDeviceComponent _powerDevice; + private PowerReceiverComponent _powerReceiver; public override void Initialize() { @@ -77,7 +78,7 @@ namespace Content.Server.GameObjects.Components.Research Id = ServerCount++; EntitySystem.Get()?.RegisterServer(this); Database = Owner.GetComponent(); - Owner.TryGetComponent(out _powerDevice); + Owner.TryGetComponent(out _powerReceiver); } /// diff --git a/Content.Server/GameObjects/Components/VendingMachines/VendingMachineComponent.cs b/Content.Server/GameObjects/Components/VendingMachines/VendingMachineComponent.cs index baccbf957d..4f730b77dd 100644 --- a/Content.Server/GameObjects/Components/VendingMachines/VendingMachineComponent.cs +++ b/Content.Server/GameObjects/Components/VendingMachines/VendingMachineComponent.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; -using Content.Server.GameObjects.Components.Power; +using Content.Server.GameObjects.Components.Power.ApcNetComponents; using Content.Server.GameObjects.EntitySystems; using Content.Server.Utility; using Content.Shared.GameObjects.Components.VendingMachines; @@ -31,7 +31,7 @@ namespace Content.Server.GameObjects.Components.VendingMachines #pragma warning restore 649 private AppearanceComponent _appearance; private BoundUserInterface _userInterface; - private PowerDeviceComponent _powerDevice; + private PowerReceiverComponent _powerReceiver; private bool _ejecting = false; private TimeSpan _animationDuration = TimeSpan.Zero; @@ -39,7 +39,7 @@ namespace Content.Server.GameObjects.Components.VendingMachines private string _description; private string _spriteName; - private bool Powered => _powerDevice.Powered; + private bool Powered => _powerReceiver.Powered; private bool _broken = false; public void Activate(ActivateEventArgs eventArgs) @@ -103,16 +103,17 @@ namespace Content.Server.GameObjects.Components.VendingMachines _userInterface = Owner.GetComponent() .GetBoundUserInterface(VendingMachineUiKey.Key); _userInterface.OnReceiveMessage += UserInterfaceOnOnReceiveMessage; - _powerDevice = Owner.GetComponent(); - _powerDevice.OnPowerStateChanged += UpdatePower; + _powerReceiver = Owner.GetComponent(); + _powerReceiver.OnPowerStateChanged += UpdatePower; + TrySetVisualState(_powerReceiver.Powered ? VendingMachineVisualState.Normal : VendingMachineVisualState.Off); InitializeFromPrototype(); } public override void OnRemove() { _appearance = null; - _powerDevice.OnPowerStateChanged -= UpdatePower; - _powerDevice = null; + _powerReceiver.OnPowerStateChanged -= UpdatePower; + _powerReceiver = null; base.OnRemove(); } diff --git a/Content.Server/GameObjects/Components/Weapon/Melee/StunbatonComponent.cs b/Content.Server/GameObjects/Components/Weapon/Melee/StunbatonComponent.cs index 4275e70209..15310511b9 100644 --- a/Content.Server/GameObjects/Components/Weapon/Melee/StunbatonComponent.cs +++ b/Content.Server/GameObjects/Components/Weapon/Melee/StunbatonComponent.cs @@ -57,13 +57,13 @@ namespace Content.Server.GameObjects.Components.Weapon.Melee public bool Activated => _activated; [ViewVariables] - private PowerCellComponent Cell + private BatteryComponent Cell { get { if (_cellContainer.ContainedEntity == null) return null; - _cellContainer.ContainedEntity.TryGetComponent(out PowerCellComponent cell); + _cellContainer.ContainedEntity.TryGetComponent(out BatteryComponent cell); return cell; } } @@ -88,9 +88,12 @@ namespace Content.Server.GameObjects.Components.Weapon.Melee public override bool OnHitEntities(IReadOnlyList entities) { var cell = Cell; - if (!Activated || entities.Count == 0 || cell == null || !cell.CanDeductCharge(EnergyPerUse)) + if (!Activated || entities.Count == 0 || cell == null) return false; - + if (!cell.TryUseCharge(EnergyPerUse)) + { + return false; + } EntitySystem.Get().PlayAtCoords("/Audio/weapons/egloves.ogg", Owner.Transform.GridPosition, AudioHelpers.WithVariation(0.25f)); foreach (var entity in entities) @@ -108,9 +111,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Melee else stunnable.Slowdown(_slowdownTime); } - - cell.DeductCharge(EnergyPerUse); - if(cell.Charge < EnergyPerUse) + if(cell.CurrentCharge < EnergyPerUse) { EntitySystem.Get().PlayAtCoords(AudioHelpers.GetRandomFileFromSoundCollection("sparks"), Owner.Transform.GridPosition, AudioHelpers.WithVariation(0.25f)); TurnOff(); @@ -169,7 +170,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Melee return; } - if (cell.Charge < EnergyPerUse) + if (cell.CurrentCharge < EnergyPerUse) { EntitySystem.Get().PlayAtCoords("/Audio/machines/button.ogg", Owner.Transform.GridPosition, AudioHelpers.WithVariation(0.25f)); _notifyManager.PopupMessage(Owner, user, _localizationManager.GetString("Dead cell...")); @@ -192,7 +193,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Melee public bool InteractUsing(InteractUsingEventArgs eventArgs) { - if (!eventArgs.Using.HasComponent()) return false; + if (!eventArgs.Using.HasComponent()) return false; if (Cell != null) return false; diff --git a/Content.Server/GameObjects/Components/Weapon/Ranged/Barrels/ServerBatteryBarrelComponent.cs b/Content.Server/GameObjects/Components/Weapon/Ranged/Barrels/ServerBatteryBarrelComponent.cs index 6b664b4b44..60a2135eba 100644 --- a/Content.Server/GameObjects/Components/Weapon/Ranged/Barrels/ServerBatteryBarrelComponent.cs +++ b/Content.Server/GameObjects/Components/Weapon/Ranged/Barrels/ServerBatteryBarrelComponent.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using Content.Server.GameObjects.Components.Power; using Content.Server.GameObjects.Components.Projectiles; @@ -33,7 +33,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Barrels [ViewVariables] private string _ammoPrototype; [ViewVariables] public IEntity PowerCellEntity => _powerCellContainer.ContainedEntity; - public PowerCellComponent PowerCell => _powerCellContainer.ContainedEntity.GetComponent(); + public BatteryComponent PowerCell => _powerCellContainer.ContainedEntity.GetComponent(); private ContainerSlot _powerCellContainer; private ContainerSlot _ammoContainer; private string _powerCellPrototype; @@ -50,7 +50,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Barrels return 0; } - return (int) Math.Ceiling(powerCell.GetComponent().Charge / _baseFireCost); + return (int) Math.Ceiling(powerCell.GetComponent().CurrentCharge / _baseFireCost); } } @@ -65,7 +65,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Barrels return 0; } - return (int) Math.Ceiling(powerCell.GetComponent().Capacity / _baseFireCost); + return (int) Math.Ceiling((float) (powerCell.GetComponent().MaxCharge / _baseFireCost)); } } @@ -144,8 +144,8 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Barrels return null; } - var capacitor = powerCellEntity.GetComponent(); - if (capacitor.Charge < _lowerChargeLimit) + var capacitor = powerCellEntity.GetComponent(); + if (capacitor.CurrentCharge < _lowerChargeLimit) { return null; } @@ -153,8 +153,8 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Barrels // Can fire confirmed // Multiply the entity's damage / whatever by the percentage of charge the shot has. IEntity entity; - var chargeChange = Math.Min(capacitor.Charge, _baseFireCost); - capacitor.DeductCharge(chargeChange); + var chargeChange = Math.Min(capacitor.CurrentCharge, _baseFireCost); + capacitor.UseCharge(chargeChange); var energyRatio = chargeChange / _baseFireCost; if (_ammoContainer.ContainedEntity != null) @@ -201,7 +201,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Barrels return false; } - if (!entity.HasComponent()) + if (!entity.HasComponent()) { return false; } @@ -264,7 +264,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Barrels public override bool InteractUsing(InteractUsingEventArgs eventArgs) { - if (!eventArgs.Using.HasComponent()) + if (!eventArgs.Using.HasComponent()) { return false; } diff --git a/Content.Server/GameObjects/EntitySystems/CellChargerSystem.cs b/Content.Server/GameObjects/EntitySystems/BaseChargerSystem.cs similarity index 56% rename from Content.Server/GameObjects/EntitySystems/CellChargerSystem.cs rename to Content.Server/GameObjects/EntitySystems/BaseChargerSystem.cs index 2ae5b38c65..6e0415b6a9 100644 --- a/Content.Server/GameObjects/EntitySystems/CellChargerSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/BaseChargerSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.GameObjects.Components.Power.Chargers; +using Content.Server.GameObjects.Components.Power.Chargers; using JetBrains.Annotations; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Systems; @@ -6,19 +6,18 @@ using Robust.Shared.GameObjects.Systems; namespace Content.Server.GameObjects.EntitySystems { [UsedImplicitly] - internal class CellChargerSystem : EntitySystem + internal class BaseChargerSystem : EntitySystem { public override void Initialize() { - EntityQuery = new TypeEntityQuery(typeof(PowerCellChargerComponent)); + EntityQuery = new TypeEntityQuery(typeof(BaseCharger)); } public override void Update(float frameTime) { foreach (var entity in RelevantEntities) { - var comp = entity.GetComponent(); - comp.OnUpdate(frameTime); + entity.GetComponent().OnUpdate(frameTime); } } } diff --git a/Content.Server/GameObjects/EntitySystems/BatteryDischargerSystem.cs b/Content.Server/GameObjects/EntitySystems/BatteryDischargerSystem.cs new file mode 100644 index 0000000000..a17571a1b7 --- /dev/null +++ b/Content.Server/GameObjects/EntitySystems/BatteryDischargerSystem.cs @@ -0,0 +1,32 @@ +using Content.Server.GameObjects.Components.Power.PowerNetComponents; +using Robust.Server.Interfaces.Timing; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Systems; +using Robust.Shared.IoC; + +namespace Content.Server.GameObjects.EntitySystems +{ + internal class BatteryDischargerSystem : EntitySystem + { +#pragma warning disable 649 + [Dependency] private readonly IPauseManager _pauseManager; +#pragma warning restore 649 + + public override void Initialize() + { + EntityQuery = new TypeEntityQuery(typeof(BatteryDischargerComponent)); + } + + public override void Update(float frameTime) + { + foreach (var entity in RelevantEntities) + { + if (_pauseManager.IsEntityPaused(entity)) + { + continue; + } + entity.GetComponent().Update(frameTime); + } + } + } +} diff --git a/Content.Server/GameObjects/EntitySystems/BatteryStorageSystem.cs b/Content.Server/GameObjects/EntitySystems/BatteryStorageSystem.cs new file mode 100644 index 0000000000..38fe005dcd --- /dev/null +++ b/Content.Server/GameObjects/EntitySystems/BatteryStorageSystem.cs @@ -0,0 +1,32 @@ +using Content.Server.GameObjects.Components.Power.PowerNetComponents; +using Robust.Server.Interfaces.Timing; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Systems; +using Robust.Shared.IoC; + +namespace Content.Server.GameObjects.EntitySystems +{ + internal class BatteryStorageSystem : EntitySystem + { +#pragma warning disable 649 + [Dependency] private readonly IPauseManager _pauseManager; +#pragma warning restore 649 + + public override void Initialize() + { + EntityQuery = new TypeEntityQuery(typeof(BatteryStorageComponent)); + } + + public override void Update(float frameTime) + { + foreach (var entity in RelevantEntities) + { + if (_pauseManager.IsEntityPaused(entity)) + { + continue; + } + entity.GetComponent().Update(frameTime); + } + } + } +} diff --git a/Content.Server/GameObjects/EntitySystems/PowerApcSystem.cs b/Content.Server/GameObjects/EntitySystems/PowerApcSystem.cs index 898f16e035..00e0ed20f1 100644 --- a/Content.Server/GameObjects/EntitySystems/PowerApcSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/PowerApcSystem.cs @@ -1,11 +1,19 @@ -using Content.Server.GameObjects.Components.Power; +using Content.Server.GameObjects.Components.Power.ApcNetComponents; +using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Systems; +using System.Collections.Generic; +using Robust.Shared.IoC; +using Robust.Server.Interfaces.Timing; namespace Content.Server.GameObjects.EntitySystems { - class PowerApcSystem : EntitySystem + public sealed class ApcSystem : EntitySystem { +#pragma warning disable 649 + [Dependency] private readonly IPauseManager _pauseManager; +#pragma warning restore 649 + public override void Initialize() { EntityQuery = new TypeEntityQuery(typeof(ApcComponent)); @@ -13,10 +21,20 @@ namespace Content.Server.GameObjects.EntitySystems public override void Update(float frameTime) { + var uniqueApcNets = new HashSet(); //could be improved by maintaining set instead of getting collection every frame foreach (var entity in RelevantEntities) { - var comp = entity.GetComponent(); - comp.OnUpdate(); + if (_pauseManager.IsEntityPaused(entity)) + { + continue; + } + var apc = entity.GetComponent(); + uniqueApcNets.Add(apc.Net); + entity.GetComponent().Update(); + } + foreach (var apcNet in uniqueApcNets) + { + apcNet.Update(frameTime); } } } diff --git a/Content.Server/GameObjects/EntitySystems/PowerSmesSystem.cs b/Content.Server/GameObjects/EntitySystems/PowerSmesSystem.cs index c7ddd45fee..db0068fec6 100644 --- a/Content.Server/GameObjects/EntitySystems/PowerSmesSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/PowerSmesSystem.cs @@ -15,8 +15,7 @@ namespace Content.Server.GameObjects.EntitySystems { foreach (var entity in RelevantEntities) { - var comp = entity.GetComponent(); - comp.OnUpdate(); + entity.GetComponent().OnUpdate(); } } } diff --git a/Content.Server/GameObjects/EntitySystems/PowerSystem.cs b/Content.Server/GameObjects/EntitySystems/PowerSystem.cs deleted file mode 100644 index 4cd2e56b93..0000000000 --- a/Content.Server/GameObjects/EntitySystems/PowerSystem.cs +++ /dev/null @@ -1,73 +0,0 @@ -using System.Collections.Generic; -using Content.Server.GameObjects.Components.Power; -using Robust.Shared.GameObjects; -using Robust.Shared.GameObjects.Systems; -using Robust.Shared.Interfaces.GameObjects; -using Robust.Shared.IoC; - -namespace Content.Shared.GameObjects.EntitySystems -{ - public class PowerSystem : EntitySystem - { - public List Powernets = new List(); - - private IComponentManager componentManager; - - private int _lastUid = 0; - - public PowerSystem() - { - EntityQuery = new TypeEntityQuery(typeof(PowerDeviceComponent)); - } - - public override void Initialize() - { - base.Initialize(); - componentManager = IoCManager.Resolve(); - } - - public int NewUid() - { - return ++_lastUid; - } - - public override void Update(float frametime) - { - for (int i = 0; i < Powernets.Count; i++) - { - var powernet = Powernets[i]; - if (powernet.Dirty) - { - //Tell all the wires of this net to be prepared to create/join new powernets - foreach (var wire in powernet.WireList) - { - wire.Regenerating = true; - } - - foreach (var wire in powernet.WireList) - { - //Only a few wires should pass this if check since each will create and take all the others into its powernet - if (wire.Regenerating) - wire.SpreadPowernet(); - } - - //At this point all wires will have found/joined new powernet, all capable nodes will have joined them as well and removed themselves from nodelist - powernet.DirtyKill(); - i--; - } - } - - foreach (var powernet in Powernets) - { - powernet.Update(frametime); - } - - // Draw power for devices not connected to anything. - foreach (var entity in EntityManager.GetEntities(EntityQuery)) - { - var device = entity.GetComponent(); - device.ProcessInternalPower(frametime); - } - } - } -} diff --git a/Content.Server/GameObjects/EntitySystems/WeaponCapacitorChargerSystem.cs b/Content.Server/GameObjects/EntitySystems/WeaponCapacitorChargerSystem.cs deleted file mode 100644 index 4e86b35857..0000000000 --- a/Content.Server/GameObjects/EntitySystems/WeaponCapacitorChargerSystem.cs +++ /dev/null @@ -1,26 +0,0 @@ -using Content.Server.GameObjects.Components.Power; -using Content.Server.GameObjects.Components.Power.Chargers; -using JetBrains.Annotations; -using Robust.Shared.GameObjects; -using Robust.Shared.GameObjects.Systems; - -namespace Content.Server.GameObjects.EntitySystems -{ - [UsedImplicitly] - internal class WeaponCapacitorChargerSystem : EntitySystem - { - public override void Initialize() - { - EntityQuery = new TypeEntityQuery(typeof(WeaponCapacitorChargerComponent)); - } - - public override void Update(float frameTime) - { - foreach (var entity in RelevantEntities) - { - var comp = entity.GetComponent(); - comp.OnUpdate(frameTime); - } - } - } -} \ No newline at end of file diff --git a/Content.Server/ServerContentIoC.cs b/Content.Server/ServerContentIoC.cs index e2e73daafc..4e58f6379e 100644 --- a/Content.Server/ServerContentIoC.cs +++ b/Content.Server/ServerContentIoC.cs @@ -13,6 +13,8 @@ using Content.Server.Utility; using Content.Shared.Interfaces; using Content.Shared.Kitchen; using Robust.Shared.IoC; +using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; +using Content.Server.GameObjects.Components.NodeContainer.Nodes; namespace Content.Server { @@ -31,6 +33,8 @@ namespace Content.Server IoCManager.Register(); IoCManager.Register(); IoCManager.Register(); + IoCManager.Register(); + IoCManager.Register(); IoCManager.Register(); } } diff --git a/Content.Shared/GameObjects/Components/Power/SharedApcComponent.cs b/Content.Shared/GameObjects/Components/Power/SharedApc.cs similarity index 91% rename from Content.Shared/GameObjects/Components/Power/SharedApcComponent.cs rename to Content.Shared/GameObjects/Components/Power/SharedApc.cs index 23fa7de9b0..e68c031aa3 100644 --- a/Content.Shared/GameObjects/Components/Power/SharedApcComponent.cs +++ b/Content.Shared/GameObjects/Components/Power/SharedApc.cs @@ -1,15 +1,10 @@ -using System; +using System; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components.UserInterface; using Robust.Shared.Serialization; namespace Content.Shared.GameObjects.Components.Power { - public abstract class SharedApcComponent : Component - { - public sealed override string Name => "Apc"; - } - [Serializable, NetSerializable] public enum ApcVisuals { @@ -52,7 +47,7 @@ namespace Content.Shared.GameObjects.Components.Power [Serializable, NetSerializable] public sealed class ApcToggleMainBreakerMessage : BoundUserInterfaceMessage - { + { } public enum ApcExternalPowerState diff --git a/Content.Shared/GameObjects/Components/Power/PowerShared.cs b/Content.Shared/GameObjects/Components/Power/SharedPower.cs similarity index 100% rename from Content.Shared/GameObjects/Components/Power/PowerShared.cs rename to Content.Shared/GameObjects/Components/Power/SharedPower.cs diff --git a/Content.Shared/GameObjects/Components/Power/SharedPowerCellComponent.cs b/Content.Shared/GameObjects/Components/Power/SharedPowerCell.cs similarity index 100% rename from Content.Shared/GameObjects/Components/Power/SharedPowerCellComponent.cs rename to Content.Shared/GameObjects/Components/Power/SharedPowerCell.cs diff --git a/Content.Shared/GameObjects/Components/Power/SharedPowerDebugTool.cs b/Content.Shared/GameObjects/Components/Power/SharedPowerDebugTool.cs deleted file mode 100644 index b8d97ee30b..0000000000 --- a/Content.Shared/GameObjects/Components/Power/SharedPowerDebugTool.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using Robust.Shared.GameObjects; -using Robust.Shared.Serialization; - -namespace Content.Shared.GameObjects.Components.Power -{ - public class SharedPowerDebugTool : Component - { - public override string Name => "PowerDebugTool"; - public override uint? NetID => ContentNetIDs.POWER_DEBUG_TOOL; - - [Serializable, NetSerializable] - protected class OpenDataWindowMsg : ComponentMessage - { - public string Data { get; } - - public OpenDataWindowMsg(string data) - { - Directed = true; - Data = data; - } - } - } -} diff --git a/Content.Shared/GameObjects/Components/Power/SharedPowerDeviceComponent.cs b/Content.Shared/GameObjects/Components/Power/SharedPowerDevice.cs similarity index 100% rename from Content.Shared/GameObjects/Components/Power/SharedPowerDeviceComponent.cs rename to Content.Shared/GameObjects/Components/Power/SharedPowerDevice.cs diff --git a/Resources/Maps/saltern.yml b/Resources/Maps/saltern.yml index 5bf91a5506..9f62c6c340 100644 --- a/Resources/Maps/saltern.yml +++ b/Resources/Maps/saltern.yml @@ -139,6 +139,12 @@ entities: pos: 28.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2 type: Wire components: @@ -146,6 +152,12 @@ entities: pos: 27.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 3 type: Wire components: @@ -153,6 +165,12 @@ entities: pos: 26.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 4 type: Wire components: @@ -160,6 +178,12 @@ entities: pos: 25.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 5 type: Wire components: @@ -167,6 +191,12 @@ entities: pos: 24.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 6 type: Wire components: @@ -174,6 +204,12 @@ entities: pos: 23.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 7 type: Wire components: @@ -181,6 +217,12 @@ entities: pos: 22.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 8 type: Wire components: @@ -188,6 +230,12 @@ entities: pos: 21.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 9 type: Wire components: @@ -195,6 +243,12 @@ entities: pos: 20.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 10 type: Wire components: @@ -202,6 +256,12 @@ entities: pos: 19.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 11 type: Wire components: @@ -209,6 +269,12 @@ entities: pos: 18.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 12 type: Wire components: @@ -216,6 +282,12 @@ entities: pos: 17.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 13 type: Wire components: @@ -223,6 +295,12 @@ entities: pos: 16.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 14 type: Wire components: @@ -230,6 +308,12 @@ entities: pos: 15.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 15 type: Wire components: @@ -237,6 +321,12 @@ entities: pos: 14.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 16 type: Wire components: @@ -244,6 +334,12 @@ entities: pos: 13.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 17 type: Wire components: @@ -251,6 +347,12 @@ entities: pos: 12.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 18 type: Wire components: @@ -258,6 +360,12 @@ entities: pos: 11.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 19 type: Wire components: @@ -265,6 +373,12 @@ entities: pos: 10.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 20 type: Wire components: @@ -272,6 +386,12 @@ entities: pos: 9.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 21 type: Wire components: @@ -279,6 +399,12 @@ entities: pos: 8.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 22 type: Wire components: @@ -286,6 +412,12 @@ entities: pos: 7.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 23 type: Wire components: @@ -293,6 +425,12 @@ entities: pos: 6.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 24 type: Wire components: @@ -300,6 +438,12 @@ entities: pos: 5.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 25 type: Wire components: @@ -307,6 +451,12 @@ entities: pos: 4.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 26 type: Wire components: @@ -314,6 +464,12 @@ entities: pos: 3.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 27 type: Wire components: @@ -321,6 +477,12 @@ entities: pos: 2.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 28 type: Wire components: @@ -328,6 +490,12 @@ entities: pos: 1.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 29 type: Wire components: @@ -335,6 +503,12 @@ entities: pos: 0.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 30 type: Wire components: @@ -342,6 +516,12 @@ entities: pos: -0.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 31 type: Wire components: @@ -349,6 +529,12 @@ entities: pos: -1.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 32 type: Wire components: @@ -356,6 +542,12 @@ entities: pos: -2.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 33 type: Wire components: @@ -363,6 +555,12 @@ entities: pos: -3.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 34 type: Wire components: @@ -370,6 +568,12 @@ entities: pos: -4.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 35 type: Wire components: @@ -377,6 +581,12 @@ entities: pos: -5.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 36 type: Wire components: @@ -384,6 +594,12 @@ entities: pos: -6.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 37 type: Wire components: @@ -391,6 +607,12 @@ entities: pos: -7.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 38 type: Wire components: @@ -398,6 +620,12 @@ entities: pos: -8.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 39 type: Wire components: @@ -405,6 +633,12 @@ entities: pos: -9.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 40 type: Wire components: @@ -412,6 +646,12 @@ entities: pos: -10.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 41 type: Wire components: @@ -419,6 +659,12 @@ entities: pos: -11.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 42 type: Wire components: @@ -426,6 +672,12 @@ entities: pos: -12.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 43 type: Wire components: @@ -433,6 +685,12 @@ entities: pos: -13.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 44 type: Wire components: @@ -440,6 +698,12 @@ entities: pos: -14.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 45 type: Wire components: @@ -447,6 +711,12 @@ entities: pos: -15.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 46 type: Wire components: @@ -454,6 +724,12 @@ entities: pos: -16.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 47 type: Wire components: @@ -461,6 +737,12 @@ entities: pos: -17.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 48 type: Wire components: @@ -468,6 +750,12 @@ entities: pos: -18.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 49 type: Wire components: @@ -475,6 +763,12 @@ entities: pos: -19.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 50 type: Wire components: @@ -482,6 +776,12 @@ entities: pos: -20.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 51 type: Wire components: @@ -489,6 +789,12 @@ entities: pos: -21.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 52 type: Wire components: @@ -496,6 +802,12 @@ entities: pos: -22.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 53 type: Wire components: @@ -503,6 +815,12 @@ entities: pos: -23.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 54 type: Wire components: @@ -510,6 +828,12 @@ entities: pos: -24.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 55 type: Wire components: @@ -517,6 +841,12 @@ entities: pos: -25.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 56 type: Wire components: @@ -524,6 +854,12 @@ entities: pos: -26.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 57 type: Wire components: @@ -531,6 +867,12 @@ entities: pos: -27.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 58 type: Wire components: @@ -538,6 +880,12 @@ entities: pos: -28.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 59 type: Wire components: @@ -545,6 +893,12 @@ entities: pos: -29.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 60 type: Wire components: @@ -552,6 +906,12 @@ entities: pos: -30.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 61 type: Wire components: @@ -559,6 +919,12 @@ entities: pos: -31.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 62 type: Wire components: @@ -566,6 +932,12 @@ entities: pos: -32.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 63 type: Wire components: @@ -573,6 +945,12 @@ entities: pos: -33.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 64 type: Wire components: @@ -580,6 +958,12 @@ entities: pos: -34.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 65 type: Wire components: @@ -587,6 +971,12 @@ entities: pos: -35.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 66 type: Wire components: @@ -594,6 +984,12 @@ entities: pos: -36.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 67 type: Wire components: @@ -601,6 +997,12 @@ entities: pos: 3.5,5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 68 type: Wire components: @@ -608,6 +1010,12 @@ entities: pos: 3.5,6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 69 type: Wire components: @@ -615,6 +1023,12 @@ entities: pos: 3.5,7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 70 type: Wire components: @@ -622,6 +1036,12 @@ entities: pos: 3.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 71 type: Wire components: @@ -629,6 +1049,12 @@ entities: pos: 3.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 72 type: Wire components: @@ -636,6 +1062,12 @@ entities: pos: 3.5,10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 73 type: Wire components: @@ -643,6 +1075,12 @@ entities: pos: 3.5,11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 74 type: Wire components: @@ -650,6 +1088,12 @@ entities: pos: 3.5,12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 75 type: Wire components: @@ -657,6 +1101,12 @@ entities: pos: 3.5,13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 76 type: Wire components: @@ -664,6 +1114,12 @@ entities: pos: 3.5,14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 77 type: Wire components: @@ -671,6 +1127,12 @@ entities: pos: 3.5,15.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 78 type: Wire components: @@ -678,6 +1140,12 @@ entities: pos: 3.5,16.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 79 type: Wire components: @@ -685,6 +1153,12 @@ entities: pos: 3.5,17.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 80 type: Wire components: @@ -692,6 +1166,12 @@ entities: pos: 3.5,18.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 81 type: Wire components: @@ -699,6 +1179,12 @@ entities: pos: 3.5,19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 82 type: Wire components: @@ -706,6 +1192,12 @@ entities: pos: 3.5,20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 83 type: Wire components: @@ -713,6 +1205,12 @@ entities: pos: 3.5,3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 84 type: Wire components: @@ -720,6 +1218,12 @@ entities: pos: 3.5,2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 85 type: Wire components: @@ -727,6 +1231,12 @@ entities: pos: 3.5,1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 86 type: Wire components: @@ -734,6 +1244,12 @@ entities: pos: 3.5,0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 87 type: Wire components: @@ -741,6 +1257,12 @@ entities: pos: 3.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 88 type: Wire components: @@ -748,6 +1270,12 @@ entities: pos: 3.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 89 type: Wire components: @@ -755,6 +1283,12 @@ entities: pos: 3.5,-2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 90 type: Wire components: @@ -762,6 +1296,12 @@ entities: pos: 3.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 91 type: Wire components: @@ -769,6 +1309,12 @@ entities: pos: 3.5,-4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 92 type: Wire components: @@ -776,6 +1322,12 @@ entities: pos: 3.5,-5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 93 type: Wire components: @@ -783,6 +1335,12 @@ entities: pos: 3.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 94 type: Wire components: @@ -790,6 +1348,12 @@ entities: pos: 3.5,-7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 95 type: Wire components: @@ -797,6 +1361,12 @@ entities: pos: 3.5,-8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 96 type: Wire components: @@ -804,6 +1374,12 @@ entities: pos: 3.5,-9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 97 type: Wire components: @@ -811,6 +1387,12 @@ entities: pos: 3.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 98 type: Wire components: @@ -818,6 +1400,12 @@ entities: pos: 3.5,-11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 99 type: Wire components: @@ -825,6 +1413,12 @@ entities: pos: 3.5,-12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 100 type: Wire components: @@ -832,6 +1426,12 @@ entities: pos: 3.5,-13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 101 type: Wire components: @@ -839,6 +1439,12 @@ entities: pos: 3.5,-14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 102 type: Wire components: @@ -846,6 +1452,12 @@ entities: pos: 3.5,-15.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 103 type: Wire components: @@ -853,6 +1465,12 @@ entities: pos: 3.5,-16.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 104 type: Wire components: @@ -860,6 +1478,12 @@ entities: pos: 3.5,-17.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 105 type: Wire components: @@ -867,6 +1491,12 @@ entities: pos: 3.5,-18.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 106 type: Wire components: @@ -874,6 +1504,12 @@ entities: pos: 3.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 107 type: Wire components: @@ -881,6 +1517,12 @@ entities: pos: 3.5,-20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 108 type: Wire components: @@ -888,6 +1530,12 @@ entities: pos: 3.5,-21.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 109 type: Wire components: @@ -895,6 +1543,12 @@ entities: pos: 3.5,-22.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 110 type: Wire components: @@ -902,6 +1556,12 @@ entities: pos: 3.5,-23.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 111 type: Wire components: @@ -909,6 +1569,12 @@ entities: pos: 7.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 112 type: Wire components: @@ -916,6 +1582,12 @@ entities: pos: 5.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 113 type: Wire components: @@ -923,6 +1595,12 @@ entities: pos: 4.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 114 type: Wire components: @@ -930,6 +1608,12 @@ entities: pos: 6.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 115 type: Wire components: @@ -937,6 +1621,12 @@ entities: pos: 7.5,-20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 116 type: Wire components: @@ -944,6 +1634,12 @@ entities: pos: 8.5,-20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 117 type: Wire components: @@ -951,6 +1647,12 @@ entities: pos: 9.5,-20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 118 type: Wire components: @@ -958,6 +1660,12 @@ entities: pos: 10.5,-20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 119 type: Wire components: @@ -965,6 +1673,12 @@ entities: pos: 11.5,-20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 120 type: Wire components: @@ -972,6 +1686,12 @@ entities: pos: 12.5,-20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 121 type: Wire components: @@ -979,6 +1699,12 @@ entities: pos: 13.5,-20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 122 type: Wire components: @@ -986,6 +1712,12 @@ entities: pos: 14.5,-20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 123 type: Wire components: @@ -993,6 +1725,12 @@ entities: pos: 18.5,-25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 124 type: Wire components: @@ -1000,6 +1738,12 @@ entities: pos: 17.5,-25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 125 type: Wire components: @@ -1007,6 +1751,12 @@ entities: pos: 16.5,-25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 126 type: Wire components: @@ -1014,6 +1764,12 @@ entities: pos: 15.5,-25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 127 type: Wire components: @@ -1021,6 +1777,12 @@ entities: pos: 14.5,-25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 128 type: Wire components: @@ -1028,6 +1790,12 @@ entities: pos: 14.5,-25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 129 type: Wire components: @@ -1035,6 +1803,12 @@ entities: pos: 14.5,-24.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 130 type: Wire components: @@ -1042,6 +1816,12 @@ entities: pos: 22.5,-20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 131 type: Wire components: @@ -1049,6 +1829,12 @@ entities: pos: 22.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 132 type: Wire components: @@ -1056,6 +1842,12 @@ entities: pos: 22.5,-18.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 133 type: Wire components: @@ -1063,6 +1855,12 @@ entities: pos: 22.5,-17.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 134 type: Wire components: @@ -1070,6 +1868,12 @@ entities: pos: 23.5,-17.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 135 type: Wire components: @@ -1077,6 +1881,12 @@ entities: pos: 24.5,-17.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 136 type: Wire components: @@ -1084,6 +1894,12 @@ entities: pos: 25.5,-17.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 137 type: Wire components: @@ -1091,6 +1907,12 @@ entities: pos: 26.5,-17.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 138 type: Wire components: @@ -1098,6 +1920,12 @@ entities: pos: 26.5,-16.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 139 type: Wire components: @@ -1105,6 +1933,12 @@ entities: pos: 26.5,-15.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 140 type: Wire components: @@ -1112,6 +1946,12 @@ entities: pos: 26.5,-14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 141 type: Wire components: @@ -1119,6 +1959,12 @@ entities: pos: 26.5,-13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 142 type: Wire components: @@ -1126,6 +1972,12 @@ entities: pos: 26.5,-12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 143 type: Wire components: @@ -1133,6 +1985,12 @@ entities: pos: 26.5,-11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 144 type: Catwalk components: @@ -1147,6 +2005,12 @@ entities: pos: 26.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 146 type: Wire components: @@ -1154,6 +2018,12 @@ entities: pos: 26.5,-2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 147 type: Wire components: @@ -1161,6 +2031,12 @@ entities: pos: 26.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 148 type: Wire components: @@ -1168,6 +2044,12 @@ entities: pos: 26.5,-4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 149 type: Wire components: @@ -1175,6 +2057,12 @@ entities: pos: 26.5,-5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 150 type: Wire components: @@ -1182,6 +2070,12 @@ entities: pos: 26.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 151 type: Wire components: @@ -1189,6 +2083,12 @@ entities: pos: 26.5,-7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 152 type: Wire components: @@ -1196,6 +2096,12 @@ entities: pos: 26.5,-8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 153 type: Wire components: @@ -1203,6 +2109,12 @@ entities: pos: 26.5,-9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 154 type: Wire components: @@ -1210,6 +2122,12 @@ entities: pos: 25.5,-2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 155 type: Wire components: @@ -1217,6 +2135,12 @@ entities: pos: 24.5,-2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 156 type: Wire components: @@ -1224,6 +2148,12 @@ entities: pos: 23.5,-2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 157 type: Wire components: @@ -1231,6 +2161,12 @@ entities: pos: 22.5,-2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 158 type: Wire components: @@ -1238,6 +2174,12 @@ entities: pos: 21.5,-2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 159 type: Wire components: @@ -1245,6 +2187,12 @@ entities: pos: 20.5,-2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 160 type: Wire components: @@ -1252,6 +2200,12 @@ entities: pos: 20.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 161 type: Wire components: @@ -1259,6 +2213,12 @@ entities: pos: 20.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 162 type: Wire components: @@ -1266,6 +2226,12 @@ entities: pos: 20.5,0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 163 type: Wire components: @@ -1273,6 +2239,12 @@ entities: pos: 20.5,1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 164 type: Wire components: @@ -1280,6 +2252,12 @@ entities: pos: 21.5,1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 165 type: Wire components: @@ -1287,6 +2265,12 @@ entities: pos: 21.5,2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 166 type: Wire components: @@ -1294,6 +2278,12 @@ entities: pos: 21.5,3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 167 type: Wire components: @@ -1301,6 +2291,12 @@ entities: pos: 27.5,5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 168 type: Wire components: @@ -1308,6 +2304,12 @@ entities: pos: 27.5,6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 169 type: Wire components: @@ -1315,6 +2317,12 @@ entities: pos: 27.5,7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 170 type: Catwalk components: @@ -1343,6 +2351,12 @@ entities: pos: 25.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 174 type: Wire components: @@ -1350,6 +2364,12 @@ entities: pos: 24.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 175 type: Wire components: @@ -1357,6 +2377,12 @@ entities: pos: 23.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 176 type: Wire components: @@ -1364,6 +2390,12 @@ entities: pos: 22.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 177 type: Wire components: @@ -1371,6 +2403,12 @@ entities: pos: 21.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 178 type: Wire components: @@ -1378,6 +2416,12 @@ entities: pos: 21.5,10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 179 type: Wire components: @@ -1385,6 +2429,12 @@ entities: pos: 20.5,10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 180 type: Wire components: @@ -1392,6 +2442,12 @@ entities: pos: 19.5,10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 181 type: Wire components: @@ -1399,6 +2455,12 @@ entities: pos: 18.5,10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 182 type: Wire components: @@ -1406,6 +2468,12 @@ entities: pos: 17.5,10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 183 type: Wire components: @@ -1413,6 +2481,12 @@ entities: pos: 16.5,10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 184 type: Wire components: @@ -1420,6 +2494,12 @@ entities: pos: 15.5,10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 185 type: Wire components: @@ -1427,6 +2507,12 @@ entities: pos: 14.5,10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 186 type: Wire components: @@ -1434,6 +2520,12 @@ entities: pos: 13.5,10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 187 type: Wire components: @@ -1441,6 +2533,12 @@ entities: pos: 13.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 188 type: Wire components: @@ -1448,6 +2546,12 @@ entities: pos: 13.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 189 type: Wire components: @@ -1455,6 +2559,12 @@ entities: pos: 13.5,7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 190 type: Wire components: @@ -1462,6 +2572,12 @@ entities: pos: 13.5,6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 191 type: Wire components: @@ -1469,6 +2585,12 @@ entities: pos: 13.5,5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 192 type: Wire components: @@ -1476,6 +2598,12 @@ entities: pos: 4.5,14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 193 type: Wire components: @@ -1483,6 +2611,12 @@ entities: pos: 6.5,14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 194 type: Wire components: @@ -1490,6 +2624,12 @@ entities: pos: 5.5,14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 195 type: Wire components: @@ -1497,6 +2637,12 @@ entities: pos: 6.5,13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 196 type: Wire components: @@ -1504,6 +2650,12 @@ entities: pos: 7.5,13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 197 type: Wire components: @@ -1511,6 +2663,12 @@ entities: pos: 8.5,13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 198 type: Wire components: @@ -1518,6 +2676,12 @@ entities: pos: 8.5,12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 199 type: Wire components: @@ -1525,6 +2689,12 @@ entities: pos: 8.5,11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 200 type: Wire components: @@ -1532,6 +2702,12 @@ entities: pos: 9.5,13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 201 type: Wire components: @@ -1539,6 +2715,12 @@ entities: pos: 10.5,13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 202 type: Wire components: @@ -1546,6 +2728,12 @@ entities: pos: 10.5,14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 203 type: Wire components: @@ -1553,6 +2741,12 @@ entities: pos: 11.5,14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 204 type: Wire components: @@ -1560,6 +2754,12 @@ entities: pos: 12.5,14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 205 type: Wire components: @@ -1567,6 +2767,12 @@ entities: pos: 12.5,15.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 206 type: Wire components: @@ -1574,6 +2780,12 @@ entities: pos: 12.5,16.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 207 type: Wire components: @@ -1581,6 +2793,12 @@ entities: pos: 12.5,17.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 208 type: Wire components: @@ -1588,6 +2806,12 @@ entities: pos: 12.5,18.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 209 type: Wire components: @@ -1595,6 +2819,12 @@ entities: pos: 12.5,19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 210 type: Wire components: @@ -1602,6 +2832,12 @@ entities: pos: 12.5,20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 211 type: Wire components: @@ -1609,6 +2845,12 @@ entities: pos: 11.5,20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 212 type: Wire components: @@ -1616,6 +2858,12 @@ entities: pos: 10.5,20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 213 type: Wire components: @@ -1623,6 +2871,12 @@ entities: pos: 26.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 214 type: Wire components: @@ -1630,6 +2884,12 @@ entities: pos: 26.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 215 type: Wire components: @@ -1637,6 +2897,12 @@ entities: pos: 27.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 216 type: Wire components: @@ -1644,6 +2910,12 @@ entities: pos: 2.5,-23.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 217 type: Wire components: @@ -1651,6 +2923,12 @@ entities: pos: 1.5,-23.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 218 type: Wire components: @@ -1658,6 +2936,12 @@ entities: pos: 0.5,-23.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 219 type: Wire components: @@ -1665,6 +2949,12 @@ entities: pos: -0.5,-24.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 220 type: Wire components: @@ -1672,6 +2962,12 @@ entities: pos: 2.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 221 type: Wire components: @@ -1679,6 +2975,12 @@ entities: pos: 1.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 222 type: Wire components: @@ -1686,6 +2988,12 @@ entities: pos: 0.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 223 type: Wire components: @@ -1693,6 +3001,12 @@ entities: pos: -0.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 224 type: Wire components: @@ -1700,6 +3014,12 @@ entities: pos: -1.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 225 type: Wire components: @@ -1707,6 +3027,12 @@ entities: pos: -2.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 226 type: Wire components: @@ -1714,6 +3040,12 @@ entities: pos: -3.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 227 type: Wire components: @@ -1721,6 +3053,12 @@ entities: pos: -4.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 228 type: Wire components: @@ -1728,6 +3066,12 @@ entities: pos: -5.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 229 type: Wire components: @@ -1735,6 +3079,12 @@ entities: pos: -6.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 230 type: Wire components: @@ -1742,6 +3092,12 @@ entities: pos: -7.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 231 type: Wire components: @@ -1749,6 +3105,12 @@ entities: pos: -8.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 232 type: Wire components: @@ -1756,6 +3118,12 @@ entities: pos: -9.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 233 type: Wire components: @@ -1763,6 +3131,12 @@ entities: pos: -10.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 234 type: Wire components: @@ -1770,6 +3144,12 @@ entities: pos: -11.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 235 type: Wire components: @@ -1777,6 +3157,12 @@ entities: pos: -8.5,-20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 236 type: Wire components: @@ -1784,6 +3170,12 @@ entities: pos: -8.5,-21.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 237 type: Wire components: @@ -1791,6 +3183,12 @@ entities: pos: -8.5,-22.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 238 type: Wire components: @@ -1798,6 +3196,12 @@ entities: pos: -9.5,-22.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 239 type: Wire components: @@ -1805,6 +3209,12 @@ entities: pos: -11.5,-20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 240 type: Wire components: @@ -1812,6 +3222,12 @@ entities: pos: -11.5,-21.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 241 type: Wire components: @@ -1819,6 +3235,12 @@ entities: pos: -11.5,-22.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 242 type: Wire components: @@ -1826,6 +3248,12 @@ entities: pos: -11.5,-23.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 243 type: Wire components: @@ -1833,6 +3261,12 @@ entities: pos: -11.5,-24.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 244 type: Wire components: @@ -1840,6 +3274,12 @@ entities: pos: -11.5,-25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 245 type: Wire components: @@ -1847,6 +3287,12 @@ entities: pos: -11.5,-26.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 246 type: Wire components: @@ -1854,6 +3300,12 @@ entities: pos: -10.5,-26.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 247 type: Wire components: @@ -1861,6 +3313,12 @@ entities: pos: -9.5,-26.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 248 type: Wire components: @@ -1868,6 +3326,12 @@ entities: pos: -8.5,-26.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 249 type: Wire components: @@ -1875,6 +3339,12 @@ entities: pos: -7.5,-26.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 250 type: Wire components: @@ -1882,6 +3352,12 @@ entities: pos: -6.5,-26.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 251 type: Wire components: @@ -1889,6 +3365,12 @@ entities: pos: -5.5,-26.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 252 type: Wire components: @@ -1896,6 +3378,12 @@ entities: pos: -4.5,-26.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 253 type: Wire components: @@ -1903,6 +3391,12 @@ entities: pos: -3.5,-26.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 254 type: Wire components: @@ -1910,6 +3404,12 @@ entities: pos: -2.5,-26.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 255 type: Wire components: @@ -1917,6 +3417,12 @@ entities: pos: -1.5,-26.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 256 type: Wire components: @@ -1924,6 +3430,12 @@ entities: pos: -0.5,-26.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 257 type: Wire components: @@ -1931,6 +3443,12 @@ entities: pos: -0.5,-23.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 258 type: Wire components: @@ -1938,6 +3456,12 @@ entities: pos: -0.5,-25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 259 type: Catwalk components: @@ -2036,6 +3560,12 @@ entities: pos: -12.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 273 type: Wire components: @@ -2043,6 +3573,12 @@ entities: pos: -13.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 274 type: Wire components: @@ -2050,6 +3586,12 @@ entities: pos: -14.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 275 type: Wire components: @@ -2057,6 +3599,12 @@ entities: pos: -15.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 276 type: Wire components: @@ -2064,6 +3612,12 @@ entities: pos: -16.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 277 type: Wire components: @@ -2071,6 +3625,12 @@ entities: pos: -16.5,-18.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 278 type: Wire components: @@ -2078,6 +3638,12 @@ entities: pos: -16.5,-17.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 279 type: Wire components: @@ -2085,6 +3651,12 @@ entities: pos: -16.5,-16.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 280 type: Wire components: @@ -2092,6 +3664,12 @@ entities: pos: -16.5,-15.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 281 type: Wire components: @@ -2099,6 +3677,12 @@ entities: pos: -16.5,-14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 282 type: Wire components: @@ -2106,6 +3690,12 @@ entities: pos: 2.5,-7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 283 type: Wire components: @@ -2113,6 +3703,12 @@ entities: pos: 1.5,-7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 284 type: Wire components: @@ -2120,6 +3716,12 @@ entities: pos: -16.5,-2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 285 type: Wire components: @@ -2127,6 +3729,12 @@ entities: pos: -16.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 286 type: Wire components: @@ -2134,6 +3742,12 @@ entities: pos: -16.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 287 type: Wire components: @@ -2141,6 +3755,12 @@ entities: pos: -16.5,0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 288 type: Wire components: @@ -2148,6 +3768,12 @@ entities: pos: -16.5,1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 289 type: Wire components: @@ -2155,6 +3781,12 @@ entities: pos: -16.5,2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 290 type: Table components: @@ -2169,6 +3801,12 @@ entities: pos: -16.5,3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 292 type: Wire components: @@ -2176,6 +3814,12 @@ entities: pos: -3.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 293 type: Wire components: @@ -2183,6 +3827,12 @@ entities: pos: -1.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 294 type: Wire components: @@ -2190,6 +3840,12 @@ entities: pos: -2.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 295 type: Catwalk components: @@ -2204,6 +3860,12 @@ entities: pos: -7.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 297 type: Catwalk components: @@ -2218,6 +3880,12 @@ entities: pos: -6.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 299 type: Wire components: @@ -2225,6 +3893,12 @@ entities: pos: -5.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 300 type: Catwalk components: @@ -2239,6 +3913,12 @@ entities: pos: -9.5,-14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 302 type: Wire components: @@ -2246,6 +3926,12 @@ entities: pos: -10.5,-14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 303 type: Wire components: @@ -2253,6 +3939,12 @@ entities: pos: -11.5,-14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 304 type: Wire components: @@ -2260,6 +3952,12 @@ entities: pos: -12.5,-14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 305 type: Wire components: @@ -2267,6 +3965,12 @@ entities: pos: -13.5,-14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 306 type: Wire components: @@ -2274,6 +3978,12 @@ entities: pos: -14.5,-14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 307 type: Wire components: @@ -2281,6 +3991,12 @@ entities: pos: -15.5,-14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 308 type: Wire components: @@ -2288,6 +4004,12 @@ entities: pos: -13.5,-13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 309 type: Wire components: @@ -2295,6 +4017,12 @@ entities: pos: -13.5,-12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 310 type: Catwalk components: @@ -2309,6 +4037,12 @@ entities: pos: -9.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 312 type: Wire components: @@ -2316,6 +4050,12 @@ entities: pos: -9.5,-9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 313 type: Wire components: @@ -2323,6 +4063,12 @@ entities: pos: -9.5,-8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 314 type: Wire components: @@ -2330,6 +4076,12 @@ entities: pos: -9.5,-7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 315 type: Wire components: @@ -2337,6 +4089,12 @@ entities: pos: -32.5,3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 316 type: Wire components: @@ -2344,6 +4102,12 @@ entities: pos: -32.5,2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 317 type: Wire components: @@ -2351,6 +4115,12 @@ entities: pos: -32.5,1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 318 type: Wire components: @@ -2358,6 +4128,12 @@ entities: pos: -32.5,0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 319 type: LockerElectricalSupplies components: @@ -2367,7 +4143,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -2407,6 +4182,12 @@ entities: pos: -33.5,-5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 325 type: Wire components: @@ -2414,6 +4195,12 @@ entities: pos: -33.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 326 type: Wire components: @@ -2421,6 +4208,12 @@ entities: pos: -34.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 327 type: Wire components: @@ -2428,6 +4221,12 @@ entities: pos: -35.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 328 type: Wire components: @@ -2435,6 +4234,12 @@ entities: pos: -31.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 329 type: Wire components: @@ -2442,6 +4247,12 @@ entities: pos: -30.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 330 type: Wire components: @@ -2449,6 +4260,12 @@ entities: pos: -29.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 331 type: Wire components: @@ -2456,6 +4273,12 @@ entities: pos: -28.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 332 type: Wire components: @@ -2463,6 +4286,12 @@ entities: pos: -27.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 333 type: Wire components: @@ -2470,6 +4299,12 @@ entities: pos: -26.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 334 type: Wire components: @@ -2477,6 +4312,12 @@ entities: pos: -25.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 335 type: Wire components: @@ -2484,6 +4325,12 @@ entities: pos: -24.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 336 type: Wire components: @@ -2491,6 +4338,12 @@ entities: pos: -23.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 337 type: Wire components: @@ -2498,6 +4351,12 @@ entities: pos: -23.5,-5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 338 type: Wire components: @@ -2505,6 +4364,12 @@ entities: pos: -23.5,-4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 339 type: Wire components: @@ -2512,6 +4377,12 @@ entities: pos: -22.5,10.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 340 type: APC components: @@ -2519,6 +4390,12 @@ entities: pos: -30.5,8.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 341 type: APC components: @@ -2526,6 +4403,16 @@ entities: pos: -22.5,10.5 rot: 3.141592653589793 rad type: Transform + - startingCharge: 9806.396 + type: Battery + - drawRate: 10000 + type: PowerConsumer + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 342 type: Wire components: @@ -2533,6 +4420,12 @@ entities: pos: -18.5,-1.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 343 type: Wire components: @@ -2540,6 +4433,12 @@ entities: pos: -23.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 344 type: Wire components: @@ -2547,6 +4446,12 @@ entities: pos: -23.5,-2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 345 type: Wire components: @@ -2554,6 +4459,12 @@ entities: pos: -23.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 346 type: Wire components: @@ -2561,6 +4472,12 @@ entities: pos: -24.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 347 type: Wire components: @@ -2568,6 +4485,12 @@ entities: pos: -25.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 348 type: Wire components: @@ -2575,6 +4498,12 @@ entities: pos: -26.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 349 type: Wire components: @@ -2582,6 +4511,12 @@ entities: pos: -27.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 350 type: Wire components: @@ -2589,6 +4524,12 @@ entities: pos: -28.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 351 type: Wire components: @@ -2596,6 +4537,12 @@ entities: pos: -22.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 352 type: Wire components: @@ -2603,6 +4550,12 @@ entities: pos: -21.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 353 type: Wire components: @@ -2610,6 +4563,12 @@ entities: pos: -20.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 354 type: Wire components: @@ -2617,6 +4576,12 @@ entities: pos: -19.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 355 type: Wire components: @@ -2624,6 +4589,12 @@ entities: pos: -23.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 356 type: Wire components: @@ -2631,6 +4602,12 @@ entities: pos: -23.5,0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 357 type: Wire components: @@ -2638,6 +4615,12 @@ entities: pos: -23.5,1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 358 type: Wire components: @@ -2645,6 +4628,12 @@ entities: pos: -23.5,2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 359 type: Wire components: @@ -2652,6 +4641,12 @@ entities: pos: -23.5,3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 360 type: Wire components: @@ -2659,6 +4654,12 @@ entities: pos: -23.5,-7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 361 type: Wire components: @@ -2666,6 +4667,12 @@ entities: pos: -22.5,-7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 362 type: ChairOfficeDark components: @@ -2688,8 +4695,8 @@ entities: - 666 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 364 type: Table components: @@ -2724,6 +4731,12 @@ entities: pos: -23.5,5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 369 type: Wire components: @@ -2731,6 +4744,12 @@ entities: pos: -23.5,6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 370 type: Wire components: @@ -2738,6 +4757,12 @@ entities: pos: -23.5,7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 371 type: Wire components: @@ -2745,6 +4770,12 @@ entities: pos: -23.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 372 type: Wire components: @@ -2752,6 +4783,12 @@ entities: pos: -23.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 373 type: Wire components: @@ -2759,6 +4796,12 @@ entities: pos: -22.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 374 type: Wire components: @@ -2766,6 +4809,12 @@ entities: pos: -21.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 375 type: Wire components: @@ -2773,6 +4822,12 @@ entities: pos: -20.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 376 type: Wire components: @@ -2780,6 +4835,12 @@ entities: pos: -19.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 377 type: Wire components: @@ -2787,6 +4848,12 @@ entities: pos: -20.5,10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 378 type: Wire components: @@ -2794,6 +4861,12 @@ entities: pos: -20.5,11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 379 type: Wire components: @@ -2801,6 +4874,12 @@ entities: pos: -20.5,12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 380 type: Wire components: @@ -2808,6 +4887,12 @@ entities: pos: -20.5,13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 381 type: ComputerPowerMonitoring components: @@ -2823,7 +4908,16 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] + entities: + - 3013 + - 3014 + - 3016 + - 3017 + - 3018 + - 3019 + - 3020 + - 3021 + - 3022 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -2844,7 +4938,14 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] + entities: + - 3023 + - 3025 + - 3026 + - 3027 + - 3028 + - 3029 + - 3030 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -2856,6 +4957,12 @@ entities: pos: -33.5,0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 386 type: Wire components: @@ -2863,6 +4970,12 @@ entities: pos: -33.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 387 type: Wire components: @@ -2870,6 +4983,12 @@ entities: pos: -33.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 388 type: Wire components: @@ -2877,6 +4996,12 @@ entities: pos: -33.5,-2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 389 type: Wire components: @@ -2884,6 +5009,12 @@ entities: pos: -33.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 390 type: Wire components: @@ -2891,6 +5022,12 @@ entities: pos: -33.5,-4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 391 type: Wire components: @@ -2898,6 +5035,12 @@ entities: pos: -32.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 392 type: Wire components: @@ -2905,6 +5048,12 @@ entities: pos: -32.5,13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 393 type: Wire components: @@ -2912,6 +5061,12 @@ entities: pos: -32.5,12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 394 type: Wire components: @@ -2919,6 +5074,12 @@ entities: pos: -32.5,11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 395 type: Wire components: @@ -2926,6 +5087,12 @@ entities: pos: -32.5,10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 396 type: Wire components: @@ -2933,6 +5100,12 @@ entities: pos: -32.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 397 type: Wire components: @@ -2940,6 +5113,12 @@ entities: pos: -32.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 398 type: Wire components: @@ -2947,6 +5126,12 @@ entities: pos: -33.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 399 type: Wire components: @@ -2954,6 +5139,12 @@ entities: pos: -34.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 400 type: Wire components: @@ -2961,6 +5152,12 @@ entities: pos: -35.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 401 type: Wire components: @@ -2968,6 +5165,12 @@ entities: pos: -36.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 402 type: Wire components: @@ -2975,6 +5178,12 @@ entities: pos: -37.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 403 type: Wire components: @@ -2982,6 +5191,12 @@ entities: pos: -37.5,7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 404 type: Wire components: @@ -2989,6 +5204,12 @@ entities: pos: -37.5,6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 405 type: Wire components: @@ -2996,6 +5217,12 @@ entities: pos: -37.5,5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 406 type: Wire components: @@ -3003,6 +5230,12 @@ entities: pos: -37.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 407 type: Wire components: @@ -3010,6 +5243,12 @@ entities: pos: -19.5,13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 408 type: Wire components: @@ -3017,6 +5256,12 @@ entities: pos: -18.5,13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 409 type: Wire components: @@ -3024,6 +5269,12 @@ entities: pos: -17.5,13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 410 type: Wire components: @@ -3031,6 +5282,12 @@ entities: pos: -17.5,14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 411 type: Wire components: @@ -3038,6 +5295,12 @@ entities: pos: -17.5,15.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 412 type: Wire components: @@ -3045,6 +5308,12 @@ entities: pos: -18.5,15.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 413 type: Wire components: @@ -3052,6 +5321,12 @@ entities: pos: -18.5,16.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 414 type: Wire components: @@ -3059,6 +5334,12 @@ entities: pos: -18.5,17.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 415 type: Wire components: @@ -3066,6 +5347,12 @@ entities: pos: -18.5,18.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 416 type: Wire components: @@ -3073,6 +5360,12 @@ entities: pos: -18.5,19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 417 type: Wire components: @@ -3080,6 +5373,12 @@ entities: pos: -18.5,20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 418 type: Wire components: @@ -3087,6 +5386,12 @@ entities: pos: -18.5,21.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 419 type: Wire components: @@ -3094,6 +5399,12 @@ entities: pos: -18.5,22.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 420 type: Wire components: @@ -3101,6 +5412,12 @@ entities: pos: -18.5,23.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 421 type: Wire components: @@ -3108,6 +5425,12 @@ entities: pos: -18.5,24.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 422 type: Wire components: @@ -3115,6 +5438,12 @@ entities: pos: -18.5,25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 423 type: Wire components: @@ -3122,6 +5451,12 @@ entities: pos: -17.5,25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 424 type: Wire components: @@ -3129,6 +5464,12 @@ entities: pos: -16.5,25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 425 type: Wire components: @@ -3136,6 +5477,12 @@ entities: pos: -15.5,25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 426 type: Wire components: @@ -3143,6 +5490,12 @@ entities: pos: -14.5,25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 427 type: Wire components: @@ -3150,6 +5503,12 @@ entities: pos: -13.5,25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 428 type: Wire components: @@ -3157,6 +5516,12 @@ entities: pos: -12.5,25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 429 type: Wire components: @@ -3164,6 +5529,12 @@ entities: pos: -11.5,25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 430 type: Wire components: @@ -3171,6 +5542,12 @@ entities: pos: -10.5,25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 431 type: Wire components: @@ -3178,6 +5555,12 @@ entities: pos: -9.5,25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 432 type: Wire components: @@ -3185,6 +5568,12 @@ entities: pos: -8.5,25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 433 type: Wire components: @@ -3192,6 +5581,12 @@ entities: pos: -7.5,25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 434 type: Wire components: @@ -3199,6 +5594,12 @@ entities: pos: -7.5,24.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 435 type: Wire components: @@ -3206,6 +5607,12 @@ entities: pos: -6.5,24.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 436 type: Wire components: @@ -3213,6 +5620,12 @@ entities: pos: -5.5,24.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 437 type: Wire components: @@ -3220,6 +5633,12 @@ entities: pos: -4.5,24.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 438 type: Wire components: @@ -3227,6 +5646,12 @@ entities: pos: -4.5,23.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 439 type: Wire components: @@ -3234,6 +5659,12 @@ entities: pos: -4.5,22.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 440 type: Wire components: @@ -3241,6 +5672,12 @@ entities: pos: -4.5,21.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 441 type: Wire components: @@ -3248,6 +5685,12 @@ entities: pos: -3.5,21.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 442 type: Wire components: @@ -3255,6 +5698,12 @@ entities: pos: -2.5,21.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 443 type: Wire components: @@ -3262,6 +5711,12 @@ entities: pos: -1.5,21.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 444 type: Wire components: @@ -3269,6 +5724,12 @@ entities: pos: -0.5,21.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 445 type: Wire components: @@ -3276,6 +5737,12 @@ entities: pos: -0.5,20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 446 type: Wire components: @@ -3283,6 +5750,12 @@ entities: pos: 0.5,20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 447 type: Wire components: @@ -3290,6 +5763,12 @@ entities: pos: 1.5,20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 448 type: Wire components: @@ -3297,6 +5776,12 @@ entities: pos: 2.5,20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 449 type: Wire components: @@ -3304,6 +5789,12 @@ entities: pos: 2.5,21.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 450 type: Wire components: @@ -3311,6 +5802,12 @@ entities: pos: 2.5,22.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 451 type: Wire components: @@ -3318,6 +5815,12 @@ entities: pos: 2.5,23.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 452 type: Wire components: @@ -3325,6 +5828,12 @@ entities: pos: 2.5,24.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 453 type: Wire components: @@ -3332,6 +5841,12 @@ entities: pos: 2.5,25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 454 type: Wire components: @@ -3339,6 +5854,12 @@ entities: pos: 2.5,26.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 455 type: Wire components: @@ -3346,6 +5867,12 @@ entities: pos: 2.5,27.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 456 type: Wire components: @@ -3353,6 +5880,12 @@ entities: pos: 2.5,28.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 457 type: Wire components: @@ -3360,6 +5893,12 @@ entities: pos: 0.5,27.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 458 type: Wire components: @@ -3367,6 +5906,12 @@ entities: pos: 0.5,28.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 459 type: APC components: @@ -3374,6 +5919,12 @@ entities: pos: 0.5,27.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 460 type: APC components: @@ -3381,6 +5932,12 @@ entities: pos: 7.5,27.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 461 type: Wire components: @@ -3388,6 +5945,12 @@ entities: pos: 1.5,28.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 462 type: Wire components: @@ -3395,6 +5958,12 @@ entities: pos: 3.5,25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 463 type: Wire components: @@ -3402,6 +5971,12 @@ entities: pos: 4.5,25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 464 type: Wire components: @@ -3409,6 +5984,12 @@ entities: pos: 5.5,25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 465 type: Wire components: @@ -3416,6 +5997,12 @@ entities: pos: 6.5,25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 466 type: Wire components: @@ -3423,6 +6010,12 @@ entities: pos: 7.5,25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 467 type: Wire components: @@ -3430,6 +6023,12 @@ entities: pos: -6.5,5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 468 type: Wire components: @@ -3437,6 +6036,12 @@ entities: pos: -6.5,6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 469 type: Wire components: @@ -3444,6 +6049,12 @@ entities: pos: -6.5,7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 470 type: Wire components: @@ -3451,6 +6062,12 @@ entities: pos: -6.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 471 type: Wire components: @@ -3458,6 +6075,12 @@ entities: pos: -6.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 472 type: Wire components: @@ -3465,6 +6088,12 @@ entities: pos: -6.5,10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 473 type: Wire components: @@ -3472,6 +6101,12 @@ entities: pos: -6.5,11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 474 type: Wire components: @@ -3479,6 +6114,12 @@ entities: pos: -16.5,5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 475 type: Wire components: @@ -3486,6 +6127,12 @@ entities: pos: -16.5,6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 476 type: Wire components: @@ -3493,6 +6140,12 @@ entities: pos: -16.5,7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 477 type: Wire components: @@ -3500,6 +6153,12 @@ entities: pos: -17.5,7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 478 type: Wire components: @@ -3507,6 +6166,12 @@ entities: pos: -17.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 479 type: Wire components: @@ -3514,6 +6179,12 @@ entities: pos: -17.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 480 type: Wire components: @@ -3521,6 +6192,12 @@ entities: pos: -17.5,10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 481 type: Wire components: @@ -3528,6 +6205,12 @@ entities: pos: -17.5,11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 482 type: Wire components: @@ -3535,6 +6218,12 @@ entities: pos: -17.5,12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 483 type: Wire components: @@ -3542,6 +6231,12 @@ entities: pos: -16.5,11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 484 type: Wire components: @@ -3549,6 +6244,12 @@ entities: pos: -15.5,11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 485 type: Wire components: @@ -3556,6 +6257,12 @@ entities: pos: -14.5,11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 486 type: Wire components: @@ -3563,6 +6270,12 @@ entities: pos: -13.5,11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 487 type: Wire components: @@ -3570,6 +6283,12 @@ entities: pos: -12.5,11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 488 type: Wire components: @@ -3577,6 +6296,12 @@ entities: pos: -11.5,11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 489 type: Wire components: @@ -3584,6 +6309,12 @@ entities: pos: -10.5,11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 490 type: Wire components: @@ -3591,6 +6322,12 @@ entities: pos: -9.5,11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 491 type: Wire components: @@ -3598,6 +6335,12 @@ entities: pos: -8.5,11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 492 type: Wire components: @@ -3605,6 +6348,12 @@ entities: pos: -7.5,11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 493 type: Wire components: @@ -3612,6 +6361,12 @@ entities: pos: -6.5,12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 494 type: Wire components: @@ -3619,6 +6374,12 @@ entities: pos: -6.5,13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 495 type: Wire components: @@ -3626,6 +6387,12 @@ entities: pos: -6.5,14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 496 type: Wire components: @@ -3633,6 +6400,12 @@ entities: pos: -6.5,15.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 497 type: Wire components: @@ -3640,6 +6413,12 @@ entities: pos: -7.5,15.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 498 type: Wire components: @@ -3647,6 +6426,12 @@ entities: pos: -8.5,15.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 499 type: Wire components: @@ -3654,6 +6439,12 @@ entities: pos: -9.5,15.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 500 type: Wire components: @@ -3661,6 +6452,12 @@ entities: pos: -10.5,15.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 501 type: Wire components: @@ -3668,6 +6465,12 @@ entities: pos: -11.5,15.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 502 type: Wire components: @@ -3675,6 +6478,12 @@ entities: pos: -12.5,15.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 503 type: Wire components: @@ -3682,6 +6491,12 @@ entities: pos: 1.5,11.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 504 type: APC components: @@ -3689,6 +6504,12 @@ entities: pos: 1.5,11.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 505 type: Wire components: @@ -3696,6 +6517,12 @@ entities: pos: -5.5,11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 506 type: Wire components: @@ -3703,6 +6530,12 @@ entities: pos: -4.5,11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 507 type: Wire components: @@ -3710,6 +6543,12 @@ entities: pos: -3.5,11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 508 type: Wire components: @@ -3717,6 +6556,12 @@ entities: pos: -2.5,11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 509 type: Wire components: @@ -3724,6 +6569,12 @@ entities: pos: -1.5,11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 510 type: Wire components: @@ -3731,6 +6582,12 @@ entities: pos: -0.5,11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 511 type: Wire components: @@ -3738,6 +6595,12 @@ entities: pos: 0.5,11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 512 type: Wire components: @@ -3745,6 +6608,12 @@ entities: pos: -8.5,16.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 513 type: Wire components: @@ -3752,6 +6621,12 @@ entities: pos: -8.5,17.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 514 type: Wire components: @@ -3759,6 +6634,12 @@ entities: pos: -8.5,18.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 515 type: Wire components: @@ -3766,6 +6647,12 @@ entities: pos: -8.5,19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 516 type: Wire components: @@ -3773,6 +6660,12 @@ entities: pos: -8.5,20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 517 type: Catwalk components: @@ -3808,6 +6701,12 @@ entities: pos: -9.5,26.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 522 type: Wire components: @@ -3815,6 +6714,12 @@ entities: pos: -15.5,15.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 523 type: APC components: @@ -3822,6 +6727,12 @@ entities: pos: -15.5,15.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 524 type: Wire components: @@ -3829,6 +6740,12 @@ entities: pos: -14.5,15.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 525 type: Wire components: @@ -3836,6 +6753,12 @@ entities: pos: 2.5,17.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 526 type: Wire components: @@ -3843,6 +6766,12 @@ entities: pos: 1.5,17.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 527 type: Wire components: @@ -3850,6 +6779,12 @@ entities: pos: 0.5,17.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 528 type: Wire components: @@ -3857,6 +6792,12 @@ entities: pos: -1.5,17.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 529 type: Wire components: @@ -3864,6 +6805,12 @@ entities: pos: 29.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 530 type: Wire components: @@ -3871,6 +6818,12 @@ entities: pos: 29.5,5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 531 type: Wire components: @@ -3878,6 +6831,12 @@ entities: pos: 30.5,5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 532 type: Wire components: @@ -3885,6 +6844,12 @@ entities: pos: 32.5,5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 533 type: Wire components: @@ -3892,6 +6857,12 @@ entities: pos: 31.5,5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 534 type: Wire components: @@ -3899,6 +6870,12 @@ entities: pos: 33.5,5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 535 type: Wire components: @@ -3906,6 +6883,12 @@ entities: pos: 33.5,6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 536 type: Wire components: @@ -3913,6 +6896,12 @@ entities: pos: 33.5,7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 537 type: Wire components: @@ -3920,6 +6909,12 @@ entities: pos: 33.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 538 type: Wire components: @@ -3927,6 +6922,12 @@ entities: pos: 33.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 539 type: Wire components: @@ -3934,6 +6935,12 @@ entities: pos: 33.5,10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 540 type: Wire components: @@ -3941,6 +6948,12 @@ entities: pos: 33.5,11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 541 type: Wire components: @@ -3948,6 +6961,12 @@ entities: pos: 33.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 542 type: Wire components: @@ -3955,6 +6974,12 @@ entities: pos: 34.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 543 type: Wire components: @@ -3962,6 +6987,12 @@ entities: pos: 35.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 544 type: Wire components: @@ -3969,6 +7000,12 @@ entities: pos: 36.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 545 type: Wire components: @@ -3976,6 +7013,12 @@ entities: pos: 37.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 546 type: Wire components: @@ -3983,6 +7026,12 @@ entities: pos: 38.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 547 type: Wire components: @@ -3990,6 +7039,12 @@ entities: pos: 39.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 548 type: Wire components: @@ -3997,6 +7052,12 @@ entities: pos: 40.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 549 type: Wire components: @@ -4004,6 +7065,12 @@ entities: pos: 40.5,5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 550 type: Wire components: @@ -4011,6 +7078,12 @@ entities: pos: 40.5,6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 551 type: Wire components: @@ -4018,6 +7091,12 @@ entities: pos: 40.5,7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 552 type: ReinforcedWindow components: @@ -4032,6 +7111,12 @@ entities: pos: 38.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 554 type: Wire components: @@ -4039,6 +7124,12 @@ entities: pos: 37.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 555 type: Wire components: @@ -4046,6 +7137,12 @@ entities: pos: 39.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 556 type: Wire components: @@ -4053,6 +7150,12 @@ entities: pos: 38.5,3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 557 type: Wire components: @@ -4060,6 +7163,12 @@ entities: pos: 38.5,2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 558 type: Wire components: @@ -4067,6 +7176,12 @@ entities: pos: 38.5,1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 559 type: Wire components: @@ -4074,6 +7189,12 @@ entities: pos: 38.5,0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 560 type: Wire components: @@ -4081,6 +7202,12 @@ entities: pos: 38.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 561 type: Wire components: @@ -4088,6 +7215,12 @@ entities: pos: 33.5,3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 562 type: Wire components: @@ -4095,6 +7228,12 @@ entities: pos: 33.5,2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 563 type: Wire components: @@ -4102,6 +7241,12 @@ entities: pos: 33.5,1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 564 type: Wire components: @@ -4109,6 +7254,12 @@ entities: pos: 33.5,0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 565 type: Wire components: @@ -4116,6 +7267,12 @@ entities: pos: 33.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 566 type: Wire components: @@ -4123,6 +7280,12 @@ entities: pos: 33.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 567 type: Wire components: @@ -4130,6 +7293,12 @@ entities: pos: 33.5,-2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 568 type: Wire components: @@ -4137,6 +7306,12 @@ entities: pos: 33.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 569 type: Wire components: @@ -4144,6 +7319,12 @@ entities: pos: 33.5,-4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 570 type: Wire components: @@ -4151,6 +7332,12 @@ entities: pos: 33.5,-5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 571 type: Wire components: @@ -4158,6 +7345,12 @@ entities: pos: 33.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 572 type: Wire components: @@ -4165,6 +7358,12 @@ entities: pos: 33.5,-7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 573 type: Wire components: @@ -4172,6 +7371,12 @@ entities: pos: 32.5,-7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 574 type: Wire components: @@ -4179,6 +7384,12 @@ entities: pos: 31.5,-7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 575 type: Wire components: @@ -4186,6 +7397,12 @@ entities: pos: 30.5,-7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 576 type: Wire components: @@ -4193,6 +7410,12 @@ entities: pos: 29.5,-7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 577 type: Wire components: @@ -4200,6 +7423,12 @@ entities: pos: 29.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 578 type: Wire components: @@ -4207,6 +7436,12 @@ entities: pos: 28.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 579 type: Wire components: @@ -4214,6 +7449,12 @@ entities: pos: 27.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 580 type: Wire components: @@ -4221,6 +7462,12 @@ entities: pos: -3.5,-18.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 581 type: Wire components: @@ -4228,6 +7475,12 @@ entities: pos: -3.5,-17.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 582 type: Wire components: @@ -4235,6 +7488,12 @@ entities: pos: -3.5,-16.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 583 type: Wire components: @@ -4242,6 +7501,12 @@ entities: pos: -3.5,-15.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 584 type: Wire components: @@ -4249,6 +7514,12 @@ entities: pos: -3.5,-14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 585 type: Wire components: @@ -4256,6 +7527,12 @@ entities: pos: -3.5,-20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 586 type: Wire components: @@ -4263,6 +7540,12 @@ entities: pos: -3.5,-21.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 587 type: Wire components: @@ -4270,6 +7553,12 @@ entities: pos: -3.5,-22.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 588 type: Wire components: @@ -4277,6 +7566,12 @@ entities: pos: -3.5,-23.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 589 type: Wire components: @@ -4284,6 +7579,12 @@ entities: pos: 14.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 590 type: Wire components: @@ -4291,6 +7592,12 @@ entities: pos: 14.5,-18.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 591 type: Wire components: @@ -4298,6 +7605,12 @@ entities: pos: 14.5,-17.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 592 type: Wire components: @@ -4305,6 +7618,12 @@ entities: pos: 14.5,-16.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 593 type: Wire components: @@ -4312,6 +7631,12 @@ entities: pos: 14.5,-15.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 594 type: Wire components: @@ -4319,6 +7644,12 @@ entities: pos: 14.5,-14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 595 type: Wire components: @@ -4326,6 +7657,12 @@ entities: pos: 14.5,-13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 596 type: Wire components: @@ -4333,6 +7670,12 @@ entities: pos: 14.5,-12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 597 type: Wire components: @@ -4340,6 +7683,12 @@ entities: pos: 14.5,-11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 598 type: Wire components: @@ -4347,6 +7696,12 @@ entities: pos: 14.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 599 type: Wire components: @@ -4354,6 +7709,12 @@ entities: pos: 13.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 600 type: Wire components: @@ -4361,6 +7722,12 @@ entities: pos: 12.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 601 type: Wire components: @@ -4368,6 +7735,12 @@ entities: pos: 11.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 602 type: Wire components: @@ -4375,6 +7748,12 @@ entities: pos: 10.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 603 type: Wire components: @@ -4382,6 +7761,12 @@ entities: pos: 9.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 604 type: Wire components: @@ -4389,6 +7774,12 @@ entities: pos: 8.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 605 type: Wire components: @@ -4396,6 +7787,12 @@ entities: pos: 8.5,-11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 606 type: Wire components: @@ -4403,6 +7800,12 @@ entities: pos: 8.5,-12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 607 type: Wire components: @@ -4410,6 +7813,12 @@ entities: pos: 8.5,-13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 608 type: Wire components: @@ -4417,6 +7826,12 @@ entities: pos: 8.5,-14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 609 type: Wire components: @@ -4424,6 +7839,12 @@ entities: pos: 9.5,-14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 610 type: Wire components: @@ -4431,6 +7852,12 @@ entities: pos: 10.5,-14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 611 type: Wire components: @@ -4438,6 +7865,12 @@ entities: pos: 10.5,-9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 612 type: Wire components: @@ -4445,6 +7878,12 @@ entities: pos: 10.5,-8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 613 type: Wire components: @@ -4452,6 +7891,12 @@ entities: pos: 10.5,-7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 614 type: Wire components: @@ -4459,6 +7904,12 @@ entities: pos: 10.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 615 type: Wire components: @@ -4466,6 +7917,12 @@ entities: pos: 10.5,-5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 616 type: Wire components: @@ -4473,6 +7930,12 @@ entities: pos: 10.5,-4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 617 type: Wire components: @@ -4480,6 +7943,12 @@ entities: pos: 10.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 618 type: Wire components: @@ -4487,6 +7956,12 @@ entities: pos: 10.5,-2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 619 type: Wire components: @@ -4494,6 +7969,12 @@ entities: pos: 10.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 620 type: Wire components: @@ -4501,6 +7982,12 @@ entities: pos: 10.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 621 type: Wire components: @@ -4508,6 +7995,12 @@ entities: pos: 9.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 622 type: Wire components: @@ -4515,6 +8008,12 @@ entities: pos: 8.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 623 type: Wire components: @@ -4522,6 +8021,12 @@ entities: pos: 7.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 624 type: Wire components: @@ -4529,6 +8034,12 @@ entities: pos: 6.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 625 type: Wire components: @@ -4536,6 +8047,12 @@ entities: pos: 5.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 626 type: Wire components: @@ -4543,6 +8060,12 @@ entities: pos: 4.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 627 type: Wire components: @@ -4550,6 +8073,12 @@ entities: pos: 17.5,0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 628 type: Wire components: @@ -4557,6 +8086,12 @@ entities: pos: 17.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 629 type: Wire components: @@ -4564,6 +8099,12 @@ entities: pos: 17.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 630 type: Wire components: @@ -4571,6 +8112,12 @@ entities: pos: 17.5,-2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 631 type: Wire components: @@ -4578,6 +8125,12 @@ entities: pos: 17.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 632 type: Wire components: @@ -4585,6 +8138,12 @@ entities: pos: 17.5,-4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 633 type: Wire components: @@ -4592,6 +8151,12 @@ entities: pos: 17.5,-5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 634 type: Wire components: @@ -4599,6 +8164,12 @@ entities: pos: 17.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 635 type: Wire components: @@ -4606,6 +8177,12 @@ entities: pos: 18.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 636 type: Wire components: @@ -4613,6 +8190,12 @@ entities: pos: 19.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 637 type: solid_wall components: @@ -4627,6 +8210,12 @@ entities: pos: 20.5,-4.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 639 type: Wire components: @@ -4634,6 +8223,12 @@ entities: pos: 19.5,-5.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 640 type: Wire components: @@ -4641,6 +8236,12 @@ entities: pos: 19.5,-4.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 641 type: Wire components: @@ -4648,6 +8249,12 @@ entities: pos: 17.5,-7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 642 type: Wire components: @@ -4655,6 +8262,12 @@ entities: pos: 17.5,-8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 643 type: Wire components: @@ -4662,6 +8275,12 @@ entities: pos: 17.5,-9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 644 type: Wire components: @@ -4669,6 +8288,12 @@ entities: pos: 17.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 645 type: Wire components: @@ -4676,6 +8301,12 @@ entities: pos: 18.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 646 type: Wire components: @@ -4683,6 +8314,12 @@ entities: pos: 19.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 647 type: Wire components: @@ -4690,6 +8327,12 @@ entities: pos: 20.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 648 type: Wire components: @@ -4697,6 +8340,12 @@ entities: pos: 21.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 649 type: Wire components: @@ -4704,6 +8353,12 @@ entities: pos: 21.5,-9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 650 type: Wire components: @@ -4711,6 +8366,12 @@ entities: pos: 22.5,-9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 651 type: Wire components: @@ -4718,6 +8379,12 @@ entities: pos: 23.5,-9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 652 type: Wire components: @@ -4725,6 +8392,12 @@ entities: pos: 24.5,-9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 653 type: Wire components: @@ -4732,6 +8405,12 @@ entities: pos: 25.5,-9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 654 type: Wire components: @@ -4739,6 +8418,12 @@ entities: pos: 16.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 655 type: Wire components: @@ -4746,6 +8431,12 @@ entities: pos: 15.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 656 type: Wire components: @@ -4753,6 +8444,12 @@ entities: pos: 18.5,-11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 657 type: Wire components: @@ -4760,6 +8457,12 @@ entities: pos: 18.5,-12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 658 type: Wire components: @@ -4767,6 +8470,12 @@ entities: pos: 18.5,-13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 659 type: Wire components: @@ -4774,6 +8483,12 @@ entities: pos: 19.5,-13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 660 type: Wire components: @@ -4781,6 +8496,12 @@ entities: pos: 20.5,-13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 661 type: Wire components: @@ -4788,6 +8509,12 @@ entities: pos: 21.5,-13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 662 type: Wire components: @@ -4795,6 +8522,12 @@ entities: pos: 22.5,-13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 663 type: Wire components: @@ -4802,6 +8535,12 @@ entities: pos: 23.5,-13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 664 type: LightTube components: @@ -4826,6 +8565,12 @@ entities: pos: -4.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 668 type: Wire components: @@ -4833,6 +8578,12 @@ entities: pos: 0.5,-7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 669 type: Wire components: @@ -4840,6 +8591,12 @@ entities: pos: 0.5,-8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 670 type: Wire components: @@ -4847,6 +8604,12 @@ entities: pos: 0.5,-9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 671 type: Wire components: @@ -4854,6 +8617,12 @@ entities: pos: 0.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 672 type: Wire components: @@ -4861,6 +8630,12 @@ entities: pos: -0.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 673 type: Wire components: @@ -4868,6 +8643,12 @@ entities: pos: -1.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 674 type: Wire components: @@ -4875,6 +8656,12 @@ entities: pos: -2.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 675 type: Wire components: @@ -4882,6 +8669,12 @@ entities: pos: -3.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 676 type: Wire components: @@ -4889,6 +8682,12 @@ entities: pos: -4.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 677 type: Wire components: @@ -4896,6 +8695,12 @@ entities: pos: -5.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 678 type: Wire components: @@ -4903,6 +8708,12 @@ entities: pos: -6.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 679 type: Wire components: @@ -4910,6 +8721,12 @@ entities: pos: -7.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 680 type: Wire components: @@ -4917,6 +8734,12 @@ entities: pos: -8.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 681 type: Wire components: @@ -4924,6 +8747,12 @@ entities: pos: -9.5,-13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 682 type: Wire components: @@ -4931,6 +8760,12 @@ entities: pos: -9.5,-12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 683 type: Wire components: @@ -4938,6 +8773,12 @@ entities: pos: -9.5,-11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 684 type: Wire components: @@ -4945,6 +8786,12 @@ entities: pos: -8.5,-7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 685 type: Wire components: @@ -4952,6 +8799,12 @@ entities: pos: -7.5,-7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 686 type: Wire components: @@ -4959,6 +8812,12 @@ entities: pos: -6.5,-7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 687 type: Wire components: @@ -4966,6 +8825,12 @@ entities: pos: -6.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 688 type: Wire components: @@ -4973,6 +8838,12 @@ entities: pos: -6.5,-5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 689 type: Wire components: @@ -4980,6 +8851,12 @@ entities: pos: -6.5,-4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 690 type: Wire components: @@ -4987,6 +8864,12 @@ entities: pos: -7.5,-4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 691 type: Wire components: @@ -4994,6 +8877,12 @@ entities: pos: -8.5,-4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 692 type: Wire components: @@ -5001,6 +8890,12 @@ entities: pos: -8.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 693 type: Wire components: @@ -5008,6 +8903,12 @@ entities: pos: -8.5,-2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 694 type: Wire components: @@ -5015,6 +8916,12 @@ entities: pos: -8.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 695 type: Wire components: @@ -5022,12 +8929,24 @@ entities: pos: -8.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 696 type: Wire components: - parent: 0 pos: -11.5,0.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 697 type: Chair components: @@ -5057,6 +8976,9 @@ entities: type: Transform - sprite: Buildings/VendingMachines/youtool.rsi type: Sprite + - SerialNumber: RYNA-8760 + WireSeed: 1360281528 + type: Wires - uid: 701 type: Wire components: @@ -5064,6 +8986,12 @@ entities: pos: 2.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 702 type: Wire components: @@ -5071,6 +8999,12 @@ entities: pos: 1.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 703 type: Wire components: @@ -5078,6 +9012,12 @@ entities: pos: 0.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 704 type: Wire components: @@ -5085,6 +9025,12 @@ entities: pos: -0.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 705 type: LowWall components: @@ -5112,6 +9058,12 @@ entities: pos: -32.5,14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 709 type: Wire components: @@ -5119,6 +9071,12 @@ entities: pos: -31.5,14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 710 type: Wire components: @@ -5126,6 +9084,12 @@ entities: pos: -30.5,14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 711 type: Wire components: @@ -5133,6 +9097,12 @@ entities: pos: -29.5,14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 712 type: Wire components: @@ -5140,6 +9110,12 @@ entities: pos: -28.5,14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 713 type: Wire components: @@ -5147,6 +9123,12 @@ entities: pos: -27.5,14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 714 type: Wire components: @@ -5154,6 +9136,12 @@ entities: pos: -26.5,14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 715 type: Wire components: @@ -5161,6 +9149,12 @@ entities: pos: -25.5,14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 716 type: Wire components: @@ -5168,6 +9162,12 @@ entities: pos: -24.5,14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 717 type: Wire components: @@ -5175,6 +9175,12 @@ entities: pos: -23.5,14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 718 type: Wire components: @@ -5182,6 +9188,12 @@ entities: pos: -22.5,14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 719 type: Wire components: @@ -5189,6 +9201,12 @@ entities: pos: -21.5,14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 720 type: Wire components: @@ -5196,6 +9214,12 @@ entities: pos: -20.5,14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 721 type: Wire components: @@ -5203,6 +9227,12 @@ entities: pos: -24.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 722 type: Wire components: @@ -5210,6 +9240,12 @@ entities: pos: -25.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 723 type: Wire components: @@ -5217,6 +9253,12 @@ entities: pos: -26.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 724 type: Wire components: @@ -5224,6 +9266,12 @@ entities: pos: -27.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 725 type: Wire components: @@ -5231,6 +9279,12 @@ entities: pos: -28.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 726 type: Catwalk components: @@ -5303,7 +9357,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -5317,7 +9370,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -5476,6 +9528,9 @@ entities: pos: 33.5,-5.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: TBKH-5283 + WireSeed: 630596236 + type: Wires - uid: 759 type: Catwalk components: @@ -5504,8 +9559,10 @@ entities: pos: 40.5,6.5 rot: -1.5707963267948966 rad type: Transform - - supply: 1000000 - type: PowerGenerator + - nodeTypes: + HVPower: + - AdjacentNode + type: NodeContainer - uid: 763 type: APC components: @@ -5513,6 +9570,12 @@ entities: pos: 37.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 764 type: reinforced_wall components: @@ -5693,8 +9756,8 @@ entities: - 2643 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 789 type: PoweredSmallLight components: @@ -5710,8 +9773,8 @@ entities: - 790 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 790 type: LightBulb components: @@ -5732,8 +9795,8 @@ entities: - 787 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 792 type: APC components: @@ -5741,6 +9804,12 @@ entities: pos: -20.5,-8.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 793 type: solid_wall components: @@ -6280,6 +10349,12 @@ entities: pos: 14.5,-23.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 870 type: solid_wall components: @@ -7273,12 +11348,24 @@ entities: - parent: 0 pos: 8.5,16.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1012 type: Wire components: - parent: 0 pos: 8.5,17.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1013 type: solid_wall components: @@ -7484,6 +11571,9 @@ entities: pos: 6.5,17.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: JSUF-2970 + WireSeed: 805471845 + type: Wires - access: - - HeadOfPersonnel type: AccessReader @@ -7970,6 +12060,12 @@ entities: pos: -13.5,15.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1111 type: reinforced_wall components: @@ -8068,6 +12164,12 @@ entities: pos: -9.5,26.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1125 type: reinforced_wall components: @@ -8292,6 +12394,9 @@ entities: pos: -14.5,11.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: HNPX-8810 + WireSeed: 227473884 + type: Wires - uid: 1157 type: reinforced_wall components: @@ -8943,6 +13048,12 @@ entities: pos: -34.5,-5.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1250 type: solid_wall components: @@ -10462,6 +14573,9 @@ entities: pos: -12.5,-2.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: TDIM-3243 + WireSeed: 780748640 + type: Wires - uid: 1467 type: solid_wall components: @@ -11092,6 +15206,9 @@ entities: pos: 5.5,-13.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: IBEX-7912 + WireSeed: 1765980958 + type: Wires - uid: 1557 type: ToolboxElectricalFilled components: @@ -11101,9 +15218,17 @@ entities: type: Transform - containers: storagebase: - entities: [] + entities: + - 3031 + - 3032 + - 3033 + - 3034 + - 3035 + - 3036 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer + - used: 30 + type: Storage - uid: 1558 type: solid_wall components: @@ -11393,6 +15518,9 @@ entities: type: Transform - sprite: Buildings/VendingMachines/youtool.rsi type: Sprite + - SerialNumber: RPGM-5471 + WireSeed: 1742069662 + type: Wires - uid: 1599 type: VendingMachineSovietSoda components: @@ -11402,6 +15530,9 @@ entities: type: Transform - sprite: Buildings/VendingMachines/sovietsoda.rsi type: Sprite + - SerialNumber: NVGJ-3894 + WireSeed: 844269927 + type: Wires - uid: 1600 type: ChairOfficeDark components: @@ -11460,7 +15591,6 @@ entities: type: Transform - containers: storagebase: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - uid: 1608 @@ -11472,6 +15602,9 @@ entities: type: Transform - sprite: Buildings/VendingMachines/cola.rsi type: Sprite + - SerialNumber: QQFJ-6186 + WireSeed: 1754739504 + type: Wires - uid: 1609 type: Table components: @@ -11539,6 +15672,9 @@ entities: type: Transform - sprite: Buildings/VendingMachines/snack.rsi type: Sprite + - SerialNumber: ETEK-6817 + WireSeed: 2090195893 + type: Wires - uid: 1618 type: Table components: @@ -11842,7 +15978,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -11856,7 +15991,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -12079,8 +16213,8 @@ entities: - 1749 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 1692 type: Window components: @@ -12488,8 +16622,8 @@ entities: - 1882 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 1749 type: LightTube components: @@ -12597,6 +16731,12 @@ entities: - parent: 0 pos: -11.5,2.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1765 type: LightTube components: @@ -12617,8 +16757,8 @@ entities: - 1765 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 1767 type: ReinforcedWindow components: @@ -13423,6 +17563,12 @@ entities: - parent: 0 pos: -33.5,7.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1882 type: LightTube components: @@ -13764,6 +17910,12 @@ entities: pos: 40.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1931 type: Wire components: @@ -13771,6 +17923,12 @@ entities: pos: 41.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1932 type: Wire components: @@ -13778,6 +17936,12 @@ entities: pos: 42.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1933 type: Wire components: @@ -13785,6 +17949,12 @@ entities: pos: 43.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1934 type: Wire components: @@ -13792,6 +17962,12 @@ entities: pos: 43.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1935 type: Wire components: @@ -13799,6 +17975,12 @@ entities: pos: 43.5,10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1936 type: APC components: @@ -13806,6 +17988,12 @@ entities: pos: 43.5,10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1937 type: Wire components: @@ -13813,6 +18001,12 @@ entities: pos: 41.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1938 type: Wire components: @@ -13820,6 +18014,12 @@ entities: pos: 41.5,3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1939 type: Wire components: @@ -13827,6 +18027,12 @@ entities: pos: 41.5,2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1940 type: Wire components: @@ -13834,6 +18040,12 @@ entities: pos: 41.5,1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1941 type: APC components: @@ -13841,6 +18053,12 @@ entities: pos: 41.5,1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1942 type: WaterTankFull components: @@ -13870,8 +18088,8 @@ entities: - 1945 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 1945 type: LightTube components: @@ -13891,8 +18109,8 @@ entities: - 1947 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 1947 type: LightTube components: @@ -13918,8 +18136,8 @@ entities: - 1948 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 1950 type: LightTube components: @@ -13940,8 +18158,8 @@ entities: - 1950 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 1952 type: LightBulb components: @@ -13962,8 +18180,6 @@ entities: - 1952 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 1954 type: PoweredSmallLight components: @@ -13978,8 +18194,8 @@ entities: - 1955 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 1955 type: LightBulb components: @@ -13999,8 +18215,6 @@ entities: - 1957 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 1957 type: LightBulb components: @@ -14021,8 +18235,8 @@ entities: - 1959 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 1959 type: LightTube components: @@ -14043,8 +18257,6 @@ entities: - 1961 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 1961 type: LightTube components: @@ -14064,8 +18276,6 @@ entities: - 1963 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 1963 type: LightTube components: @@ -14077,30 +18287,60 @@ entities: - parent: 0 pos: 32.5,9.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1965 type: Wire components: - parent: 0 pos: 31.5,9.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1966 type: Wire components: - parent: 0 pos: 30.5,9.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1967 type: Wire components: - parent: 0 pos: 29.5,9.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1968 type: APC components: - parent: 0 pos: 29.5,9.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1969 type: Wire components: @@ -14108,6 +18348,12 @@ entities: pos: 35.5,-1.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1970 type: Wire components: @@ -14115,6 +18361,12 @@ entities: pos: 34.5,-1.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1971 type: Wire components: @@ -14122,6 +18374,12 @@ entities: pos: 36.5,-1.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1972 type: APC components: @@ -14129,6 +18387,12 @@ entities: pos: 36.5,-1.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1973 type: Poweredlight components: @@ -14144,8 +18408,8 @@ entities: - 1974 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 1974 type: LightTube components: @@ -14165,8 +18429,8 @@ entities: - 1976 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 1976 type: LightTube components: @@ -14187,8 +18451,8 @@ entities: - 1978 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 1978 type: LightTube components: @@ -14209,8 +18473,8 @@ entities: - 1980 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 1980 type: LightTube components: @@ -14230,8 +18494,8 @@ entities: - 1982 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 1982 type: LightTube components: @@ -14252,8 +18516,8 @@ entities: - 1984 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 1984 type: LightTube components: @@ -14274,8 +18538,8 @@ entities: - 1986 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 1986 type: LightTube components: @@ -14295,8 +18559,8 @@ entities: - 1988 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 1988 type: LightTube components: @@ -14309,6 +18573,12 @@ entities: pos: 27.5,3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1990 type: Wire components: @@ -14316,6 +18586,12 @@ entities: pos: 27.5,2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1991 type: Wire components: @@ -14323,6 +18599,12 @@ entities: pos: 27.5,1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1992 type: Wire components: @@ -14330,6 +18612,12 @@ entities: pos: 27.5,0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1993 type: Wire components: @@ -14337,6 +18625,12 @@ entities: pos: 27.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1994 type: APC components: @@ -14344,6 +18638,12 @@ entities: pos: 27.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 1995 type: PoweredSmallLight components: @@ -14359,8 +18659,8 @@ entities: - 1996 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 1996 type: LightBulb components: @@ -14381,8 +18681,8 @@ entities: - 1998 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 1998 type: LightBulb components: @@ -14403,8 +18703,8 @@ entities: - 2000 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2000 type: LightBulb components: @@ -14425,8 +18725,8 @@ entities: - 2002 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2002 type: LightBulb components: @@ -14446,8 +18746,8 @@ entities: - 2004 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2004 type: LightBulb components: @@ -14467,8 +18767,8 @@ entities: - 2006 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2006 type: LightBulb components: @@ -14488,8 +18788,8 @@ entities: - 2008 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2008 type: LightBulb components: @@ -14510,8 +18810,8 @@ entities: - 2010 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2010 type: LightBulb components: @@ -14546,8 +18846,8 @@ entities: - 1361 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2014 type: APC components: @@ -14555,6 +18855,12 @@ entities: pos: 20.5,-4.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2015 type: Wire components: @@ -14562,6 +18868,12 @@ entities: pos: 23.5,-12.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2016 type: Wire components: @@ -14569,6 +18881,12 @@ entities: pos: 23.5,-11.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2017 type: APC components: @@ -14576,6 +18894,12 @@ entities: pos: 23.5,-11.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2018 type: Wire components: @@ -14583,6 +18907,12 @@ entities: pos: 15.5,-16.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2019 type: Wire components: @@ -14590,6 +18920,12 @@ entities: pos: 16.5,-16.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2020 type: Wire components: @@ -14597,6 +18933,12 @@ entities: pos: 16.5,-17.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2021 type: Wire components: @@ -14604,6 +18946,12 @@ entities: pos: 16.5,-18.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2022 type: APC components: @@ -14611,6 +18959,12 @@ entities: pos: 16.5,-18.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2023 type: Wire components: @@ -14618,6 +18972,12 @@ entities: pos: 8.5,-15.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2024 type: Wire components: @@ -14625,6 +18985,12 @@ entities: pos: 8.5,-17.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2025 type: Wire components: @@ -14632,6 +18998,12 @@ entities: pos: 8.5,-16.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2026 type: APC components: @@ -14639,6 +19011,12 @@ entities: pos: 8.5,-17.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2027 type: LightBulb components: @@ -14659,8 +19037,8 @@ entities: - 2027 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2029 type: PoweredSmallLight components: @@ -14676,8 +19054,8 @@ entities: - 2030 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2030 type: LightBulb components: @@ -14698,8 +19076,8 @@ entities: - 2032 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2032 type: LightBulb components: @@ -14720,8 +19098,8 @@ entities: - 2034 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2034 type: LightTube components: @@ -14747,8 +19125,6 @@ entities: - 2035 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 2037 type: Poweredlight components: @@ -14764,8 +19140,8 @@ entities: - 2038 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2038 type: LightTube components: @@ -14786,8 +19162,8 @@ entities: - 2040 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2040 type: LightTube components: @@ -14808,8 +19184,8 @@ entities: - 2042 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2042 type: LightTube components: @@ -14857,8 +19233,8 @@ entities: - 2048 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2048 type: LightTube components: @@ -14879,8 +19255,8 @@ entities: - 2050 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2050 type: LightTube components: @@ -14901,8 +19277,8 @@ entities: - 2052 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2052 type: LightTube components: @@ -14922,8 +19298,8 @@ entities: - 2054 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2054 type: LightTube components: @@ -14935,30 +19311,60 @@ entities: - parent: 0 pos: 6.5,-1.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2056 type: Wire components: - parent: 0 pos: 6.5,-2.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2057 type: Wire components: - parent: 0 pos: 6.5,-3.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2058 type: Wire components: - parent: 0 pos: 5.5,-3.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2059 type: APC components: - parent: 0 pos: 5.5,-3.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2060 type: Poweredlight components: @@ -14973,8 +19379,8 @@ entities: - 2061 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2061 type: LightTube components: @@ -14995,8 +19401,8 @@ entities: - 2063 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2063 type: LightTube components: @@ -15009,6 +19415,12 @@ entities: pos: 17.5,1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2065 type: Wire components: @@ -15016,6 +19428,12 @@ entities: pos: 17.5,2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2066 type: APC components: @@ -15023,6 +19441,12 @@ entities: pos: 17.5,2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2067 type: Poweredlight components: @@ -15038,8 +19462,8 @@ entities: - 2068 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2068 type: LightTube components: @@ -15060,8 +19484,6 @@ entities: - 2070 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 2070 type: LightTube components: @@ -15086,8 +19508,8 @@ entities: - 2071 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2073 type: Poweredlight components: @@ -15103,8 +19525,8 @@ entities: - 2074 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2074 type: LightTube components: @@ -15125,8 +19547,8 @@ entities: - 2076 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2076 type: LightTube components: @@ -15147,8 +19569,8 @@ entities: - 2078 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2078 type: LightTube components: @@ -15161,6 +19583,12 @@ entities: pos: 14.5,11.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2080 type: Wire components: @@ -15168,6 +19596,12 @@ entities: pos: 14.5,12.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2081 type: Wire components: @@ -15175,6 +19609,12 @@ entities: pos: 14.5,13.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2082 type: APC components: @@ -15182,6 +19622,12 @@ entities: pos: 14.5,13.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2083 type: Wire components: @@ -15189,6 +19635,12 @@ entities: pos: 8.5,10.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2084 type: Wire components: @@ -15196,6 +19648,12 @@ entities: pos: 7.5,10.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2085 type: Wire components: @@ -15203,6 +19661,12 @@ entities: pos: 6.5,10.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2086 type: Wire components: @@ -15210,6 +19674,12 @@ entities: pos: 5.5,10.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2087 type: APC components: @@ -15217,6 +19687,12 @@ entities: pos: 5.5,10.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2088 type: LightTube components: @@ -15236,8 +19712,6 @@ entities: - 2088 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 2090 type: Poweredlight components: @@ -15252,8 +19726,8 @@ entities: - 2091 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2091 type: LightTube components: @@ -15274,8 +19748,8 @@ entities: - 2093 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2093 type: LightTube components: @@ -15295,8 +19769,8 @@ entities: - 2095 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2095 type: LightTube components: @@ -15317,8 +19791,6 @@ entities: - 2097 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 2097 type: LightTube components: @@ -15344,8 +19816,8 @@ entities: - 2098 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2100 type: Poweredlight components: @@ -15361,8 +19833,8 @@ entities: - 2101 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2101 type: LightTube components: @@ -15383,8 +19855,8 @@ entities: - 2103 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2103 type: LightTube components: @@ -15410,8 +19882,8 @@ entities: - 2104 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2106 type: Poweredlight components: @@ -15426,8 +19898,8 @@ entities: - 2107 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2107 type: LightTube components: @@ -15448,8 +19920,8 @@ entities: - 2109 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2109 type: LightBulb components: @@ -15469,8 +19941,8 @@ entities: - 2111 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2111 type: LightBulb components: @@ -15490,8 +19962,6 @@ entities: - 2113 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 2113 type: LightBulb components: @@ -15503,24 +19973,48 @@ entities: - parent: 0 pos: 9.5,20.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2115 type: Wire components: - parent: 0 pos: 8.5,20.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2116 type: Wire components: - parent: 0 pos: 8.5,19.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2117 type: Wire components: - parent: 0 pos: 8.5,18.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2118 type: solid_wall components: @@ -15542,6 +20036,12 @@ entities: pos: 9.5,16.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2121 type: Wire components: @@ -15549,6 +20049,12 @@ entities: pos: 9.5,15.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2122 type: APC components: @@ -15556,6 +20062,12 @@ entities: pos: 9.5,15.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2123 type: Wire components: @@ -15563,6 +20075,12 @@ entities: pos: -2.5,19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2124 type: Wire components: @@ -15570,6 +20088,12 @@ entities: pos: -2.5,18.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2125 type: Wire components: @@ -15577,6 +20101,12 @@ entities: pos: -2.5,17.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2126 type: Wire components: @@ -15584,6 +20114,12 @@ entities: pos: -0.5,17.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2127 type: APC components: @@ -15591,6 +20127,12 @@ entities: pos: -2.5,19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2128 type: Wire components: @@ -15598,6 +20140,12 @@ entities: pos: 7.5,26.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2129 type: Wire components: @@ -15605,6 +20153,12 @@ entities: pos: 7.5,27.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2130 type: LightTube components: @@ -15625,8 +20179,8 @@ entities: - 2130 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2132 type: Poweredlight components: @@ -15642,8 +20196,8 @@ entities: - 2133 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2133 type: LightTube components: @@ -15664,8 +20218,8 @@ entities: - 2135 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2135 type: LightTube components: @@ -15686,8 +20240,8 @@ entities: - 2137 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2137 type: LightTube components: @@ -15707,8 +20261,8 @@ entities: - 2139 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2139 type: LightTube components: @@ -15729,8 +20283,8 @@ entities: - 2141 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2141 type: LightTube components: @@ -15751,8 +20305,8 @@ entities: - 2143 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2143 type: LightTube components: @@ -15773,8 +20327,8 @@ entities: - 2145 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2145 type: LightTube components: @@ -15795,8 +20349,8 @@ entities: - 2147 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2147 type: LightTube components: @@ -15816,8 +20370,6 @@ entities: - 2149 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 2149 type: LightTube components: @@ -15838,8 +20390,6 @@ entities: - 2151 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 2151 type: LightTube components: @@ -15864,8 +20414,8 @@ entities: - 2152 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2154 type: PoweredSmallLight components: @@ -15881,8 +20431,8 @@ entities: - 2155 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2155 type: LightBulb components: @@ -15895,6 +20445,9 @@ entities: pos: -16.5,2.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: QPNT-6056 + WireSeed: 1815029877 + type: Wires - uid: 2157 type: AirlockMaintCommonLocked components: @@ -15902,6 +20455,9 @@ entities: pos: 1.5,-23.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: WMQV-1038 + WireSeed: 1721536160 + type: Wires - uid: 2158 type: PoweredSmallLight components: @@ -15917,8 +20473,8 @@ entities: - 2159 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2159 type: LightBulb components: @@ -15931,6 +20487,12 @@ entities: pos: -9.5,20.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2161 type: Wire components: @@ -15938,6 +20500,12 @@ entities: pos: -10.5,20.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2162 type: Wire components: @@ -15945,6 +20513,12 @@ entities: pos: -10.5,21.5 rot: 1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2163 type: reinforced_wall components: @@ -15966,6 +20540,12 @@ entities: pos: -10.5,21.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2166 type: Poweredlight components: @@ -15981,8 +20561,8 @@ entities: - 2167 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2167 type: LightTube components: @@ -16002,8 +20582,6 @@ entities: - 2169 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 2169 type: LightTube components: @@ -16024,8 +20602,8 @@ entities: - 2171 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2171 type: LightTube components: @@ -16046,8 +20624,8 @@ entities: - 2173 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2173 type: LightTube components: @@ -16067,8 +20645,8 @@ entities: - 2175 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2175 type: LightTube components: @@ -16088,8 +20666,6 @@ entities: - 2177 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 2177 type: LightTube components: @@ -16110,8 +20686,8 @@ entities: - 2179 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2179 type: LightTube components: @@ -16132,8 +20708,8 @@ entities: - 2181 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2181 type: LightBulb components: @@ -16154,8 +20730,6 @@ entities: - 2183 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 2183 type: LightBulb components: @@ -16176,8 +20750,8 @@ entities: - 2185 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2185 type: LightTube components: @@ -16197,8 +20771,8 @@ entities: - 2187 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2187 type: LightTube components: @@ -16218,8 +20792,8 @@ entities: - 2189 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2189 type: LightTube components: @@ -16239,8 +20813,8 @@ entities: - 2191 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2191 type: LightTube components: @@ -16260,8 +20834,8 @@ entities: - 2193 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2193 type: LightTube components: @@ -16281,8 +20855,8 @@ entities: - 2195 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2195 type: LightTube components: @@ -16308,8 +20882,8 @@ entities: - 2196 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2198 type: Poweredlight components: @@ -16325,8 +20899,8 @@ entities: - 2199 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2199 type: LightTube components: @@ -16355,6 +20929,9 @@ entities: type: Transform - sprite: Buildings/VendingMachines/engivend.rsi type: Sprite + - SerialNumber: PBIP-1768 + WireSeed: 1566618327 + type: Wires - uid: 2203 type: Wire components: @@ -16362,6 +20939,12 @@ entities: pos: -6.5,-8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2204 type: APC components: @@ -16369,6 +20952,12 @@ entities: pos: -6.5,-8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2205 type: Poweredlight components: @@ -16384,8 +20973,8 @@ entities: - 2206 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2206 type: LightTube components: @@ -16406,8 +20995,8 @@ entities: - 2208 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2208 type: LightTube components: @@ -16428,8 +21017,8 @@ entities: - 2210 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2210 type: LightTube components: @@ -16450,8 +21039,6 @@ entities: - 2212 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 2212 type: LightTube components: @@ -16472,8 +21059,8 @@ entities: - 2214 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2214 type: LightBulb components: @@ -16494,8 +21081,8 @@ entities: - 2216 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2216 type: LightBulb components: @@ -16516,8 +21103,8 @@ entities: - 2218 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2218 type: LightBulb components: @@ -16543,8 +21130,8 @@ entities: - 2219 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2221 type: PoweredSmallLight components: @@ -16560,8 +21147,8 @@ entities: - 2222 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2222 type: LightBulb components: @@ -16582,8 +21169,8 @@ entities: - 2224 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2224 type: LightBulb components: @@ -16596,6 +21183,12 @@ entities: pos: -29.5,8.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2226 type: Wire components: @@ -16603,6 +21196,12 @@ entities: pos: -30.5,8.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2227 type: Wire components: @@ -16610,6 +21209,12 @@ entities: pos: -28.5,-2.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2228 type: APC components: @@ -16617,6 +21222,12 @@ entities: pos: -28.5,-3.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2229 type: APC components: @@ -16624,6 +21235,12 @@ entities: pos: -17.5,-1.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2230 type: Chair components: @@ -16637,6 +21254,12 @@ entities: pos: -33.5,2.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2232 type: solid_wall components: @@ -16651,6 +21274,12 @@ entities: pos: -12.5,-13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2234 type: APC components: @@ -16658,6 +21287,12 @@ entities: pos: -1.5,-18.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2235 type: APC components: @@ -16665,6 +21300,12 @@ entities: pos: -7.5,-21.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2236 type: APC components: @@ -16672,6 +21313,12 @@ entities: pos: -12.5,-18.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2237 type: APC components: @@ -16679,6 +21326,12 @@ entities: pos: 0.5,-26.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2238 type: Table components: @@ -16708,8 +21361,6 @@ entities: - 2241 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 2241 type: LightTube components: @@ -16730,8 +21381,8 @@ entities: - 2243 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2243 type: LightTube components: @@ -16760,6 +21411,9 @@ entities: type: Transform - sprite: Buildings/VendingMachines/snack.rsi type: Sprite + - SerialNumber: SEML-1014 + WireSeed: 1521930307 + type: Wires - uid: 2247 type: VendingMachineCola components: @@ -16769,6 +21423,9 @@ entities: type: Transform - sprite: Buildings/VendingMachines/cola.rsi type: Sprite + - SerialNumber: OFVJ-3613 + WireSeed: 681961778 + type: Wires - uid: 2248 type: PoweredSmallLight components: @@ -16784,8 +21441,8 @@ entities: - 2249 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2249 type: LightBulb components: @@ -16806,8 +21463,8 @@ entities: - 664 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2251 type: LockerToolFilled components: @@ -16817,7 +21474,13 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] + entities: + - 3037 + - 3039 + - 3040 + - 3041 + - 3042 + - 3043 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -16836,8 +21499,8 @@ entities: - 2253 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2253 type: LightBulb components: @@ -16857,8 +21520,8 @@ entities: - 2255 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2255 type: LightBulb components: @@ -16879,8 +21542,8 @@ entities: - 2257 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2257 type: LightBulb components: @@ -16914,8 +21577,8 @@ entities: - 2261 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2261 type: LightBulb components: @@ -16935,8 +21598,8 @@ entities: - 2263 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2263 type: LightTube components: @@ -16958,7 +21621,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -16978,8 +21640,8 @@ entities: - 2267 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2267 type: LightTube components: @@ -17000,8 +21662,8 @@ entities: - 2269 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2269 type: LightTube components: @@ -17022,8 +21684,8 @@ entities: - 2271 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2271 type: LightTube components: @@ -17044,8 +21706,8 @@ entities: - 2273 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2273 type: LightTube components: @@ -17065,8 +21727,8 @@ entities: - 2275 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2275 type: LightTube components: @@ -17087,8 +21749,8 @@ entities: - 2277 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2277 type: LightTube components: @@ -17108,8 +21770,8 @@ entities: - 2279 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2279 type: LightTube components: @@ -17130,8 +21792,6 @@ entities: - 2281 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 2281 type: LightTube components: @@ -17152,8 +21812,8 @@ entities: - 2283 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2283 type: LightBulb components: @@ -17174,8 +21834,8 @@ entities: - 2285 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2285 type: LightBulb components: @@ -17211,8 +21871,8 @@ entities: - 2289 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2289 type: LightBulb components: @@ -17233,8 +21893,8 @@ entities: - 2291 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2291 type: LightBulb components: @@ -17255,8 +21915,8 @@ entities: - 2293 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2293 type: LightBulb components: @@ -17277,8 +21937,8 @@ entities: - 2295 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2295 type: LightBulb components: @@ -17299,8 +21959,8 @@ entities: - 2297 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2297 type: LightBulb components: @@ -17335,8 +21995,8 @@ entities: - 2301 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2301 type: LightBulb components: @@ -17357,8 +22017,8 @@ entities: - 2303 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2303 type: LightTube components: @@ -17378,8 +22038,8 @@ entities: - 2305 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2305 type: LightTube components: @@ -17400,8 +22060,8 @@ entities: - 2307 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2307 type: LightTube components: @@ -17422,8 +22082,8 @@ entities: - 2309 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2309 type: LightTube components: @@ -17444,8 +22104,8 @@ entities: - 1754 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2311 type: solid_wall components: @@ -17532,7 +22192,6 @@ entities: type: Transform - containers: ReagentDispenser-reagentContainerContainer: - entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 2323 @@ -17593,7 +22252,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -17607,7 +22265,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -17673,7 +22330,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -17687,7 +22343,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -17701,6 +22356,9 @@ entities: type: Transform - sprite: Buildings/VendingMachines/medical.rsi type: Sprite + - SerialNumber: ZETC-9911 + WireSeed: 1806878269 + type: Wires - uid: 2341 type: VendingMachineMedical components: @@ -17710,6 +22368,9 @@ entities: type: Transform - sprite: Buildings/VendingMachines/medical.rsi type: Sprite + - SerialNumber: GZGK-6351 + WireSeed: 2142912283 + type: Wires - uid: 2342 type: Table components: @@ -17740,7 +22401,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -17810,7 +22470,6 @@ entities: type: Transform - containers: MedicalScanner-bodyContainer: - entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 2355 @@ -17822,7 +22481,6 @@ entities: type: Transform - containers: MedicalScanner-bodyContainer: - entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 2356 @@ -17882,8 +22540,8 @@ entities: - 2363 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2363 type: LightTube components: @@ -17903,8 +22561,8 @@ entities: - 2365 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2365 type: LightTube components: @@ -17925,8 +22583,8 @@ entities: - 2367 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2367 type: LightTube components: @@ -17947,8 +22605,8 @@ entities: - 2369 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2369 type: LightTube components: @@ -17963,7 +22621,6 @@ entities: type: Transform - containers: storagebase: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - uid: 2371 @@ -17975,7 +22632,6 @@ entities: type: Transform - containers: storagebase: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - uid: 2372 @@ -17987,7 +22643,6 @@ entities: type: Transform - containers: storagebase: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - uid: 2373 @@ -17999,7 +22654,6 @@ entities: type: Transform - containers: storagebase: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - uid: 2374 @@ -18080,8 +22734,8 @@ entities: - 2384 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2384 type: LightTube components: @@ -18267,8 +22921,8 @@ entities: - 2409 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2409 type: LightTube components: @@ -18288,8 +22942,8 @@ entities: - 2411 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2411 type: LightTube components: @@ -18310,8 +22964,8 @@ entities: - 2413 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2413 type: LightTube components: @@ -18337,8 +22991,8 @@ entities: - 2414 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2416 type: Poweredlight components: @@ -18354,8 +23008,8 @@ entities: - 2417 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2417 type: LightTube components: @@ -18376,8 +23030,8 @@ entities: - 2419 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2419 type: LightTube components: @@ -18398,8 +23052,8 @@ entities: - 2421 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2421 type: LightTube components: @@ -18419,8 +23073,8 @@ entities: - 2423 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2423 type: LightBulb components: @@ -18432,6 +23086,8 @@ entities: - parent: 0 pos: -8.5,-23.5 type: Transform + - points: 136000 + type: ResearchServer - uid: 2425 type: LightTube components: @@ -18451,8 +23107,6 @@ entities: - 2425 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 2427 type: Poweredlight components: @@ -18467,8 +23121,8 @@ entities: - 2428 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2428 type: LightTube components: @@ -18489,8 +23143,8 @@ entities: - 2430 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2430 type: LightTube components: @@ -18511,8 +23165,8 @@ entities: - 2432 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2432 type: LightTube components: @@ -18533,8 +23187,8 @@ entities: - 2434 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2434 type: LightTube components: @@ -18547,6 +23201,12 @@ entities: pos: -17.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2436 type: APC components: @@ -18554,6 +23214,12 @@ entities: pos: -18.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2437 type: ComputerResearchAndDevelopment components: @@ -18580,8 +23246,8 @@ entities: - 2438 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2440 type: Table components: @@ -18642,6 +23308,9 @@ entities: - parent: 0 pos: -7.5,-17.5 type: Transform + - SerialNumber: FXDO-7188 + WireSeed: 428238634 + type: Wires - uid: 2449 type: Table components: @@ -18737,8 +23406,8 @@ entities: - 2462 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2462 type: LightTube components: @@ -18969,10 +23638,15 @@ entities: - uid: 2495 type: BarSign components: + - name: The Net + desc: You just seem to get caught up in it for hours. + type: MetaData - parent: 0 pos: 1,2.5 rot: 1.5707963267948966 rad type: Transform + - current: TheNet + type: BarSign - uid: 2496 type: Spoon components: @@ -18987,6 +23661,9 @@ entities: type: Transform - sprite: Buildings/VendingMachines/cigs.rsi type: Sprite + - SerialNumber: LQQS-9626 + WireSeed: 1162309017 + type: Wires - uid: 2498 type: VendingMachineSnack components: @@ -18995,6 +23672,9 @@ entities: type: Transform - sprite: Buildings/VendingMachines/snack.rsi type: Sprite + - SerialNumber: UTZI-3622 + WireSeed: 241374962 + type: Wires - uid: 2499 type: Chair components: @@ -19075,6 +23755,9 @@ entities: type: Transform - sprite: Buildings/VendingMachines/cola.rsi type: Sprite + - SerialNumber: UJIM-0013 + WireSeed: 1599139719 + type: Wires - uid: 2509 type: VendingMachineCoffee components: @@ -19082,6 +23765,9 @@ entities: pos: 0.5,23.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: IZAA-7367 + WireSeed: 1364903384 + type: Wires - uid: 2510 type: VendingMachineCigs components: @@ -19091,6 +23777,9 @@ entities: type: Transform - sprite: Buildings/VendingMachines/cigs.rsi type: Sprite + - SerialNumber: HKLI-4112 + WireSeed: 911429600 + type: Wires - uid: 2511 type: TableWood components: @@ -19165,10 +23854,8 @@ entities: type: Transform - containers: IdCardConsole-privilegedId: - entities: [] type: Content.Server.GameObjects.ContainerSlot IdCardConsole-targetId: - entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 2521 @@ -19180,10 +23867,8 @@ entities: type: Transform - containers: IdCardConsole-privilegedId: - entities: [] type: Content.Server.GameObjects.ContainerSlot IdCardConsole-targetId: - entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 2522 @@ -19719,6 +24404,12 @@ entities: pos: -33.5,-7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2597 type: Wire components: @@ -19726,6 +24417,12 @@ entities: pos: -33.5,-8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2598 type: Wire components: @@ -19733,6 +24430,12 @@ entities: pos: -33.5,-9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2599 type: Wire components: @@ -19740,6 +24443,12 @@ entities: pos: -33.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2600 type: Wire components: @@ -19747,6 +24456,12 @@ entities: pos: -33.5,-11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2601 type: Wire components: @@ -19754,6 +24469,12 @@ entities: pos: -32.5,-11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2602 type: Wire components: @@ -19761,6 +24482,12 @@ entities: pos: -31.5,-11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2603 type: Wire components: @@ -19768,6 +24495,12 @@ entities: pos: -30.5,-11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2604 type: Wire components: @@ -19775,6 +24508,12 @@ entities: pos: -29.5,-11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2605 type: Wire components: @@ -19782,6 +24521,12 @@ entities: pos: -28.5,-11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2606 type: Wire components: @@ -19789,6 +24534,12 @@ entities: pos: -27.5,-11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2607 type: Wire components: @@ -19796,6 +24547,12 @@ entities: pos: -26.5,-11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2608 type: Wire components: @@ -19803,6 +24560,12 @@ entities: pos: -25.5,-11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2609 type: Wire components: @@ -19810,6 +24573,12 @@ entities: pos: -24.5,-11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2610 type: Wire components: @@ -19817,6 +24586,12 @@ entities: pos: -23.5,-11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2611 type: Wire components: @@ -19824,6 +24599,12 @@ entities: pos: -23.5,-12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2612 type: Wire components: @@ -19831,6 +24612,12 @@ entities: pos: -22.5,-12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2613 type: Wire components: @@ -19838,6 +24625,12 @@ entities: pos: -21.5,-12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2614 type: Wire components: @@ -19845,6 +24638,12 @@ entities: pos: -20.5,-12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2615 type: Wire components: @@ -19852,6 +24651,12 @@ entities: pos: -19.5,-12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2616 type: Wire components: @@ -19859,6 +24664,12 @@ entities: pos: -18.5,-12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2617 type: Wire components: @@ -19866,6 +24677,12 @@ entities: pos: -18.5,-13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2618 type: Wire components: @@ -19873,6 +24690,12 @@ entities: pos: -18.5,-14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2619 type: Wire components: @@ -19880,6 +24703,12 @@ entities: pos: -9.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2620 type: Wire components: @@ -19887,6 +24716,12 @@ entities: pos: -17.5,-14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2621 type: Wire components: @@ -19894,6 +24729,12 @@ entities: pos: -16.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2622 type: Wire components: @@ -19901,6 +24742,12 @@ entities: pos: -16.5,-4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2623 type: Wire components: @@ -19908,6 +24755,12 @@ entities: pos: -16.5,-5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2624 type: Wire components: @@ -19915,6 +24768,12 @@ entities: pos: -15.5,-5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2625 type: Wire components: @@ -19922,6 +24781,12 @@ entities: pos: -15.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2626 type: Wire components: @@ -19929,6 +24794,12 @@ entities: pos: -14.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2627 type: Wire components: @@ -19936,6 +24807,12 @@ entities: pos: -13.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2628 type: Wire components: @@ -19943,6 +24820,12 @@ entities: pos: -12.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2629 type: Wire components: @@ -19950,6 +24833,12 @@ entities: pos: -11.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2630 type: Wire components: @@ -19957,6 +24846,12 @@ entities: pos: -10.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2631 type: Wire components: @@ -19964,6 +24859,12 @@ entities: pos: -23.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2632 type: Wire components: @@ -19971,6 +24872,12 @@ entities: pos: -23.5,-9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2633 type: Wire components: @@ -19978,6 +24885,12 @@ entities: pos: -23.5,-8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2634 type: Wire components: @@ -19985,6 +24898,12 @@ entities: pos: -21.5,-7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2635 type: Wire components: @@ -19992,6 +24911,12 @@ entities: pos: -20.5,-7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2636 type: SpawnPointLatejoin components: @@ -20027,6 +24952,12 @@ entities: pos: -9.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2641 type: Wire components: @@ -20034,6 +24965,12 @@ entities: pos: -10.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2642 type: Wire components: @@ -20041,6 +24978,12 @@ entities: pos: -11.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2643 type: LightTube components: @@ -20062,6 +25005,9 @@ entities: type: Transform - sprite: Buildings/VendingMachines/theater.rsi type: Sprite + - SerialNumber: OOCP-5021 + WireSeed: 1336485199 + type: Wires - uid: 2646 type: PianoInstrument components: @@ -20099,7 +25045,6 @@ entities: type: Transform - containers: microwave_entity_container: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - uid: 2651 @@ -20108,12 +25053,24 @@ entities: - parent: 0 pos: -11.5,-0.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2652 type: Wire components: - parent: 0 pos: -11.5,1.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2653 type: Poweredlight components: @@ -20129,8 +25086,8 @@ entities: - 2654 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2654 type: LightTube components: @@ -20151,8 +25108,8 @@ entities: - 2656 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2656 type: LightTube components: @@ -20173,8 +25130,8 @@ entities: - 2658 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2658 type: LightBulb components: @@ -20195,8 +25152,8 @@ entities: - 2660 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2660 type: LightTube components: @@ -20426,6 +25383,12 @@ entities: pos: 42.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2693 type: Wire components: @@ -20433,6 +25396,12 @@ entities: pos: 43.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2694 type: Wire components: @@ -20440,6 +25409,12 @@ entities: pos: 44.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2695 type: Wire components: @@ -20447,6 +25422,12 @@ entities: pos: 45.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2696 type: Wire components: @@ -20454,6 +25435,12 @@ entities: pos: 46.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2697 type: Wire components: @@ -20461,6 +25448,12 @@ entities: pos: 47.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2698 type: Wire components: @@ -20468,6 +25461,12 @@ entities: pos: 48.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2699 type: Wire components: @@ -20475,6 +25474,12 @@ entities: pos: 49.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2700 type: Wire components: @@ -20482,6 +25487,12 @@ entities: pos: 49.5,3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2701 type: Wire components: @@ -20489,6 +25500,12 @@ entities: pos: 49.5,2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2702 type: Wire components: @@ -20496,6 +25513,12 @@ entities: pos: 49.5,1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2703 type: Wire components: @@ -20503,6 +25526,12 @@ entities: pos: 49.5,0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2704 type: Wire components: @@ -20510,6 +25539,12 @@ entities: pos: 49.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2705 type: Wire components: @@ -20517,6 +25552,12 @@ entities: pos: 49.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2706 type: Wire components: @@ -20524,6 +25565,12 @@ entities: pos: 49.5,-2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2707 type: APC components: @@ -20531,6 +25578,12 @@ entities: pos: 50.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2708 type: Poweredlight components: @@ -20545,8 +25598,6 @@ entities: - 2709 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 2709 type: LightTube components: @@ -20567,8 +25618,6 @@ entities: - 2711 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 2711 type: LightTube components: @@ -20688,7 +25737,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -20702,7 +25750,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -20716,7 +25763,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -20730,7 +25776,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -20744,7 +25789,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -20758,7 +25802,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -20772,7 +25815,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -20786,7 +25828,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -20800,7 +25841,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -20814,7 +25854,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -20828,7 +25867,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -20842,7 +25880,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -20856,7 +25893,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -20870,7 +25906,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -20884,7 +25919,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -20898,7 +25932,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -20912,7 +25945,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -20926,7 +25958,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -20940,7 +25971,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -20954,7 +25984,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -20968,7 +25997,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -20982,7 +26010,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -20996,7 +26023,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21010,7 +26036,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21024,7 +26049,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21038,7 +26062,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21052,7 +26075,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21066,7 +26088,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21080,9 +26101,10 @@ entities: type: Transform - containers: flashlight_cell_container: - entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer + - selected: plant-23 + type: RandomPottedPlant - uid: 2756 type: WardrobeCargoFilled components: @@ -21092,7 +26114,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21106,7 +26127,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21120,7 +26140,8 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] + entities: + - 3044 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21134,7 +26155,8 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] + entities: + - 3045 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21148,7 +26170,8 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] + entities: + - 3046 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21162,7 +26185,8 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] + entities: + - 3047 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21176,7 +26200,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21190,7 +26213,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21204,7 +26226,9 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] + entities: + - 3048 + - 3057 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21218,7 +26242,8 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] + entities: + - 3058 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21232,7 +26257,8 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] + entities: + - 3059 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21246,7 +26272,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21260,7 +26285,9 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] + entities: + - 3068 + - 3077 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21274,7 +26301,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21288,7 +26314,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21302,7 +26327,8 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] + entities: + - 3078 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21316,7 +26342,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21330,7 +26355,9 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] + entities: + - 3079 + - 3088 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21344,7 +26371,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21358,7 +26384,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21372,7 +26397,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21386,7 +26410,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21400,7 +26423,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21414,9 +26436,10 @@ entities: type: Transform - containers: flashlight_cell_container: - entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer + - selected: plant-22 + type: RandomPottedPlant - uid: 2780 type: PottedPlantRandom components: @@ -21426,9 +26449,10 @@ entities: type: Transform - containers: flashlight_cell_container: - entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer + - selected: plant-10 + type: RandomPottedPlant - uid: 2781 type: LockerEmergencyFilledRandom components: @@ -21438,7 +26462,8 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] + entities: + - 3089 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21452,7 +26477,6 @@ entities: type: Transform - containers: flashlight_cell_container: - entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 2783 @@ -21464,7 +26488,10 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] + entities: + - 3090 + - 3099 + - 3100 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21478,7 +26505,9 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] + entities: + - 3101 + - 3102 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21492,7 +26521,8 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] + entities: + - 3103 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21506,9 +26536,10 @@ entities: type: Transform - containers: flashlight_cell_container: - entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer + - selected: plant-01 + type: RandomPottedPlant - uid: 2787 type: PottedPlantRandom components: @@ -21518,9 +26549,10 @@ entities: type: Transform - containers: flashlight_cell_container: - entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer + - selected: plant-14 + type: RandomPottedPlant - uid: 2788 type: LockerEmergencyFilledRandom components: @@ -21530,7 +26562,8 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] + entities: + - 3104 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21544,7 +26577,9 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] + entities: + - 3105 + - 3114 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21558,9 +26593,10 @@ entities: type: Transform - containers: flashlight_cell_container: - entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer + - selected: plant-11 + type: RandomPottedPlant - uid: 2791 type: LockerEmergencyFilledRandom components: @@ -21570,7 +26606,9 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] + entities: + - 3115 + - 3124 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21584,9 +26622,10 @@ entities: type: Transform - containers: flashlight_cell_container: - entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer + - selected: plant-16 + type: RandomPottedPlant - uid: 2793 type: LockerBoozeFilled components: @@ -21596,7 +26635,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21610,6 +26648,9 @@ entities: type: Transform - sprite: Buildings/VendingMachines/boozeomat.rsi type: Sprite + - SerialNumber: DHCS-0497 + WireSeed: 1858375876 + type: Wires - uid: 2795 type: LockerEmergencyFilledRandom components: @@ -21619,7 +26660,8 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] + entities: + - 3125 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -21633,9 +26675,10 @@ entities: type: Transform - containers: flashlight_cell_container: - entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer + - selected: plant-08 + type: RandomPottedPlant - uid: 2797 type: PottedPlantRandom components: @@ -21645,9 +26688,10 @@ entities: type: Transform - containers: flashlight_cell_container: - entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer + - selected: plant-12 + type: RandomPottedPlant - uid: 2798 type: PottedPlantRandomPlastic components: @@ -21657,9 +26701,10 @@ entities: type: Transform - containers: flashlight_cell_container: - entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer + - selected: plant-29 + type: RandomPottedPlant - uid: 2799 type: PottedPlantRandom components: @@ -21669,9 +26714,10 @@ entities: type: Transform - containers: flashlight_cell_container: - entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer + - selected: plant-22 + type: RandomPottedPlant - uid: 2800 type: PottedPlantRandomPlastic components: @@ -21681,9 +26727,10 @@ entities: type: Transform - containers: flashlight_cell_container: - entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer + - selected: plant-28 + type: RandomPottedPlant - uid: 2801 type: SpawnPointCargoTechnician components: @@ -21859,6 +26906,12 @@ entities: pos: 22.5,-21.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2826 type: Wire components: @@ -21866,6 +26919,12 @@ entities: pos: 22.5,-22.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2827 type: Wire components: @@ -21873,6 +26932,12 @@ entities: pos: 22.5,-23.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2828 type: Wire components: @@ -21880,6 +26945,12 @@ entities: pos: 22.5,-24.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2829 type: Wire components: @@ -21887,6 +26958,12 @@ entities: pos: 22.5,-25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2830 type: Wire components: @@ -21894,6 +26971,12 @@ entities: pos: 21.5,-25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2831 type: Wire components: @@ -21901,6 +26984,12 @@ entities: pos: 20.5,-25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2832 type: Wire components: @@ -21908,6 +26997,12 @@ entities: pos: 19.5,-25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2833 type: Wire components: @@ -21915,6 +27010,12 @@ entities: pos: 14.5,-21.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2834 type: Wire components: @@ -21922,6 +27023,12 @@ entities: pos: 14.5,-22.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 2835 type: solid_wall components: @@ -22183,7 +27290,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -22197,6 +27303,9 @@ entities: pos: -41.5,4.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: YDNW-8344 + WireSeed: 1461459343 + type: Wires - uid: 2873 type: AirlockExternalLocked components: @@ -22206,6 +27315,9 @@ entities: pos: -39.5,4.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: MTMV-2725 + WireSeed: 1595174815 + type: Wires - uid: 2874 type: AirlockExternalLocked components: @@ -22215,6 +27327,9 @@ entities: pos: -39.5,8.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: JRVM-7167 + WireSeed: 276292114 + type: Wires - uid: 2875 type: AirlockExternalLocked components: @@ -22224,6 +27339,9 @@ entities: pos: -41.5,8.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: WOWQ-0513 + WireSeed: 583509204 + type: Wires - uid: 2876 type: AirlockExternalLocked components: @@ -22233,6 +27351,9 @@ entities: pos: -37.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: QGJE-4931 + WireSeed: 1482369729 + type: Wires - uid: 2877 type: AirlockExternalLocked components: @@ -22242,6 +27363,9 @@ entities: pos: -39.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: GGEH-0220 + WireSeed: 242377644 + type: Wires - uid: 2878 type: AirlockSecurityGlassLocked components: @@ -22251,6 +27375,9 @@ entities: pos: -5.5,6.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: UTIY-4998 + WireSeed: 1726083170 + type: Wires - uid: 2879 type: AirlockSecurityGlassLocked components: @@ -22260,6 +27387,9 @@ entities: pos: -5.5,9.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: PWHV-6126 + WireSeed: 95746143 + type: Wires - uid: 2880 type: AirlockSecurityGlassLocked components: @@ -22269,6 +27399,9 @@ entities: pos: -6.5,9.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: UMAN-4635 + WireSeed: 1230209243 + type: Wires - uid: 2881 type: AirlockEngineeringLocked components: @@ -22278,6 +27411,9 @@ entities: pos: 49.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: HDGO-1994 + WireSeed: 1611393969 + type: Wires - uid: 2882 type: AirlockEngineeringGlassLocked components: @@ -22287,6 +27423,9 @@ entities: pos: 33.5,1.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: BMIA-0393 + WireSeed: 1262933985 + type: Wires - uid: 2883 type: AirlockEngineeringGlassLocked components: @@ -22296,6 +27435,9 @@ entities: pos: 33.5,7.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: ZPZI-8277 + WireSeed: 1000221277 + type: Wires - uid: 2884 type: AirlockEngineeringLocked components: @@ -22305,6 +27447,9 @@ entities: pos: 41.5,10.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: OIHB-3467 + WireSeed: 1488013576 + type: Wires - uid: 2885 type: AirlockEngineeringLocked components: @@ -22314,6 +27459,9 @@ entities: pos: 40.5,10.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: FWYN-7319 + WireSeed: 1132227642 + type: Wires - uid: 2886 type: AirlockMaintEngiLocked components: @@ -22321,6 +27469,9 @@ entities: pos: 29.5,10.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: QAZQ-7619 + WireSeed: 1431368753 + type: Wires - uid: 2887 type: AirlockMaintEngiLocked components: @@ -22328,6 +27479,9 @@ entities: pos: 43.5,0.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: EDYY-9722 + WireSeed: 1350495469 + type: Wires - uid: 2888 type: AirlockMaintCargoLocked components: @@ -22335,6 +27489,9 @@ entities: pos: 25.5,9.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: TGQV-7064 + WireSeed: 1222080910 + type: Wires - uid: 2889 type: AirlockMaintRnDLocked components: @@ -22342,6 +27499,9 @@ entities: pos: -16.5,-16.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: ETGJ-1536 + WireSeed: 585052938 + type: Wires - uid: 2890 type: AirlockCommandGlassLocked components: @@ -22351,6 +27511,9 @@ entities: pos: 1.5,24.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: HSBW-6099 + WireSeed: 1283137444 + type: Wires - uid: 2891 type: AirlockCommandGlassLocked components: @@ -22360,6 +27523,9 @@ entities: pos: 1.5,25.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: CVJZ-3331 + WireSeed: 2032450470 + type: Wires - uid: 2892 type: AirlockCommandLocked components: @@ -22369,6 +27535,9 @@ entities: pos: 5.5,25.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: ZSJB-6485 + WireSeed: 1654014956 + type: Wires - access: - - Captain type: AccessReader @@ -22379,6 +27548,9 @@ entities: pos: 6.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: KOAX-2017 + WireSeed: 429692583 + type: Wires - uid: 2894 type: AirlockMaintCommonLocked components: @@ -22386,6 +27558,9 @@ entities: pos: 21.5,2.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: ESWO-4332 + WireSeed: 2096314373 + type: Wires - uid: 2895 type: AirlockMaintCommandLocked components: @@ -22393,6 +27568,9 @@ entities: pos: -1.5,22.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: EDSP-7639 + WireSeed: 385333425 + type: Wires - uid: 2896 type: AirlockMedicalGlassLocked components: @@ -22402,6 +27580,9 @@ entities: pos: 10.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: GIFF-6584 + WireSeed: 1537922900 + type: Wires - uid: 2897 type: AirlockMedicalGlassLocked components: @@ -22411,6 +27592,9 @@ entities: pos: 11.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: FOZI-5287 + WireSeed: 1249197100 + type: Wires - uid: 2898 type: AirlockMedicalGlassLocked components: @@ -22420,6 +27604,9 @@ entities: pos: 20.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: AOQZ-2284 + WireSeed: 309331436 + type: Wires - uid: 2899 type: AirlockMedicalGlassLocked components: @@ -22429,6 +27616,9 @@ entities: pos: 19.5,-18.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: RFQA-3846 + WireSeed: 2044461648 + type: Wires - uid: 2900 type: AirlockMedicalGlassLocked components: @@ -22438,6 +27628,9 @@ entities: pos: 8.5,-12.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: NYPQ-5613 + WireSeed: 139476535 + type: Wires - uid: 2901 type: AirlockSecurityGlassLocked components: @@ -22447,6 +27640,9 @@ entities: pos: -10.5,15.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: TOKV-1672 + WireSeed: 19823819 + type: Wires - uid: 2902 type: AirlockSecurityGlassLocked components: @@ -22456,6 +27652,9 @@ entities: pos: -9.5,9.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: RKIB-6099 + WireSeed: 2093794508 + type: Wires - uid: 2903 type: AirlockMaintCommonLocked components: @@ -22463,6 +27662,9 @@ entities: pos: 0.5,20.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: UFWQ-8199 + WireSeed: 892075468 + type: Wires - uid: 2904 type: AirlockMaintMedLocked components: @@ -22470,6 +27672,9 @@ entities: pos: 14.5,-18.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: CMJR-8177 + WireSeed: 1850262699 + type: Wires - uid: 2905 type: AirlockMaintMedLocked components: @@ -22477,6 +27682,9 @@ entities: pos: 20.5,-10.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: CGQP-2165 + WireSeed: 1990089277 + type: Wires - uid: 2906 type: AirlockMaintRnDLocked components: @@ -22484,6 +27692,9 @@ entities: pos: -11.5,-21.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: QEKJ-6577 + WireSeed: 2104799525 + type: Wires - uid: 2907 type: AirlockScienceLocked components: @@ -22493,6 +27704,9 @@ entities: pos: 0.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: SSUK-2106 + WireSeed: 393959200 + type: Wires - uid: 2908 type: AirlockScienceLocked components: @@ -22502,6 +27716,9 @@ entities: pos: 0.5,-20.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: FECH-6552 + WireSeed: 834795221 + type: Wires - uid: 2909 type: AirlockScienceGlassLocked components: @@ -22511,6 +27728,9 @@ entities: pos: -3.5,-18.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: NLBV-9910 + WireSeed: 2125493896 + type: Wires - uid: 2910 type: AirlockMaintCommonLocked components: @@ -22518,6 +27738,9 @@ entities: pos: -33.5,8.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: KAVV-9342 + WireSeed: 825185224 + type: Wires - uid: 2911 type: AirlockCommandGlassLocked components: @@ -22527,6 +27750,9 @@ entities: pos: 38.5,1.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: CYII-3400 + WireSeed: 1636079785 + type: Wires - access: - - Engineering - Command @@ -22545,6 +27771,9 @@ entities: pos: 11.5,20.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: YMJG-5269 + WireSeed: 1016192265 + type: Wires - access: - - HeadOfPersonnel type: AccessReader @@ -22555,6 +27784,9 @@ entities: pos: 15.5,16.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: CARV-1132 + WireSeed: 772636827 + type: Wires - uid: 2915 type: AirlockServiceLocked components: @@ -22564,6 +27796,9 @@ entities: pos: -22.5,9.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: BJWI-6517 + WireSeed: 1001186873 + type: Wires - uid: 2916 type: AirlockMaintCommonLocked components: @@ -22571,6 +27806,9 @@ entities: pos: -34.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: WAGV-3965 + WireSeed: 603835631 + type: Wires - uid: 2917 type: AirlockMaintCommonLocked components: @@ -22578,6 +27816,9 @@ entities: pos: -23.5,-9.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: SMTC-9034 + WireSeed: 364757442 + type: Wires - uid: 2918 type: AirlockMaintCommonLocked components: @@ -22585,6 +27826,9 @@ entities: pos: 1.5,-7.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: DUSN-0560 + WireSeed: 1251354631 + type: Wires - uid: 2919 type: AirlockVaultLocked components: @@ -22594,6 +27838,9 @@ entities: pos: 0.5,17.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: DYMA-4078 + WireSeed: 967318617 + type: Wires - uid: 2920 type: AirlockMaintCommonLocked components: @@ -22601,6 +27848,9 @@ entities: pos: -8.5,-7.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: NUAR-5567 + WireSeed: 799238141 + type: Wires - access: - - Service type: AccessReader @@ -22613,6 +27863,9 @@ entities: pos: -10.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: GQOG-3037 + WireSeed: 1603027824 + type: Wires - uid: 2922 type: AirlockMaintEngiLocked components: @@ -22620,6 +27873,9 @@ entities: pos: 28.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: IQZH-5797 + WireSeed: 1376777420 + type: Wires - uid: 2923 type: AirlockServiceGlassLocked components: @@ -22629,6 +27885,9 @@ entities: pos: -7.5,-4.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: HMBY-7370 + WireSeed: 75096740 + type: Wires - uid: 2924 type: AirlockSecurityGlassLocked components: @@ -22638,6 +27897,9 @@ entities: pos: -6.5,6.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: YWRZ-7532 + WireSeed: 1493191944 + type: Wires - uid: 2925 type: AirlockMaintCommonLocked components: @@ -22645,6 +27907,9 @@ entities: pos: -16.5,6.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: TCCQ-9887 + WireSeed: 310306233 + type: Wires - uid: 2926 type: AirlockMaintCommonLocked components: @@ -22652,6 +27917,9 @@ entities: pos: 5.5,14.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: PXDM-3756 + WireSeed: 1182672040 + type: Wires - uid: 2927 type: AirlockMaintRnDLocked components: @@ -22659,6 +27927,9 @@ entities: pos: -4.5,-11.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: HGRG-8490 + WireSeed: 1162485056 + type: Wires - uid: 2928 type: AirlockMaintIntLocked components: @@ -22666,6 +27937,9 @@ entities: pos: -12.5,-8.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: LTAH-1133 + WireSeed: 2138344506 + type: Wires - uid: 2929 type: AirlockMaintIntLocked components: @@ -22673,6 +27947,9 @@ entities: pos: -13.5,-13.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: NBXI-9071 + WireSeed: 1420939772 + type: Wires - uid: 2930 type: AirlockMaintCommonLocked components: @@ -22680,6 +27957,9 @@ entities: pos: -32.5,2.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: XTSS-0448 + WireSeed: 1688266155 + type: Wires - uid: 2931 type: AirlockMaintCommonLocked components: @@ -22687,6 +27967,9 @@ entities: pos: -20.5,11.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: YUEC-2888 + WireSeed: 707792930 + type: Wires - access: - - Janitor type: AccessReader @@ -22699,6 +27982,9 @@ entities: pos: 30.5,3.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: JFQS-4233 + WireSeed: 637268313 + type: Wires - uid: 2933 type: AirlockEngineeringGlassLocked components: @@ -22708,6 +27994,9 @@ entities: pos: 30.5,5.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: TTIO-1603 + WireSeed: 454212984 + type: Wires - uid: 2934 type: AirlockMedicalGlassLocked components: @@ -22717,6 +28006,9 @@ entities: pos: 7.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: UOPN-8787 + WireSeed: 128258817 + type: Wires - uid: 2935 type: AirlockMedicalGlassLocked components: @@ -22726,6 +28018,9 @@ entities: pos: 17.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: DWWN-6619 + WireSeed: 572882105 + type: Wires - uid: 2936 type: AirlockCommandGlassLocked components: @@ -22735,6 +28030,9 @@ entities: pos: 20.5,-13.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: DBOY-7146 + WireSeed: 2093027285 + type: Wires - access: - - Medical - Command @@ -22748,6 +28046,9 @@ entities: pos: -8.5,-21.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: UOQR-3851 + WireSeed: 1790641128 + type: Wires - access: - - Research - Command @@ -22761,6 +28062,9 @@ entities: pos: -3.5,-21.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: KPHE-6888 + WireSeed: 2049581986 + type: Wires - access: - - Research - Command @@ -22774,6 +28078,9 @@ entities: pos: -12.5,-19.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: PCBK-5706 + WireSeed: 1681355557 + type: Wires - uid: 2940 type: AirlockScienceLocked components: @@ -22783,6 +28090,9 @@ entities: pos: -12.5,-20.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: HGVM-3521 + WireSeed: 418686914 + type: Wires - uid: 2941 type: AirlockGlass components: @@ -22792,6 +28102,9 @@ entities: pos: -26.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: CZDO-4573 + WireSeed: 601853902 + type: Wires - uid: 2942 type: AirlockServiceGlassLocked components: @@ -22801,6 +28114,9 @@ entities: pos: -25.5,10.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: HRRO-0652 + WireSeed: 329371063 + type: Wires - access: - - Maintenance type: AccessReader @@ -22813,6 +28129,9 @@ entities: pos: -25.5,8.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: VYIC-4178 + WireSeed: 1840012897 + type: Wires - access: - - Maintenance type: AccessReader @@ -22825,6 +28144,9 @@ entities: pos: -26.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: QSPE-3594 + WireSeed: 2117235893 + type: Wires - uid: 2945 type: AirlockServiceLocked components: @@ -22834,6 +28156,9 @@ entities: pos: -20.5,-7.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: XQJX-4652 + WireSeed: 1020748128 + type: Wires - access: - - Theatre type: AccessReader @@ -22846,6 +28171,9 @@ entities: pos: -26.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: AAAO-9160 + WireSeed: 264992413 + type: Wires - uid: 2947 type: Airlock components: @@ -22855,6 +28183,9 @@ entities: pos: -21.5,-4.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: TZNE-2505 + WireSeed: 448067850 + type: Wires - uid: 2948 type: Airlock components: @@ -22864,6 +28195,9 @@ entities: pos: -18.5,0.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: SBGE-7154 + WireSeed: 1433373986 + type: Wires - uid: 2949 type: Airlock components: @@ -22873,6 +28207,9 @@ entities: pos: -21.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: OMIF-0660 + WireSeed: 378117945 + type: Wires - uid: 2950 type: Airlock components: @@ -22882,6 +28219,9 @@ entities: pos: -20.5,0.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: XYJS-2912 + WireSeed: 1351687716 + type: Wires - uid: 2951 type: AirlockMaintCommonLocked components: @@ -22889,6 +28229,9 @@ entities: pos: -14.5,-4.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: OCBB-9978 + WireSeed: 1839682292 + type: Wires - access: - - Service type: AccessReader @@ -22899,6 +28242,9 @@ entities: pos: -16.5,-7.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: OGJH-7262 + WireSeed: 189680893 + type: Wires - access: - - Service type: AccessReader @@ -22909,6 +28255,9 @@ entities: pos: -31.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: XAIA-4765 + WireSeed: 2025498773 + type: Wires - uid: 2954 type: AirlockMaintCommonLocked components: @@ -22916,6 +28265,9 @@ entities: pos: 27.5,7.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: AJUU-2442 + WireSeed: 558462682 + type: Wires - uid: 2955 type: Table components: @@ -22966,6 +28318,9 @@ entities: pos: -12.5,17.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: WUEJ-5650 + WireSeed: 2067462950 + type: Wires - uid: 2962 type: AirlockVaultLocked components: @@ -22975,6 +28330,9 @@ entities: pos: -10.5,20.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: GWCZ-9570 + WireSeed: 1211819228 + type: Wires - uid: 2963 type: AirlockCommandGlassLocked components: @@ -22984,6 +28342,9 @@ entities: pos: 2.5,22.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: IFYB-8145 + WireSeed: 129332630 + type: Wires - uid: 2964 type: AirlockCommandGlassLocked components: @@ -22993,6 +28354,9 @@ entities: pos: 4.5,22.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: VKBA-7089 + WireSeed: 932839495 + type: Wires - uid: 2965 type: AirlockCommandGlassLocked components: @@ -23002,6 +28366,9 @@ entities: pos: 7.5,6.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: EQPZ-5128 + WireSeed: 1773319195 + type: Wires - access: - - External type: AccessReader @@ -23014,6 +28381,9 @@ entities: pos: 9.5,6.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: SKSC-7681 + WireSeed: 1162035575 + type: Wires - access: - - External type: AccessReader @@ -23024,6 +28394,9 @@ entities: pos: 8.5,12.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: GAZR-1881 + WireSeed: 425508591 + type: Wires - access: - - External type: AccessReader @@ -23036,6 +28409,9 @@ entities: pos: 13.5,8.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: TUPT-9669 + WireSeed: 1130530967 + type: Wires - uid: 2969 type: AirlockCargoGlassLocked components: @@ -23045,6 +28421,9 @@ entities: pos: 17.5,10.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: YQSJ-5479 + WireSeed: 504243442 + type: Wires - uid: 2970 type: AirlockCargoGlassLocked components: @@ -23054,6 +28433,9 @@ entities: pos: 17.5,11.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: FSLA-5169 + WireSeed: 1857012812 + type: Wires - uid: 2971 type: AirlockExternalLocked components: @@ -23063,6 +28445,9 @@ entities: pos: 20.5,14.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: JEQY-9989 + WireSeed: 233131541 + type: Wires - access: - - Cargo type: AccessReader @@ -23075,6 +28460,9 @@ entities: pos: 20.5,16.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: BYPX-4636 + WireSeed: 210382358 + type: Wires - access: - - Cargo type: AccessReader @@ -23087,6 +28475,9 @@ entities: pos: 22.5,16.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: DWWC-6035 + WireSeed: 356196615 + type: Wires - access: - - Cargo type: AccessReader @@ -23099,6 +28490,9 @@ entities: pos: 22.5,14.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: BSBV-2797 + WireSeed: 949804272 + type: Wires - access: - - Cargo type: AccessReader @@ -23109,6 +28503,9 @@ entities: pos: 14.5,14.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: PTVE-0215 + WireSeed: 1200332241 + type: Wires - uid: 2976 type: AirlockCommandGlassLocked components: @@ -23118,6 +28515,9 @@ entities: pos: -8.5,18.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: VAUE-5425 + WireSeed: 602620559 + type: Wires - access: - - Security - Command @@ -23136,8 +28536,8 @@ entities: - 2978 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2978 type: LightTube components: @@ -23158,8 +28558,8 @@ entities: - 2980 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2980 type: LightTube components: @@ -23180,8 +28580,8 @@ entities: - 2982 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice + - powerLoad: 40 + type: PowerReceiver - uid: 2982 type: LightTube components: @@ -23210,6 +28610,9 @@ entities: pos: -2.5,9.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: OGUH-9387 + WireSeed: 1300492132 + type: Wires - uid: 2986 type: AirlockSecurityGlassLocked components: @@ -23219,6 +28622,9 @@ entities: pos: 0.5,9.5 rot: -1.5707963267948966 rad type: Transform + - SerialNumber: QNEK-0307 + WireSeed: 7959160 + type: Wires - uid: 2987 type: SuspicionMeleeSpawner components: @@ -23401,4 +28807,880 @@ entities: pos: 5.5,16.5 rot: -1.5707963267948966 rad type: Transform +- uid: 3013 + type: OuterclothingHazard + components: + - parent: 382 + type: Transform +- uid: 3014 + type: FlashlightLantern + components: + - parent: 382 + type: Transform + - containers: + flashlight_cell_container: + entities: + - 3015 + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 3015 + type: PowerCellSmallHyper + components: + - parent: 3014 + type: Transform + - startingCharge: 1000 + type: PowerCell +- uid: 3016 + type: Screwdriver + components: + - parent: 382 + type: Transform + - selected: cyan + colors: + blue: '#1861D5FF' + red: '#FF0000FF' + pink: '#D5188DFF' + brown: '#A05212FF' + green: '#0E7F1BFF' + cyan: '#18A2D5FF' + yellow: '#FFA500FF' + type: RandomToolColor +- uid: 3017 + type: Wrench + components: + - parent: 382 + type: Transform +- uid: 3018 + type: Welder + components: + - parent: 382 + type: Transform +- uid: 3019 + type: Crowbar + components: + - parent: 382 + type: Transform +- uid: 3020 + type: Wirecutter + components: + - parent: 382 + type: Transform + - selected: cyan + colors: + blue: '#1861D5FF' + red: '#951710FF' + pink: '#D5188DFF' + brown: '#A05212FF' + green: '#0E7F1BFF' + cyan: '#18A2D5FF' + yellow: '#D58C18FF' + type: RandomToolColor +- uid: 3021 + type: UtilityBeltClothing + components: + - parent: 382 + type: Transform + - containers: + storagebase: + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer +- uid: 3022 + type: CableStack + components: + - parent: 382 + type: Transform +- uid: 3023 + type: FlashlightLantern + components: + - parent: 384 + type: Transform + - containers: + flashlight_cell_container: + entities: + - 3024 + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 3024 + type: PowerCellSmallHyper + components: + - parent: 3023 + type: Transform + - startingCharge: 1000 + type: PowerCell +- uid: 3025 + type: Screwdriver + components: + - parent: 384 + type: Transform + - selected: red + colors: + blue: '#1861D5FF' + red: '#FF0000FF' + pink: '#D5188DFF' + brown: '#A05212FF' + green: '#0E7F1BFF' + cyan: '#18A2D5FF' + yellow: '#FFA500FF' + type: RandomToolColor +- uid: 3026 + type: Welder + components: + - parent: 384 + type: Transform +- uid: 3027 + type: Crowbar + components: + - parent: 384 + type: Transform +- uid: 3028 + type: Wirecutter + components: + - parent: 384 + type: Transform + - selected: yellow + colors: + blue: '#1861D5FF' + red: '#951710FF' + pink: '#D5188DFF' + brown: '#A05212FF' + green: '#0E7F1BFF' + cyan: '#18A2D5FF' + yellow: '#D58C18FF' + type: RandomToolColor +- uid: 3029 + type: GlovesYellow + components: + - parent: 384 + type: Transform +- uid: 3030 + type: HatHardhatRed + components: + - parent: 384 + type: Transform +- uid: 3031 + type: Screwdriver + components: + - parent: 1557 + type: Transform + - selected: yellow + colors: + blue: '#1861D5FF' + red: '#FF0000FF' + pink: '#D5188DFF' + brown: '#A05212FF' + green: '#0E7F1BFF' + cyan: '#18A2D5FF' + yellow: '#FFA500FF' + type: RandomToolColor +- uid: 3032 + type: Crowbar + components: + - parent: 1557 + type: Transform +- uid: 3033 + type: Wirecutter + components: + - parent: 1557 + type: Transform + - selected: blue + colors: + blue: '#1861D5FF' + red: '#951710FF' + pink: '#D5188DFF' + brown: '#A05212FF' + green: '#0E7F1BFF' + cyan: '#18A2D5FF' + yellow: '#D58C18FF' + type: RandomToolColor +- uid: 3034 + type: CableStack + components: + - parent: 1557 + type: Transform +- uid: 3035 + type: CableStack + components: + - parent: 1557 + type: Transform +- uid: 3036 + type: CableStack + components: + - parent: 1557 + type: Transform +- uid: 3037 + type: FlashlightLantern + components: + - parent: 2251 + type: Transform + - containers: + flashlight_cell_container: + entities: + - 3038 + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 3038 + type: PowerCellSmallHyper + components: + - parent: 3037 + type: Transform + - startingCharge: 1000 + type: PowerCell +- uid: 3039 + type: Screwdriver + components: + - parent: 2251 + type: Transform + - selected: yellow + colors: + blue: '#1861D5FF' + red: '#FF0000FF' + pink: '#D5188DFF' + brown: '#A05212FF' + green: '#0E7F1BFF' + cyan: '#18A2D5FF' + yellow: '#FFA500FF' + type: RandomToolColor +- uid: 3040 + type: Wrench + components: + - parent: 2251 + type: Transform +- uid: 3041 + type: Welder + components: + - parent: 2251 + type: Transform +- uid: 3042 + type: Crowbar + components: + - parent: 2251 + type: Transform +- uid: 3043 + type: Wirecutter + components: + - parent: 2251 + type: Transform + - selected: yellow + colors: + blue: '#1861D5FF' + red: '#951710FF' + pink: '#D5188DFF' + brown: '#A05212FF' + green: '#0E7F1BFF' + cyan: '#18A2D5FF' + yellow: '#D58C18FF' + type: RandomToolColor +- uid: 3044 + type: BreathMaskClothing + components: + - parent: 2758 + type: Transform +- uid: 3045 + type: BreathMaskClothing + components: + - parent: 2759 + type: Transform +- uid: 3046 + type: BreathMaskClothing + components: + - parent: 2760 + type: Transform +- uid: 3047 + type: BreathMaskClothing + components: + - parent: 2761 + type: Transform +- uid: 3048 + type: ToolboxEmergencyFilled + components: + - parent: 2764 + type: Transform + - containers: + storagebase: + entities: + - 3049 + - 3050 + - 3051 + - 3052 + - 3054 + - 3056 + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer + - used: 30 + type: Storage +- uid: 3049 + type: BreathMaskClothing + components: + - parent: 3048 + type: Transform +- uid: 3050 + type: BreathMaskClothing + components: + - parent: 3048 + type: Transform +- uid: 3051 + type: FoodChocolateBar + components: + - parent: 3048 + type: Transform +- uid: 3052 + type: FlashlightLantern + components: + - parent: 3048 + type: Transform + - containers: + flashlight_cell_container: + entities: + - 3053 + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 3053 + type: PowerCellSmallHyper + components: + - parent: 3052 + type: Transform + - startingCharge: 1000 + type: PowerCell +- uid: 3054 + type: FlashlightLantern + components: + - parent: 3048 + type: Transform + - containers: + flashlight_cell_container: + entities: + - 3055 + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 3055 + type: PowerCellSmallHyper + components: + - parent: 3054 + type: Transform + - startingCharge: 1000 + type: PowerCell +- uid: 3056 + type: FoodChocolateBar + components: + - parent: 3048 + type: Transform +- uid: 3057 + type: BreathMaskClothing + components: + - parent: 2764 + type: Transform +- uid: 3058 + type: BreathMaskClothing + components: + - parent: 2765 + type: Transform +- uid: 3059 + type: ToolboxEmergencyFilled + components: + - parent: 2766 + type: Transform + - containers: + storagebase: + entities: + - 3060 + - 3061 + - 3062 + - 3063 + - 3065 + - 3067 + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer + - used: 30 + type: Storage +- uid: 3060 + type: BreathMaskClothing + components: + - parent: 3059 + type: Transform +- uid: 3061 + type: BreathMaskClothing + components: + - parent: 3059 + type: Transform +- uid: 3062 + type: FoodChocolateBar + components: + - parent: 3059 + type: Transform +- uid: 3063 + type: FlashlightLantern + components: + - parent: 3059 + type: Transform + - containers: + flashlight_cell_container: + entities: + - 3064 + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 3064 + type: PowerCellSmallHyper + components: + - parent: 3063 + type: Transform + - startingCharge: 1000 + type: PowerCell +- uid: 3065 + type: FlashlightLantern + components: + - parent: 3059 + type: Transform + - containers: + flashlight_cell_container: + entities: + - 3066 + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 3066 + type: PowerCellSmallHyper + components: + - parent: 3065 + type: Transform + - startingCharge: 1000 + type: PowerCell +- uid: 3067 + type: FoodChocolateBar + components: + - parent: 3059 + type: Transform +- uid: 3068 + type: ToolboxEmergencyFilled + components: + - parent: 2768 + type: Transform + - containers: + storagebase: + entities: + - 3069 + - 3070 + - 3071 + - 3072 + - 3074 + - 3076 + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer + - used: 30 + type: Storage +- uid: 3069 + type: BreathMaskClothing + components: + - parent: 3068 + type: Transform +- uid: 3070 + type: BreathMaskClothing + components: + - parent: 3068 + type: Transform +- uid: 3071 + type: FoodChocolateBar + components: + - parent: 3068 + type: Transform +- uid: 3072 + type: FlashlightLantern + components: + - parent: 3068 + type: Transform + - containers: + flashlight_cell_container: + entities: + - 3073 + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 3073 + type: PowerCellSmallHyper + components: + - parent: 3072 + type: Transform + - startingCharge: 1000 + type: PowerCell +- uid: 3074 + type: FlashlightLantern + components: + - parent: 3068 + type: Transform + - containers: + flashlight_cell_container: + entities: + - 3075 + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 3075 + type: PowerCellSmallHyper + components: + - parent: 3074 + type: Transform + - startingCharge: 1000 + type: PowerCell +- uid: 3076 + type: FoodChocolateBar + components: + - parent: 3068 + type: Transform +- uid: 3077 + type: BreathMaskClothing + components: + - parent: 2768 + type: Transform +- uid: 3078 + type: BreathMaskClothing + components: + - parent: 2771 + type: Transform +- uid: 3079 + type: ToolboxEmergencyFilled + components: + - parent: 2773 + type: Transform + - containers: + storagebase: + entities: + - 3080 + - 3081 + - 3082 + - 3083 + - 3085 + - 3087 + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer + - used: 30 + type: Storage +- uid: 3080 + type: BreathMaskClothing + components: + - parent: 3079 + type: Transform +- uid: 3081 + type: BreathMaskClothing + components: + - parent: 3079 + type: Transform +- uid: 3082 + type: FoodChocolateBar + components: + - parent: 3079 + type: Transform +- uid: 3083 + type: FlashlightLantern + components: + - parent: 3079 + type: Transform + - containers: + flashlight_cell_container: + entities: + - 3084 + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 3084 + type: PowerCellSmallHyper + components: + - parent: 3083 + type: Transform + - startingCharge: 1000 + type: PowerCell +- uid: 3085 + type: FlashlightLantern + components: + - parent: 3079 + type: Transform + - containers: + flashlight_cell_container: + entities: + - 3086 + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 3086 + type: PowerCellSmallHyper + components: + - parent: 3085 + type: Transform + - startingCharge: 1000 + type: PowerCell +- uid: 3087 + type: FoodChocolateBar + components: + - parent: 3079 + type: Transform +- uid: 3088 + type: BreathMaskClothing + components: + - parent: 2773 + type: Transform +- uid: 3089 + type: BreathMaskClothing + components: + - parent: 2781 + type: Transform +- uid: 3090 + type: ToolboxEmergencyFilled + components: + - parent: 2783 + type: Transform + - containers: + storagebase: + entities: + - 3091 + - 3092 + - 3093 + - 3094 + - 3096 + - 3098 + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer + - used: 30 + type: Storage +- uid: 3091 + type: BreathMaskClothing + components: + - parent: 3090 + type: Transform +- uid: 3092 + type: BreathMaskClothing + components: + - parent: 3090 + type: Transform +- uid: 3093 + type: FoodChocolateBar + components: + - parent: 3090 + type: Transform +- uid: 3094 + type: FlashlightLantern + components: + - parent: 3090 + type: Transform + - containers: + flashlight_cell_container: + entities: + - 3095 + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 3095 + type: PowerCellSmallHyper + components: + - parent: 3094 + type: Transform + - startingCharge: 1000 + type: PowerCell +- uid: 3096 + type: FlashlightLantern + components: + - parent: 3090 + type: Transform + - containers: + flashlight_cell_container: + entities: + - 3097 + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 3097 + type: PowerCellSmallHyper + components: + - parent: 3096 + type: Transform + - startingCharge: 1000 + type: PowerCell +- uid: 3098 + type: FoodChocolateBar + components: + - parent: 3090 + type: Transform +- uid: 3099 + type: BreathMaskClothing + components: + - parent: 2783 + type: Transform +- uid: 3100 + type: BreathMaskClothing + components: + - parent: 2783 + type: Transform +- uid: 3101 + type: BreathMaskClothing + components: + - parent: 2784 + type: Transform +- uid: 3102 + type: BreathMaskClothing + components: + - parent: 2784 + type: Transform +- uid: 3103 + type: BreathMaskClothing + components: + - parent: 2785 + type: Transform +- uid: 3104 + type: BreathMaskClothing + components: + - parent: 2788 + type: Transform +- uid: 3105 + type: ToolboxEmergencyFilled + components: + - parent: 2789 + type: Transform + - containers: + storagebase: + entities: + - 3106 + - 3107 + - 3108 + - 3109 + - 3111 + - 3113 + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer + - used: 30 + type: Storage +- uid: 3106 + type: BreathMaskClothing + components: + - parent: 3105 + type: Transform +- uid: 3107 + type: BreathMaskClothing + components: + - parent: 3105 + type: Transform +- uid: 3108 + type: FoodChocolateBar + components: + - parent: 3105 + type: Transform +- uid: 3109 + type: FlashlightLantern + components: + - parent: 3105 + type: Transform + - containers: + flashlight_cell_container: + entities: + - 3110 + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 3110 + type: PowerCellSmallHyper + components: + - parent: 3109 + type: Transform + - startingCharge: 1000 + type: PowerCell +- uid: 3111 + type: FlashlightLantern + components: + - parent: 3105 + type: Transform + - containers: + flashlight_cell_container: + entities: + - 3112 + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 3112 + type: PowerCellSmallHyper + components: + - parent: 3111 + type: Transform + - startingCharge: 1000 + type: PowerCell +- uid: 3113 + type: FoodChocolateBar + components: + - parent: 3105 + type: Transform +- uid: 3114 + type: BreathMaskClothing + components: + - parent: 2789 + type: Transform +- uid: 3115 + type: ToolboxEmergencyFilled + components: + - parent: 2791 + type: Transform + - containers: + storagebase: + entities: + - 3116 + - 3117 + - 3118 + - 3119 + - 3121 + - 3123 + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer + - used: 30 + type: Storage +- uid: 3116 + type: BreathMaskClothing + components: + - parent: 3115 + type: Transform +- uid: 3117 + type: BreathMaskClothing + components: + - parent: 3115 + type: Transform +- uid: 3118 + type: FoodChocolateBar + components: + - parent: 3115 + type: Transform +- uid: 3119 + type: FlashlightLantern + components: + - parent: 3115 + type: Transform + - containers: + flashlight_cell_container: + entities: + - 3120 + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 3120 + type: PowerCellSmallHyper + components: + - parent: 3119 + type: Transform + - startingCharge: 1000 + type: PowerCell +- uid: 3121 + type: FlashlightLantern + components: + - parent: 3115 + type: Transform + - containers: + flashlight_cell_container: + entities: + - 3122 + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 3122 + type: PowerCellSmallHyper + components: + - parent: 3121 + type: Transform + - startingCharge: 1000 + type: PowerCell +- uid: 3123 + type: FoodChocolateBar + components: + - parent: 3115 + type: Transform +- uid: 3124 + type: BreathMaskClothing + components: + - parent: 2791 + type: Transform +- uid: 3125 + type: BreathMaskClothing + components: + - parent: 2795 + type: Transform ... diff --git a/Resources/Maps/stationstation.yml b/Resources/Maps/stationstation.yml index c1c4201809..f3a2440901 100644 --- a/Resources/Maps/stationstation.yml +++ b/Resources/Maps/stationstation.yml @@ -1,4 +1,4 @@ -meta: +meta: format: 2 name: DemoStation author: Space-Wizards @@ -109,6 +109,8 @@ entities: pos: -1.47174,4.550247 rot: -1.5707963267949 rad type: Transform + - startingCharge: 1000 + type: PowerCell - uid: 2 type: LaserGun components: @@ -116,6 +118,8 @@ entities: pos: -0.6748645,4.487747 rot: -1.5707963267949 rad type: Transform + - startingCharge: 1000 + type: PowerCell - uid: 3 type: Brutepack components: @@ -151,6 +155,8 @@ entities: pos: -2.67511,-10.351 rot: -1.5707963267949 rad type: Transform + - startingCharge: 1000 + type: PowerCell - uid: 8 type: PowerCellSmallHigh components: @@ -158,6 +164,8 @@ entities: pos: -2.55011,-10.6635 rot: -1.5707963267949 rad type: Transform + - startingCharge: 1000 + type: PowerCell - uid: 9 type: OuterclothingVest components: @@ -292,8 +300,6 @@ entities: - 30 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 27 type: MetalStack components: @@ -308,6 +314,12 @@ entities: pos: 8.5,-8.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 29 type: PoweredSmallLight components: @@ -323,8 +335,6 @@ entities: - 170 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 30 type: LightBulb components: @@ -337,6 +347,12 @@ entities: pos: -6.5,-11.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 32 type: solid_wall components: @@ -759,10 +775,8 @@ entities: type: Transform - containers: storagebase: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -774,6 +788,12 @@ entities: pos: -6.5,-6.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 93 type: Wire components: @@ -781,6 +801,12 @@ entities: pos: -7.5,-6.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 94 type: Wire components: @@ -788,6 +814,12 @@ entities: pos: -8.5,-6.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 95 type: Wire components: @@ -795,6 +827,12 @@ entities: pos: -8.5,-5.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 96 type: Wire components: @@ -802,6 +840,12 @@ entities: pos: -8.5,-4.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 97 type: Wire components: @@ -809,6 +853,12 @@ entities: pos: -8.5,-3.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 98 type: Wire components: @@ -816,6 +866,12 @@ entities: pos: -8.5,-2.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 99 type: Wire components: @@ -823,6 +879,12 @@ entities: pos: -8.5,-1.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 100 type: Wire components: @@ -830,6 +892,12 @@ entities: pos: -6.5,-7.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 101 type: Wire components: @@ -837,6 +905,12 @@ entities: pos: -6.5,-8.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 102 type: Wire components: @@ -844,6 +918,12 @@ entities: pos: -6.5,-9.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 103 type: Wire components: @@ -851,6 +931,12 @@ entities: pos: -6.5,-10.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 104 type: Wire components: @@ -858,6 +944,12 @@ entities: pos: 4.5,-8.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 105 type: Wire components: @@ -865,6 +957,12 @@ entities: pos: 4.5,-9.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 106 type: Wire components: @@ -872,6 +970,12 @@ entities: pos: 4.5,-10.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 107 type: Wire components: @@ -879,6 +983,12 @@ entities: pos: 4.5,-11.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 108 type: Wire components: @@ -886,6 +996,12 @@ entities: pos: 5.5,-8.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 109 type: Wire components: @@ -893,6 +1009,12 @@ entities: pos: 6.5,-8.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 110 type: Wire components: @@ -900,6 +1022,12 @@ entities: pos: 7.5,-8.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 111 type: Catwalk components: @@ -921,6 +1049,12 @@ entities: pos: 3.5,-11.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 114 type: Wire components: @@ -928,6 +1062,12 @@ entities: pos: 2.5,-11.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 115 type: Wire components: @@ -935,6 +1075,12 @@ entities: pos: 1.5,-11.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 116 type: Wire components: @@ -942,6 +1088,12 @@ entities: pos: 0.5,-11.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 117 type: Wire components: @@ -949,6 +1101,12 @@ entities: pos: -0.5,-11.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 118 type: Wire components: @@ -956,6 +1114,12 @@ entities: pos: -1.5,-11.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 119 type: Wire components: @@ -963,6 +1127,12 @@ entities: pos: -2.5,-11.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 120 type: Wire components: @@ -970,6 +1140,12 @@ entities: pos: -3.5,-11.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 121 type: Wire components: @@ -977,6 +1153,12 @@ entities: pos: -4.5,-11.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 122 type: Wire components: @@ -984,6 +1166,12 @@ entities: pos: -5.5,-11.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 123 type: Wire components: @@ -991,6 +1179,12 @@ entities: pos: 1.5,-12.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 124 type: Wire components: @@ -998,6 +1192,12 @@ entities: pos: 1.5,-13.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 125 type: Wire components: @@ -1005,6 +1205,12 @@ entities: pos: 2.5,-13.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 126 type: Wire components: @@ -1012,6 +1218,12 @@ entities: pos: -2.5,-12.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 127 type: Wire components: @@ -1019,6 +1231,12 @@ entities: pos: -2.5,-13.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 128 type: Wire components: @@ -1026,6 +1244,12 @@ entities: pos: -3.5,-13.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 129 type: Wire components: @@ -1033,6 +1257,12 @@ entities: pos: -1.5,-13.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 130 type: Generator components: @@ -1040,6 +1270,10 @@ entities: pos: 2.5,-13.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + type: NodeContainer - uid: 131 type: Generator components: @@ -1047,6 +1281,10 @@ entities: pos: 1.5,-13.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + type: NodeContainer - uid: 132 type: SmesDry components: @@ -1054,8 +1292,12 @@ entities: pos: -1.5,-13.5 rot: -1.5707963267949 rad type: Transform - - charge: 3000 - type: PowerStorage + - supplyRate: 1000 + type: PowerSupplier + - nodeTypes: + HVPower: + - AdjacentNode + type: NodeContainer - uid: 133 type: SmesDry components: @@ -1063,8 +1305,12 @@ entities: pos: -2.5,-13.5 rot: -1.5707963267949 rad type: Transform - - charge: 3000 - type: PowerStorage + - supplyRate: 1000 + type: PowerSupplier + - nodeTypes: + HVPower: + - AdjacentNode + type: NodeContainer - uid: 134 type: SmesDry components: @@ -1072,8 +1318,12 @@ entities: pos: -3.5,-13.5 rot: -1.5707963267949 rad type: Transform - - charge: 3000 - type: PowerStorage + - supplyRate: 1000 + type: PowerSupplier + - nodeTypes: + HVPower: + - AdjacentNode + type: NodeContainer - uid: 135 type: Multitool components: @@ -1167,13 +1417,10 @@ entities: type: Transform - containers: storagebase: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container Content.Server.GameObjects.Components.EntityStorageComponent149: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -1187,7 +1434,6 @@ entities: type: Transform - containers: storagebase: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - uid: 149 @@ -1199,7 +1445,6 @@ entities: type: Transform - containers: storagebase: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - uid: 150 @@ -1211,13 +1456,10 @@ entities: type: Transform - containers: storagebase: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container Content.Server.GameObjects.Components.EntityStorageComponent153: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -1323,6 +1565,12 @@ entities: pos: -6.5,-12.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 164 type: Wire components: @@ -1330,6 +1578,12 @@ entities: pos: -6.5,-13.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 165 type: Wire components: @@ -1337,6 +1591,12 @@ entities: pos: 5.5,-11.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 166 type: Wire components: @@ -1344,6 +1604,12 @@ entities: pos: 5.5,-12.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 167 type: Wire components: @@ -1351,6 +1617,12 @@ entities: pos: 5.5,-13.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 168 type: WiredMachine components: @@ -1358,6 +1630,10 @@ entities: pos: 5.5,-13.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + type: NodeContainer - uid: 169 type: WiredMachine components: @@ -1365,6 +1641,10 @@ entities: pos: -6.5,-13.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + type: NodeContainer - uid: 170 type: LightBulb components: @@ -1463,6 +1743,10 @@ entities: pos: 0.5,-13.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + type: NodeContainer - uid: 184 type: Wire components: @@ -1470,6 +1754,12 @@ entities: pos: 3.5,-13.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 185 type: Wire components: @@ -1477,6 +1767,12 @@ entities: pos: 0.5,-13.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 186 type: Generator components: @@ -1484,6 +1780,10 @@ entities: pos: 3.5,-13.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + type: NodeContainer - uid: 187 type: Table components: @@ -1610,6 +1910,12 @@ entities: pos: -8.5,-0.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 205 type: Wire components: @@ -1617,6 +1923,12 @@ entities: pos: -8.5,0.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 206 type: Wire components: @@ -1624,6 +1936,12 @@ entities: pos: -9.5,0.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 207 type: Wire components: @@ -1631,6 +1949,12 @@ entities: pos: -9.5,1.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 208 type: solid_wall components: @@ -1672,8 +1996,6 @@ entities: - 211 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 213 type: ChairOfficeLight components: @@ -1703,8 +2025,6 @@ entities: - 316 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 216 type: MetalStack components: @@ -1759,6 +2079,12 @@ entities: pos: -6.5,-7.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 224 type: Wire components: @@ -1766,6 +2092,12 @@ entities: pos: -9.5,2.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 225 type: Wire components: @@ -1773,6 +2105,12 @@ entities: pos: -9.5,3.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 226 type: Wire components: @@ -1780,6 +2118,12 @@ entities: pos: -8.5,3.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 227 type: Wire components: @@ -1787,6 +2131,12 @@ entities: pos: -7.5,3.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 228 type: Wire components: @@ -1794,6 +2144,12 @@ entities: pos: -6.5,3.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 229 type: Wire components: @@ -1801,6 +2157,12 @@ entities: pos: -5.5,3.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 230 type: Wire components: @@ -1808,6 +2170,12 @@ entities: pos: -4.5,3.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 231 type: Wire components: @@ -1815,6 +2183,12 @@ entities: pos: -3.5,3.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 232 type: Wire components: @@ -1822,6 +2196,12 @@ entities: pos: -2.5,3.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 233 type: Wire components: @@ -1829,6 +2209,12 @@ entities: pos: -1.5,3.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 234 type: Wire components: @@ -1836,6 +2222,12 @@ entities: pos: -0.5,3.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 235 type: Wire components: @@ -1843,6 +2235,12 @@ entities: pos: 0.5,3.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 236 type: LargeBeaker components: @@ -1948,6 +2346,12 @@ entities: pos: 4.5,-9.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 251 type: PoweredSmallLight components: @@ -1962,8 +2366,6 @@ entities: - 222 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 252 type: solid_wall components: @@ -1980,7 +2382,6 @@ entities: type: Transform - containers: storagebase: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - uid: 254 @@ -1992,7 +2393,6 @@ entities: type: Transform - containers: storagebase: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - uid: 255 @@ -2004,7 +2404,6 @@ entities: type: Transform - containers: flashlight_cell_container: - entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 256 @@ -2016,7 +2415,6 @@ entities: type: Transform - containers: flashlight_cell_container: - entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 257 @@ -2056,7 +2454,6 @@ entities: type: Transform - containers: storagebase: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - uid: 262 @@ -2068,7 +2465,6 @@ entities: type: Transform - containers: storagebase: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - uid: 263 @@ -2078,6 +2474,10 @@ entities: pos: -6.605512,7.638151 rot: -1.5707963267949 rad type: Transform + - containers: + magazine_bullet_container: + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer - uid: 264 type: MagazinePistolSmg components: @@ -2085,6 +2485,10 @@ entities: pos: -6.339887,7.669401 rot: -1.5707963267949 rad type: Transform + - containers: + magazine_bullet_container: + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer - uid: 265 type: MagazinePistolSmg components: @@ -2092,6 +2496,10 @@ entities: pos: -6.027387,7.622526 rot: -1.5707963267949 rad type: Transform + - containers: + magazine_bullet_container: + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer - uid: 266 type: BackpackClothing components: @@ -2101,7 +2509,6 @@ entities: type: Transform - containers: storagebase: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - uid: 267 @@ -2113,7 +2520,6 @@ entities: type: Transform - containers: storagebase: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - uid: 268 @@ -2130,6 +2536,12 @@ entities: pos: -2.524035,7.579326 rot: -1.5707963267949 rad type: Transform + - containers: + ballistics_chamber_0: + type: Content.Server.GameObjects.ContainerSlot + ballistic_gun_magazine: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer - uid: 270 type: SmgC20r components: @@ -2137,6 +2549,12 @@ entities: pos: -1.94591,7.485576 rot: -1.5707963267949 rad type: Transform + - containers: + ballistics_chamber_0: + type: Content.Server.GameObjects.ContainerSlot + ballistic_gun_magazine: + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer - uid: 271 type: solid_wall components: @@ -2258,7 +2676,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -2481,8 +2898,6 @@ entities: - 318 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 318 type: LightTube components: @@ -2503,8 +2918,6 @@ entities: - 320 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 320 type: LightTube components: @@ -2531,8 +2944,6 @@ entities: - 323 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 323 type: LightBulb components: @@ -2776,6 +3187,12 @@ entities: pos: -9.5,4.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 358 type: Wire components: @@ -2783,6 +3200,12 @@ entities: pos: -13.5,-7.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 359 type: Wire components: @@ -2790,6 +3213,12 @@ entities: pos: -9.5,3.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 360 type: Table components: @@ -2827,7 +3256,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -2841,7 +3269,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -2855,7 +3282,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -2869,7 +3295,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -2883,7 +3308,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -2938,8 +3362,6 @@ entities: - 375 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 375 type: LightTube components: @@ -2960,8 +3382,6 @@ entities: - 377 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 377 type: LightTube components: @@ -2981,8 +3401,6 @@ entities: - 379 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 379 type: LightTube components: @@ -3002,8 +3420,6 @@ entities: - 381 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 381 type: LightTube components: @@ -3023,8 +3439,6 @@ entities: - 383 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 383 type: LightTube components: @@ -3045,8 +3459,6 @@ entities: - 385 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 385 type: LightBulb components: @@ -3073,6 +3485,12 @@ entities: pos: -14.5,-7.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 389 type: Wire components: @@ -3080,6 +3498,12 @@ entities: pos: -12.5,-7.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 390 type: Catwalk components: @@ -3109,8 +3533,6 @@ entities: - 393 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 393 type: LightTube components: @@ -3137,6 +3559,12 @@ entities: pos: -9.5,4.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 397 type: APC components: @@ -3144,6 +3572,12 @@ entities: pos: -16.5,-2.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 398 type: Wire components: @@ -3151,6 +3585,12 @@ entities: pos: -16.5,-2.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 399 type: Wire components: @@ -3158,6 +3598,12 @@ entities: pos: -15.5,-2.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 400 type: Wire components: @@ -3165,6 +3611,12 @@ entities: pos: -14.5,-2.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 401 type: Wire components: @@ -3172,6 +3624,12 @@ entities: pos: -13.5,-2.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 402 type: Wire components: @@ -3179,6 +3637,12 @@ entities: pos: -13.5,-3.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 403 type: Wire components: @@ -3186,6 +3650,12 @@ entities: pos: -13.5,-4.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 404 type: Wire components: @@ -3193,6 +3663,12 @@ entities: pos: -13.5,-5.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 405 type: Wire components: @@ -3200,6 +3676,12 @@ entities: pos: -13.5,-6.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 406 type: Wire components: @@ -3207,6 +3689,12 @@ entities: pos: -12.5,-6.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 407 type: Wire components: @@ -3214,6 +3702,12 @@ entities: pos: -11.5,-6.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 408 type: Wire components: @@ -3221,6 +3715,12 @@ entities: pos: -10.5,-6.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 409 type: Wire components: @@ -3228,6 +3728,12 @@ entities: pos: -9.5,-6.5 rot: -1.5707963267949 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 410 type: Table components: @@ -3403,7 +3909,6 @@ entities: type: Transform - containers: ReagentDispenser-reagentContainerContainer: - entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 435 @@ -3471,7 +3976,6 @@ entities: type: Transform - containers: MedicalScanner-bodyContainer: - entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 444 @@ -3483,7 +3987,6 @@ entities: type: Transform - containers: MedicalScanner-bodyContainer: - entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 445 @@ -4536,6 +5039,12 @@ entities: pos: 1.5,3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 595 type: Wire components: @@ -4543,6 +5052,12 @@ entities: pos: 2.5,3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 596 type: Wire components: @@ -4550,6 +5065,12 @@ entities: pos: 2.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 597 type: Wire components: @@ -4557,6 +5078,12 @@ entities: pos: 2.5,5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 598 type: Wire components: @@ -4564,6 +5091,12 @@ entities: pos: 2.5,10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 599 type: Wire components: @@ -4571,6 +5104,12 @@ entities: pos: 2.5,6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 600 type: Wire components: @@ -4578,6 +5117,12 @@ entities: pos: 2.5,7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 601 type: Wire components: @@ -4585,6 +5130,12 @@ entities: pos: 2.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 602 type: Wire components: @@ -4592,6 +5143,12 @@ entities: pos: 2.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 603 type: Wire components: @@ -4599,6 +5156,12 @@ entities: pos: 3.5,10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 604 type: Wire components: @@ -4606,6 +5169,12 @@ entities: pos: 4.5,10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 605 type: Wire components: @@ -4613,6 +5182,12 @@ entities: pos: 5.5,10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 606 type: Wire components: @@ -4620,6 +5195,12 @@ entities: pos: 5.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 607 type: Wire components: @@ -4627,6 +5208,12 @@ entities: pos: 6.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 608 type: Wire components: @@ -4634,6 +5221,12 @@ entities: pos: 7.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 609 type: Wire components: @@ -4641,6 +5234,12 @@ entities: pos: 8.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 610 type: Wire components: @@ -4648,6 +5247,12 @@ entities: pos: 9.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 611 type: Wire components: @@ -4655,6 +5260,12 @@ entities: pos: 10.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 612 type: Wire components: @@ -4662,6 +5273,12 @@ entities: pos: 11.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 613 type: Wire components: @@ -4669,6 +5286,12 @@ entities: pos: 12.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 614 type: Wire components: @@ -4676,6 +5299,12 @@ entities: pos: 12.5,10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 615 type: Wire components: @@ -4683,6 +5312,12 @@ entities: pos: 13.5,10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 616 type: Wire components: @@ -4690,6 +5325,12 @@ entities: pos: 14.5,10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 617 type: Wire components: @@ -4697,6 +5338,12 @@ entities: pos: 15.5,10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 618 type: Wire components: @@ -4704,6 +5351,12 @@ entities: pos: 16.5,10.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 619 type: Wire components: @@ -4711,6 +5364,12 @@ entities: pos: 16.5,9.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 620 type: Wire components: @@ -4718,6 +5377,12 @@ entities: pos: 16.5,8.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 621 type: Wire components: @@ -4725,6 +5390,12 @@ entities: pos: 16.5,7.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 622 type: Wire components: @@ -4732,6 +5403,12 @@ entities: pos: 16.5,6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 623 type: Wire components: @@ -4739,6 +5416,12 @@ entities: pos: 16.5,5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 624 type: Wire components: @@ -4746,6 +5429,12 @@ entities: pos: 16.5,4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 625 type: Wire components: @@ -4753,6 +5442,12 @@ entities: pos: 16.5,3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 626 type: Wire components: @@ -4760,6 +5455,12 @@ entities: pos: 16.5,2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 627 type: Wire components: @@ -4767,6 +5468,12 @@ entities: pos: 17.5,2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 628 type: Wire components: @@ -4774,6 +5481,12 @@ entities: pos: 18.5,2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 629 type: Wire components: @@ -4781,6 +5494,12 @@ entities: pos: 18.5,3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 630 type: APC components: @@ -4788,6 +5507,12 @@ entities: pos: 18.5,3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 631 type: Wire components: @@ -4795,6 +5520,12 @@ entities: pos: 1.5,2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 632 type: Wire components: @@ -4802,6 +5533,12 @@ entities: pos: 1.5,1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 633 type: APC components: @@ -4809,6 +5546,12 @@ entities: pos: 1.5,1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 634 type: Airlock components: @@ -4836,24 +5579,48 @@ entities: - parent: 0 pos: 13.5,6.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 638 type: Wire components: - parent: 0 pos: 13.5,6.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 639 type: APC components: - parent: 0 pos: 28.5,8.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 640 type: Wire components: - parent: 0 pos: 25.5,4.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 641 type: Poweredlight components: @@ -4869,8 +5636,6 @@ entities: - 642 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 642 type: LightTube components: @@ -4891,8 +5656,6 @@ entities: - 644 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 644 type: LightTube components: @@ -4913,8 +5676,6 @@ entities: - 646 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 646 type: LightTube components: @@ -4927,6 +5688,12 @@ entities: pos: 27.5,8.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 648 type: Wire components: @@ -4934,36 +5701,72 @@ entities: pos: 26.5,8.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 649 type: Wire components: - parent: 0 pos: 15.5,8.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 650 type: Wire components: - parent: 0 pos: 14.5,8.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 651 type: Wire components: - parent: 0 pos: 13.5,8.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 652 type: Wire components: - parent: 0 pos: 15.5,6.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 653 type: Wire components: - parent: 0 pos: 14.5,6.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 654 type: APC components: @@ -4971,54 +5774,108 @@ entities: pos: 30.5,2.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 655 type: Wire components: - parent: 0 pos: 19.5,2.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 656 type: Wire components: - parent: 0 pos: 20.5,2.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 657 type: Wire components: - parent: 0 pos: 21.5,2.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 658 type: Wire components: - parent: 0 pos: 22.5,2.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 659 type: Wire components: - parent: 0 pos: 23.5,2.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 660 type: Wire components: - parent: 0 pos: 24.5,2.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 661 type: Wire components: - parent: 0 pos: 25.5,2.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 662 type: Wire components: - parent: 0 pos: 25.5,3.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 663 type: Poweredlight components: @@ -5033,8 +5890,6 @@ entities: - 664 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 664 type: LightTube components: @@ -5055,8 +5910,6 @@ entities: - 666 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 666 type: LightTube components: @@ -5069,6 +5922,12 @@ entities: pos: 30.5,2.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 668 type: Wire components: @@ -5076,6 +5935,12 @@ entities: pos: 29.5,2.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 669 type: Poweredlight components: @@ -5091,8 +5956,6 @@ entities: - 670 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 670 type: LightTube components: @@ -5119,6 +5982,12 @@ entities: pos: 20.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 674 type: Wire components: @@ -5126,6 +5995,12 @@ entities: pos: 16.5,1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 675 type: Wire components: @@ -5133,6 +6008,12 @@ entities: pos: 16.5,0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 676 type: Wire components: @@ -5140,6 +6021,12 @@ entities: pos: 16.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 677 type: Wire components: @@ -5147,6 +6034,12 @@ entities: pos: 16.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 678 type: Wire components: @@ -5154,6 +6047,12 @@ entities: pos: 16.5,-2.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 679 type: Wire components: @@ -5161,6 +6060,12 @@ entities: pos: 16.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 680 type: Wire components: @@ -5168,6 +6073,12 @@ entities: pos: 17.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 681 type: Wire components: @@ -5175,6 +6086,12 @@ entities: pos: 18.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 682 type: Wire components: @@ -5182,6 +6099,12 @@ entities: pos: 19.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 683 type: Wire components: @@ -5189,6 +6112,12 @@ entities: pos: 20.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 684 type: Wire components: @@ -5196,6 +6125,12 @@ entities: pos: 20.5,-4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 685 type: Wire components: @@ -5203,6 +6138,12 @@ entities: pos: 20.5,-5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 686 type: Wire components: @@ -5210,6 +6151,12 @@ entities: pos: 20.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 687 type: Wire components: @@ -5217,6 +6164,12 @@ entities: pos: 21.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 688 type: Wire components: @@ -5224,6 +6177,12 @@ entities: pos: 22.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 689 type: Wire components: @@ -5231,6 +6190,12 @@ entities: pos: 23.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 690 type: Wire components: @@ -5238,6 +6203,12 @@ entities: pos: 24.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 691 type: Wire components: @@ -5245,6 +6216,12 @@ entities: pos: 25.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 692 type: Wire components: @@ -5252,6 +6229,12 @@ entities: pos: 26.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 693 type: Wire components: @@ -5259,6 +6242,12 @@ entities: pos: 27.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 694 type: Wire components: @@ -5266,6 +6255,12 @@ entities: pos: 28.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 695 type: Wire components: @@ -5273,6 +6268,12 @@ entities: pos: 29.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 696 type: Wire components: @@ -5280,6 +6281,12 @@ entities: pos: 30.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 697 type: Wire components: @@ -5287,6 +6294,12 @@ entities: pos: 30.5,-4.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 698 type: Wire components: @@ -5294,6 +6307,12 @@ entities: pos: 30.5,-5.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 699 type: Wire components: @@ -5301,6 +6320,12 @@ entities: pos: 30.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 700 type: APC components: @@ -5308,6 +6333,12 @@ entities: pos: 30.5,-6.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 701 type: Poweredlight components: @@ -5323,8 +6354,6 @@ entities: - 702 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 702 type: LightTube components: @@ -5345,8 +6374,6 @@ entities: - 704 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 704 type: LightTube components: @@ -5359,6 +6386,12 @@ entities: pos: 26.5,2.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 706 type: Wire components: @@ -5366,6 +6399,12 @@ entities: pos: 27.5,2.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 707 type: Wire components: @@ -5373,6 +6412,12 @@ entities: pos: 28.5,2.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 708 type: Wire components: @@ -5380,6 +6425,12 @@ entities: pos: 28.5,8.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 709 type: Wire components: @@ -5387,6 +6438,12 @@ entities: pos: 25.5,5.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 710 type: Wire components: @@ -5394,6 +6451,12 @@ entities: pos: 25.5,6.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 711 type: Wire components: @@ -5401,6 +6464,12 @@ entities: pos: 25.5,7.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 712 type: Wire components: @@ -5408,6 +6477,12 @@ entities: pos: 25.5,8.5 rot: 3.141592653589793 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 713 type: Poweredlight components: @@ -5423,8 +6498,6 @@ entities: - 714 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 714 type: LightTube components: @@ -5475,7 +6548,6 @@ entities: type: Transform - containers: storagebase: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - uid: 720 @@ -5487,7 +6559,6 @@ entities: type: Transform - containers: storagebase: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - uid: 721 @@ -5512,8 +6583,6 @@ entities: - 723 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 723 type: LightTube components: @@ -5661,7 +6730,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -5675,7 +6743,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -5689,7 +6756,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -5703,7 +6769,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -5717,7 +6782,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -5731,7 +6795,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -6422,6 +7485,12 @@ entities: pos: 2.5,11.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 847 type: Wire components: @@ -6429,6 +7498,12 @@ entities: pos: 2.5,12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 848 type: Wire components: @@ -6436,6 +7511,12 @@ entities: pos: 2.5,13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 849 type: Wire components: @@ -6443,6 +7524,12 @@ entities: pos: 3.5,13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 850 type: Wire components: @@ -6450,6 +7537,12 @@ entities: pos: 4.5,13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 851 type: Wire components: @@ -6457,6 +7550,12 @@ entities: pos: 6.5,27.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 852 type: Wire components: @@ -6464,6 +7563,12 @@ entities: pos: 6.5,28.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 853 type: Wire components: @@ -6471,6 +7576,12 @@ entities: pos: 5.5,14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 854 type: Wire components: @@ -6478,6 +7589,12 @@ entities: pos: 5.5,15.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 855 type: Wire components: @@ -6485,6 +7602,12 @@ entities: pos: 5.5,16.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 856 type: Wire components: @@ -6492,6 +7615,12 @@ entities: pos: 6.5,16.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 857 type: Wire components: @@ -6499,6 +7628,12 @@ entities: pos: 6.5,17.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 858 type: Wire components: @@ -6506,6 +7641,12 @@ entities: pos: 6.5,18.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 859 type: Wire components: @@ -6513,6 +7654,12 @@ entities: pos: 6.5,19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 860 type: Wire components: @@ -6520,6 +7667,12 @@ entities: pos: 6.5,20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 861 type: Wire components: @@ -6527,6 +7680,12 @@ entities: pos: 6.5,21.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 862 type: Wire components: @@ -6534,6 +7693,12 @@ entities: pos: 6.5,22.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 863 type: Wire components: @@ -6541,6 +7706,12 @@ entities: pos: 6.5,23.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 864 type: Wire components: @@ -6548,6 +7719,12 @@ entities: pos: 6.5,24.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 865 type: Wire components: @@ -6555,6 +7732,12 @@ entities: pos: 6.5,25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 866 type: Wire components: @@ -6562,6 +7745,12 @@ entities: pos: 6.5,26.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 867 type: Wire components: @@ -6569,6 +7758,12 @@ entities: pos: 5.5,13.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 868 type: AirlockScienceGlass components: @@ -6633,8 +7828,6 @@ entities: - 876 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 876 type: LightTube components: @@ -6655,8 +7848,6 @@ entities: - 878 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 878 type: LightTube components: @@ -6682,8 +7873,6 @@ entities: - 879 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 881 type: Wire components: @@ -6691,6 +7880,12 @@ entities: pos: 3.5,-12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 882 type: Wire components: @@ -6698,6 +7893,12 @@ entities: pos: 2.5,-12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 883 type: Poweredlight components: @@ -6713,8 +7914,6 @@ entities: - 884 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 884 type: LightTube components: @@ -6735,8 +7934,6 @@ entities: - 886 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 886 type: LightTube components: @@ -6756,8 +7953,6 @@ entities: - 888 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 888 type: LightBulb components: @@ -6777,8 +7972,6 @@ entities: - 890 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 890 type: LightTube components: @@ -6803,8 +7996,6 @@ entities: - 891 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 893 type: PoweredSmallLight components: @@ -6820,8 +8011,6 @@ entities: - 894 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 894 type: LightBulb components: @@ -6849,8 +8038,6 @@ entities: - 897 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 897 type: LightBulb components: @@ -6937,6 +8124,12 @@ entities: pos: 2.5,14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 910 type: Wire components: @@ -6944,6 +8137,12 @@ entities: pos: 1.5,14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 911 type: APC components: @@ -6951,6 +8150,12 @@ entities: pos: 1.5,14.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 912 type: APC components: @@ -6958,6 +8163,12 @@ entities: pos: 14.5,19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 913 type: APC components: @@ -6965,6 +8176,12 @@ entities: pos: 18.5,26.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 914 type: Wire components: @@ -6972,6 +8189,12 @@ entities: pos: 7.5,20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 915 type: Wire components: @@ -6979,6 +8202,12 @@ entities: pos: 8.5,20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 916 type: Wire components: @@ -6986,6 +8215,12 @@ entities: pos: 9.5,20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 917 type: Wire components: @@ -6993,6 +8228,12 @@ entities: pos: 10.5,20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 918 type: Wire components: @@ -7000,6 +8241,12 @@ entities: pos: 11.5,20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 919 type: Wire components: @@ -7007,6 +8254,12 @@ entities: pos: 12.5,20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 920 type: Wire components: @@ -7014,6 +8267,12 @@ entities: pos: 13.5,20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 921 type: Wire components: @@ -7021,6 +8280,12 @@ entities: pos: 14.5,20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 922 type: Wire components: @@ -7028,6 +8293,12 @@ entities: pos: 14.5,19.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 923 type: Wire components: @@ -7035,6 +8306,12 @@ entities: pos: 15.5,20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 924 type: Wire components: @@ -7042,6 +8319,12 @@ entities: pos: 16.5,20.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 925 type: Wire components: @@ -7049,6 +8332,12 @@ entities: pos: 16.5,21.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 926 type: Wire components: @@ -7056,6 +8345,12 @@ entities: pos: 16.5,22.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 927 type: Wire components: @@ -7063,6 +8358,12 @@ entities: pos: 16.5,23.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 928 type: Wire components: @@ -7070,6 +8371,12 @@ entities: pos: 16.5,24.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 929 type: Wire components: @@ -7077,6 +8384,12 @@ entities: pos: 16.5,25.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 930 type: Wire components: @@ -7084,6 +8397,12 @@ entities: pos: 16.5,26.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 931 type: Wire components: @@ -7091,6 +8410,12 @@ entities: pos: 16.5,27.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 932 type: Wire components: @@ -7098,6 +8423,12 @@ entities: pos: 17.5,26.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 933 type: Wire components: @@ -7105,6 +8436,12 @@ entities: pos: 18.5,26.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 934 type: Generator components: @@ -7112,6 +8449,10 @@ entities: pos: 3.5,-12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + type: NodeContainer - uid: 935 type: Generator components: @@ -7119,6 +8460,10 @@ entities: pos: 2.5,-12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + type: NodeContainer - uid: 936 type: Generator components: @@ -7126,6 +8471,10 @@ entities: pos: 1.5,-12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + type: NodeContainer - uid: 937 type: Generator components: @@ -7133,6 +8482,10 @@ entities: pos: 0.5,-12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + type: NodeContainer - uid: 938 type: Wire components: @@ -7140,6 +8493,12 @@ entities: pos: 0.5,-12.5 rot: -1.5707963267948966 rad type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 939 type: Poweredlight components: @@ -7154,8 +8513,6 @@ entities: - 940 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 940 type: LightTube components: @@ -7167,12 +8524,24 @@ entities: - parent: 0 pos: 7.5,18.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 942 type: Wire components: - parent: 0 pos: 7.5,18.5 type: Transform + - nodeTypes: + HVPower: + - AdjacentNode + Apc: + - AdjacentNode + type: NodeContainer - uid: 943 type: GlassStack components: @@ -7238,7 +8607,6 @@ entities: type: Transform - containers: EntityStorageComponent: - entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -7349,8 +8717,6 @@ entities: - 967 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - load: 40 - type: PowerDevice - uid: 967 type: LightTube components: diff --git a/Resources/Prototypes/Entities/Buildings/Computers/arcade.yml b/Resources/Prototypes/Entities/Buildings/Computers/arcade.yml index cedbc886d2..8c52c55ca9 100644 --- a/Resources/Prototypes/Entities/Buildings/Computers/arcade.yml +++ b/Resources/Prototypes/Entities/Buildings/Computers/arcade.yml @@ -1,12 +1,11 @@ -- type: entity +- type: entity id: Arcade name: arcade parent: ComputerBase components: - type: Icon state: arcade - - type: PowerDevice - priority: Low + - type: PowerReceiver - type: Sprite layers: - state: arcade diff --git a/Resources/Prototypes/Entities/Buildings/Doors/airlock_base.yml b/Resources/Prototypes/Entities/Buildings/Doors/airlock_base.yml index eaf8e0b20b..f90f1cf703 100644 --- a/Resources/Prototypes/Entities/Buildings/Doors/airlock_base.yml +++ b/Resources/Prototypes/Entities/Buildings/Doors/airlock_base.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: Airlock name: airlock description: It opens, it closes, and maybe crushes you. @@ -40,7 +40,7 @@ close_sound: /Audio/machines/airlock_close.ogg deny_sound: /Audio/machines/airlock_deny.ogg - type: WiresVisualizer2D - - type: PowerDevice + - type: PowerReceiver - type: Wires BoardName: "Airlock Control" LayoutId: Airlock diff --git a/Resources/Prototypes/Entities/Buildings/bar_sign.yml b/Resources/Prototypes/Entities/Buildings/bar_sign.yml index 211ccd07b6..03deb0a788 100644 --- a/Resources/Prototypes/Entities/Buildings/bar_sign.yml +++ b/Resources/Prototypes/Entities/Buildings/bar_sign.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: BarSign name: bar sign components: @@ -12,7 +12,7 @@ - type: Icon sprite: Buildings/barsign.rsi state: empty - - type: PowerDevice + - type: PowerReceiver - type: BarSign diff --git a/Resources/Prototypes/Entities/Buildings/chem_dispenser.yml b/Resources/Prototypes/Entities/Buildings/chem_dispenser.yml index cba769c883..12c6069284 100644 --- a/Resources/Prototypes/Entities/Buildings/chem_dispenser.yml +++ b/Resources/Prototypes/Entities/Buildings/chem_dispenser.yml @@ -10,7 +10,7 @@ texture: Buildings/chemicals.rsi/industrial_dispenser.png - type: ReagentDispenser pack: ChemDispenserStandardInventory - - type: PowerDevice + - type: PowerReceiver - type: reagentDispenserInventory id: ChemDispenserStandardInventory diff --git a/Resources/Prototypes/Entities/Buildings/computers.yml b/Resources/Prototypes/Entities/Buildings/computers.yml index f50c04452a..ff9e07e828 100644 --- a/Resources/Prototypes/Entities/Buildings/computers.yml +++ b/Resources/Prototypes/Entities/Buildings/computers.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: ComputerBase name: computer abstract: true @@ -26,8 +26,7 @@ sprite: Buildings/computer.rsi state: computer - type: Computer - - type: PowerDevice - priority: High + - type: PowerReceiver - type: Anchorable - type: Sprite @@ -151,8 +150,7 @@ type: ResearchConsoleBoundUserInterface - key: enum.ResearchClientUiKey.Key type: ResearchClientBoundUserInterface - - type: PowerDevice - drawtype: Both + - type: PowerReceiver load: 200 priority: Low diff --git a/Resources/Prototypes/Entities/Buildings/gravity_generator.yml b/Resources/Prototypes/Entities/Buildings/gravity_generator.yml index 4f61a8ea01..d499d4b915 100644 --- a/Resources/Prototypes/Entities/Buildings/gravity_generator.yml +++ b/Resources/Prototypes/Entities/Buildings/gravity_generator.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: GravityGenerator name: gravity generator description: It's what keeps you to the floor. @@ -15,8 +15,8 @@ state: on - type: SnapGrid offset: Center - - type: PowerDevice - load: 500 + - type: PowerReceiver + powerLoad: 500 - type: Collidable shapes: - !type:PhysShapeAabb diff --git a/Resources/Prototypes/Entities/Buildings/lathe.yml b/Resources/Prototypes/Entities/Buildings/lathe.yml index 6153f38a2f..26c65e0db9 100644 --- a/Resources/Prototypes/Entities/Buildings/lathe.yml +++ b/Resources/Prototypes/Entities/Buildings/lathe.yml @@ -27,7 +27,7 @@ interfaces: - key: enum.LatheUiKey.Key type: LatheBoundUserInterface - - type: PowerDevice + - type: PowerReceiver - type: entity parent: BaseLathe diff --git a/Resources/Prototypes/Entities/Buildings/lighting.yml b/Resources/Prototypes/Entities/Buildings/lighting.yml index 36c32811cf..0e831a6628 100644 --- a/Resources/Prototypes/Entities/Buildings/lighting.yml +++ b/Resources/Prototypes/Entities/Buildings/lighting.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: WallLight name: "unpowered light" components: @@ -42,10 +42,9 @@ state: off - type: PointLight enabled: false - - type: PowerDevice - priority: Low - type: PoweredLight bulb: Tube + - type: PowerReceiver - type: entity name: small light @@ -64,8 +63,6 @@ energy: 1.0 enabled: false offset: "-0.5, 0" - - type: PowerDevice - priority: Low - type: PoweredLight bulb: Bulb - + - type: PowerReceiver diff --git a/Resources/Prototypes/Entities/Buildings/medical_scanner.yml b/Resources/Prototypes/Entities/Buildings/medical_scanner.yml index 0f3adae6eb..ff6e0c01f4 100644 --- a/Resources/Prototypes/Entities/Buildings/medical_scanner.yml +++ b/Resources/Prototypes/Entities/Buildings/medical_scanner.yml @@ -11,7 +11,7 @@ map: ["enum.MedicalScannerVisualLayers.Machine"] - state: scanner_terminal_blue map: ["enum.MedicalScannerVisualLayers.Terminal"] - - type: PowerDevice + - type: PowerReceiver - type: Icon sprite: Buildings/medical_scanner.rsi state: scanner_open diff --git a/Resources/Prototypes/Entities/Buildings/power.yml b/Resources/Prototypes/Entities/Buildings/power.yml index e6b5341fba..8d8bc3ac0d 100644 --- a/Resources/Prototypes/Entities/Buildings/power.yml +++ b/Resources/Prototypes/Entities/Buildings/power.yml @@ -1,49 +1,88 @@ - type: entity - id: Wire - name: wire - description: Transfers power, avoid letting things come down it + abstract: true + id: WireBase placement: mode: SnapgridCenter components: - type: Clickable - type: InteractionOutline - type: Collidable - - type: Sprite - netsync: false - drawdepth: BelowFloor - color: Red - sprite: Objects/Power/power_cable.rsi - state: cable_0 - - type: Icon - texture: Objects/Power/eightdirwire.png - - type: PowerTransfer - type: SnapGrid offset: Center + - type: Icon + texture: Objects/Power/eightdirwire.png + - type: Sprite + drawdepth: BelowFloor - type: IconSmooth - base: cable_ - key: power_cables mode: CardinalFlags - - type: SubFloorHide - type: Destructible thresholdvalue: 100 - spawnondestroy: CableStack1 - - snap: - - Wire - + - type: SubFloorHide + - type: entity - parent: Wire - id: BlueWire - name: bluewire - description: Transfers power, and puts on a good show of it + parent: WireBase + id: HVWire + name: HV Wire components: - type: Sprite - color: Blue - + sprite: Objects/Power/hv_cable.rsi + state: hvcable_0 + - type: IconSmooth + base: hvcable_ + key: hv_cables + - type: NodeContainer + nodeTypes: { HVPower : ["AdjacentNode"] } + - type: Wire + wireDroppedOnCutPrototype: HVWireStack1 + wireType: HighVoltage + - type: Destructible + spawnondestroy: HVWireStack1 + - type: entity - id: Generator - name: generator - description: A portal to hell which summons power from the nether + parent: WireBase + id: MVWire + name: MV Wire + components: + - type: Sprite + color: Yellow + sprite: Objects/Power/mv_cable.rsi + state: mvcable_0 + - type: IconSmooth + base: mvcable_ + key: mv_cables + - type: NodeContainer + nodeTypes: { MVPower : ["AdjacentNode"] } + - type: Wire + wireDroppedOnCutPrototype: MVWireStack1 + wireType: MediumVoltage + - type: Destructible + spawnondestroy: MVWireStack1 + +- type: entity + parent: WireBase + id: ApcExtensionCable + name: Apc Extension Cable + components: + - type: Sprite + color: Green + sprite: Objects/Power/lv_cable.rsi + state: lvcable_0 + - type: IconSmooth + base: lvcable_ + key: lv_cables + - type: NodeContainer + nodeTypes: { Apc : ["AdjacentNode"] } + - type: PowerProvider + voltage: Apc + - type: Wire + wireDroppedOnCutPrototype: ApcExtensionCableStack1 + wireType: Apc + - type: Destructible + spawnondestroy: ApcExtensionCableStack1 + +- type: entity + id: DebugGenerator + name: Debug Generator placement: mode: SnapgridCenter components: @@ -54,15 +93,215 @@ - !type:PhysShapeAabb bounds: "-0.5, -0.5, 0.3, 0.5" layer: [MobMask, Opaque] + - type: SnapGrid + offset: Center - type: Sprite texture: Objects/Power/generator.png - type: Icon texture: Objects/Power/generator.png - - type: PowerGenerator + - type: NodeContainer + nodeTypes: { HVPower : ["AdjacentNode"] } + - type: PowerSupplier + supplyRate: 3000 + - type: Anchorable + +- type: entity + id: DebugConsumer + name: Debug Consumer + placement: + mode: SnapgridCenter + components: + - type: Clickable + - type: InteractionOutline + - type: Collidable - type: SnapGrid offset: Center + - type: Sprite + texture: Objects/Power/wiredmachine.png + - type: Icon + texture: Objects/Power/wiredmachine.png + - type: NodeContainer + nodeTypes: { HVPower : ["AdjacentNode"] } + - type: PowerConsumer + drawRate: 50 + - type: Damageable + - type: Breakable + thresholdvalue: 100 - type: Anchorable +- type: entity + id: DebugBatteryStorage + name: Debug Battery Storage + placement: + mode: SnapgridCenter + components: + - type: Clickable + - type: InteractionOutline + - type: Collidable + - type: SnapGrid + offset: Center + - type: Sprite + texture: Objects/Power/provider.png + - type: Icon + texture: Objects/Power/provider.png + - type: Battery + - type: NodeContainer + nodeTypes: { HVPower : ["AdjacentNode"] } + - type: PowerConsumer + - type: BatteryStorage + +- type: entity + id: DebugBatteryDischarger + name: Debug Battery Discharger + placement: + mode: SnapgridCenter + components: + - type: Clickable + - type: InteractionOutline + - type: Collidable + - type: SnapGrid + offset: Center + - type: Sprite + texture: Objects/Power/provider.png + - type: Icon + texture: Objects/Power/provider.png + - type: Battery + - type: NodeContainer + nodeTypes: { HVPower : ["AdjacentNode"] } + - type: PowerSupplier + - type: BatteryDischarger + +- type: entity + id: DebugSmes + name: Debug Smes + placement: + mode: SnapgridCenter + components: + - type: Clickable + - type: InteractionOutline + - type: Collidable + shapes: + - !type:PhysShapeAabb + bounds: "-0.5, -0.5, 0.5, 0.5" + layer: [MobMask, Opaque] + - type: SnapGrid + offset: Center + - type: Sprite + netsync: false + sprite: Buildings/smes.rsi + state: smes + layers: + - state: smes-display + shader: unshaded + - type: Icon + sprite: Buildings/smes.rsi + state: smes + - type: Smes + - type: Appearance + visuals: + - type: SmesVisualizer2D + - type: Battery + maxCharge: 1000 + startingCharge: 1000 + - type: NodeContainer + nodeTypes: { HVPower : ["AdjacentNode"] } + - type: PowerConsumer + - type: BatteryStorage + activeDrawRate: 1500 + - type: PowerSupplier + - type: BatteryDischarger + activeSupplyRate: 1000 + - type: Anchorable + +- type: entity + id: DebugSubstation + name: Debug Substation + placement: + mode: SnapgridCenter + components: + - type: Clickable + - type: InteractionOutline + - type: Collidable + - type: SnapGrid + offset: Center + - type: Sprite + texture: Objects\Power\storage.png + - type: Icon + texture: Objects\Power\storage.png + state: smes + - type: Battery + maxCharge: 1000 + startingCharge: 1000 + - type: NodeContainer + nodeTypes: { HVPower : ["AdjacentNode"], MVPower : ["AdjacentNode"] } + - type: PowerConsumer + - type: BatteryStorage + activeDrawRate: 1500 + - type: PowerSupplier + voltage: Medium + - type: BatteryDischarger + activeSupplyRate: 1000 + +- type: entity + id: DebugApc + name: Debug Apc + placement: + mode: SnapgridCenter + components: + - type: Clickable + - type: InteractionOutline + - type: Collidable + shapes: + - !type:PhysShapeAabb + bounds: "-0.25, -0.25, 0.25, 0.3" + - type: SnapGrid + offset: Center + - type: Sprite + drawdepth: WallMountedItems + netsync: false + texture: "" + sprite: "Buildings/apc.rsi" + state: apc0 + - type: Icon + texture: Buildings/apc.rsi/apc0.png + - type: Appearance + visuals: + - type: ApcVisualizer2D + - type: Battery + maxCharge: 10000 + startingCharge: 10000 + - type: NodeContainer + nodeTypes: { MVPower : ["AdjacentNode"], Apc : ["AdjacentNode"] } + - type: PowerConsumer + voltage: Medium + - type: BatteryStorage + activeDrawRate: 1000 + - type: PowerProvider + voltage: Apc + - type: Apc + voltage: Apc + - type: UserInterface + interfaces: + - key: enum.ApcUiKey.Key + type: ApcBoundUserInterface + +- type: entity + id: DebugPowerReceiver + name: Debug Power Receiver + placement: + mode: SnapgridCenter + components: + - type: Clickable + - type: InteractionOutline + - type: Collidable + - type: SnapGrid + offset: Center + - type: Sprite + texture: Objects/Furniture/wirelessmachine.png + - type: Icon + texture: Objects/Furniture/wirelessmachine.png + - type: PowerReceiver + - type: entity id: SolarPanel name: solar panel @@ -82,7 +321,9 @@ - type: Icon sprite: Buildings/solar_panel.rsi state: normal - - type: PowerGenerator + - type: NodeContainer + nodeTypes: { HVPower : ["AdjacentNode"] } + - type: PowerSupplier - type: SolarPanel supply: 1500 - type: SnapGrid @@ -90,160 +331,54 @@ - type: Damageable - type: Breakable thresholdvalue: 100 - - type: Anchorable + +#Depriciated, to be removed from maps - type: entity - id: WPPnobattery - name: wppnobattery - description: Supplies power directly to nearby objects - placement: - mode: SnapgridCenter + id: Wire + name: Depriciated Wire + parent: ApcExtensionCable components: - - type: Clickable - - type: InteractionOutline - - type: Collidable - shapes: - - !type:PhysShapeAabb - layer: [Clickable] - - type: Sprite - drawdepth: WallMountedItems - texture: Objects/Power/provider.png - - type: Icon - texture: Objects/Power/provider.png - - type: PowerProvider - range: 8 - priority: Provider - load: 0 - - type: SnapGrid - offset: Center + - type: NodeContainer + nodeTypes: { HVPower : ["AdjacentNode"], Apc : ["AdjacentNode"] } - type: entity - parent: WPPnobattery - id: WPP - name: WPP - description: Supplies power at range, has a backup battery just in case + id: Generator + name: Depriciated Generator + parent: DebugGenerator components: - - type: PowerStorage - capacity: 1000 - charge: 1000 - chargerate: 200 - chargepowernet: false - + - type: PowerSupplier + voltage: High + supplyRate: 100000 + - type: entity - parent: WPP id: APC - name: APC + name: Depriciated Apc + parent: DebugApc components: - - type: Apc - - type: Sprite - netsync: false - texture: "" - sprite: "Buildings/apc.rsi" - state: apc0 - - type: Appearance - visuals: - - type: ApcVisualizer2D - - type: UserInterface - interfaces: - - key: enum.ApcUiKey.Key - type: ApcBoundUserInterface - - type: Collidable - shapes: - - !type:PhysShapeAabb - bounds: "-0.25, -0.25, 0.25, 0.3" - - type: LoopingSound + - type: NodeContainer + nodeTypes: { HVPower : ["AdjacentNode"], Apc : ["AdjacentNode"] } + - type: PowerConsumer + voltage: High + - type: BatteryStorage + activeDrawRate: 10000 - type: entity id: SMES - name: smes - description: Stores power in its super-magnetic cells - placement: - mode: SnapgridCenter - components: - - type: Clickable - - type: InteractionOutline - - type: Collidable - shapes: - - !type:PhysShapeAabb - bounds: "-0.5, -0.5, 0.5, 0.5" - layer: [MobMask, Opaque] - - type: Sprite - netsync: false - sprite: Buildings/smes.rsi - state: smes - layers: - - state: smes-display - shader: unshaded - - type: Icon - sprite: Buildings/smes.rsi - state: smes - - type: PowerStorage - capacity: 3000 - charge: 1000 - chargerate: 200 - distributionrate: 400 - chargepowernet: true - - type: Smes - - type: Appearance - visuals: - - type: SmesVisualizer2D - - type: SnapGrid - offset: Center - - type: Anchorable + name: Depriciated Smes + parent: DebugSmes - type: entity id: SmesDry - parent: SMES - components: - - type: PowerStorage - charge: 0 + name: Depriciated Smes + parent: DebugSmes - type: entity id: WiredMachine - name: wiredmachine - description: A monstrosity that does nothing but suck up power from the nearby wires - placement: - mode: SnapgridCenter - components: - - type: Clickable - - type: InteractionOutline - - type: Collidable - shapes: - - !type:PhysShapeAabb - bounds: "-0.5, -0.25, 0.5, 0.25" - layer: [MobMask, Opaque] - - type: Sprite - texture: Objects/Power/wiredmachine.png - - type: Icon - texture: Objects/Power/wiredmachine.png - - type: PowerDevice - drawtype: Node - load: 100 - priority: High - - type: SnapGrid - offset: Center + name: Depriciated WiredMachine + parent: DebugConsumer - type: entity id: WirelessMachine - name: wirelessmachine - description: A terrifying monstrosity that sucks up power from the wireless transmitters, Tesla would be proud - placement: - mode: SnapgridCenter - components: - - type: Clickable - - type: InteractionOutline - - type: Collidable - shapes: - - !type:PhysShapeAabb - bounds: "-0.5, -0.25, 0.5, 0.25" - layer: [MobMask, Opaque] - - type: Sprite - texture: Objects/Furniture/wirelessmachine.png - - type: Icon - texture: Objects/Furniture/wirelessmachine.png - - type: PowerDevice - drawtype: Both - load: 200 - priority: Low - - type: SnapGrid - offset: Center + name: Depriciated WirelessMachine + parent: DebugPowerReceiver diff --git a/Resources/Prototypes/Entities/Buildings/reagent_dispenser_base.yml b/Resources/Prototypes/Entities/Buildings/reagent_dispenser_base.yml index d178504362..6346bfb218 100644 --- a/Resources/Prototypes/Entities/Buildings/reagent_dispenser_base.yml +++ b/Resources/Prototypes/Entities/Buildings/reagent_dispenser_base.yml @@ -21,7 +21,7 @@ - type: SnapGrid offset: Center - type: ReagentDispenser - - type: PowerDevice + - type: PowerReceiver - type: UserInterface interfaces: - key: enum.ReagentDispenserUiKey.Key diff --git a/Resources/Prototypes/Entities/Buildings/vending_machines.yml b/Resources/Prototypes/Entities/Buildings/vending_machines.yml index 81a98d8023..6d02866ef7 100644 --- a/Resources/Prototypes/Entities/Buildings/vending_machines.yml +++ b/Resources/Prototypes/Entities/Buildings/vending_machines.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: VendingMachine name: vending machine components: @@ -45,8 +45,7 @@ type: VendingMachineBoundUserInterface - key: enum.WiresUiKey.Key type: WiresBoundUserInterface - - type: PowerDevice - priority: Low + - type: PowerReceiver - type: Wires BoardName: "Vending Machine" LayoutId: Vending diff --git a/Resources/Prototypes/Entities/Items/materials.yml b/Resources/Prototypes/Entities/Items/materials.yml index 3a699285df..9f3e8f51a7 100644 --- a/Resources/Prototypes/Entities/Items/materials.yml +++ b/Resources/Prototypes/Entities/Items/materials.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity name: material stack id: MaterialStack abstract: true @@ -67,15 +67,14 @@ count: 1 - type: entity - name: cable coil id: CableStack + abstract: true parent: BaseItem components: - type: Stack stacktype: enum.StackType.Cable - type: Sprite texture: Objects/Tools/cable_coil.png - color: red - type: Icon texture: Objects/Tools/cable_coil.png - type: WirePlacer @@ -84,13 +83,62 @@ all: -0.15,-0.15,0.15,0.15 - type: entity - id: CableStack1 - name: cable stack 1 + id: HVWireStack + name: HV Wire Coil parent: CableStack components: + - type: Sprite + color: Orange + - type: WirePlacer + wirePrototypeID: HVWire + blockingWireType: HighVoltage + +- type: entity + id: MVWireStack + name: MV Wire Coil + parent: CableStack + components: + - type: Sprite + color: Yellow + - type: WirePlacer + wirePrototypeID: MVWire + blockingWireType: MediumVoltage + +- type: entity + id: ApcExtensionCableStack + name: Apc Extension Cable Coil + parent: CableStack + components: + - type: Sprite + color: Green + - type: WirePlacer + wirePrototypeID: ApcExtensionCable + blockingWireType: Apc + +- type: entity + id: HVWireStack1 + name: HV Wire stack 1 + parent: HVWireStack + components: - type: Stack count: 1 - + +- type: entity + id: MVWireStack1 + name: MV Wire stack 1 + parent: MVWireStack + components: + - type: Stack + count: 1 + +- type: entity + id: ApcExtensionCableStack1 + name: Apc Extension Cable stack 1 + parent: ApcExtensionCableStack + components: + - type: Stack + count: 1 + - type: entity name: gold bar id: GoldStack diff --git a/Resources/Prototypes/Entities/Items/power_debug.yml b/Resources/Prototypes/Entities/Items/power_debug.yml deleted file mode 100644 index 9d48151e3f..0000000000 --- a/Resources/Prototypes/Entities/Items/power_debug.yml +++ /dev/null @@ -1,18 +0,0 @@ -- type: entity - name: power debug tool - parent: BaseItem - id: PowerDebug - description: An advanced tool to copy, store, and send electrical pulses and signals through wires and machines - components: - - type: Sprite - sprite: Objects/Tools/multitool.rsi - state: multitool - - - type: Icon - sprite: Objects/Tools/multitool.rsi - state: multitool - - - type: Item - sprite: Objects/Tools/multitool.rsi - - - type: PowerDebugTool diff --git a/Resources/Prototypes/Entities/Items/powercells.yml b/Resources/Prototypes/Entities/Items/powercells.yml index 979b4708ec..0b96615e9d 100644 --- a/Resources/Prototypes/Entities/Items/powercells.yml +++ b/Resources/Prototypes/Entities/Items/powercells.yml @@ -106,10 +106,8 @@ sprite: Objects/Power/PowerCells/cell_recharger.rsi drawdepth: Items - type: PowerCellCharger - transfer_ratio: 0.10 transfer_efficiency: 0.85 - - type: PowerDevice - priority: Low + - type: PowerReceiver - type: Icon sprite: Objects/Power/PowerCells/cell_recharger.rsi state: empty @@ -138,10 +136,8 @@ sprite: Objects/Power/PowerCells/recharger.rsi drawdepth: Items - type: WeaponCapacitorCharger - transfer_ratio: 0.10 transfer_efficiency: 0.85 - - type: PowerDevice - priority: Low + - type: PowerReceiver - type: Icon sprite: Objects/Power/PowerCells/recharger.rsi state: empty @@ -170,10 +166,8 @@ sprite: Objects/Power/PowerCells/wall_recharger.rsi drawdepth: Items - type: WeaponCapacitorCharger - transfer_ratio: 0.15 transfer_efficiency: 0.95 - - type: PowerDevice - priority: Low + - type: PowerReceiver - type: Icon sprite: Objects/Power/PowerCells/wall_recharger.rsi state: empty diff --git a/Resources/Prototypes/Entities/kitchen.yml b/Resources/Prototypes/Entities/kitchen.yml index a383574c8a..3408dd30e8 100644 --- a/Resources/Prototypes/Entities/kitchen.yml +++ b/Resources/Prototypes/Entities/kitchen.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: KitchenMicrowave name: microwave description: It's magic. @@ -41,8 +41,7 @@ - state: mw_unlit shader: unshaded map: ["enum.MicrowaveVisualizerLayers.BaseUnlit"] - - - type: PowerDevice + - type: PowerReceiver - type: Icon sprite: Objects/Kitchen/microwave.rsi state: mw0 diff --git a/Resources/Prototypes/Entities/research.yml b/Resources/Prototypes/Entities/research.yml index 2eaf5b4bf9..906505e89d 100644 --- a/Resources/Prototypes/Entities/research.yml +++ b/Resources/Prototypes/Entities/research.yml @@ -15,9 +15,8 @@ offset: Center - type: ResearchServer - type: TechnologyDatabase - - type: PowerDevice - drawtype: Both - load: 200 + - type: PowerReceiver + powerLoad: 200 priority: Low - type: entity @@ -58,7 +57,7 @@ - type: Appearance visuals: - type: PowerDeviceVisualizer2D - - type: PowerDevice + - type: PowerReceiver - type: Anchorable - type: Physics mass: 25 diff --git a/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_0.png b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_0.png new file mode 100644 index 0000000000..d7c0c68ea4 Binary files /dev/null and b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_0.png differ diff --git a/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_1.png b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_1.png new file mode 100644 index 0000000000..50273927e4 Binary files /dev/null and b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_1.png differ diff --git a/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_10.png b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_10.png new file mode 100644 index 0000000000..d80a84cb84 Binary files /dev/null and b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_10.png differ diff --git a/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_11.png b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_11.png new file mode 100644 index 0000000000..d627767f63 Binary files /dev/null and b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_11.png differ diff --git a/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_12.png b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_12.png new file mode 100644 index 0000000000..a43728cb8a Binary files /dev/null and b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_12.png differ diff --git a/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_13.png b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_13.png new file mode 100644 index 0000000000..1f10cb0233 Binary files /dev/null and b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_13.png differ diff --git a/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_14.png b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_14.png new file mode 100644 index 0000000000..a946e893a9 Binary files /dev/null and b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_14.png differ diff --git a/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_15.png b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_15.png new file mode 100644 index 0000000000..5bb5fcb1af Binary files /dev/null and b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_15.png differ diff --git a/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_2.png b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_2.png new file mode 100644 index 0000000000..5c260839d9 Binary files /dev/null and b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_2.png differ diff --git a/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_3.png b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_3.png new file mode 100644 index 0000000000..b2289f89c7 Binary files /dev/null and b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_3.png differ diff --git a/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_4.png b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_4.png new file mode 100644 index 0000000000..69558c465a Binary files /dev/null and b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_4.png differ diff --git a/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_5.png b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_5.png new file mode 100644 index 0000000000..04f0c2f233 Binary files /dev/null and b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_5.png differ diff --git a/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_6.png b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_6.png new file mode 100644 index 0000000000..ed22a62ceb Binary files /dev/null and b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_6.png differ diff --git a/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_7.png b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_7.png new file mode 100644 index 0000000000..7f15891115 Binary files /dev/null and b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_7.png differ diff --git a/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_8.png b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_8.png new file mode 100644 index 0000000000..43e7e4f8a7 Binary files /dev/null and b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_8.png differ diff --git a/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_9.png b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_9.png new file mode 100644 index 0000000000..516254c2a6 Binary files /dev/null and b/Resources/Textures/Objects/Power/hv_cable.rsi/hvcable_9.png differ diff --git a/Resources/Textures/Objects/Power/hv_cable.rsi/meta.json b/Resources/Textures/Objects/Power/hv_cable.rsi/meta.json new file mode 100644 index 0000000000..b79fdb54f9 --- /dev/null +++ b/Resources/Textures/Objects/Power/hv_cable.rsi/meta.json @@ -0,0 +1,2 @@ +{ "version": 1, "size": { "x": 32, "y": 32 }, "states": [ { "name": "hvcable_0", "directions": 1 }, { "name": "hvcable_1", "directions": 1 }, { "name": "hvcable_2", "directions": 1 }, { "name": "hvcable_3", "directions": 1 }, { "name": "hvcable_4", "directions": 1 }, { "name": "hvcable_5", "directions": 1 }, { "name": "hvcable_6", "directions": 1 }, { "name": "hvcable_7", "directions": 1 }, { "name": "hvcable_8", "directions": 1 }, { "name": "hvcable_9", "directions": 1 }, { "name": "hvcable_10", "directions": 1 }, { "name": "hvcable_11", "directions": 1 }, { "name": "hvcable_12", "directions": 1 }, { "name": "hvcable_13", "directions": 1 }, { "name": "hvcable_14", "directions": 1 }, { "name": "hvcable_15", "directions": 1 }, ] } + diff --git a/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_0.png b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_0.png new file mode 100644 index 0000000000..580528df53 Binary files /dev/null and b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_0.png differ diff --git a/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_1.png b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_1.png new file mode 100644 index 0000000000..fdebed5fa9 Binary files /dev/null and b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_1.png differ diff --git a/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_10.png b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_10.png new file mode 100644 index 0000000000..17c40b2276 Binary files /dev/null and b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_10.png differ diff --git a/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_11.png b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_11.png new file mode 100644 index 0000000000..76b20ffa8d Binary files /dev/null and b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_11.png differ diff --git a/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_12.png b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_12.png new file mode 100644 index 0000000000..8364d69509 Binary files /dev/null and b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_12.png differ diff --git a/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_13.png b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_13.png new file mode 100644 index 0000000000..6f03458fd3 Binary files /dev/null and b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_13.png differ diff --git a/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_14.png b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_14.png new file mode 100644 index 0000000000..6cdb9d20bc Binary files /dev/null and b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_14.png differ diff --git a/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_15.png b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_15.png new file mode 100644 index 0000000000..d45a733324 Binary files /dev/null and b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_15.png differ diff --git a/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_2.png b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_2.png new file mode 100644 index 0000000000..ce3ffea8a4 Binary files /dev/null and b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_2.png differ diff --git a/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_3.png b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_3.png new file mode 100644 index 0000000000..2edb689b55 Binary files /dev/null and b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_3.png differ diff --git a/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_4.png b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_4.png new file mode 100644 index 0000000000..fb782f3cad Binary files /dev/null and b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_4.png differ diff --git a/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_5.png b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_5.png new file mode 100644 index 0000000000..6e0ffe9db5 Binary files /dev/null and b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_5.png differ diff --git a/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_6.png b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_6.png new file mode 100644 index 0000000000..2d855fe035 Binary files /dev/null and b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_6.png differ diff --git a/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_7.png b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_7.png new file mode 100644 index 0000000000..e382deeda1 Binary files /dev/null and b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_7.png differ diff --git a/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_8.png b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_8.png new file mode 100644 index 0000000000..408fdf51ea Binary files /dev/null and b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_8.png differ diff --git a/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_9.png b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_9.png new file mode 100644 index 0000000000..2b988d3ffe Binary files /dev/null and b/Resources/Textures/Objects/Power/lv_cable.rsi/lvcable_9.png differ diff --git a/Resources/Textures/Objects/Power/lv_cable.rsi/meta.json b/Resources/Textures/Objects/Power/lv_cable.rsi/meta.json new file mode 100644 index 0000000000..e1f43d530b --- /dev/null +++ b/Resources/Textures/Objects/Power/lv_cable.rsi/meta.json @@ -0,0 +1 @@ +{ "version": 1, "size": { "x": 32, "y": 32 }, "states": [ { "name": "lvcable_0", "directions": 1 }, { "name": "lvcable_1", "directions": 1 }, { "name": "lvcable_2", "directions": 1 }, { "name": "lvcable_3", "directions": 1 }, { "name": "lvcable_4", "directions": 1 }, { "name": "lvcable_5", "directions": 1 }, { "name": "lvcable_6", "directions": 1 }, { "name": "lvcable_7", "directions": 1 }, { "name": "lvcable_8", "directions": 1 }, { "name": "lvcable_9", "directions": 1 }, { "name": "lvcable_10", "directions": 1 }, { "name": "lvcable_11", "directions": 1 }, { "name": "lvcable_12", "directions": 1 }, { "name": "lvcable_13", "directions": 1 }, { "name": "lvcable_14", "directions": 1 }, { "name": "lvcable_15", "directions": 1 }, ] } diff --git a/Resources/Textures/Objects/Power/mv_cable.rsi/meta.json b/Resources/Textures/Objects/Power/mv_cable.rsi/meta.json new file mode 100644 index 0000000000..f85440c18d --- /dev/null +++ b/Resources/Textures/Objects/Power/mv_cable.rsi/meta.json @@ -0,0 +1 @@ +{ "version": 1, "size": { "x": 32, "y": 32 }, "states": [ { "name": "mvcable_0", "directions": 1 }, { "name": "mvcable_1", "directions": 1 }, { "name": "mvcable_2", "directions": 1 }, { "name": "mvcable_3", "directions": 1 }, { "name": "mvcable_4", "directions": 1 }, { "name": "mvcable_5", "directions": 1 }, { "name": "mvcable_6", "directions": 1 }, { "name": "mvcable_7", "directions": 1 }, { "name": "mvcable_8", "directions": 1 }, { "name": "mvcable_9", "directions": 1 }, { "name": "mvcable_10", "directions": 1 }, { "name": "mvcable_11", "directions": 1 }, { "name": "mvcable_12", "directions": 1 }, { "name": "mvcable_13", "directions": 1 }, { "name": "mvcable_14", "directions": 1 }, { "name": "mvcable_15", "directions": 1 }, ] } diff --git a/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_0.png b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_0.png new file mode 100644 index 0000000000..580528df53 Binary files /dev/null and b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_0.png differ diff --git a/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_1.png b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_1.png new file mode 100644 index 0000000000..fdebed5fa9 Binary files /dev/null and b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_1.png differ diff --git a/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_10.png b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_10.png new file mode 100644 index 0000000000..17c40b2276 Binary files /dev/null and b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_10.png differ diff --git a/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_11.png b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_11.png new file mode 100644 index 0000000000..76b20ffa8d Binary files /dev/null and b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_11.png differ diff --git a/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_12.png b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_12.png new file mode 100644 index 0000000000..8364d69509 Binary files /dev/null and b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_12.png differ diff --git a/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_13.png b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_13.png new file mode 100644 index 0000000000..6f03458fd3 Binary files /dev/null and b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_13.png differ diff --git a/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_14.png b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_14.png new file mode 100644 index 0000000000..6cdb9d20bc Binary files /dev/null and b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_14.png differ diff --git a/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_15.png b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_15.png new file mode 100644 index 0000000000..d45a733324 Binary files /dev/null and b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_15.png differ diff --git a/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_2.png b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_2.png new file mode 100644 index 0000000000..ce3ffea8a4 Binary files /dev/null and b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_2.png differ diff --git a/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_3.png b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_3.png new file mode 100644 index 0000000000..2edb689b55 Binary files /dev/null and b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_3.png differ diff --git a/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_4.png b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_4.png new file mode 100644 index 0000000000..fb782f3cad Binary files /dev/null and b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_4.png differ diff --git a/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_5.png b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_5.png new file mode 100644 index 0000000000..6e0ffe9db5 Binary files /dev/null and b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_5.png differ diff --git a/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_6.png b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_6.png new file mode 100644 index 0000000000..2d855fe035 Binary files /dev/null and b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_6.png differ diff --git a/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_7.png b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_7.png new file mode 100644 index 0000000000..e382deeda1 Binary files /dev/null and b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_7.png differ diff --git a/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_8.png b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_8.png new file mode 100644 index 0000000000..408fdf51ea Binary files /dev/null and b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_8.png differ diff --git a/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_9.png b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_9.png new file mode 100644 index 0000000000..2b988d3ffe Binary files /dev/null and b/Resources/Textures/Objects/Power/mv_cable.rsi/mvcable_9.png differ