From 7430a3dba27bf86129237c86d70121e70a30d47c Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Sun, 26 Feb 2023 06:14:26 +1300 Subject: [PATCH 01/53] Construction debug logs (#14257) --- .../Construction/ConstructionSystem.Graph.cs | 3 ++ .../ConstructionSystem.Interactions.cs | 37 ++++++++++++++++--- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/Content.Server/Construction/ConstructionSystem.Graph.cs b/Content.Server/Construction/ConstructionSystem.Graph.cs index 38a9b2eef8..bd906ab539 100644 --- a/Content.Server/Construction/ConstructionSystem.Graph.cs +++ b/Content.Server/Construction/ConstructionSystem.Graph.cs @@ -319,6 +319,9 @@ namespace Content.Server.Construction newConstruction.InteractionQueue.Enqueue(ev); } + if (newConstruction.InteractionQueue.Count > 0 && _queuedUpdates.Add(newUid)) + _constructionUpdateQueue.Enqueue(newUid); + // Transform transferring. var newTransform = Transform(newUid); newTransform.LocalRotation = transform.LocalRotation; diff --git a/Content.Server/Construction/ConstructionSystem.Interactions.cs b/Content.Server/Construction/ConstructionSystem.Interactions.cs index 7634bdf00c..5319047054 100644 --- a/Content.Server/Construction/ConstructionSystem.Interactions.cs +++ b/Content.Server/Construction/ConstructionSystem.Interactions.cs @@ -1,3 +1,4 @@ +using System.Linq; using Content.Server.Administration.Logs; using Content.Server.Construction.Components; using Content.Server.Temperature.Components; @@ -8,6 +9,7 @@ using Content.Shared.DoAfter; using Content.Shared.Interaction; using Content.Shared.Tools.Components; using Robust.Shared.Containers; +using Robust.Shared.Utility; #if EXCEPTION_TOLERANCE // ReSharper disable once RedundantUsingDirective using Robust.Shared.Exceptions; @@ -22,7 +24,8 @@ namespace Content.Server.Construction [Dependency] private readonly IRuntimeLog _runtimeLog = default!; #endif - private readonly HashSet _constructionUpdateQueue = new(); + private readonly Queue _constructionUpdateQueue = new(); + private readonly HashSet _queuedUpdates = new(); private void InitializeInteractions() { @@ -480,19 +483,42 @@ namespace Content.Server.Construction // We iterate all entities waiting for their interactions to be handled. // This is much more performant than making an EntityQuery for ConstructionComponent, // since, for example, every single wall has a ConstructionComponent.... - foreach (var uid in _constructionUpdateQueue) + while (_constructionUpdateQueue.TryDequeue(out var uid)) { + _queuedUpdates.Remove(uid); + // Ensure the entity exists and has a Construction component. - if (!Exists(uid) || !TryComp(uid, out ConstructionComponent? construction)) + if (!TryComp(uid, out ConstructionComponent? construction)) continue; #if EXCEPTION_TOLERANCE try { #endif + + // temporary code for debugging a grafana exception. Something is fishy with the girder graph. + object? prev = null; + var queued = string.Join(", ", construction.InteractionQueue.Select(x => x.GetType().Name)); + // Handle all queued interactions! while (construction.InteractionQueue.TryDequeue(out var interaction)) { + if (construction.Deleted) + { + // I suspect the error might just happen if two users try to deconstruction or otherwise modify an entity at the exact same tick? + // In which case this isn't really an error, but should just be a `if (deleted) -> break` + // But might as well verify this. + + _sawmill.Error($"Construction component was deleted while still processing interactions." + + $"Entity {ToPrettyString(uid)}, graph: {construction.Graph}, " + + $"Previous: {prev?.GetType()?.Name ?? "null"}, " + + $"Next: {interaction.GetType().Name}, " + + $"Initial Queue: {queued}, " + + $"Remaining Queue: {string.Join(", ", construction.InteractionQueue.Select(x => x.GetType().Name))}"); + break; + } + prev = interaction; + // We set validation to false because we actually want to perform the interaction here. HandleEvent(uid, interaction, false, construction); } @@ -507,7 +533,7 @@ namespace Content.Server.Construction #endif } - _constructionUpdateQueue.Clear(); + DebugTools.Assert(_queuedUpdates.Count == 0); } #region Event Handlers @@ -543,7 +569,8 @@ namespace Content.Server.Construction construction.InteractionQueue.Enqueue(args); // Add this entity to the queue so it'll be updated next tick. - _constructionUpdateQueue.Add(uid); + if (_queuedUpdates.Add(uid)) + _constructionUpdateQueue.Enqueue(uid); } private void OnDoAfter(EntityUid uid, ConstructionComponent component, DoAfterEvent args) From 2351bbb607d11b951fbeabbd7dfdd93e3750cbc8 Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Sun, 26 Feb 2023 06:14:35 +1300 Subject: [PATCH 02/53] Add power debug verbs (#14212) --- .../Administration/Managers/AdminManager.cs | 8 +++++++ .../Administration/Managers/IAdminManager.cs | 22 ++++++++++++++++++- .../Power/EntitySystems/BatterySystem.cs | 13 +++++++++++ .../EntitySystems/PowerReceiverSystem.cs | 20 +++++++++++++++++ Content.Server/PowerCell/PowerCellSystem.cs | 7 ++++++ .../PowerCell/SharedPowerCellSystem.cs | 14 ++++++++++++ Resources/Locale/en-US/power/verb.ftl | 2 ++ 7 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 Resources/Locale/en-US/power/verb.ftl diff --git a/Content.Server/Administration/Managers/AdminManager.cs b/Content.Server/Administration/Managers/AdminManager.cs index 563fb34002..04f66c27f4 100644 --- a/Content.Server/Administration/Managers/AdminManager.cs +++ b/Content.Server/Administration/Managers/AdminManager.cs @@ -57,6 +57,14 @@ namespace Content.Server.Administration.Managers return null; } + public AdminData? GetAdminData(EntityUid uid, bool includeDeAdmin = false) + { + if (_playerManager.TryGetSessionByEntity(uid, out var session) && session is IPlayerSession playerSession) + return GetAdminData(playerSession, includeDeAdmin); + + return null; + } + public void DeAdmin(IPlayerSession session) { if (!_admins.TryGetValue(session, out var reg)) diff --git a/Content.Server/Administration/Managers/IAdminManager.cs b/Content.Server/Administration/Managers/IAdminManager.cs index bb7af0d482..5b67362721 100644 --- a/Content.Server/Administration/Managers/IAdminManager.cs +++ b/Content.Server/Administration/Managers/IAdminManager.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration; +using Content.Shared.Administration; using Robust.Server.Player; @@ -47,6 +47,26 @@ namespace Content.Server.Administration.Managers /// if the player is not an admin. AdminData? GetAdminData(IPlayerSession session, bool includeDeAdmin = false); + /// + /// Gets the admin data for a player, if they are an admin. + /// + /// The entity being controlled by the player. + /// + /// Whether to return admin data for admins that are current de-adminned. + /// + /// if the player is not an admin. + AdminData? GetAdminData(EntityUid uid, bool includeDeAdmin = false); + + /// + /// See if a player has an admin flag. + /// + /// True if the player is and admin and has the specified flags. + bool HasAdminFlag(EntityUid player, AdminFlags flag) + { + var data = GetAdminData(player); + return data != null && data.HasFlag(flag); + } + /// /// See if a player has an admin flag. /// diff --git a/Content.Server/Power/EntitySystems/BatterySystem.cs b/Content.Server/Power/EntitySystems/BatterySystem.cs index 7de97444e4..a46db7dcb9 100644 --- a/Content.Server/Power/EntitySystems/BatterySystem.cs +++ b/Content.Server/Power/EntitySystems/BatterySystem.cs @@ -1,6 +1,7 @@ using Content.Server.Cargo.Systems; using Content.Server.Power.Components; using Content.Shared.Examine; +using Content.Shared.Rejuvenate; using JetBrains.Annotations; namespace Content.Server.Power.EntitySystems @@ -13,12 +14,24 @@ namespace Content.Server.Power.EntitySystems base.Initialize(); SubscribeLocalEvent(OnExamine); + SubscribeLocalEvent(OnNetBatteryRejuvenate); + SubscribeLocalEvent(OnBatteryRejuvenate); SubscribeLocalEvent(CalculateBatteryPrice); SubscribeLocalEvent(PreSync); SubscribeLocalEvent(PostSync); } + private void OnNetBatteryRejuvenate(EntityUid uid, PowerNetworkBatteryComponent component, RejuvenateEvent args) + { + component.NetworkBattery.CurrentStorage = component.NetworkBattery.Capacity; + } + + private void OnBatteryRejuvenate(EntityUid uid, BatteryComponent component, RejuvenateEvent args) + { + component.CurrentCharge = component.MaxCharge; + } + private void OnExamine(EntityUid uid, ExaminableBatteryComponent component, ExaminedEvent args) { if (!TryComp(uid, out var batteryComponent)) diff --git a/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs b/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs index 1e605efb12..ed6dc3f083 100644 --- a/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs +++ b/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs @@ -7,14 +7,18 @@ using Content.Shared.Verbs; using Content.Shared.Database; using Robust.Server.GameObjects; using Robust.Shared.Audio; +using Content.Server.Administration.Managers; +using Content.Shared.Administration; namespace Content.Server.Power.EntitySystems { public sealed class PowerReceiverSystem : EntitySystem { [Dependency] private readonly IAdminLogManager _adminLogger = default!; + [Dependency] private readonly IAdminManager _adminManager = default!; [Dependency] private readonly AppearanceSystem _appearance = default!; [Dependency] private readonly AudioSystem _audio = default!; + public override void Initialize() { base.Initialize(); @@ -27,9 +31,25 @@ namespace Content.Server.Power.EntitySystems SubscribeLocalEvent(OnReceiverConnected); SubscribeLocalEvent(OnReceiverDisconnected); + SubscribeLocalEvent>(OnGetVerbs); SubscribeLocalEvent>(AddSwitchPowerVerb); } + private void OnGetVerbs(EntityUid uid, ApcPowerReceiverComponent component, GetVerbsEvent args) + { + if (!_adminManager.HasAdminFlag(args.User, AdminFlags.Admin)) + return; + + // add debug verb to toggle power requirements + args.Verbs.Add(new() + { + Text = Loc.GetString("verb-debug-toggle-need-power"), + Category = VerbCategory.Debug, + IconTexture = "/Textures/Interface/VerbIcons/smite.svg.192dpi.png", // "smite" is a lightning bolt + Act = () => component.NeedsPower = !component.NeedsPower + }); + } + /// ///Adds some markup to the examine text of whatever object is using this component to tell you if it's powered or not, even if it doesn't have an icon state to do this for you. /// diff --git a/Content.Server/PowerCell/PowerCellSystem.cs b/Content.Server/PowerCell/PowerCellSystem.cs index 7555e5ab91..c199c6beb8 100644 --- a/Content.Server/PowerCell/PowerCellSystem.cs +++ b/Content.Server/PowerCell/PowerCellSystem.cs @@ -11,6 +11,7 @@ using Robust.Shared.Containers; using System.Diagnostics.CodeAnalysis; using Content.Server.Kitchen.Components; using Content.Shared.Containers.ItemSlots; +using Content.Shared.Rejuvenate; namespace Content.Server.PowerCell; @@ -29,6 +30,7 @@ public sealed class PowerCellSystem : SharedPowerCellSystem SubscribeLocalEvent(OnChargeChanged); SubscribeLocalEvent(OnSolutionChange); + SubscribeLocalEvent(OnRejuvenate); SubscribeLocalEvent(OnCellExamined); @@ -37,6 +39,11 @@ public sealed class PowerCellSystem : SharedPowerCellSystem SubscribeLocalEvent(OnMicrowaved); } + private void OnRejuvenate(EntityUid uid, PowerCellComponent component, RejuvenateEvent args) + { + component.IsRigged = false; + } + private void OnSlotMicrowaved(EntityUid uid, PowerCellSlotComponent component, BeingMicrowavedEvent args) { if (_itemSlotsSystem.TryGetSlot(uid, component.CellSlotId, out ItemSlot? slot)) diff --git a/Content.Shared/PowerCell/SharedPowerCellSystem.cs b/Content.Shared/PowerCell/SharedPowerCellSystem.cs index c0d80bdd33..1e9094e903 100644 --- a/Content.Shared/PowerCell/SharedPowerCellSystem.cs +++ b/Content.Shared/PowerCell/SharedPowerCellSystem.cs @@ -1,18 +1,32 @@ +using Content.Shared.Containers.ItemSlots; using Content.Shared.PowerCell.Components; +using Content.Shared.Rejuvenate; using Robust.Shared.Containers; namespace Content.Shared.PowerCell; public abstract class SharedPowerCellSystem : EntitySystem { + [Dependency] private readonly ItemSlotsSystem _itemSlots = default!; + public override void Initialize() { base.Initialize(); + SubscribeLocalEvent(OnRejuventate); SubscribeLocalEvent(OnCellInserted); SubscribeLocalEvent(OnCellRemoved); SubscribeLocalEvent(OnCellInsertAttempt); } + private void OnRejuventate(EntityUid uid, PowerCellSlotComponent component, RejuvenateEvent args) + { + if (!_itemSlots.TryGetSlot(uid, component.CellSlotId, out ItemSlot? itemSlot) || !itemSlot.Item.HasValue) + return; + + // charge entity batteries and remove booby traps. + RaiseLocalEvent(itemSlot.Item.Value, args); + } + private void OnCellInsertAttempt(EntityUid uid, PowerCellSlotComponent component, ContainerIsInsertingAttemptEvent args) { if (!component.Initialized) diff --git a/Resources/Locale/en-US/power/verb.ftl b/Resources/Locale/en-US/power/verb.ftl new file mode 100644 index 0000000000..611d0a2c39 --- /dev/null +++ b/Resources/Locale/en-US/power/verb.ftl @@ -0,0 +1,2 @@ +# debug verb for allowing devices to work without requiring power. +verb-debug-toggle-need-power = Toggle Power \ No newline at end of file From c6407f6bdf06b09841b6bc4338a972e11ef81638 Mon Sep 17 00:00:00 2001 From: Vasilis The Pikachu Date: Sat, 25 Feb 2023 18:17:40 +0100 Subject: [PATCH 03/53] Fix strip menu opening on regular click (#14272) --- Content.Server/Buckle/Systems/BuckleSystem.Buckle.cs | 3 ++- Content.Server/Interaction/InteractionPopupSystem.cs | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Content.Server/Buckle/Systems/BuckleSystem.Buckle.cs b/Content.Server/Buckle/Systems/BuckleSystem.Buckle.cs index 48ec12f9f9..32d2a9ba02 100644 --- a/Content.Server/Buckle/Systems/BuckleSystem.Buckle.cs +++ b/Content.Server/Buckle/Systems/BuckleSystem.Buckle.cs @@ -76,7 +76,8 @@ public sealed partial class BuckleSystem private void HandleInteractHand(EntityUid uid, BuckleComponent component, InteractHandEvent args) { - args.Handled = TryUnbuckle(uid, args.User, buckle: component); + if (TryUnbuckle(uid, args.User, buckle: component)) + args.Handled = true; } private void MoveEvent(EntityUid uid, BuckleComponent buckle, ref MoveEvent ev) diff --git a/Content.Server/Interaction/InteractionPopupSystem.cs b/Content.Server/Interaction/InteractionPopupSystem.cs index ca14b28433..286919b64f 100644 --- a/Content.Server/Interaction/InteractionPopupSystem.cs +++ b/Content.Server/Interaction/InteractionPopupSystem.cs @@ -34,6 +34,8 @@ public sealed class InteractionPopupSystem : EntitySystem if (HasComp(uid)) return; + args.Handled = true; + var curTime = _gameTiming.CurTime; if (curTime < component.LastInteractTime + component.InteractDelay) @@ -85,6 +87,5 @@ public sealed class InteractionPopupSystem : EntitySystem } component.LastInteractTime = curTime; - args.Handled = true; } } From ef2e64bd98e72a55536f7fd33d6f0fe87d5fedae Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 25 Feb 2023 12:18:45 -0500 Subject: [PATCH 04/53] Automatic changelog update --- Resources/Changelog/Changelog.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index cdf6bac361..09ceb7a91b 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,10 +1,4 @@ Entries: -- author: ashtronaut - changes: - - {message: The Lobby's ready button now clearly states whether you are ready not. - Hopefully this reduces confusion!, type: Tweak} - id: 2566 - time: '2022-11-04T00:51:26.0000000+00:00' - author: Carbonhell changes: - {message: Ghosts can now toggle the lighting manager to be able to better observe @@ -2909,3 +2903,8 @@ Entries: connection pipes rotatable again., type: Fix} id: 3065 time: '2023-02-24T01:33:34.0000000+00:00' +- author: Vasilis + changes: + - {message: Hugging/Petting no longer opens the strip menu., type: Fix} + id: 3066 + time: '2023-02-25T17:17:40.0000000+00:00' From 9c03ed805c50ee993ad3550a4627f11cf11ceba4 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sun, 26 Feb 2023 04:19:31 +1100 Subject: [PATCH 05/53] Don't play ambience for paused ents (#14269) --- Content.Client/Audio/AmbientSoundSystem.cs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/Content.Client/Audio/AmbientSoundSystem.cs b/Content.Client/Audio/AmbientSoundSystem.cs index 59f4108de9..a26b7cc515 100644 --- a/Content.Client/Audio/AmbientSoundSystem.cs +++ b/Content.Client/Audio/AmbientSoundSystem.cs @@ -41,7 +41,7 @@ namespace Content.Client.Audio private float _ambienceVolume = 0.0f; private static AudioParams _params = AudioParams.Default.WithVariation(0.01f).WithLoop(true).WithAttenuation(Attenuation.LinearDistance); - + /// /// How many times we can be playing 1 particular sound at once. /// @@ -221,13 +221,18 @@ namespace Content.Client.Audio private void ProcessNearbyAmbience(TransformComponent playerXform) { var query = GetEntityQuery(); + var metaQuery = GetEntityQuery(); var mapPos = playerXform.MapPosition; // Remove out-of-range ambiences foreach (var (comp, sound) in _playingSounds) { var entity = comp.Owner; - if (comp.Enabled && query.TryGetComponent(entity, out var xform) && xform.MapID == playerXform.MapID) + + if (comp.Enabled && + query.TryGetComponent(entity, out var xform) && + xform.MapID == playerXform.MapID && + !metaQuery.GetComponent(entity).EntityPaused) { var distance = (xform.ParentUid == playerXform.ParentUid) ? xform.LocalPosition - playerXform.LocalPosition @@ -265,7 +270,10 @@ namespace Content.Client.Audio foreach (var (_, comp) in sources) { - if (_playingSounds.ContainsKey(comp)) + var uid = comp.Owner; + + if (_playingSounds.ContainsKey(comp) || + metaQuery.GetComponent(uid).EntityPaused) continue; var audioParams = _params @@ -274,7 +282,7 @@ namespace Content.Client.Audio .WithPlayOffset(_random.NextFloat(0.0f, 100.0f)) .WithMaxDistance(comp.Range); - var stream = _audio.PlayPvs(comp.Sound, comp.Owner, audioParams); + var stream = _audio.PlayPvs(comp.Sound, uid, audioParams); if (stream == null) continue; From 8e1e6303d790520fff3e2cc9cc5ceff90f722184 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 25 Feb 2023 12:20:34 -0500 Subject: [PATCH 06/53] Automatic changelog update --- Resources/Changelog/Changelog.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 09ceb7a91b..3d218ea61c 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,10 +1,4 @@ Entries: -- author: Carbonhell - changes: - - {message: Ghosts can now toggle the lighting manager to be able to better observe - dark areas., type: Add} - id: 2567 - time: '2022-11-04T00:56:30.0000000+00:00' - author: metalgearsloth changes: - {message: Melee weapon cooldown now resets when swapping hands., type: Fix} @@ -2908,3 +2902,8 @@ Entries: - {message: Hugging/Petting no longer opens the strip menu., type: Fix} id: 3066 time: '2023-02-25T17:17:40.0000000+00:00' +- author: metalgearsloth + changes: + - {message: Ambient sounds no longer play for paused entities., type: Tweak} + id: 3067 + time: '2023-02-25T17:19:31.0000000+00:00' From 0d6f64e6d09777210032902ee30006fed610ab59 Mon Sep 17 00:00:00 2001 From: Chief-Engineer <119664036+Chief-Engineer@users.noreply.github.com> Date: Sat, 25 Feb 2023 11:27:22 -0600 Subject: [PATCH 07/53] Fix error during DB insert for explosion damage logs (#14265) --- .../Explosion/EntitySystems/ExplosionSystem.Processing.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs b/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs index 61195c2958..7f03e68aa4 100644 --- a/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs +++ b/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs @@ -396,7 +396,7 @@ public sealed partial class ExplosionSystem : EntitySystem { var damageStr = string.Join(", ", damage.DamageDict.Select(entry => $"{entry.Key}: {entry.Value}")); _adminLogger.Add(LogType.Explosion, LogImpact.Medium, - $"Explosion caused {{{damageStr}}} to {ToPrettyString(uid):target} at {Transform(uid).Coordinates}"); + $"Explosion caused [{damageStr}] to {ToPrettyString(uid):target} at {Transform(uid).Coordinates}"); } } else @@ -407,7 +407,7 @@ public sealed partial class ExplosionSystem : EntitySystem { var damageStr = string.Join(", ", appliedDamage.DamageDict.Select(entry => $"{entry.Key}: {entry.Value}")); _adminLogger.Add(LogType.Explosion, LogImpact.Medium, - $"Explosion caused {{{damageStr}}} to {ToPrettyString(uid):target} at {Transform(uid).Coordinates}"); + $"Explosion caused [{damageStr}] to {ToPrettyString(uid):target} at {Transform(uid).Coordinates}"); } } } From ec739c24da55db182848296be16c51c0d4103a2e Mon Sep 17 00:00:00 2001 From: keronshb <54602815+keronshb@users.noreply.github.com> Date: Sun, 26 Feb 2023 00:33:06 -0500 Subject: [PATCH 08/53] DoAfter Refactor Fixes (#14278) * Doafterfixes * Injector blocker --- .../Botany/Systems/BotanySwabSystem.cs | 6 ++-- .../EntitySystems/ChemistrySystem.Injector.cs | 21 +++++++++++-- .../Disease/DiseaseDiagnosisSystem.cs | 13 +++++--- .../Medical/Components/HealingComponent.cs | 6 ++++ Content.Server/Medical/HealingSystem.cs | 21 +++++++++++-- .../Nutrition/Components/DrinkComponent.cs | 7 +++++ .../Nutrition/Components/FoodComponent.cs | 7 +++++ .../Nutrition/EntitySystems/DrinkSystem.cs | 25 ++++++++++----- .../Nutrition/EntitySystems/FoodSystem.cs | 31 +++++++++++-------- .../Tools/Components/TilePryingComponent.cs | 3 ++ Content.Server/Tools/ToolSystem.TilePrying.cs | 25 ++++++++++----- .../Components/SharedInjectorComponent.cs | 6 ++++ .../Systems/SharedToolSystem.MultipleTool.cs | 31 ++++++++++++------- 13 files changed, 148 insertions(+), 54 deletions(-) diff --git a/Content.Server/Botany/Systems/BotanySwabSystem.cs b/Content.Server/Botany/Systems/BotanySwabSystem.cs index 09b6c38ccc..ef7cc1760b 100644 --- a/Content.Server/Botany/Systems/BotanySwabSystem.cs +++ b/Content.Server/Botany/Systems/BotanySwabSystem.cs @@ -18,7 +18,7 @@ public sealed class BotanySwabSystem : EntitySystem base.Initialize(); SubscribeLocalEvent(OnExamined); SubscribeLocalEvent(OnAfterInteract); - SubscribeLocalEvent(OnDoAfter); + SubscribeLocalEvent(OnDoAfter); } /// @@ -41,7 +41,7 @@ public sealed class BotanySwabSystem : EntitySystem /// private void OnAfterInteract(EntityUid uid, BotanySwabComponent swab, AfterInteractEvent args) { - if (args.Target == null || !args.CanReach) + if (args.Target == null || !args.CanReach || !HasComp(args.Target)) return; _doAfterSystem.DoAfter(new DoAfterEventArgs(args.User, swab.SwabDelay, target: args.Target, used: uid) @@ -57,7 +57,7 @@ public sealed class BotanySwabSystem : EntitySystem /// /// Save seed data or cross-pollenate. /// - private void OnDoAfter(DoAfterEvent args) + private void OnDoAfter(EntityUid uid, BotanySwabComponent component, DoAfterEvent args) { if (args.Cancelled || args.Handled || !TryComp(args.Args.Target, out var plant) || !TryComp(args.Args.Used, out var swab)) return; diff --git a/Content.Server/Chemistry/EntitySystems/ChemistrySystem.Injector.cs b/Content.Server/Chemistry/EntitySystems/ChemistrySystem.Injector.cs index b011f39f5d..598f470d6e 100644 --- a/Content.Server/Chemistry/EntitySystems/ChemistrySystem.Injector.cs +++ b/Content.Server/Chemistry/EntitySystems/ChemistrySystem.Injector.cs @@ -129,11 +129,18 @@ public sealed partial class ChemistrySystem private void OnInjectDoAfter(EntityUid uid, InjectorComponent component, DoAfterEvent args) { - if (args.Handled || args.Cancelled || args.Args.Target == null) + if (args.Cancelled) + { + component.IsInjecting = false; + return; + } + + if (args.Handled || args.Args.Target == null) return; UseInjector(args.Args.Target.Value, args.Args.User, uid, component); + component.IsInjecting = false; args.Handled = true; } @@ -216,12 +223,18 @@ public sealed partial class ChemistrySystem if (!_solutions.TryGetSolution(injector, InjectorComponent.SolutionName, out var solution)) return; + //If it found it's injecting + if (component.IsInjecting) + return; + var actualDelay = MathF.Max(component.Delay, 1f); // Injections take 1 second longer per additional 5u actualDelay += (float) component.TransferAmount / component.Delay - 1; - if (user != target) + var isTarget = user != target; + + if (isTarget) { // Create a pop-up for the target var userName = Identity.Entity(user, EntityManager); @@ -256,8 +269,12 @@ public sealed partial class ChemistrySystem _adminLogger.Add(LogType.Ingestion, $"{EntityManager.ToPrettyString(user):user} is attempting to inject themselves with a solution {SolutionContainerSystem.ToPrettyString(solution):solution}."); } + component.IsInjecting = true; + _doAfter.DoAfter(new DoAfterEventArgs(user, actualDelay, target:target, used:injector) { + RaiseOnTarget = isTarget, + RaiseOnUser = !isTarget, BreakOnUserMove = true, BreakOnDamage = true, BreakOnStun = true, diff --git a/Content.Server/Disease/DiseaseDiagnosisSystem.cs b/Content.Server/Disease/DiseaseDiagnosisSystem.cs index 28b4dcd7c6..98b4d6c230 100644 --- a/Content.Server/Disease/DiseaseDiagnosisSystem.cs +++ b/Content.Server/Disease/DiseaseDiagnosisSystem.cs @@ -47,7 +47,7 @@ namespace Content.Server.Disease // Private Events SubscribeLocalEvent(OnDiagnoserFinished); SubscribeLocalEvent(OnVaccinatorFinished); - SubscribeLocalEvent(OnSwabDoAfter); + SubscribeLocalEvent(OnSwabDoAfter); } private Queue AddQueue = new(); @@ -99,7 +99,7 @@ namespace Content.Server.Disease /// private void OnAfterInteract(EntityUid uid, DiseaseSwabComponent swab, AfterInteractEvent args) { - if (args.Target == null || !args.CanReach) + if (args.Target == null || !args.CanReach || !HasComp(args.Target)) return; if (swab.Used) @@ -116,8 +116,12 @@ namespace Content.Server.Disease return; } + var isTarget = args.User != args.Target; + _doAfterSystem.DoAfter(new DoAfterEventArgs(args.User, swab.SwabDelay, target: args.Target, used: uid) { + RaiseOnTarget = isTarget, + RaiseOnUser = !isTarget, BreakOnTargetMove = true, BreakOnUserMove = true, BreakOnStun = true, @@ -301,9 +305,9 @@ namespace Content.Server.Disease /// Copies a disease prototype to the swab /// after the doafter completes. /// - private void OnSwabDoAfter(DoAfterEvent args) + private void OnSwabDoAfter(EntityUid uid, DiseaseSwabComponent component, DoAfterEvent args) { - if (args.Handled || args.Cancelled || !TryComp(args.Args.Target, out var carrier) || !TryComp(args.Args.Target, out var swab)) + if (args.Handled || args.Cancelled || !TryComp(args.Args.Target, out var carrier) || !TryComp(args.Args.Used, out var swab)) return; swab.Used = true; @@ -313,7 +317,6 @@ namespace Content.Server.Disease return; swab.Disease = _random.Pick(carrier.Diseases); - } diff --git a/Content.Server/Medical/Components/HealingComponent.cs b/Content.Server/Medical/Components/HealingComponent.cs index edebf7697a..5f3120cff0 100644 --- a/Content.Server/Medical/Components/HealingComponent.cs +++ b/Content.Server/Medical/Components/HealingComponent.cs @@ -39,6 +39,12 @@ namespace Content.Server.Medical.Components [DataField("delay")] public float Delay = 3f; + /// + /// Cancel token to prevent rapid healing + /// + [DataField("cancelToken")] + public CancellationTokenSource? CancelToken; + /// /// Delay multiplier when healing yourself. /// diff --git a/Content.Server/Medical/HealingSystem.cs b/Content.Server/Medical/HealingSystem.cs index a908801605..9b4d9e77ed 100644 --- a/Content.Server/Medical/HealingSystem.cs +++ b/Content.Server/Medical/HealingSystem.cs @@ -1,3 +1,4 @@ +using System.Threading; using Content.Server.Administration.Logs; using Content.Server.Body.Systems; using Content.Server.DoAfter; @@ -40,6 +41,12 @@ public sealed class HealingSystem : EntitySystem private void OnDoAfter(EntityUid uid, DamageableComponent component, DoAfterEvent args) { + if (args.Cancelled) + { + args.AdditionalData.HealingComponent.CancelToken = null; + return; + } + if (args.Handled || args.Cancelled || _mobStateSystem.IsDead(uid) || args.Args.Used == null) return; @@ -67,6 +74,7 @@ public sealed class HealingSystem : EntitySystem if (args.AdditionalData.HealingComponent.HealingEndSound != null) _audio.PlayPvs(args.AdditionalData.HealingComponent.HealingEndSound, uid, AudioHelpers.WithVariation(0.125f, _random).WithVolume(-5f)); + args.AdditionalData.HealingComponent.CancelToken = null; args.Handled = true; } @@ -90,7 +98,7 @@ public sealed class HealingSystem : EntitySystem private bool TryHeal(EntityUid uid, EntityUid user, EntityUid target, HealingComponent component) { - if (_mobStateSystem.IsDead(target) || !TryComp(target, out var targetDamage)) + if (_mobStateSystem.IsDead(target) || !TryComp(target, out var targetDamage) || component.CancelToken != null) return false; if (targetDamage.TotalDamage == 0) @@ -108,14 +116,21 @@ public sealed class HealingSystem : EntitySystem if (component.HealingBeginSound != null) _audio.PlayPvs(component.HealingBeginSound, uid, AudioHelpers.WithVariation(0.125f, _random).WithVolume(-5f)); - var delay = user != target + var isNotSelf = user != target; + + var delay = isNotSelf ? component.Delay : component.Delay * GetScaledHealingPenalty(user, component); + component.CancelToken = new CancellationTokenSource(); + var healingData = new HealingData(component, stack); - var doAfterEventArgs = new DoAfterEventArgs(user, delay, target: target, used: uid) + var doAfterEventArgs = new DoAfterEventArgs(user, delay, cancelToken: component.CancelToken.Token,target: target, used: uid) { + //Raise the event on the target if it's not self, otherwise raise it on self. + RaiseOnTarget = isNotSelf, + RaiseOnUser = !isNotSelf, BreakOnUserMove = true, BreakOnTargetMove = true, // Didn't break on damage as they may be trying to prevent it and diff --git a/Content.Server/Nutrition/Components/DrinkComponent.cs b/Content.Server/Nutrition/Components/DrinkComponent.cs index be882f7947..14c9712fa8 100644 --- a/Content.Server/Nutrition/Components/DrinkComponent.cs +++ b/Content.Server/Nutrition/Components/DrinkComponent.cs @@ -34,6 +34,13 @@ namespace Content.Server.Nutrition.Components [DataField("burstSound")] public SoundSpecifier BurstSound = new SoundPathSpecifier("/Audio/Effects/flash_bang.ogg"); + /// + /// Is this drink being forced on someone else? + /// + /// + [DataField("forceDrink")] + public bool ForceDrink; + /// /// How long it takes to drink this yourself. /// diff --git a/Content.Server/Nutrition/Components/FoodComponent.cs b/Content.Server/Nutrition/Components/FoodComponent.cs index 5d7d325b02..c5c12e0fa6 100644 --- a/Content.Server/Nutrition/Components/FoodComponent.cs +++ b/Content.Server/Nutrition/Components/FoodComponent.cs @@ -40,6 +40,13 @@ namespace Content.Server.Nutrition.Components [DataField("eatMessage")] public string EatMessage = "food-nom"; + /// + /// Is this entity being forcefed? + /// Prevents the entity from being forced to eat multiple times if not self + /// + [DataField("forceFeed")] + public bool ForceFeed; + /// /// How long it takes to eat the food personally. /// diff --git a/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs b/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs index 04c6ee7159..2c21e83c96 100644 --- a/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs @@ -217,7 +217,7 @@ namespace Content.Server.Nutrition.EntitySystems private bool TryDrink(EntityUid user, EntityUid target, DrinkComponent drink, EntityUid item) { - if (!EntityManager.HasComponent(target)) + if (!EntityManager.HasComponent(target) || drink.ForceDrink) return false; if (!drink.Opened) @@ -241,9 +241,9 @@ namespace Content.Server.Nutrition.EntitySystems if (!_interactionSystem.InRangeUnobstructed(user, item, popup: true)) return true; - var forceDrink = user != target; + drink.ForceDrink = user != target; - if (forceDrink) + if (drink.ForceDrink) { var userName = Identity.Entity(user, EntityManager); @@ -264,7 +264,7 @@ namespace Content.Server.Nutrition.EntitySystems var drinkData = new DrinkData(drinkSolution, flavors); - var doAfterEventArgs = new DoAfterEventArgs(user, forceDrink ? drink.ForceFeedDelay : drink.Delay, + var doAfterEventArgs = new DoAfterEventArgs(user, drink.ForceDrink ? drink.ForceFeedDelay : drink.Delay, target: target, used: item) { BreakOnUserMove = moveBreak, @@ -286,6 +286,14 @@ namespace Content.Server.Nutrition.EntitySystems /// private void OnDoAfter(EntityUid uid, DrinkComponent component, DoAfterEvent args) { + //Special cancel if they're force feeding someone. + //Allows self to drink multiple times but prevents force feeding drinks to others rapidly. + if (args.Cancelled && component.ForceDrink) + { + component.ForceDrink = false; + return; + } + if (args.Handled || args.Cancelled || component.Deleted) return; @@ -295,11 +303,11 @@ namespace Content.Server.Nutrition.EntitySystems var transferAmount = FixedPoint2.Min(component.TransferAmount, args.AdditionalData.DrinkSolution.Volume); var drained = _solutionContainerSystem.Drain(uid, args.AdditionalData.DrinkSolution, transferAmount); - var forceDrink = args.Args.Target.Value != args.Args.User; + //var forceDrink = args.Args.Target.Value != args.Args.User; if (!_bodySystem.TryGetBodyOrganComponents(args.Args.Target.Value, out var stomachs, body)) { - _popupSystem.PopupEntity(forceDrink ? Loc.GetString("drink-component-try-use-drink-cannot-drink-other") : Loc.GetString("drink-component-try-use-drink-had-enough"), args.Args.Target.Value, args.Args.User); + _popupSystem.PopupEntity(component.ForceDrink ? Loc.GetString("drink-component-try-use-drink-cannot-drink-other") : Loc.GetString("drink-component-try-use-drink-had-enough"), args.Args.Target.Value, args.Args.User); if (HasComp(args.Args.Target.Value)) { @@ -320,7 +328,7 @@ namespace Content.Server.Nutrition.EntitySystems { _popupSystem.PopupEntity(Loc.GetString("drink-component-try-use-drink-had-enough"), args.Args.Target.Value, args.Args.Target.Value); - if (forceDrink) + if (component.ForceDrink) { _popupSystem.PopupEntity(Loc.GetString("drink-component-try-use-drink-had-enough-other"), args.Args.Target.Value, args.Args.User); _spillableSystem.SpillAt(args.Args.Target.Value, drained, "PuddleSmear"); @@ -334,7 +342,7 @@ namespace Content.Server.Nutrition.EntitySystems var flavors = args.AdditionalData.FlavorMessage; - if (forceDrink) + if (component.ForceDrink) { var targetName = Identity.Entity(args.Args.Target.Value, EntityManager); var userName = Identity.Entity(args.Args.User, EntityManager); @@ -366,6 +374,7 @@ namespace Content.Server.Nutrition.EntitySystems //TODO: Grab the stomach UIDs somehow without using Owner _stomachSystem.TryTransferSolution(firstStomach.Value.Comp.Owner, drained, firstStomach.Value.Comp); + component.ForceDrink = false; args.Handled = true; } diff --git a/Content.Server/Nutrition/EntitySystems/FoodSystem.cs b/Content.Server/Nutrition/EntitySystems/FoodSystem.cs index 0768313eb1..2ff765f855 100644 --- a/Content.Server/Nutrition/EntitySystems/FoodSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/FoodSystem.cs @@ -86,8 +86,8 @@ namespace Content.Server.Nutrition.EntitySystems if (food == user || EntityManager.TryGetComponent(food, out var mobState) && _mobStateSystem.IsAlive(food, mobState)) // Suppresses eating alive mobs return false; - // Target can't be fed - if (!EntityManager.HasComponent(target)) + // Target can't be fed or they're already forcefeeding + if (!EntityManager.HasComponent(target) || foodComp.ForceFeed) return false; if (!_solutionContainerSystem.TryGetSolution(food, foodComp.SolutionName, out var foodSolution)) @@ -111,9 +111,9 @@ namespace Content.Server.Nutrition.EntitySystems if (!_interactionSystem.InRangeUnobstructed(user, food, popup: true)) return true; - var forceFeed = user != target; + foodComp.ForceFeed = user != target; - if (forceFeed) + if (foodComp.ForceFeed) { var userName = Identity.Entity(user, EntityManager); _popupSystem.PopupEntity(Loc.GetString("food-system-force-feed", ("user", userName)), @@ -128,16 +128,16 @@ namespace Content.Server.Nutrition.EntitySystems _adminLogger.Add(LogType.Ingestion, LogImpact.Low, $"{ToPrettyString(target):target} is eating {ToPrettyString(food):food} {SolutionContainerSystem.ToPrettyString(foodSolution)}"); } - var moveBreak = user != target; - var foodData = new FoodData(foodSolution, flavors, utensils); - var doAfterEventArgs = new DoAfterEventArgs(user, forceFeed ? foodComp.ForceFeedDelay : foodComp.Delay, target: target, used: food) + var doAfterEventArgs = new DoAfterEventArgs(user, foodComp.ForceFeed ? foodComp.ForceFeedDelay : foodComp.Delay, target: target, used: food) { - BreakOnUserMove = moveBreak, + RaiseOnTarget = foodComp.ForceFeed, + RaiseOnUser = !foodComp.ForceFeed, + BreakOnUserMove = foodComp.ForceFeed, BreakOnDamage = true, BreakOnStun = true, - BreakOnTargetMove = moveBreak, + BreakOnTargetMove = foodComp.ForceFeed, MovementThreshold = 0.01f, DistanceThreshold = 1.0f, NeedHand = true @@ -151,6 +151,13 @@ namespace Content.Server.Nutrition.EntitySystems private void OnDoAfter(EntityUid uid, FoodComponent component, DoAfterEvent args) { + //Prevents the target from being force fed food but allows the user to chow down + if (args.Cancelled && component.ForceFeed) + { + component.ForceFeed = false; + return; + } + if (args.Cancelled || args.Handled || component.Deleted || args.Args.Target == null) return; @@ -166,13 +173,11 @@ namespace Content.Server.Nutrition.EntitySystems //TODO: Get the stomach UID somehow without nabbing owner var firstStomach = stomachs.FirstOrNull(stomach => _stomachSystem.CanTransferSolution(stomach.Comp.Owner, split)); - var forceFeed = args.Args.Target.Value != args.Args.User; - // No stomach so just popup a message that they can't eat. if (firstStomach == null) { _solutionContainerSystem.TryAddSolution(uid, args.AdditionalData.FoodSolution, split); - _popupSystem.PopupEntity(forceFeed ? Loc.GetString("food-system-you-cannot-eat-any-more-other") : Loc.GetString("food-system-you-cannot-eat-any-more"), args.Args.Target.Value, args.Args.User); + _popupSystem.PopupEntity(component.ForceFeed ? Loc.GetString("food-system-you-cannot-eat-any-more-other") : Loc.GetString("food-system-you-cannot-eat-any-more"), args.Args.Target.Value, args.Args.User); args.Handled = true; return; } @@ -182,7 +187,7 @@ namespace Content.Server.Nutrition.EntitySystems var flavors = args.AdditionalData.FlavorMessage; - if (forceFeed) + if (component.ForceFeed) { var targetName = Identity.Entity(args.Args.Target.Value, EntityManager); var userName = Identity.Entity(args.Args.User, EntityManager); diff --git a/Content.Server/Tools/Components/TilePryingComponent.cs b/Content.Server/Tools/Components/TilePryingComponent.cs index 82566e3559..9dee4fc004 100644 --- a/Content.Server/Tools/Components/TilePryingComponent.cs +++ b/Content.Server/Tools/Components/TilePryingComponent.cs @@ -15,5 +15,8 @@ namespace Content.Server.Tools.Components [DataField("delay")] public float Delay = 1f; + + [DataField("cancelToken")] + public CancellationTokenSource? CancelToken; } } diff --git a/Content.Server/Tools/ToolSystem.TilePrying.cs b/Content.Server/Tools/ToolSystem.TilePrying.cs index 1af417a533..ea257548d3 100644 --- a/Content.Server/Tools/ToolSystem.TilePrying.cs +++ b/Content.Server/Tools/ToolSystem.TilePrying.cs @@ -19,10 +19,20 @@ public sealed partial class ToolSystem { SubscribeLocalEvent(OnTilePryingAfterInteract); SubscribeLocalEvent(OnTilePryComplete); + SubscribeLocalEvent(OnTilePryCancelled); + } + + private void OnTilePryingAfterInteract(EntityUid uid, TilePryingComponent component, AfterInteractEvent args) + { + if (args.Handled || !args.CanReach || (args.Target != null && !HasComp(args.Target))) return; + + if (TryPryTile(uid, args.User, component, args.ClickLocation)) + args.Handled = true; } private void OnTilePryComplete(EntityUid uid, TilePryingComponent component, TilePryingCompleteEvent args) { + component.CancelToken = null; var gridUid = args.Coordinates.GetGridUid(EntityManager); if (!_mapManager.TryGetGrid(gridUid, out var grid)) { @@ -34,17 +44,14 @@ public sealed partial class ToolSystem _tile.PryTile(tile); } - private void OnTilePryingAfterInteract(EntityUid uid, TilePryingComponent component, AfterInteractEvent args) + private void OnTilePryCancelled(EntityUid uid, TilePryingComponent component, TilePryingCancelledEvent args) { - if (args.Handled || !args.CanReach || (args.Target != null && !HasComp(args.Target))) return; - - if (TryPryTile(uid, args.User, component, args.ClickLocation)) - args.Handled = true; + component.CancelToken = null; } private bool TryPryTile(EntityUid toolEntity, EntityUid user, TilePryingComponent component, EntityCoordinates clickLocation) { - if (!TryComp(toolEntity, out var tool) && component.ToolComponentNeeded) + if (!TryComp(toolEntity, out var tool) && component.ToolComponentNeeded || component.CancelToken != null) return false; if (!_mapManager.TryGetGrid(clickLocation.GetGridUid(EntityManager), out var mapGrid)) @@ -62,9 +69,11 @@ public sealed partial class ToolSystem if (!tileDef.CanCrowbar) return false; - var toolEvData = new ToolEventData(new TilePryingCompleteEvent(clickLocation), targetEntity:toolEntity); + component.CancelToken = new CancellationTokenSource(); - if (!UseTool(toolEntity, user, null, component.Delay, new[] { component.QualityNeeded }, toolEvData, toolComponent: tool)) + var toolEvData = new ToolEventData(new TilePryingCompleteEvent(clickLocation), cancelledEv:new TilePryingCancelledEvent() ,targetEntity:toolEntity); + + if (!UseTool(toolEntity, user, null, component.Delay, new[] { component.QualityNeeded }, toolEvData, toolComponent: tool, cancelToken: component.CancelToken)) return false; return true; diff --git a/Content.Shared/Chemistry/Components/SharedInjectorComponent.cs b/Content.Shared/Chemistry/Components/SharedInjectorComponent.cs index e90126689e..7c81495f08 100644 --- a/Content.Shared/Chemistry/Components/SharedInjectorComponent.cs +++ b/Content.Shared/Chemistry/Components/SharedInjectorComponent.cs @@ -10,6 +10,12 @@ namespace Content.Shared.Chemistry.Components [NetworkedComponent, ComponentProtoName("Injector")] public abstract class SharedInjectorComponent : Component { + /// + /// Checks to see if the entity being injected + /// + [DataField("isInjecting")] + public bool IsInjecting; + /// /// Component data used for net updates. Used by client for item status ui /// diff --git a/Content.Shared/Tools/Systems/SharedToolSystem.MultipleTool.cs b/Content.Shared/Tools/Systems/SharedToolSystem.MultipleTool.cs index b723395885..3006c95b89 100644 --- a/Content.Shared/Tools/Systems/SharedToolSystem.MultipleTool.cs +++ b/Content.Shared/Tools/Systems/SharedToolSystem.MultipleTool.cs @@ -1,4 +1,5 @@ using System.Linq; +using System.Threading; using Content.Shared.Audio; using Content.Shared.DoAfter; using Content.Shared.Interaction; @@ -31,9 +32,24 @@ public abstract class SharedToolSystem : EntitySystem private void OnDoAfter(EntityUid uid, ToolComponent component, DoAfterEvent args) { - if (args.Handled || args.Cancelled || args.AdditionalData.Ev == null) + if (args.Handled || args.AdditionalData.Ev == null) return; + if (args.Cancelled) + { + if (args.AdditionalData.CancelledEv != null) + { + if (args.AdditionalData.TargetEntity != null) + RaiseLocalEvent(args.AdditionalData.TargetEntity.Value, args.AdditionalData.CancelledEv); + else + RaiseLocalEvent(args.AdditionalData.CancelledEv); + + args.Handled = true; + } + + return; + } + if (ToolFinishUse(uid, args.Args.User, args.AdditionalData.Fuel)) { if (args.AdditionalData.TargetEntity != null) @@ -43,18 +59,9 @@ public abstract class SharedToolSystem : EntitySystem args.Handled = true; } - else if (args.AdditionalData.CancelledEv != null) - { - if (args.AdditionalData.TargetEntity != null) - RaiseLocalEvent(args.AdditionalData.TargetEntity.Value, args.AdditionalData.CancelledEv); - else - RaiseLocalEvent(args.AdditionalData.CancelledEv); - - args.Handled = true; - } } - public bool UseTool(EntityUid tool, EntityUid user, EntityUid? target, float doAfterDelay, IEnumerable toolQualitiesNeeded, ToolEventData toolEventData, float fuel = 0f, ToolComponent? toolComponent = null, Func? doAfterCheck = null) + public bool UseTool(EntityUid tool, EntityUid user, EntityUid? target, float doAfterDelay, IEnumerable toolQualitiesNeeded, ToolEventData toolEventData, float fuel = 0f, ToolComponent? toolComponent = null, Func? doAfterCheck = null, CancellationTokenSource? cancelToken = null) { // No logging here, after all that'd mean the caller would need to check if the component is there or not. if (!Resolve(tool, ref toolComponent, false)) @@ -70,7 +77,7 @@ public abstract class SharedToolSystem : EntitySystem if (doAfterDelay > 0f) { - var doAfterArgs = new DoAfterEventArgs(user, doAfterDelay / toolComponent.SpeedModifier, target:target, used:tool) + var doAfterArgs = new DoAfterEventArgs(user, doAfterDelay / toolComponent.SpeedModifier, cancelToken:cancelToken?.Token ?? default, target:target, used:tool) { ExtraCheck = doAfterCheck, BreakOnDamage = true, From 3e4d981d82dd363616939f6f68508d26071b9725 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 26 Feb 2023 00:34:11 -0500 Subject: [PATCH 09/53] Automatic changelog update --- Resources/Changelog/Changelog.yml | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 3d218ea61c..f0bc02caf5 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: metalgearsloth - changes: - - {message: Melee weapon cooldown now resets when swapping hands., type: Fix} - id: 2568 - time: '2022-11-04T01:18:01.0000000+00:00' - author: keronshb changes: - {message: Fixed an issue where crates would clip through firelocks., type: Fix} @@ -2907,3 +2902,17 @@ Entries: - {message: Ambient sounds no longer play for paused entities., type: Tweak} id: 3067 time: '2023-02-25T17:19:31.0000000+00:00' +- author: keronshb + changes: + - {message: BotanySwab/Disease Swab - Does not double dip uses (was activating twice + because of the swab having a doafter for plants and one for humans). Grabs the + disease data now correctly too., type: Fix} + - {message: 'Healing - Prevents multi-use, actually heals the target now.', type: Fix} + - {message: Drinks - Prevents multi use on force feeding targets, type: Fix} + - {message: Food - Prevents multi use on force feeding targets, type: Fix} + - {message: Tile Prying - Prevents multi use on multiple tiles, type: Fix} + - {message: Door Prying - Fixes an issue where doors wouldn't be able to be pried + again if cancelled., type: Fix} + - {message: Syringes - Prevents multi use on injecting self/targets., type: Fix} + id: 3068 + time: '2023-02-26T05:33:06.0000000+00:00' From a6d0c9b1297216bad0808565e27434bca4fcc07c Mon Sep 17 00:00:00 2001 From: Emisse <99158783+Emisse@users.noreply.github.com> Date: Sun, 26 Feb 2023 00:23:46 -0700 Subject: [PATCH 10/53] nukie planet fixe a unpowered door to dorm (#14277) --- Resources/Maps/nukieplanet.yml | 1259 +++++++++++++++++--------------- 1 file changed, 662 insertions(+), 597 deletions(-) diff --git a/Resources/Maps/nukieplanet.yml b/Resources/Maps/nukieplanet.yml index fb43d53092..309095fb40 100644 --- a/Resources/Maps/nukieplanet.yml +++ b/Resources/Maps/nukieplanet.yml @@ -844,1403 +844,1403 @@ entities: type: Gravity - chunkCollection: 0,-1: - 221: - color: '#9FED5896' - id: BrickTileWhiteCornerNe - coordinates: 7,-11 - 222: - color: '#9FED5896' - id: BrickTileWhiteCornerNw - coordinates: 6,-11 - 219: - color: '#FFFFFFFF' - id: WarnLineE - coordinates: 7,-3 - 214: - color: '#FFFFFFFF' - id: WarnEndW - coordinates: 0,-9 - 216: - color: '#FFFFFFFF' - id: WarnEndS - coordinates: 7,-4 - 218: - color: '#FFFFFFFF' - id: WarnLineS - coordinates: 7,-3 - 215: - color: '#FFFFFFFF' - id: WarnEndE - coordinates: 1,-9 - 217: - color: '#FFFFFFFF' - id: WarnEndN - coordinates: 7,-2 - 194: - color: '#DE3A3A96' - id: BrickTileSteelInnerSw - coordinates: 12,-13 - 195: - color: '#DE3A3A96' - id: BrickTileSteelInnerSw - coordinates: 14,-13 - 197: - color: '#DE3A3A96' - id: BrickTileSteelLineS - coordinates: 11,-13 - 196: - color: '#DE3A3A96' - id: BrickTileSteelLineS - coordinates: 13,-13 - 201: - color: '#DE3A3A96' - id: BrickTileSteelCornerSe - coordinates: 15,-15 - 198: - color: '#DE3A3A96' - id: BrickTileSteelCornerSw - coordinates: 9,-13 - 200: - color: '#DE3A3A96' - id: BrickTileSteelInnerSe - coordinates: 12,-13 - 15: + 0: color: '#FFFFFFFF' id: WarnCorner coordinates: 17,-10 - 16: + 1: color: '#FFFFFFFF' id: WarnCorner coordinates: 18,-11 - 17: + 2: color: '#FFFFFFFF' id: WarnCorner coordinates: 19,-11 - 18: + 3: angle: 3.141592653589793 rad color: '#FFFFFFFF' id: WarningLine coordinates: 19,-11 - 19: + 4: angle: 3.141592653589793 rad color: '#FFFFFFFF' id: WarningLine coordinates: 19,-12 - 20: + 5: angle: 3.141592653589793 rad color: '#FFFFFFFF' id: WarningLine coordinates: 20,-12 - 21: + 6: angle: 3.141592653589793 rad color: '#FFFFFFFF' id: WarningLine coordinates: 21,-12 - 22: + 7: color: '#FFFFFFFF' id: WarnCornerFlipped coordinates: 23,-10 - 23: + 8: angle: 4.71238898038469 rad color: '#FFFFFFFF' id: WarningLine coordinates: 24,-9 - 24: + 9: angle: 4.71238898038469 rad color: '#FFFFFFFF' id: WarningLine coordinates: 24,-8 - 25: + 10: angle: 4.71238898038469 rad color: '#FFFFFFFF' id: WarningLine coordinates: 24,-7 - 26: + 11: angle: 1.5707963267948966 rad color: '#FFFFFFFF' id: WarnCornerFlipped coordinates: 23,-6 - 27: + 12: angle: 1.5707963267948966 rad color: '#FFFFFFFF' id: WarnCornerFlipped coordinates: 22,-5 - 28: + 13: color: '#FFFFFFFF' id: WarnCornerFlipped coordinates: 16,-6 - 29: + 14: angle: 4.71238898038469 rad color: '#FFFFFFFF' id: WarnCorner coordinates: 17,-6 - 30: + 15: color: '#FFFFFFFF' id: WarningLine coordinates: 19,-4 - 31: + 16: color: '#FFFFFFFF' id: WarningLine coordinates: 20,-4 - 32: + 17: color: '#FFFFFFFF' id: WarningLine coordinates: 21,-4 - 33: + 18: angle: 4.71238898038469 rad color: '#FFFFFFFF' id: WarningLineCornerFlipped coordinates: 24,-10 - 34: + 19: color: '#FFFFFFFF' id: WarnCornerFlipped coordinates: 22,-11 - 35: + 20: color: '#FFFFFFFF' id: WarningLineCornerFlipped coordinates: 22,-4 - 36: + 21: angle: -1.5707963267948966 rad color: '#FFFFFFFF' id: WarnCorner coordinates: 18,-5 - 188: - color: '#DE3A3A96' - id: BrickTileSteelLineE - coordinates: 12,-14 - 187: - color: '#DE3A3A96' - id: BrickTileSteelCornerSw - coordinates: 14,-15 - 193: - color: '#DE3A3A96' - id: BrickTileSteelInnerSw - coordinates: 10,-13 - 199: - color: '#DE3A3A96' - id: BrickTileSteelInnerSe - coordinates: 10,-13 - 192: - color: '#DE3A3A96' - id: BrickTileSteelLineW - coordinates: 10,-14 - 191: - color: '#DE3A3A96' - id: BrickTileSteelLineW - coordinates: 12,-14 - 134: + 94: color: '#DE3A3A96' id: ThreeQuarterTileOverlayGreyscale180 coordinates: 15,-9 - 135: + 95: color: '#DE3A3A96' id: ThreeQuarterTileOverlayGreyscale90 coordinates: 15,-7 - 136: + 96: color: '#DE3A3A96' id: ThreeQuarterTileOverlayGreyscale270 coordinates: 12,-9 - 137: + 97: color: '#DE3A3A96' id: ThreeQuarterTileOverlayGreyscale coordinates: 12,-7 - 190: - color: '#DE3A3A96' - id: BrickTileSteelLineW - coordinates: 14,-14 - 189: - color: '#DE3A3A96' - id: BrickTileSteelLineE - coordinates: 10,-14 - 186: - color: '#DE3A3A96' - id: BrickTileSteelEndS - coordinates: 12,-15 - 185: - color: '#DE3A3A96' - id: BrickTileSteelEndS - coordinates: 10,-15 - 174: + 128: color: '#FFFFFFFF' id: WoodTrimThinLineW coordinates: 5,-9 - 175: + 129: color: '#FFFFFFFF' id: WoodTrimThinLineW coordinates: 5,-8 - 176: + 130: color: '#FFFFFFFF' id: WoodTrimThinLineW coordinates: 5,-7 - 177: + 131: color: '#FFFFFFFF' id: WoodTrimThinLineS coordinates: 4,-6 - 178: + 132: color: '#FFFFFFFF' id: WoodTrimThinLineS coordinates: 3,-6 - 179: + 133: color: '#FFFFFFFF' id: WoodTrimThinLineS coordinates: 2,-6 - 180: + 134: color: '#FFFFFFFF' id: WoodTrimThinLineS coordinates: 1,-6 - 181: + 135: color: '#FFFFFFFF' id: WoodTrimThinLineS coordinates: 0,-6 - 183: + 137: color: '#FFFFFFFF' id: WoodTrimThinInnerSw coordinates: 5,-6 - 202: + 139: + color: '#DE3A3A96' + id: BrickTileSteelEndS + coordinates: 10,-15 + 140: + color: '#DE3A3A96' + id: BrickTileSteelEndS + coordinates: 12,-15 + 141: + color: '#DE3A3A96' + id: BrickTileSteelCornerSw + coordinates: 14,-15 + 142: + color: '#DE3A3A96' + id: BrickTileSteelLineE + coordinates: 12,-14 + 143: + color: '#DE3A3A96' + id: BrickTileSteelLineE + coordinates: 10,-14 + 144: + color: '#DE3A3A96' + id: BrickTileSteelLineW + coordinates: 14,-14 + 145: + color: '#DE3A3A96' + id: BrickTileSteelLineW + coordinates: 12,-14 + 146: + color: '#DE3A3A96' + id: BrickTileSteelLineW + coordinates: 10,-14 + 147: + color: '#DE3A3A96' + id: BrickTileSteelInnerSw + coordinates: 10,-13 + 148: + color: '#DE3A3A96' + id: BrickTileSteelInnerSw + coordinates: 12,-13 + 149: + color: '#DE3A3A96' + id: BrickTileSteelInnerSw + coordinates: 14,-13 + 150: + color: '#DE3A3A96' + id: BrickTileSteelLineS + coordinates: 13,-13 + 151: + color: '#DE3A3A96' + id: BrickTileSteelLineS + coordinates: 11,-13 + 152: + color: '#DE3A3A96' + id: BrickTileSteelCornerSw + coordinates: 9,-13 + 153: + color: '#DE3A3A96' + id: BrickTileSteelInnerSe + coordinates: 10,-13 + 154: + color: '#DE3A3A96' + id: BrickTileSteelInnerSe + coordinates: 12,-13 + 155: + color: '#DE3A3A96' + id: BrickTileSteelCornerSe + coordinates: 15,-15 + 156: color: '#DE3A3A96' id: BrickTileSteelLineE coordinates: 15,-13 - 204: + 157: color: '#DE3A3A96' id: BrickTileSteelCornerNe coordinates: 15,-12 - 205: + 158: color: '#DE3A3A96' id: BrickTileSteelLineN coordinates: 14,-12 - 206: + 159: color: '#DE3A3A96' id: BrickTileSteelLineN coordinates: 13,-12 - 207: + 160: color: '#DE3A3A96' id: BrickTileSteelLineN coordinates: 12,-12 - 208: + 161: color: '#DE3A3A96' id: BrickTileSteelLineN coordinates: 11,-12 - 209: + 162: color: '#DE3A3A96' id: BrickTileSteelInnerNe coordinates: 10,-12 - 210: + 163: color: '#DE3A3A96' id: BrickTileSteelCornerNe coordinates: 10,-11 - 211: + 164: color: '#DE3A3A96' id: BrickTileSteelCornerNw coordinates: 9,-11 - 212: + 165: color: '#DE3A3A96' id: BrickTileSteelLineW coordinates: 9,-12 - 213: + 166: color: '#DE3A3A96' id: WarnLineGreyscaleE coordinates: 15,-14 - 223: + 167: + color: '#FFFFFFFF' + id: WarnEndW + coordinates: 0,-9 + 168: + color: '#FFFFFFFF' + id: WarnEndE + coordinates: 1,-9 + 169: + color: '#FFFFFFFF' + id: WarnEndS + coordinates: 7,-4 + 170: + color: '#FFFFFFFF' + id: WarnEndN + coordinates: 7,-2 + 171: + color: '#FFFFFFFF' + id: WarnLineS + coordinates: 7,-3 + 172: + color: '#FFFFFFFF' + id: WarnLineE + coordinates: 7,-3 + 173: + color: '#9FED5896' + id: BrickTileWhiteCornerNe + coordinates: 7,-11 + 174: + color: '#9FED5896' + id: BrickTileWhiteCornerNw + coordinates: 6,-11 + 175: color: '#9FED5896' id: BrickTileWhiteLineW coordinates: 6,-13 - 224: + 176: color: '#9FED5896' id: BrickTileWhiteInnerNw coordinates: 6,-14 - 225: + 177: color: '#9FED5896' id: BrickTileWhiteLineN coordinates: 5,-14 - 226: + 178: color: '#9FED5896' id: BrickTileWhiteLineN coordinates: 4,-14 - 245: - color: '#9FED5896' - id: BrickTileWhiteCornerNw - coordinates: 3,-14 - 228: + 179: color: '#9FED5896' id: BrickTileWhiteLineE coordinates: 7,-12 - 229: + 180: color: '#9FED5896' id: BrickTileWhiteLineE coordinates: 7,-13 - 230: + 181: color: '#9FED5896' id: BrickTileWhiteLineE coordinates: 7,-14 - 231: + 182: color: '#9FED5896' id: BrickTileWhiteLineE coordinates: 7,-15 - 232: + 183: color: '#9FED5896' id: BrickTileWhiteLineE coordinates: 7,-16 - 233: + 184: color: '#9FED5896' id: BrickTileWhiteLineE coordinates: 7,-17 - 235: + 185: color: '#9FED5896' id: BrickTileWhiteCornerSe coordinates: 7,-18 - 237: + 186: color: '#9FED5896' id: BrickTileWhiteLineS coordinates: 6,-18 - 238: + 187: color: '#9FED5896' id: BrickTileWhiteLineS coordinates: 5,-18 - 242: - color: '#9FED5896' - id: BrickTileWhiteLineS - coordinates: 4,-18 - 241: + 188: color: '#9FED5896' id: BrickTileWhiteCornerSw coordinates: 3,-18 - 243: + 189: + color: '#9FED5896' + id: BrickTileWhiteLineS + coordinates: 4,-18 + 190: color: '#9FED5896' id: BrickTileWhiteLineW coordinates: 3,-17 - 244: + 191: color: '#9FED5896' id: BrickTileWhiteLineW coordinates: 3,-16 - 246: + 192: + color: '#9FED5896' + id: BrickTileWhiteCornerNw + coordinates: 3,-14 + 193: color: '#FFFFFFFF' id: WarnLineGreyscaleW coordinates: 3,-15 - 247: + 194: color: '#FFFFFFFF' id: WarnLineGreyscaleW coordinates: 6,-12 - 248: + 195: color: '#9FED5896' id: FullTileOverlayGreyscale coordinates: 5,-17 - 249: + 196: color: '#9FED5896' id: FullTileOverlayGreyscale coordinates: 5,-16 - 250: + 197: color: '#9FED5896' id: FullTileOverlayGreyscale coordinates: 5,-15 - 251: + 198: color: '#9FED5896' id: FullTileOverlayGreyscale coordinates: 6,-16 - 252: + 199: color: '#9FED5896' id: FullTileOverlayGreyscale coordinates: 4,-16 - 253: + 200: color: '#DE3A3A96' id: BrickTileSteelCornerNe coordinates: 5,-11 - 254: + 201: color: '#DE3A3A96' id: BrickTileSteelCornerNw coordinates: 3,-11 - 255: + 202: color: '#DE3A3A96' id: BrickTileSteelCornerSe coordinates: 5,-13 - 256: + 203: color: '#DE3A3A96' id: BrickTileSteelCornerSw coordinates: 3,-13 - 257: + 204: color: '#DE3A3A96' id: BrickTileSteelLineS coordinates: 4,-13 - 258: + 205: color: '#DE3A3A96' id: BrickTileSteelLineE coordinates: 5,-12 - 259: + 206: color: '#DE3A3A96' id: BrickTileSteelLineN coordinates: 4,-11 - 260: + 207: color: '#DE3A3A96' id: BrickTileSteelLineW coordinates: 3,-12 - 261: + 208: color: '#FFFFFFFF' id: BotLeft coordinates: 5,-11 - 262: + 209: color: '#FFFFFFFF' id: BotLeft coordinates: 4,-11 - 311: - color: '#D381C996' - id: CheckerNWSE - coordinates: 13,-17 - 304: - color: '#D381C996' - id: CheckerNWSE - coordinates: 10,-19 - 309: - color: '#D381C996' - id: CheckerNWSE - coordinates: 14,-18 - 308: - color: '#D381C996' - id: CheckerNWSE - coordinates: 14,-19 - 320: - color: '#FFFFFFFF' - id: WarnLineN - coordinates: 13,-19 - 286: + 220: color: '#FFFFFFFF' id: Box coordinates: 12,-22 - 319: - color: '#FFFFFFFF' - id: WarnLineN - coordinates: 14,-19 - 307: + 221: + color: '#D381C996' + id: CheckerNWSE + coordinates: 10,-19 + 222: + color: '#D381C996' + id: CheckerNWSE + coordinates: 11,-19 + 223: + color: '#D381C996' + id: CheckerNWSE + coordinates: 12,-19 + 224: color: '#D381C996' id: CheckerNWSE coordinates: 13,-19 - 306: + 225: color: '#D381C996' id: CheckerNWSE - coordinates: 12,-19 - 305: + coordinates: 14,-19 + 226: color: '#D381C996' id: CheckerNWSE - coordinates: 11,-19 - 310: + coordinates: 14,-18 + 227: color: '#D381C996' id: CheckerNWSE coordinates: 14,-17 - 312: + 228: + color: '#D381C996' + id: CheckerNWSE + coordinates: 13,-17 + 229: color: '#D381C996' id: CheckerNWSE coordinates: 13,-18 - 313: + 230: color: '#D381C996' id: CheckerNWSE coordinates: 12,-18 - 314: + 231: color: '#D381C996' id: CheckerNWSE coordinates: 12,-17 - 315: + 232: color: '#D381C996' id: CheckerNWSE coordinates: 11,-17 - 316: + 233: color: '#D381C996' id: CheckerNWSE coordinates: 11,-18 - 318: - color: '#D381C996' - id: CheckerNWSE - coordinates: 10,-17 - 317: + 234: color: '#D381C996' id: CheckerNWSE coordinates: 10,-18 - 321: + 235: + color: '#D381C996' + id: CheckerNWSE + coordinates: 10,-17 + 236: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: 14,-19 + 237: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: 13,-19 + 238: color: '#FFFFFFFF' id: WarnLineN coordinates: 12,-19 - 322: + 239: color: '#FFFFFFFF' id: WarnLineN coordinates: 11,-19 - 323: + 240: color: '#FFFFFFFF' id: WarnCornerSW coordinates: 10,-19 - 324: + 241: color: '#FFFFFFFF' id: WarnLineS coordinates: 10,-18 - 325: + 242: color: '#FFFFFFFF' id: WarnLineS coordinates: 10,-17 - 329: + 243: color: '#52B4E996' id: HalfTileOverlayGreyscale180 coordinates: 1,-16 - 330: + 244: color: '#52B4E996' id: HalfTileOverlayGreyscale180 coordinates: 0,-16 - 332: + 246: color: '#52B4E996' id: HalfTileOverlayGreyscale coordinates: 1,-14 - 335: + 247: color: '#52B4E996' id: HalfTileOverlayGreyscale coordinates: 0,-14 - 342: + 254: color: '#52B4E996' id: BrickTileSteelBox coordinates: 1,-17 - 343: + 255: color: '#52B4E996' id: BrickTileSteelBox coordinates: 1,-13 - 345: + 257: color: '#DE3A3A96' id: BrickTileSteelLineN coordinates: 0,-17 - 347: + 259: color: '#DE3A3A96' id: BrickTileSteelLineS coordinates: 0,-13 - 353: + 265: color: '#FFFFFFFF' id: Delivery coordinates: 7,-18 - 354: + 266: color: '#FFFFFFFF' id: Delivery coordinates: 6,-18 - 403: - color: '#FFFFFFFF' - id: WarnCornerSW - coordinates: 24,-20 - 368: - color: '#DE3A3A96' - id: BrickTileSteelCornerSw - coordinates: 18,-20 - 357: + 267: color: '#DE3A3A96' id: BrickTileSteelLineW coordinates: 18,-18 - 358: + 268: color: '#DE3A3A96' id: BrickTileSteelLineW coordinates: 17,-16 - 359: + 269: color: '#DE3A3A96' id: BrickTileSteelLineW coordinates: 17,-15 - 360: + 270: color: '#DE3A3A96' id: BrickTileSteelCornerSw coordinates: 17,-17 - 367: - color: '#DE3A3A96' - id: BrickTileSteelLineW - coordinates: 18,-19 - 362: + 271: color: '#DE3A3A96' id: BrickTileSteelLineE coordinates: 26,-19 - 363: + 272: color: '#DE3A3A96' id: BrickTileSteelLineE coordinates: 26,-18 - 364: + 273: color: '#DE3A3A96' id: BrickTileSteelCornerSe coordinates: 27,-17 - 365: + 274: color: '#DE3A3A96' id: BrickTileSteelInnerSe coordinates: 26,-17 - 366: + 275: color: '#DE3A3A96' id: BrickTileSteelInnerSw coordinates: 18,-17 - 370: + 276: + color: '#DE3A3A96' + id: BrickTileSteelLineW + coordinates: 18,-19 + 277: + color: '#DE3A3A96' + id: BrickTileSteelCornerSw + coordinates: 18,-20 + 278: color: '#DE3A3A96' id: BrickTileSteelCornerSe coordinates: 26,-20 - 402: - color: '#DE3A3A96' - id: BrickTileSteelLineE - coordinates: 20,-19 - 406: - color: '#FFFFFFFF' - id: WarnLineE - coordinates: 20,-18 - 405: - color: '#FFFFFFFF' - id: WarnLineS - coordinates: 24,-18 - 374: + 279: color: '#DE3A3A96' id: BrickTileSteelLineE coordinates: 20,-17 - 375: + 280: color: '#DE3A3A96' id: BrickTileSteelLineE coordinates: 20,-16 - 376: + 281: color: '#DE3A3A96' id: BrickTileSteelLineE coordinates: 20,-15 - 377: + 282: color: '#DE3A3A96' id: BrickTileSteelLineW coordinates: 24,-19 - 404: - color: '#FFFFFFFF' - id: WarnCornerSE - coordinates: 20,-20 - 379: + 283: color: '#DE3A3A96' id: BrickTileSteelLineW coordinates: 24,-17 - 380: + 284: color: '#DE3A3A96' id: BrickTileSteelLineW coordinates: 24,-16 - 381: + 285: color: '#DE3A3A96' id: BrickTileSteelLineW coordinates: 24,-15 - 382: + 286: color: '#DE3A3A96' id: BrickTileSteelLineS coordinates: 25,-20 - 383: + 287: color: '#DE3A3A96' id: BrickTileSteelLineS coordinates: 19,-20 - 384: + 288: color: '#DE3A3A96' id: BrickTileSteelLineN coordinates: 26,-14 - 385: + 289: color: '#DE3A3A96' id: BrickTileSteelLineN coordinates: 25,-14 - 397: - color: '#DE3A3A96' - id: BrickTileSteelInnerSw - coordinates: 24,-14 - 387: + 290: color: '#DE3A3A96' id: BrickTileSteelLineN coordinates: 23,-14 - 388: + 291: color: '#DE3A3A96' id: BrickTileSteelLineN coordinates: 22,-14 - 389: + 292: color: '#DE3A3A96' id: BrickTileSteelLineN coordinates: 21,-14 - 390: + 293: color: '#DE3A3A96' id: BrickTileSteelLineN coordinates: 20,-14 - 391: + 294: color: '#DE3A3A96' id: BrickTileSteelLineN coordinates: 18,-14 - 392: + 295: color: '#DE3A3A96' id: BrickTileSteelLineN coordinates: 19,-14 - 393: + 296: color: '#DE3A3A96' id: WarnCornerGreyscaleNW coordinates: 17,-14 - 394: + 297: color: '#DE3A3A96' id: DeliveryGreyscale coordinates: 16,-14 - 396: + 298: color: '#DE3A3A96' id: BrickTileSteelLineN coordinates: 24,-14 - 398: + 299: + color: '#DE3A3A96' + id: BrickTileSteelInnerSw + coordinates: 24,-14 + 300: color: '#DE3A3A96' id: BrickTileSteelLineS coordinates: 23,-14 - 399: + 301: color: '#DE3A3A96' id: BrickTileSteelLineS coordinates: 22,-14 - 400: + 302: color: '#DE3A3A96' id: BrickTileSteelLineS coordinates: 21,-14 - 401: + 303: color: '#DE3A3A96' id: BrickTileSteelInnerSe coordinates: 20,-14 - 417: + 304: + color: '#DE3A3A96' + id: BrickTileSteelLineE + coordinates: 20,-19 + 305: color: '#FFFFFFFF' - id: Bot - coordinates: 17,-19 - 408: + id: WarnCornerSW + coordinates: 24,-20 + 306: + color: '#FFFFFFFF' + id: WarnCornerSE + coordinates: 20,-20 + 307: + color: '#FFFFFFFF' + id: WarnLineS + coordinates: 24,-18 + 308: + color: '#FFFFFFFF' + id: WarnLineE + coordinates: 20,-18 + 309: color: '#FFFFFFFF' id: Bot coordinates: 21,-16 - 409: + 310: color: '#FFFFFFFF' id: Bot coordinates: 22,-15 - 410: + 311: color: '#FFFFFFFF' id: Bot coordinates: 23,-16 - 411: + 312: color: '#FFFFFFFF' id: BotRight coordinates: 23,-17 - 412: + 313: color: '#FFFFFFFF' id: BotRight coordinates: 21,-15 - 413: + 314: color: '#FFFFFFFF' id: BotLeft coordinates: 23,-15 - 416: - color: '#FFFFFFFF' - id: Bot - coordinates: 22,-17 - 415: + 315: color: '#FFFFFFFF' id: BotLeft coordinates: 21,-17 - 418: + 316: + color: '#FFFFFFFF' + id: Bot + coordinates: 22,-17 + 317: + color: '#FFFFFFFF' + id: Bot + coordinates: 17,-19 + 318: color: '#FFFFFFFF' id: Bot coordinates: 27,-19 - 419: + 319: color: '#FFFFFFFF' id: BotLeft coordinates: 27,-18 - 420: + 320: color: '#FFFFFFFF' id: BotLeft coordinates: 17,-20 - 421: + 321: color: '#FFFFFFFF' id: BotRight coordinates: 27,-20 - 422: + 322: color: '#FFFFFFFF' id: BotRight coordinates: 17,-18 - 423: + 323: color: '#FFFFFFFF' id: Arrows coordinates: 18,-19 - 424: + 324: color: '#FFFFFFFF' id: Arrows coordinates: 26,-19 - 425: + 325: angle: -3.141592653589793 rad color: '#FFFFFFFF' id: Arrows coordinates: 27,-15 - 426: + 326: color: '#DE3A3A96' id: BrickTileSteelLineE coordinates: 27,-16 - 427: + 327: color: '#DE3A3A96' id: BrickTileSteelLineE coordinates: 27,-15 - 428: + 328: color: '#DE3A3A96' id: HalfTileOverlayGreyscale coordinates: 13,-7 - 429: + 329: color: '#DE3A3A96' id: HalfTileOverlayGreyscale180 coordinates: 14,-9 - 430: + 330: color: '#DE3A3A96' id: HalfTileOverlayGreyscale180 coordinates: 13,-9 - 435: + 335: color: '#9FED5896' id: QuarterTileOverlayGreyscale180 coordinates: 13,-2 - 436: + 336: color: '#9FED5896' id: QuarterTileOverlayGreyscale180 coordinates: 12,-2 - 437: + 337: color: '#9FED5896' id: QuarterTileOverlayGreyscale270 coordinates: 9,-2 - 438: + 338: color: '#9FED5896' id: QuarterTileOverlayGreyscale270 coordinates: 10,-2 - 439: + 339: color: '#9FED5896' id: HalfTileOverlayGreyscale90 coordinates: 10,-1 - 440: + 340: color: '#9FED5896' id: HalfTileOverlayGreyscale270 coordinates: 12,-1 - 441: + 341: color: '#9FED5896' id: HalfTileOverlayGreyscale coordinates: 11,-2 - 444: + 343: color: '#FFFFFFFF' id: BrickTileDarkLineN coordinates: 2,-1 - 445: + 344: color: '#FFFFFFFF' id: BrickTileDarkLineN coordinates: 1,-1 - 446: + 345: color: '#FFFFFFFF' id: BrickTileDarkLineN coordinates: 0,-1 -1,-1: - 37: + 22: color: '#FFFFFFFF' id: grasssnowa2 coordinates: -3.6290493,-9.771207 - 38: + 23: color: '#FFFFFFFF' id: grasssnowb3 coordinates: -3.3477993,-19.991972 - 331: - color: '#52B4E996' - id: HalfTileOverlayGreyscale180 - coordinates: -1,-16 - 40: + 24: color: '#FFFFFFFF' id: grasssnowc1 coordinates: -3.9999733,-6.081314 - 337: - color: '#52B4E996' - id: HalfTileOverlayGreyscale270 - coordinates: -2,-15 - 71: + 50: color: '#FFFFFFFF' id: grasssnowb3 coordinates: -3.1864414,-0.9828911 - 143: + 103: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,-1 - 144: + 104: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,-2 - 145: + 105: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,-3 - 146: + 106: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,-4 - 147: + 107: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,-5 - 148: + 108: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,-6 - 149: + 109: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,-7 - 150: + 110: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,-8 - 151: + 111: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,-9 - 152: + 112: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,-10 - 153: + 113: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,-11 - 154: + 114: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,-12 - 155: + 115: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,-13 - 156: + 116: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,-14 - 157: + 117: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,-15 - 158: + 118: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,-16 - 159: + 119: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,-17 - 160: + 120: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,-18 - 161: + 121: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,-19 - 162: + 122: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,-20 - 163: + 123: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,-21 - 164: + 124: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,-22 - 165: + 125: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,-23 - 166: + 126: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,-24 - 336: - color: '#52B4E996' - id: HalfTileOverlayGreyscale - coordinates: -1,-14 - 184: - color: '#FFFFFFFF' - id: WarnBox - coordinates: -5,-3 - 182: + 136: color: '#FFFFFFFF' id: WoodTrimThinLineS coordinates: -1,-6 - 338: + 138: + color: '#FFFFFFFF' + id: WarnBox + coordinates: -5,-3 + 245: + color: '#52B4E996' + id: HalfTileOverlayGreyscale180 + coordinates: -1,-16 + 248: + color: '#52B4E996' + id: HalfTileOverlayGreyscale + coordinates: -1,-14 + 249: + color: '#52B4E996' + id: HalfTileOverlayGreyscale270 + coordinates: -2,-15 + 250: color: '#52B4E996' id: ThreeQuarterTileOverlayGreyscale270 coordinates: -2,-16 - 339: + 251: color: '#52B4E996' id: ThreeQuarterTileOverlayGreyscale coordinates: -2,-14 - 340: + 252: color: '#52B4E996' id: BrickTileSteelBox coordinates: -3,-15 - 341: + 253: color: '#52B4E996' id: BrickTileSteelBox coordinates: -2,-17 - 344: + 256: color: '#52B4E996' id: BrickTileSteelBox coordinates: -2,-13 - 346: + 258: color: '#DE3A3A96' id: BrickTileSteelLineN coordinates: -1,-17 - 348: + 260: color: '#DE3A3A96' id: BrickTileSteelLineS coordinates: -1,-13 - 349: + 261: color: '#DE3A3A96' id: BrickTileSteelLineE coordinates: -3,-16 - 350: + 262: color: '#DE3A3A96' id: BrickTileSteelLineE coordinates: -3,-14 - 351: + 263: color: '#DE3A3A96' id: BrickTileSteelInnerSe coordinates: -3,-13 - 352: + 264: color: '#DE3A3A96' id: BrickTileSteelInnerNe coordinates: -3,-17 0,0: - 42: + 25: color: '#FFFFFFFF' id: grasssnowa2 coordinates: 15.159365,5.392831 - 43: + 26: color: '#FFFFFFFF' id: grasssnowc1 coordinates: 15.819311,9.398571 - 44: + 27: color: '#FFFFFFFF' id: grasssnowc2 coordinates: 14.194311,14.208315 - 45: + 28: color: '#FFFFFFFF' id: grasssnowc3 coordinates: 15.694311,15.172535 - 46: + 29: color: '#FFFFFFFF' id: grasssnowc2 coordinates: 12.819311,16.642818 - 47: + 30: color: '#FFFFFFFF' id: grasssnowa1 coordinates: 9.251883,16.971285 - 48: + 31: color: '#FFFFFFFF' id: grasssnowb3 coordinates: 9.061624,11.550716 - 49: + 32: color: '#FFFFFFFF' id: grasssnowc1 coordinates: 12.170999,10.565315 - 50: + 33: color: '#FFFFFFFF' id: grasssnowc2 coordinates: 8.01938,8.972565 - 51: + 34: color: '#FFFFFFFF' id: grasssnowc3 coordinates: 10.48813,7.3443623 - 52: + 35: color: '#FFFFFFFF' id: grasssnowb3 coordinates: 9.066255,4.2786684 - 53: + 36: color: '#FFFFFFFF' id: grasssnowb2 coordinates: 6.1287537,4.4684677 - 55: + 37: color: '#FFFFFFFF' id: grasssnowc3 coordinates: 9.0946245,2.0440664 - 56: + 38: color: '#FFFFFFFF' id: grasssnowb2 coordinates: 13.017959,2.0284252 - 57: + 39: color: '#FFFFFFFF' id: grasssnowc1 coordinates: 10.861709,2.2630453 - 58: + 40: color: '#FFFFFFFF' id: grasssnowc1 coordinates: 8.471084,13.624069 - 442: - color: '#9FED5896' - id: HalfTileOverlayGreyscale180 - coordinates: 11,0 - 60: + 41: color: '#FFFFFFFF' id: grasssnowa1 coordinates: 4.707512,15.727119 - 61: + 42: color: '#FFFFFFFF' id: grasssnowa2 coordinates: 2.707512,15.930454 - 72: + 51: color: '#FFFFFFFF' id: grasssnowb1 coordinates: 0.79449654,2.152192 - 76: + 53: color: '#FFFFFFFF' id: grasssnowa2 coordinates: 1.6412125,14.139866 - 77: + 54: color: '#FFFFFFFF' id: grasssnowa3 coordinates: 0.43808746,13.654987 - 80: + 55: color: '#FFFFFFFF' id: grasssnowb1 coordinates: 0.18808746,9.666458 - 81: + 56: color: '#FFFFFFFF' id: grasssnowc1 coordinates: 4.1724625,13.733192 - 82: + 57: color: '#FFFFFFFF' id: grasssnowa3 coordinates: 3.1880875,12.434965 - 84: + 58: color: '#FFFFFFFF' id: grasssnowa3 coordinates: 2.1568375,9.893942 - 85: + 59: color: '#FFFFFFFF' id: grasssnowc3 coordinates: 0.45371246,11.270374 - 86: + 60: color: '#FFFFFFFF' id: grasssnowc3 coordinates: 9.166802,10.222887 - 431: - color: '#9FED5896' - id: QuarterTileOverlayGreyscale - coordinates: 9,0 - 90: + 61: color: '#FFFFFFFF' id: grasssnowb2 coordinates: 8.19574,16.289047 - 91: + 62: color: '#FFFFFFFF' id: grasssnowa2 coordinates: 14.449558,12.269236 - 434: - color: '#9FED5896' - id: QuarterTileOverlayGreyscale90 - coordinates: 12,0 - 93: - color: '#FFFFFFFF' - id: grasssnowa3 - coordinates: 16.060982,2.673603 - 94: - color: '#FFFFFFFF' - id: grasssnowb2 - coordinates: 3.43816,14.798347 - 96: - color: '#FFFFFFFF' - id: grasssnowb3 - coordinates: 0.5527668,14.892197 - 98: - color: '#FFFFFFFF' - id: bushsnowa1 - coordinates: 12.033197,7.701807 - 100: - color: '#FFFFFFFF' - id: bushsnowa1 - coordinates: 14.310135,6.6772776 - 101: - color: '#FFFFFFFF' - id: bushsnowa2 - coordinates: 13.896899,12.679136 - 102: - color: '#FFFFFFFF' - id: bushsnowb2 - coordinates: 12.943774,14.853275 - 103: - color: '#FFFFFFFF' - id: bushsnowb3 - coordinates: 0.2452774,15.588417 - 106: - color: '#FFFFFFFF' - id: Rock06 - coordinates: 9.232971,15.9332485 - 107: - color: '#FFFFFFFF' - id: grasssnowc1 - coordinates: 2.5912228,19.753052 - 108: - color: '#FFFFFFFF' - id: grasssnowc3 - coordinates: 6.122473,18.001226 - 109: - color: '#FFFFFFFF' - id: grasssnowb2 - coordinates: 2.4505978,18.17328 - 110: - color: '#FFFFFFFF' - id: grasssnowb1 - coordinates: 4.997473,19.080475 - 433: - color: '#9FED5896' - id: QuarterTileOverlayGreyscale90 - coordinates: 13,0 - 112: - color: '#FFFFFFFF' - id: grasssnowc3 - coordinates: 18.166714,4.631343 - 113: - color: '#FFFFFFFF' - id: grasssnowc2 - coordinates: 19.322964,7.2277966 - 432: - color: '#9FED5896' - id: QuarterTileOverlayGreyscale - coordinates: 10,0 - 115: - color: '#FFFFFFFF' - id: grasssnowc1 - coordinates: 17.947964,3.1297789 - 116: - color: '#FFFFFFFF' - id: grasssnowb3 - coordinates: 17.104214,9.229881 - 117: - color: '#FFFFFFFF' - id: grasssnowa1 - coordinates: 16.072964,17.452217 - 127: - color: '#FFFFFFFF' - id: grasssnowb2 - coordinates: 4.1790752,7.8279076 - -1,0: - 62: - color: '#FFFFFFFF' - id: grasssnowc3 - coordinates: -2.8895664,16.211998 63: + color: '#FFFFFFFF' + id: grasssnowa3 + coordinates: 16.060982,2.673603 + 64: + color: '#FFFFFFFF' + id: grasssnowb2 + coordinates: 3.43816,14.798347 + 65: + color: '#FFFFFFFF' + id: grasssnowb3 + coordinates: 0.5527668,14.892197 + 67: + color: '#FFFFFFFF' + id: bushsnowa1 + coordinates: 12.033197,7.701807 + 69: + color: '#FFFFFFFF' + id: bushsnowa1 + coordinates: 14.310135,6.6772776 + 70: + color: '#FFFFFFFF' + id: bushsnowa2 + coordinates: 13.896899,12.679136 + 71: + color: '#FFFFFFFF' + id: bushsnowb2 + coordinates: 12.943774,14.853275 + 72: + color: '#FFFFFFFF' + id: bushsnowb3 + coordinates: 0.2452774,15.588417 + 75: + color: '#FFFFFFFF' + id: Rock06 + coordinates: 9.232971,15.9332485 + 76: + color: '#FFFFFFFF' + id: grasssnowc1 + coordinates: 2.5912228,19.753052 + 77: + color: '#FFFFFFFF' + id: grasssnowc3 + coordinates: 6.122473,18.001226 + 78: + color: '#FFFFFFFF' + id: grasssnowb2 + coordinates: 2.4505978,18.17328 + 79: + color: '#FFFFFFFF' + id: grasssnowb1 + coordinates: 4.997473,19.080475 + 80: + color: '#FFFFFFFF' + id: grasssnowc3 + coordinates: 18.166714,4.631343 + 81: + color: '#FFFFFFFF' + id: grasssnowc2 + coordinates: 19.322964,7.2277966 + 82: + color: '#FFFFFFFF' + id: grasssnowc1 + coordinates: 17.947964,3.1297789 + 83: + color: '#FFFFFFFF' + id: grasssnowb3 + coordinates: 17.104214,9.229881 + 84: + color: '#FFFFFFFF' + id: grasssnowa1 + coordinates: 16.072964,17.452217 + 93: + color: '#FFFFFFFF' + id: grasssnowb2 + coordinates: 4.1790752,7.8279076 + 331: + color: '#9FED5896' + id: QuarterTileOverlayGreyscale + coordinates: 9,0 + 332: + color: '#9FED5896' + id: QuarterTileOverlayGreyscale + coordinates: 10,0 + 333: + color: '#9FED5896' + id: QuarterTileOverlayGreyscale90 + coordinates: 13,0 + 334: + color: '#9FED5896' + id: QuarterTileOverlayGreyscale90 + coordinates: 12,0 + 342: + color: '#9FED5896' + id: HalfTileOverlayGreyscale180 + coordinates: 11,0 + -1,0: + 43: + color: '#FFFFFFFF' + id: grasssnowc3 + coordinates: -2.8895664,16.211998 + 44: color: '#FFFFFFFF' id: grasssnowa3 coordinates: -1.3739414,16.399694 - 277: - color: '#A4610647' - id: CheckerNWSE - coordinates: -14,8 - 276: - color: '#A4610647' - id: CheckerNWSE - coordinates: -13,7 - 66: + 45: color: '#FFFFFFFF' id: grasssnowc1 coordinates: -2.1864414,7.911888 - 67: + 46: color: '#FFFFFFFF' id: grasssnowc3 coordinates: -4.0458164,7.6303444 - 68: + 47: color: '#FFFFFFFF' id: grasssnowa1 coordinates: -2.8426914,5.7681084 - 69: + 48: color: '#FFFFFFFF' id: grasssnowc1 coordinates: -0.6551914,1.8769035 - 70: + 49: color: '#FFFFFFFF' id: grasssnowc1 coordinates: -3.7333164,0.34661865 - 73: + 52: color: '#FFFFFFFF' id: grasssnowb3 coordinates: -0.88188744,15.563225 - 278: - color: '#A4610647' - id: CheckerNWSE - coordinates: -15,8 - 275: - color: '#A4610647' - id: CheckerNWSE - coordinates: -14,7 - 97: + 66: color: '#FFFFFFFF' id: grasssnowc3 coordinates: -1.9470882,14.409473 - 99: + 68: color: '#FFFFFFFF' id: bushsnowa2 coordinates: -1.884201,10.692345 - 104: + 73: color: '#FFFFFFFF' id: bushsnowa2 coordinates: -2.6609726,10.251652 - 105: + 74: color: '#FFFFFFFF' id: bushsnowb3 coordinates: -0.9488945,8.937782 - 118: + 85: color: '#FFFFFFFF' id: grasssnowa1 coordinates: -4.644718,19.141476 - 119: + 86: color: '#FFFFFFFF' id: grasssnowa2 coordinates: -6.332218,17.702477 - 120: + 87: color: '#FFFFFFFF' id: grasssnowa2 coordinates: -7.488468,14.82448 - 121: + 88: color: '#FFFFFFFF' id: grasssnowc1 coordinates: -7.175968,10.382353 - 122: + 89: color: '#FFFFFFFF' id: grasssnowc2 coordinates: -5.675968,10.1320915 - 123: + 90: color: '#FFFFFFFF' id: grasssnowa3 coordinates: -6.207218,16.0445 - 124: + 91: color: '#FFFFFFFF' id: grasssnowa2 coordinates: -5.738468,8.348984 - 125: + 92: color: '#FFFFFFFF' id: grasssnowb2 coordinates: -5.832218,13.979851 - 138: + 98: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,4 - 139: + 99: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,3 - 140: + 100: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,2 - 141: + 101: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,1 - 142: + 102: color: '#FFFFFFFF' id: WarnLineS coordinates: -9,0 - 167: + 127: color: '#FFFFFFFF' id: WarnEndS coordinates: -6,21 - 272: - color: '#A4610647' - id: CheckerNWSE - coordinates: -14,6 - 271: + 210: color: '#A4610647' id: CheckerNWSE coordinates: -13,6 - 273: + 211: + color: '#A4610647' + id: CheckerNWSE + coordinates: -14,6 + 212: color: '#A4610647' id: CheckerNWSE coordinates: -15,6 - 274: + 213: color: '#A4610647' id: CheckerNWSE coordinates: -15,7 - 279: + 214: + color: '#A4610647' + id: CheckerNWSE + coordinates: -14,7 + 215: + color: '#A4610647' + id: CheckerNWSE + coordinates: -13,7 + 216: + color: '#A4610647' + id: CheckerNWSE + coordinates: -14,8 + 217: + color: '#A4610647' + id: CheckerNWSE + coordinates: -15,8 + 218: color: '#FFFFFFFF' id: Delivery coordinates: -16,8 - 280: + 219: color: '#FFFFFFFF' id: Delivery coordinates: -16,9 @@ -2300,7 +2300,7 @@ entities: -3,-6: 0 -3,-5: 0 -3,-4: 0 - -3,-3: 0 + -3,-3: 1 -3,-2: 0 -3,-1: 0 -2,-16: 0 @@ -2409,7 +2409,7 @@ entities: 5,-16: 0 5,-15: 0 5,-14: 0 - 5,-13: 0 + 5,-13: 1 5,-12: 0 5,-11: 0 5,-10: 0 @@ -2471,8 +2471,8 @@ entities: 8,-2: 0 8,-1: 0 9,-16: 0 - 9,-15: 0 - 9,-14: 0 + 9,-15: 1 + 9,-14: 1 9,-13: 0 9,-12: 0 9,-11: 0 @@ -2482,7 +2482,7 @@ entities: 9,-7: 0 9,-6: 0 9,-5: 0 - 9,-4: 0 + 9,-4: 1 9,-3: 0 9,-2: 0 9,-1: 0 @@ -2503,8 +2503,8 @@ entities: 10,-2: 0 10,-1: 0 11,-16: 0 - 11,-15: 0 - 11,-14: 0 + 11,-15: 1 + 11,-14: 1 11,-13: 0 11,-12: 0 11,-11: 0 @@ -2513,7 +2513,7 @@ entities: 11,-8: 0 11,-7: 0 11,-6: 0 - 11,-5: 0 + 11,-5: 1 11,-4: 0 11,-3: 0 11,-2: 0 @@ -2535,8 +2535,8 @@ entities: 12,-2: 0 12,-1: 0 13,-16: 0 - 13,-15: 0 - 13,-14: 0 + 13,-15: 1 + 13,-14: 1 13,-13: 0 13,-12: 0 13,-11: 0 @@ -2545,7 +2545,7 @@ entities: 13,-8: 0 13,-7: 0 13,-6: 0 - 13,-5: 0 + 13,-5: 1 13,-4: 0 13,-3: 0 13,-2: 0 @@ -2983,7 +2983,7 @@ entities: 19,-2: 0 19,-1: 0 20,-16: 0 - 20,-15: 0 + 20,-15: 1 20,-14: 0 20,-13: 0 20,-12: 0 @@ -3047,7 +3047,7 @@ entities: 23,-2: 0 23,-1: 0 24,-16: 0 - 24,-15: 0 + 24,-15: 1 24,-14: 0 24,-13: 0 24,-12: 0 @@ -3198,13 +3198,13 @@ entities: 6,-21: 0 6,-20: 0 6,-19: 0 - 6,-18: 0 + 6,-18: 1 6,-17: 0 7,-22: 0 7,-21: 0 7,-20: 0 7,-19: 0 - 7,-18: 0 + 7,-18: 1 7,-17: 0 8,-22: 0 8,-21: 0 @@ -6438,6 +6438,21 @@ entities: -33,2: 0 -33,3: 0 -33,4: 0 + 4,-26: 2 + 5,-26: 2 + 6,-26: 2 + 7,-26: 2 + 8,-26: 2 + 9,-25: 2 + 10,-25: 2 + 11,-25: 2 + 12,-25: 2 + 13,-25: 2 + 14,-25: 2 + -22,7: 2 + -21,5: 2 + -21,6: 2 + -21,7: 2 uniqueMixes: - volume: 2500 temperature: 293.15 @@ -6454,6 +6469,36 @@ entities: - 0 - 0 - 0 + - volume: 2500 + temperature: 293.15 + moles: + - 21.213781 + - 79.80423 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - volume: 2500 + temperature: 293.15 + moles: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 type: GridAtmosphere - type: RadiationGridResistance - type: OccluderTree @@ -14122,7 +14167,7 @@ entities: components: - type: MetaData - type: Transform - - index: 5 + - index: 4 type: Map - type: PhysicsMap - type: Broadphase @@ -20442,6 +20487,8 @@ entities: type: Transform - charge: 100 type: GravityGenerator + - radius: 175.75 + type: PointLight - uid: 2328 type: GeneratorPlasma components: @@ -21123,6 +21170,24 @@ entities: type: Transform - fixtures: [] type: Fixtures +- uid: 2439 + type: CableApcExtension + components: + - pos: 13.5,-9.5 + parent: 104 + type: Transform +- uid: 2440 + type: CableApcExtension + components: + - pos: 5.5,-6.5 + parent: 104 + type: Transform +- uid: 2441 + type: CableApcExtension + components: + - pos: 5.5,-5.5 + parent: 104 + type: Transform - uid: 2505 type: Catwalk components: From 44fb8a9e2da5cf8f9a2cd939a7b563bc4360ddb7 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sun, 26 Feb 2023 18:48:57 +1100 Subject: [PATCH 11/53] Fix rsi sprite access for verbs (#14284) --- .../Administration/Systems/AdminVerbSystem.cs | 3 +- Content.Client/Examine/ExamineButton.cs | 6 +- Content.Client/Examine/ExamineSystem.cs | 8 +- Content.Client/Guidebook/GuidebookSystem.cs | 3 +- Content.Client/Pointing/PointingSystem.cs | 3 +- .../Access/Systems/IdExaminableSystem.cs | 2 +- .../Administration/Notes/AdminNotesSystem.cs | 3 +- .../Systems/AdminVerbSystem.Antags.cs | 9 +- .../Systems/AdminVerbSystem.Smites.cs | 80 ++++++++-------- .../Systems/AdminVerbSystem.Tools.cs | 91 ++++++++++--------- .../Administration/Systems/AdminVerbSystem.cs | 27 +++--- .../Body/Systems/InternalsSystem.cs | 3 +- .../Buckle/Systems/BuckleSystem.Buckle.cs | 3 +- .../Systems/ChameleonClothingSystem.cs | 3 +- .../Construction/ConstructionSystem.Guided.cs | 4 +- .../ConstructionSystem.Machine.cs | 2 +- .../DetailExaminable/DetailExaminableystem.cs | 2 +- .../Systems/NetworkConfiguratorSystem.cs | 21 +++-- .../Unit/EntitySystems/DisposalUnitSystem.cs | 3 +- Content.Server/Foldable/FoldableSystem.cs | 24 +++-- .../HealthExaminableSystem.cs | 2 +- .../Systems/HumanoidSystem.Modifier.cs | 3 +- .../Kitchen/EntitySystems/SharpSystem.cs | 5 +- .../EntitySystems/ExpendableLightSystem.cs | 3 +- .../EntitySystems/HandheldLightSystem.cs | 86 +++++++++--------- .../UnpoweredFlashlightSystem.cs | 3 +- .../System/TwoWayLeverSystem.cs | 5 +- .../Medical/Stethoscope/StethoscopeSystem.cs | 3 +- .../Nutrition/EntitySystems/DrinkSystem.cs | 2 +- .../Nutrition/EntitySystems/FoodSystem.cs | 2 +- .../EntitySystems/CableMultitoolSystem.cs | 2 +- .../EntitySystems/PowerReceiverSystem.cs | 5 +- Content.Server/Prayer/PrayableComponent.cs | 6 +- Content.Server/Prayer/PrayerSystem.cs | 2 +- Content.Server/Rotatable/RotatableSystem.cs | 40 ++++---- Content.Server/Sticky/Systems/StickySystem.cs | 3 +- .../Storage/EntitySystems/DumpableSystem.cs | 3 +- .../Storage/EntitySystems/StorageSystem.cs | 12 ++- Content.Server/Strip/StrippableSystem.cs | 5 +- Content.Server/Tabletop/TabletopSystem.cs | 3 +- .../Weapons/Melee/MeleeWeaponSystem.cs | 3 +- .../Ranged/Systems/GunSystem.Battery.cs | 18 ++-- .../Ranged/Systems/GunSystem.Cartridges.cs | 3 +- .../Cabinet/SharedItemCabinetSystem.cs | 7 +- .../Containers/ItemSlot/ItemSlotsSystem.cs | 8 +- .../Examine/ExamineSystemShared.Group.cs | 4 +- .../Foldable/SharedFoldableSystem.cs | 13 +-- Content.Shared/Follower/FollowerSystem.cs | 3 +- Content.Shared/Item/SharedItemSystem.cs | 3 +- Content.Shared/Lock/LockSystem.cs | 5 +- Content.Shared/Verbs/Verb.cs | 16 +--- .../Systems/SharedGunSystem.Interactions.cs | 2 +- .../Fun/Instruments/instruments_misc.yml | 4 +- 53 files changed, 313 insertions(+), 271 deletions(-) diff --git a/Content.Client/Administration/Systems/AdminVerbSystem.cs b/Content.Client/Administration/Systems/AdminVerbSystem.cs index 9a6bfd705d..3a19463b9f 100644 --- a/Content.Client/Administration/Systems/AdminVerbSystem.cs +++ b/Content.Client/Administration/Systems/AdminVerbSystem.cs @@ -1,5 +1,6 @@ using Content.Shared.Verbs; using Robust.Client.Console; +using Robust.Shared.Utility; namespace Content.Client.Administration.Systems { @@ -26,7 +27,7 @@ namespace Content.Client.Administration.Systems Verb verb = new(); verb.Category = VerbCategory.Debug; verb.Text = "View Variables"; - verb.IconTexture = "/Textures/Interface/VerbIcons/vv.svg.192dpi.png"; + verb.Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/vv.svg.192dpi.png")); verb.Act = () => _clientConsoleHost.ExecuteCommand($"vv {args.Target}"); verb.ClientExclusive = true; // opening VV window is client-side. Don't ask server to run this verb. args.Verbs.Add(verb); diff --git a/Content.Client/Examine/ExamineButton.cs b/Content.Client/Examine/ExamineButton.cs index ed91121665..912b7dc9db 100644 --- a/Content.Client/Examine/ExamineButton.cs +++ b/Content.Client/Examine/ExamineButton.cs @@ -49,11 +49,9 @@ public sealed class ExamineButton : ContainerButton SetHeight = ElementHeight }; - if (verb.IconTexture != null) + if (verb.Icon != null) { - var icon = new SpriteSpecifier.Texture(new ResourcePath(verb.IconTexture)); - - Icon.Texture = icon.Frame0(); + Icon.Texture = verb.Icon.Frame0(); Icon.Stretch = TextureRect.StretchMode.KeepAspectCentered; AddChild(Icon); diff --git a/Content.Client/Examine/ExamineSystem.cs b/Content.Client/Examine/ExamineSystem.cs index acd62a9d39..3cb464f2fe 100644 --- a/Content.Client/Examine/ExamineSystem.cs +++ b/Content.Client/Examine/ExamineSystem.cs @@ -49,7 +49,7 @@ namespace Content.Client.Examine CommandBinds.Builder .Bind(ContentKeyFunctions.ExamineEntity, new PointerInputCmdHandler(HandleExamine, outsidePrediction: true)) .Register(); - + _idCounter = 0; } @@ -117,7 +117,7 @@ namespace Content.Client.Examine // Center it on the entity if they use the verb instead. verb.Act = () => DoExamine(args.Target, false); verb.Text = Loc.GetString("examine-verb-name"); - verb.IconTexture = "/Textures/Interface/VerbIcons/examine.svg.192dpi.png"; + verb.Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/examine.svg.192dpi.png")); verb.ShowOnExamineTooltip = false; verb.ClientExclusive = true; args.Verbs.Add(verb); @@ -132,7 +132,7 @@ namespace Content.Client.Examine // Prevent updating a new tooltip. if (ev.Id != 0 && ev.Id != _idCounter) return; - + // Tooltips coming in from the server generally prioritize // opening at the old tooltip rather than the cursor/another entity, // since there's probably one open already if it's coming in from the server. @@ -286,7 +286,7 @@ namespace Content.Client.Examine if (verb is not ExamineVerb examine) continue; - if (examine.IconTexture == null) + if (examine.Icon == null) continue; if (!examine.ShowOnExamineTooltip) diff --git a/Content.Client/Guidebook/GuidebookSystem.cs b/Content.Client/Guidebook/GuidebookSystem.cs index 009dca6df6..74991547cb 100644 --- a/Content.Client/Guidebook/GuidebookSystem.cs +++ b/Content.Client/Guidebook/GuidebookSystem.cs @@ -14,6 +14,7 @@ using Robust.Shared.Input; using Robust.Shared.Input.Binding; using Robust.Shared.Player; using Robust.Shared.Prototypes; +using Robust.Shared.Utility; namespace Content.Client.Guidebook; @@ -56,7 +57,7 @@ public sealed class GuidebookSystem : EntitySystem args.Verbs.Add(new() { Text = Loc.GetString("guide-help-verb"), - IconTexture = "/Textures/Interface/VerbIcons/information.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/information.svg.192dpi.png")), Act = () => OpenGuidebook(component.Guides, includeChildren: component.IncludeChildren, selected: component.Guides[0]), ClientExclusive = true, CloseMenu = true diff --git a/Content.Client/Pointing/PointingSystem.cs b/Content.Client/Pointing/PointingSystem.cs index 7978f604ec..884c5ba83c 100644 --- a/Content.Client/Pointing/PointingSystem.cs +++ b/Content.Client/Pointing/PointingSystem.cs @@ -4,6 +4,7 @@ using Content.Shared.Mobs.Systems; using Content.Shared.Pointing; using Content.Shared.Verbs; using Robust.Client.GameObjects; +using Robust.Shared.Utility; using DrawDepth = Content.Shared.DrawDepth.DrawDepth; namespace Content.Client.Pointing; @@ -54,7 +55,7 @@ public sealed class PointingSystem : SharedPointingSystem Verb verb = new() { Text = Loc.GetString("pointing-verb-get-data-text"), - IconTexture = "/Textures/Interface/VerbIcons/point.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/point.svg.192dpi.png")), ClientExclusive = true, Act = () => RaiseNetworkEvent(new PointingAttemptEvent(args.Target)) }; diff --git a/Content.Server/Access/Systems/IdExaminableSystem.cs b/Content.Server/Access/Systems/IdExaminableSystem.cs index 2e02b33cec..f6307f8c5d 100644 --- a/Content.Server/Access/Systems/IdExaminableSystem.cs +++ b/Content.Server/Access/Systems/IdExaminableSystem.cs @@ -36,7 +36,7 @@ public sealed class IdExaminableSystem : EntitySystem Category = VerbCategory.Examine, Disabled = !detailsRange, Message = Loc.GetString("id-examinable-component-verb-disabled"), - IconTexture = "/Textures/Interface/VerbIcons/information.svg.192dpi.png" + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/information.svg.192dpi.png")) }; args.Verbs.Add(verb); diff --git a/Content.Server/Administration/Notes/AdminNotesSystem.cs b/Content.Server/Administration/Notes/AdminNotesSystem.cs index 6e8c86d8ca..e36c69883c 100644 --- a/Content.Server/Administration/Notes/AdminNotesSystem.cs +++ b/Content.Server/Administration/Notes/AdminNotesSystem.cs @@ -3,6 +3,7 @@ using Content.Shared.Database; using Content.Shared.Verbs; using Robust.Server.GameObjects; using Robust.Shared.Console; +using Robust.Shared.Utility; namespace Content.Server.Administration.Notes; @@ -33,7 +34,7 @@ public sealed class AdminNotesSystem : EntitySystem { Text = Loc.GetString("admin-notes-verb-text"), Category = VerbCategory.Admin, - IconTexture = "/Textures/Interface/VerbIcons/examine.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/examine.svg.192dpi.png")), Act = () => _console.RemoteExecuteCommand(user, $"{OpenAdminNotesCommand.CommandName} \"{target.UserId}\""), Impact = LogImpact.Low }; diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs b/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs index e6f219f32a..b134d15fb3 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs @@ -6,6 +6,7 @@ using Content.Shared.Database; using Content.Shared.Verbs; using Robust.Server.GameObjects; using Robust.Shared.Configuration; +using Robust.Shared.Utility; namespace Content.Server.Administration.Systems; @@ -35,7 +36,7 @@ public sealed partial class AdminVerbSystem { Text = "Make Traitor", Category = VerbCategory.Antag, - IconTexture = "/Textures/Structures/Wallmounts/posters.rsi/poster5_contraband.png", + Icon = new SpriteSpecifier.Rsi((new ResourcePath("/Textures/Structures/Wallmounts/posters.rsi")), "poster5_contraband"), Act = () => { if (targetMindComp.Mind == null || targetMindComp.Mind.Session == null) @@ -52,7 +53,7 @@ public sealed partial class AdminVerbSystem { Text = "Make Zombie", Category = VerbCategory.Antag, - IconTexture = "/Textures/Structures/Wallmounts/signs.rsi/bio.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Structures/Wallmounts/signs.rsi"), "bio"), Act = () => { TryComp(args.Target, out MindComponent? mindComp); @@ -71,7 +72,7 @@ public sealed partial class AdminVerbSystem { Text = "Make nuclear operative", Category = VerbCategory.Antag, - IconTexture = "/Textures/Structures/Wallmounts/signs.rsi/radiation.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Structures/Wallmounts/signs.rsi"), "radiation"), Act = () => { if (targetMindComp.Mind == null || targetMindComp.Mind.Session == null) @@ -88,7 +89,7 @@ public sealed partial class AdminVerbSystem { Text = "Make Pirate", Category = VerbCategory.Antag, - IconTexture = "/Textures/Clothing/Head/Hats/pirate.rsi/icon.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Clothing/Head/Hats/pirate.rsi"), "icon"), Act = () => { if (targetMindComp.Mind == null || targetMindComp.Mind.Session == null) diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs b/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs index 9d54c15150..2b7a843674 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs @@ -50,6 +50,7 @@ using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Systems; using Robust.Shared.Player; using Robust.Shared.Random; +using Robust.Shared.Utility; using Timer = Robust.Shared.Timing.Timer; namespace Content.Server.Administration.Systems; @@ -71,7 +72,6 @@ public sealed partial class AdminVerbSystem [Dependency] private readonly InventorySystem _inventorySystem = default!; [Dependency] private readonly MovementSpeedModifierSystem _movementSpeedModifierSystem = default!; [Dependency] private readonly PolymorphableSystem _polymorphableSystem = default!; - [Dependency] private readonly MobStateSystem _mobStateSystem = default!; [Dependency] private readonly MobThresholdSystem _mobThresholdSystem = default!; [Dependency] private readonly PopupSystem _popupSystem = default!; [Dependency] private readonly SharedPhysicsSystem _physics = default!; @@ -98,7 +98,7 @@ public sealed partial class AdminVerbSystem { Text = "Explode", Category = VerbCategory.Smite, - IconTexture = "/Textures/Interface/VerbIcons/smite.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/smite.svg.192dpi.png")), Act = () => { var coords = Transform(args.Target).MapPosition; @@ -118,7 +118,7 @@ public sealed partial class AdminVerbSystem { Text = "Chess Dimension", Category = VerbCategory.Smite, - IconTexture = "/Textures/Objects/Fun/Tabletop/chessboard.rsi/chessboard.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Objects/Fun/Tabletop/chessboard.rsi"), "chessboard"), Act = () => { _godmodeSystem.EnableGodmode(args.Target); // So they don't suffocate. @@ -146,7 +146,7 @@ public sealed partial class AdminVerbSystem { Text = "Set Alight", Category = VerbCategory.Smite, - IconTexture = "/Textures/Interface/Alerts/Fire/fire.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/Alerts/Fire/fire.png")), Act = () => { // Fuck you. Burn Forever. @@ -168,7 +168,7 @@ public sealed partial class AdminVerbSystem { Text = "Monkeyify", Category = VerbCategory.Smite, - IconTexture = "/Textures/Mobs/Animals/monkey.rsi/dead.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Mobs/Animals/monkey.rsi"), "dead"), Act = () => { _polymorphableSystem.PolymorphEntity(args.Target, "AdminMonkeySmite"); @@ -182,7 +182,7 @@ public sealed partial class AdminVerbSystem { Text = "Garbage Can", Category = VerbCategory.Smite, - IconTexture = "/Textures/Structures/Piping/disposal.rsi/disposal.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Structures/Piping/disposal.rsi"), "disposal"), Act = () => { _polymorphableSystem.PolymorphEntity(args.Target, "AdminDisposalsSmite"); @@ -198,7 +198,7 @@ public sealed partial class AdminVerbSystem { Text = "Lung Cancer", Category = VerbCategory.Smite, - IconTexture = "/Textures/Mobs/Species/Human/organs.rsi/lung-l.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Mobs/Species/Human/organs.rsi"), "lung-l"), Act = () => { _diseaseSystem.TryInfect(carrier, _prototypeManager.Index("StageIIIALungCancer"), @@ -211,13 +211,13 @@ public sealed partial class AdminVerbSystem } if (TryComp(args.Target, out var damageable) && - TryComp(args.Target, out var mobState)) + HasComp(args.Target)) { Verb hardElectrocute = new() { Text = "Electrocute", Category = VerbCategory.Smite, - IconTexture = "/Textures/Clothing/Hands/Gloves/Color/yellow.rsi/icon.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Clothing/Hands/Gloves/Color/yellow.rsi"), "icon"), Act = () => { int damageToDeal; @@ -262,7 +262,7 @@ public sealed partial class AdminVerbSystem { Text = "Creampie", Category = VerbCategory.Smite, - IconTexture = "/Textures/Objects/Consumable/Food/Baked/pie.rsi/plain-slice.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Objects/Consumable/Food/Baked/pie.rsi"), "plain-slice"), Act = () => { _creamPieSystem.SetCreamPied(args.Target, creamPied, true); @@ -279,7 +279,7 @@ public sealed partial class AdminVerbSystem { Text = "Remove blood", Category = VerbCategory.Smite, - IconTexture = "/Textures/Fluids/tomato_splat.rsi/puddle-1.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Fluids/tomato_splat.rsi"), "puddle-1"), Act = () => { _bloodstreamSystem.SpillAllSolutions(args.Target, bloodstream); @@ -302,7 +302,7 @@ public sealed partial class AdminVerbSystem { Text = "Vomit organs", Category = VerbCategory.Smite, - IconTexture = "/Textures/Fluids/vomit_toxin.rsi/vomit_toxin-1.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Fluids/vomit_toxin.rsi"), "vomit_toxin-1"), Act = () => { _vomitSystem.Vomit(args.Target, -1000, -1000); // You feel hollow! @@ -331,7 +331,7 @@ public sealed partial class AdminVerbSystem { Text = "Remove hands", Category = VerbCategory.Smite, - IconTexture = "/Textures/Interface/AdminActions/remove-hands.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/remove-hands.png")), Act = () => { var baseXform = Transform(args.Target); @@ -353,7 +353,7 @@ public sealed partial class AdminVerbSystem { Text = "Remove hands", Category = VerbCategory.Smite, - IconTexture = "/Textures/Interface/AdminActions/remove-hand.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/remove-hand.png")), Act = () => { var baseXform = Transform(args.Target); @@ -376,7 +376,7 @@ public sealed partial class AdminVerbSystem { Text = "Stomach Removal", Category = VerbCategory.Smite, - IconTexture = "/Textures/Mobs/Species/Human/organs.rsi/stomach.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Mobs/Species/Human/organs.rsi"), "stomach"), Act = () => { foreach (var (component, _) in _bodySystem.GetBodyOrganComponents(args.Target, body)) @@ -396,7 +396,7 @@ public sealed partial class AdminVerbSystem { Text = "Lungs Removal", Category = VerbCategory.Smite, - IconTexture = "/Textures/Mobs/Species/Human/organs.rsi/lung-r.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Mobs/Species/Human/organs.rsi"), "lung-r"), Act = () => { foreach (var (component, _) in _bodySystem.GetBodyOrganComponents(args.Target, body)) @@ -419,7 +419,7 @@ public sealed partial class AdminVerbSystem { Text = "Pinball", Category = VerbCategory.Smite, - IconTexture = "/Textures/Objects/Fun/toys.rsi/basketball.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Objects/Fun/toys.rsi"), "basketball"), Act = () => { var xform = Transform(args.Target); @@ -453,7 +453,7 @@ public sealed partial class AdminVerbSystem { Text = "Yeet", Category = VerbCategory.Smite, - IconTexture = "/Textures/Interface/VerbIcons/eject.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/eject.svg.192dpi.png")), Act = () => { var xform = Transform(args.Target); @@ -484,7 +484,7 @@ public sealed partial class AdminVerbSystem { Text = "Become Bread", Category = VerbCategory.Smite, - IconTexture = "/Textures/Objects/Consumable/Food/Baked/bread.rsi/plain.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Objects/Consumable/Food/Baked/bread.rsi"), "plain"), Act = () => { _polymorphableSystem.PolymorphEntity(args.Target, "AdminBreadSmite"); @@ -498,7 +498,7 @@ public sealed partial class AdminVerbSystem { Text = "Become Mouse", Category = VerbCategory.Smite, - IconTexture = "/Textures/Mobs/Animals/mouse.rsi/icon-0.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Mobs/Animals/mouse.rsi"), "icon-0"), Act = () => { _polymorphableSystem.PolymorphEntity(args.Target, "AdminMouseSmite"); @@ -514,7 +514,7 @@ public sealed partial class AdminVerbSystem { Text = "Ghostkick", Category = VerbCategory.Smite, - IconTexture = "/Textures/Interface/gavel.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/gavel.svg.192dpi.png")), Act = () => { _ghostKickManager.DoDisconnect(actorComponent.PlayerSession.ConnectedClient, "Smitten."); @@ -530,7 +530,7 @@ public sealed partial class AdminVerbSystem { Text = "Nyanify", Category = VerbCategory.Smite, - IconTexture = "/Textures/Clothing/Head/Hats/catears.rsi/icon.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Clothing/Head/Hats/catears.rsi"), "icon"), Act = () => { var ears = Spawn("ClothingHeadHatCatEars", Transform(args.Target).Coordinates); @@ -547,7 +547,7 @@ public sealed partial class AdminVerbSystem { Text = "Kill sign", Category = VerbCategory.Smite, - IconTexture = "/Textures/Objects/Misc/killsign.rsi/icon.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Objects/Misc/killsign.rsi"), "icon"), Act = () => { EnsureComp(args.Target); @@ -562,7 +562,7 @@ public sealed partial class AdminVerbSystem { Text = "Clown", Category = VerbCategory.Smite, - IconTexture = "/Textures/Objects/Fun/bikehorn.rsi/icon.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Objects/Fun/bikehorn.rsi"), "icon"), Act = () => { SetOutfitCommand.SetOutfit(args.Target, "ClownGear", EntityManager, (_, clothing) => @@ -581,7 +581,7 @@ public sealed partial class AdminVerbSystem { Text = "Maid", Category = VerbCategory.Smite, - IconTexture = "/Textures/Clothing/Uniforms/Jumpskirt/janimaid.rsi/icon.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Clothing/Uniforms/Jumpskirt/janimaid.rsi"), "icon"), Act = () => { SetOutfitCommand.SetOutfit(args.Target, "JanitorMaidGear", EntityManager, (_, clothing) => @@ -595,15 +595,13 @@ public sealed partial class AdminVerbSystem Message = Loc.GetString("admin-smite-maid-description") }; args.Verbs.Add(maiden); - - } Verb angerPointingArrows = new() { Text = "Anger Pointing Arrows", Category = VerbCategory.Smite, - IconTexture = "/Textures/Interface/Misc/pointing.rsi/pointing.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Interface/Misc/pointing.rsi"), "pointing"), Act = () => { EnsureComp(args.Target); @@ -617,7 +615,7 @@ public sealed partial class AdminVerbSystem { Text = "Dust", Category = VerbCategory.Smite, - IconTexture = "/Textures/Objects/Materials/materials.rsi/ash.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Objects/Materials/materials"), "ash"), Act = () => { EntityManager.QueueDeleteEntity(args.Target); @@ -633,7 +631,7 @@ public sealed partial class AdminVerbSystem { Text = "Buffering", Category = VerbCategory.Smite, - IconTexture = "/Textures/Interface/Misc/buffering_smite_icon.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/Misc/buffering_smite_icon.png")), Act = () => { EnsureComp(args.Target); @@ -647,7 +645,7 @@ public sealed partial class AdminVerbSystem { Text = "Become Instrument", Category = VerbCategory.Smite, - IconTexture = "/Textures/Objects/Fun/Instruments/h_synthesizer.rsi/icon.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Objects/Fun/Instruments/h_synthesizer.rsi"), "icon"), Act = () => { _polymorphableSystem.PolymorphEntity(args.Target, "AdminInstrumentSmite"); @@ -661,7 +659,7 @@ public sealed partial class AdminVerbSystem { Text = "Remove gravity", Category = VerbCategory.Smite, - IconTexture = "/Textures/Structures/Machines/gravity_generator.rsi/off.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Structures/Machines/gravity_generator.rsi"), "off"), Act = () => { var grav = EnsureComp(args.Target); @@ -678,7 +676,7 @@ public sealed partial class AdminVerbSystem { Text = "Reptilian Species Swap", Category = VerbCategory.Smite, - IconTexture = "/Textures/Objects/Fun/toys.rsi/plushie_lizard.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Objects/Fun/toys.rsi"), "plushie_lizard"), Act = () => { _polymorphableSystem.PolymorphEntity(args.Target, "AdminLizardSmite"); @@ -692,7 +690,7 @@ public sealed partial class AdminVerbSystem { Text = "Locker stuff", Category = VerbCategory.Smite, - IconTexture = "/Textures/Structures/Storage/closet.rsi/generic.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Structures/Storage/closet.rsi"), "generic"), Act = () => { var xform = Transform(args.Target); @@ -714,7 +712,7 @@ public sealed partial class AdminVerbSystem { Text = "Headstand", Category = VerbCategory.Smite, - IconTexture = "/Textures/Interface/VerbIcons/refresh.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/refresh.svg.192dpi.png")), Act = () => { EnsureComp(args.Target); @@ -728,7 +726,7 @@ public sealed partial class AdminVerbSystem { Text = "Zoom in", Category = VerbCategory.Smite, - IconTexture = "/Textures/Interface/AdminActions/zoom.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/zoom.png")), Act = () => { var eye = EnsureComp(args.Target); @@ -746,7 +744,7 @@ public sealed partial class AdminVerbSystem { Text = "Flip eye", Category = VerbCategory.Smite, - IconTexture = "/Textures/Interface/AdminActions/flip.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/flip.png")), Act = () => { var eye = EnsureComp(args.Target); @@ -764,7 +762,7 @@ public sealed partial class AdminVerbSystem { Text = "Run Walk Swap", Category = VerbCategory.Smite, - IconTexture = "/Textures/Interface/AdminActions/run-walk-swap.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/run-walk-swap.png")), Act = () => { var movementSpeed = EnsureComp(args.Target); @@ -784,7 +782,7 @@ public sealed partial class AdminVerbSystem { Text = "Speak Backwards", Category = VerbCategory.Smite, - IconTexture = "/Textures/Interface/AdminActions/help-backwards.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/help-backwards.png")), Act = () => { EnsureComp(args.Target); @@ -798,7 +796,7 @@ public sealed partial class AdminVerbSystem { Text = "Disarm Prone", Category = VerbCategory.Smite, - IconTexture = "/Textures/Interface/Actions/disarm.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/Actions/disarm.png")), Act = () => { EnsureComp(args.Target); @@ -812,7 +810,7 @@ public sealed partial class AdminVerbSystem { Text = "Super speed", Category = VerbCategory.Smite, - IconTexture = "/Textures/Interface/AdminActions/super_speed.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/super_speed.png")), Act = () => { var movementSpeed = EnsureComp(args.Target); diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs b/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs index 4c3cd042f3..173a0b36f4 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs @@ -36,6 +36,7 @@ using Robust.Shared.Map.Components; using Robust.Shared.Physics; using Robust.Shared.Physics.Components; using Robust.Shared.Prototypes; +using Robust.Shared.Utility; namespace Content.Server.Administration.Systems; @@ -68,9 +69,9 @@ public sealed partial class AdminVerbSystem { Text = airlock.BoltsDown ? "Unbolt" : "Bolt", Category = VerbCategory.Tricks, - IconTexture = airlock.BoltsDown - ? "/Textures/Interface/AdminActions/unbolt.png" - : "/Textures/Interface/AdminActions/bolt.png", + Icon = airlock.BoltsDown + ? new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/unbolt.png")) + : new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/bolt.png")), Act = () => { _airlockSystem.SetBoltsWithAudio(args.Target, airlock, !airlock.BoltsDown); @@ -88,7 +89,7 @@ public sealed partial class AdminVerbSystem { Text = airlock.EmergencyAccess ? "Emergency Access Off" : "Emergency Access On", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Interface/AdminActions/emergency_access.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/emergency_access.png")), Act = () => { _airlockSystem.ToggleEmergencyAccess(args.Target, airlock); @@ -110,7 +111,7 @@ public sealed partial class AdminVerbSystem { Text = "Rejuvenate", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Interface/AdminActions/rejuvenate.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/rejuvenate.png")), Act = () => { RejuvenateCommand.PerformRejuvenate(args.Target); @@ -128,7 +129,7 @@ public sealed partial class AdminVerbSystem { Text = "Make Indestructible", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Interface/VerbIcons/plus.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/plus.svg.192dpi.png")), Act = () => { _godmodeSystem.EnableGodmode(args.Target); @@ -145,7 +146,7 @@ public sealed partial class AdminVerbSystem { Text = "Make Vulnerable", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Interface/VerbIcons/plus.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/plus.svg.192dpi.png")), Act = () => { _godmodeSystem.DisableGodmode(args.Target); @@ -163,7 +164,7 @@ public sealed partial class AdminVerbSystem { Text = "Refill Battery", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Interface/AdminActions/fill_battery.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/fill_battery.png")), Act = () => { battery.CurrentCharge = battery.MaxCharge; @@ -179,7 +180,7 @@ public sealed partial class AdminVerbSystem { Text = "Drain Battery", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Interface/AdminActions/drain_battery.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/drain_battery.png")), Act = () => { battery.CurrentCharge = 0; @@ -195,7 +196,7 @@ public sealed partial class AdminVerbSystem { Text = "Infinite Battery", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Interface/AdminActions/infinite_battery.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/infinite_battery.png")), Act = () => { var recharger = EnsureComp(args.Target); @@ -215,7 +216,7 @@ public sealed partial class AdminVerbSystem { Text = "Block Unanchoring", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Interface/VerbIcons/anchor.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/anchor.svg.192dpi.png")), Act = () => { RemComp(args.Target, anchor); @@ -233,7 +234,7 @@ public sealed partial class AdminVerbSystem { Text = "Refill Internals Oxygen", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Objects/Tanks/oxygen.rsi/icon.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Objects/Tanks/oxygen.rsi"), "icon"), Act = () => { RefillGasTank(args.Target, Gas.Oxygen, tank); @@ -248,7 +249,7 @@ public sealed partial class AdminVerbSystem { Text = "Refill Internals Nitrogen", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Objects/Tanks/red.rsi/icon.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Objects/Tanks/red.rsi"), "icon"), Act = () => { RefillGasTank(args.Target, Gas.Nitrogen, tank); @@ -263,7 +264,7 @@ public sealed partial class AdminVerbSystem { Text = "Refill Internals Plasma", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Objects/Tanks/plasma.rsi/icon.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Objects/Tanks/plasma.rsi"), "icon"), Act = () => { RefillGasTank(args.Target, Gas.Plasma, tank); @@ -275,13 +276,13 @@ public sealed partial class AdminVerbSystem args.Verbs.Add(refillInternalsPlasma); } - if (TryComp(args.Target, out var inventory)) + if (HasComp(args.Target)) { Verb refillInternalsO2 = new() { Text = "Refill Internals Oxygen", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Objects/Tanks/oxygen.rsi/icon.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Objects/Tanks/oxygen.rsi"), "icon"), Act = () => { foreach (var slot in _inventorySystem.GetSlots(args.Target)) @@ -289,7 +290,7 @@ public sealed partial class AdminVerbSystem if (!_inventorySystem.TryGetSlotEntity(args.Target, slot.Name, out var entity)) continue; - if (!TryComp(entity, out var tank)) + if (!TryComp(entity, out tank)) continue; RefillGasTank(entity.Value, Gas.Oxygen, tank); @@ -297,7 +298,7 @@ public sealed partial class AdminVerbSystem foreach (var held in _handsSystem.EnumerateHeld(args.Target)) { - if (!TryComp(held, out var tank)) + if (!TryComp(held, out tank)) continue; RefillGasTank(held, Gas.Oxygen, tank); @@ -313,7 +314,7 @@ public sealed partial class AdminVerbSystem { Text = "Refill Internals Nitrogen", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Objects/Tanks/red.rsi/icon.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Objects/Tanks/red.rsi"), "icon"), Act = () => { foreach (var slot in _inventorySystem.GetSlots(args.Target)) @@ -321,7 +322,7 @@ public sealed partial class AdminVerbSystem if (!_inventorySystem.TryGetSlotEntity(args.Target, slot.Name, out var entity)) continue; - if (!TryComp(entity, out var tank)) + if (!TryComp(entity, out tank)) continue; RefillGasTank(entity.Value, Gas.Nitrogen, tank); @@ -329,7 +330,7 @@ public sealed partial class AdminVerbSystem foreach (var held in _handsSystem.EnumerateHeld(args.Target)) { - if (!TryComp(held, out var tank)) + if (!TryComp(held, out tank)) continue; RefillGasTank(held, Gas.Nitrogen, tank); @@ -345,7 +346,7 @@ public sealed partial class AdminVerbSystem { Text = "Refill Internals Plasma", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Objects/Tanks/plasma.rsi/icon.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Objects/Tanks/plasma.rsi"), "icon"), Act = () => { foreach (var slot in _inventorySystem.GetSlots(args.Target)) @@ -353,7 +354,7 @@ public sealed partial class AdminVerbSystem if (!_inventorySystem.TryGetSlotEntity(args.Target, slot.Name, out var entity)) continue; - if (!TryComp(entity, out var tank)) + if (!TryComp(entity, out tank)) continue; RefillGasTank(entity.Value, Gas.Plasma, tank); @@ -361,7 +362,7 @@ public sealed partial class AdminVerbSystem foreach (var held in _handsSystem.EnumerateHeld(args.Target)) { - if (!TryComp(held, out var tank)) + if (!TryComp(held, out tank)) continue; RefillGasTank(held, Gas.Plasma, tank); @@ -378,7 +379,7 @@ public sealed partial class AdminVerbSystem { Text = "Send to test arena", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Interface/VerbIcons/eject.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/eject.svg.192dpi.png")), Act = () => { @@ -399,7 +400,7 @@ public sealed partial class AdminVerbSystem { Text = "Grant All Access", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Objects/Misc/id_cards.rsi/centcom.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Objects/Misc/id_cards.rsi"), "centcom"), Act = () => { GiveAllAccess(activeId.Value); @@ -414,7 +415,7 @@ public sealed partial class AdminVerbSystem { Text = "Revoke All Access", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Objects/Misc/id_cards.rsi/default.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Objects/Misc/id_cards.rsi"), "default"), Act = () => { RevokeAllAccess(activeId.Value); @@ -432,7 +433,7 @@ public sealed partial class AdminVerbSystem { Text = "Grant All Access", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Objects/Misc/id_cards.rsi/centcom.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Objects/Misc/id_cards.rsi"), "centcom"), Act = () => { GiveAllAccess(args.Target); @@ -447,7 +448,7 @@ public sealed partial class AdminVerbSystem { Text = "Revoke All Access", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Objects/Misc/id_cards.rsi/default.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Objects/Misc/id_cards.rsi"), "default"), Act = () => { RevokeAllAccess(args.Target); @@ -466,7 +467,7 @@ public sealed partial class AdminVerbSystem { Text = "Adjust Stack", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Interface/AdminActions/adjust-stack.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/adjust-stack.png")), Act = () => { // Unbounded intentionally. @@ -485,7 +486,7 @@ public sealed partial class AdminVerbSystem { Text = "Fill Stack", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Interface/AdminActions/fill-stack.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/fill-stack.png")), Act = () => { _stackSystem.SetCount(args.Target, _stackSystem.GetMaxCount(stack), stack); @@ -501,7 +502,7 @@ public sealed partial class AdminVerbSystem { Text = "Rename", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Interface/AdminActions/rename.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/rename.png")), Act = () => { _quickDialog.OpenDialog(player, "Rename", "Name", (string newName) => @@ -519,7 +520,7 @@ public sealed partial class AdminVerbSystem { Text = "Redescribe", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Interface/AdminActions/redescribe.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/redescribe.png")), Act = () => { _quickDialog.OpenDialog(player, "Redescribe", "Description", (LongString newDescription) => @@ -537,7 +538,7 @@ public sealed partial class AdminVerbSystem { Text = "Redescribe", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Interface/AdminActions/rename_and_redescribe.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/rename_and_redescribe.png")), Act = () => { _quickDialog.OpenDialog(player, "Rename & Redescribe", "Name", "Description", @@ -562,7 +563,7 @@ public sealed partial class AdminVerbSystem { Text = "Bar job slots", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Interface/AdminActions/bar_jobslots.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/bar_jobslots.png")), Act = () => { foreach (var (job, _) in _stationJobsSystem.GetJobs(args.Target)) @@ -581,7 +582,7 @@ public sealed partial class AdminVerbSystem { Text = "Locate Cargo Shuttle", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Clothing/Head/Soft/cargosoft.rsi/icon.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Clothing/Head/Soft/cargosoft.rsi"), "icon"), Act = () => { var shuttle = Comp(args.Target).Shuttle; @@ -604,7 +605,7 @@ public sealed partial class AdminVerbSystem { Text = "Refill Battery", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Interface/AdminActions/fill_battery.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/fill_battery.png")), Act = () => { foreach (var ent in childEnum) @@ -626,7 +627,7 @@ public sealed partial class AdminVerbSystem { Text = "Drain Battery", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Interface/AdminActions/drain_battery.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/drain_battery.png")), Act = () => { foreach (var ent in childEnum) @@ -648,7 +649,7 @@ public sealed partial class AdminVerbSystem { Text = "Infinite Battery", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Interface/AdminActions/infinite_battery.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/infinite_battery.png")), Act = () => { // this kills the sloth @@ -677,7 +678,7 @@ public sealed partial class AdminVerbSystem { Text = "Halt Movement", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Interface/AdminActions/halt.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/halt.png")), Act = () => { _physics.SetLinearVelocity(args.Target, Vector2.Zero, body: physics); @@ -700,7 +701,7 @@ public sealed partial class AdminVerbSystem { Text = "Unpause Map", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Interface/AdminActions/play.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/play.png")), Act = () => { _mapManager.SetMapPaused(map.WorldMap, false); @@ -717,7 +718,7 @@ public sealed partial class AdminVerbSystem { Text = "Pause Map", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Interface/AdminActions/pause.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/pause.png")), Act = () => { _mapManager.SetMapPaused(map.WorldMap, true); @@ -737,7 +738,7 @@ public sealed partial class AdminVerbSystem { Text = "Snap Joints", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Interface/AdminActions/snap_joints.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/AdminActions/snap_joints.png")), Act = () => { _jointSystem.ClearJoints(joints); @@ -755,7 +756,7 @@ public sealed partial class AdminVerbSystem { Text = "Make Minigun", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Objects/Weapons/Guns/HMGs/minigun.rsi/icon.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Objects/Weapons/Guns/HMGs/minigun.rsi"), "icon"), Act = () => { gun.FireRate = 15; @@ -773,7 +774,7 @@ public sealed partial class AdminVerbSystem { Text = "Set Bullet Amount", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Objects/Fun/caps.rsi/mag-6.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Objects/Fun/caps.rsi"), "mag-6"), Act = () => { _quickDialog.OpenDialog(player, "Set Bullet Amount", $"Amount (max {ballisticAmmo.Capacity}):", (int amount) => diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.cs b/Content.Server/Administration/Systems/AdminVerbSystem.cs index 0ad22dbf5e..7b1def620b 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.cs @@ -29,6 +29,7 @@ using Robust.Shared.Console; using Robust.Shared.Map; using Robust.Shared.Prototypes; using Robust.Shared.Timing; +using Robust.Shared.Utility; using static Content.Shared.Configurable.ConfigurationComponent; namespace Content.Server.Administration.Systems @@ -79,7 +80,7 @@ namespace Content.Server.Administration.Systems Verb verb = new(); verb.Text = Loc.GetString("ahelp-verb-get-data-text"); verb.Category = VerbCategory.Admin; - verb.IconTexture = "/Textures/Interface/gavel.svg.192dpi.png"; + verb.Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/gavel.svg.192dpi.png")); verb.Act = () => _console.RemoteExecuteCommand(player, $"openahelp \"{targetActor.PlayerSession.UserId}\""); verb.Impact = LogImpact.Low; @@ -89,7 +90,7 @@ namespace Content.Server.Administration.Systems Verb prayerVerb = new(); prayerVerb.Text = Loc.GetString("prayer-verbs-subtle-message"); prayerVerb.Category = VerbCategory.Admin; - prayerVerb.IconTexture = "/Textures/Interface/pray.svg.png"; + prayerVerb.Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/pray.svg.png")); prayerVerb.Act = () => { _quickDialog.OpenDialog(player, "Subtle Message", "Message", "Popup Message", (string message, string popupMessage) => @@ -109,7 +110,7 @@ namespace Content.Server.Administration.Systems ? Loc.GetString("admin-verbs-unfreeze") : Loc.GetString("admin-verbs-freeze"), Category = VerbCategory.Admin, - IconTexture = "/Textures/Interface/VerbIcons/snow.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/snow.svg.192dpi.png")), Act = () => { if (frozen) @@ -145,7 +146,7 @@ namespace Content.Server.Administration.Systems { Text = Loc.GetString("admin-verbs-teleport-to"), Category = VerbCategory.Admin, - IconTexture = "/Textures/Interface/VerbIcons/open.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/open.svg.192dpi.png")), Act = () => _console.ExecuteCommand(player, $"tpto {args.Target}"), Impact = LogImpact.Low }); @@ -155,7 +156,7 @@ namespace Content.Server.Administration.Systems { Text = Loc.GetString("admin-verbs-teleport-here"), Category = VerbCategory.Admin, - IconTexture = "/Textures/Interface/VerbIcons/close.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/close.svg.192dpi.png")), Act = () => _console.ExecuteCommand(player, $"tpto {args.Target} {args.User}"), Impact = LogImpact.Low }); @@ -194,7 +195,7 @@ namespace Content.Server.Administration.Systems { Text = Loc.GetString("delete-verb-get-data-text"), Category = VerbCategory.Debug, - IconTexture = "/Textures/Interface/VerbIcons/delete_transparent.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/delete_transparent.svg.192dpi.png")), Act = () => EntityManager.DeleteEntity(args.Target), Impact = LogImpact.Medium, ConfirmationPopup = true @@ -209,7 +210,7 @@ namespace Content.Server.Administration.Systems { Text = Loc.GetString("rejuvenate-verb-get-data-text"), Category = VerbCategory.Debug, - IconTexture = "/Textures/Interface/VerbIcons/rejuvenate.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/rejuvenate.svg.192dpi.png")), Act = () => RejuvenateCommand.PerformRejuvenate(args.Target), Impact = LogImpact.Medium }; @@ -268,7 +269,7 @@ namespace Content.Server.Administration.Systems { Text = Loc.GetString("make-sentient-verb-get-data-text"), Category = VerbCategory.Debug, - IconTexture = "/Textures/Interface/VerbIcons/sentient.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/sentient.svg.192dpi.png")), Act = () => MakeSentientCommand.MakeSentient(args.Target, EntityManager), Impact = LogImpact.Medium }; @@ -283,7 +284,7 @@ namespace Content.Server.Administration.Systems { Text = Loc.GetString("set-outfit-verb-get-data-text"), Category = VerbCategory.Debug, - IconTexture = "/Textures/Interface/VerbIcons/outfit.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/outfit.svg.192dpi.png")), Act = () => _euiManager.OpenEui(new SetOutfitEui(args.Target), player), Impact = LogImpact.Medium }; @@ -297,7 +298,7 @@ namespace Content.Server.Administration.Systems { Text = Loc.GetString("in-range-unoccluded-verb-get-data-text"), Category = VerbCategory.Debug, - IconTexture = "/Textures/Interface/VerbIcons/information.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/information.svg.192dpi.png")), Act = () => { var message = args.User.InRangeUnOccluded(args.Target) @@ -317,7 +318,7 @@ namespace Content.Server.Administration.Systems { Text = Loc.GetString("tube-direction-verb-get-data-text"), Category = VerbCategory.Debug, - IconTexture = "/Textures/Interface/VerbIcons/information.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/information.svg.192dpi.png")), Act = () => tube.PopupDirections(args.User) }; args.Verbs.Add(verb); @@ -343,7 +344,7 @@ namespace Content.Server.Administration.Systems Verb verb = new() { Text = Loc.GetString("configure-verb-get-data-text"), - IconTexture = "/Textures/Interface/VerbIcons/settings.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/settings.svg.192dpi.png")), Category = VerbCategory.Debug, Act = () => _uiSystem.TryOpen(args.Target, ConfigurationUiKey.Key, actor.PlayerSession) }; @@ -358,7 +359,7 @@ namespace Content.Server.Administration.Systems { Text = Loc.GetString("edit-solutions-verb-get-data-text"), Category = VerbCategory.Debug, - IconTexture = "/Textures/Interface/VerbIcons/spill.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/spill.svg.192dpi.png")), Act = () => OpenEditSolutionsEui(player, args.Target), Impact = LogImpact.Medium // maybe high depending on WHAT reagents they add... }; diff --git a/Content.Server/Body/Systems/InternalsSystem.cs b/Content.Server/Body/Systems/InternalsSystem.cs index db9aff7e88..ed6ed288cc 100644 --- a/Content.Server/Body/Systems/InternalsSystem.cs +++ b/Content.Server/Body/Systems/InternalsSystem.cs @@ -11,6 +11,7 @@ using Content.Shared.Verbs; using Content.Server.Popups; using Content.Server.DoAfter; using Content.Shared.DoAfter; +using Robust.Shared.Utility; namespace Content.Server.Body.Systems; @@ -48,7 +49,7 @@ public sealed class InternalsSystem : EntitySystem ToggleInternals(uid, args.User, false, component); }, Message = Loc.GetString("action-description-internals-toggle"), - IconTexture = "/Textures/Interface/VerbIcons/dot.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/dot.svg.192dpi.png")), Text = Loc.GetString("action-name-internals-toggle"), }; diff --git a/Content.Server/Buckle/Systems/BuckleSystem.Buckle.cs b/Content.Server/Buckle/Systems/BuckleSystem.Buckle.cs index 32d2a9ba02..798c83e362 100644 --- a/Content.Server/Buckle/Systems/BuckleSystem.Buckle.cs +++ b/Content.Server/Buckle/Systems/BuckleSystem.Buckle.cs @@ -15,6 +15,7 @@ using Content.Shared.Stunnable; using Content.Shared.Vehicle.Components; using Content.Shared.Verbs; using Robust.Shared.GameStates; +using Robust.Shared.Utility; namespace Content.Server.Buckle.Systems; @@ -44,7 +45,7 @@ public sealed partial class BuckleSystem { Act = () => TryUnbuckle(uid, args.User, buckle: component), Text = Loc.GetString("verb-categories-unbuckle"), - IconTexture = "/Textures/Interface/VerbIcons/unbuckle.svg.192dpi.png" + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/unbuckle.svg.192dpi.png")) }; if (args.Target == args.User && args.Using == null) diff --git a/Content.Server/Clothing/Systems/ChameleonClothingSystem.cs b/Content.Server/Clothing/Systems/ChameleonClothingSystem.cs index 33c4a44098..718627812f 100644 --- a/Content.Server/Clothing/Systems/ChameleonClothingSystem.cs +++ b/Content.Server/Clothing/Systems/ChameleonClothingSystem.cs @@ -7,6 +7,7 @@ using Content.Shared.Verbs; using Robust.Server.GameObjects; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; +using Robust.Shared.Utility; namespace Content.Server.Clothing.Systems; @@ -47,7 +48,7 @@ public sealed class ChameleonClothingSystem : SharedChameleonClothingSystem args.Verbs.Add(new InteractionVerb() { Text = Loc.GetString("chameleon-component-verb-text"), - IconTexture = "/Textures/Interface/VerbIcons/settings.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/settings.svg.192dpi.png")), Act = () => TryOpenUi(uid, args.User, component) }); } diff --git a/Content.Server/Construction/ConstructionSystem.Guided.cs b/Content.Server/Construction/ConstructionSystem.Guided.cs index 8c59706d0f..3a684aa94f 100644 --- a/Content.Server/Construction/ConstructionSystem.Guided.cs +++ b/Content.Server/Construction/ConstructionSystem.Guided.cs @@ -6,6 +6,7 @@ using Content.Shared.Examine; using Content.Shared.Popups; using Content.Shared.Verbs; using Robust.Shared.Player; +using Robust.Shared.Utility; namespace Content.Server.Construction { @@ -44,7 +45,8 @@ namespace Content.Server.Construction //verb.Category = VerbCategories.Construction; //TODO VERBS add more construction verbs? Until then, removing construction category verb.Text = Loc.GetString("deconstructible-verb-begin-deconstruct"); - verb.IconTexture = "/Textures/Interface/hammer_scaled.svg.192dpi.png"; + verb.Icon = new SpriteSpecifier.Texture( + new ResourcePath("/Textures/Interface/hammer_scaled.svg.192dpi.png")); verb.Act = () => { diff --git a/Content.Server/Construction/ConstructionSystem.Machine.cs b/Content.Server/Construction/ConstructionSystem.Machine.cs index 6cf6a1fe7a..ad708a4f39 100644 --- a/Content.Server/Construction/ConstructionSystem.Machine.cs +++ b/Content.Server/Construction/ConstructionSystem.Machine.cs @@ -53,7 +53,7 @@ public sealed partial class ConstructionSystem Text = Loc.GetString("machine-upgrade-examinable-verb-text"), Message = Loc.GetString("machine-upgrade-examinable-verb-message"), Category = VerbCategory.Examine, - IconTexture = "/Textures/Interface/VerbIcons/pickup.svg.192dpi.png" + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/pickup.svg.192dpi.png")) }; args.Verbs.Add(verb); diff --git a/Content.Server/DetailExaminable/DetailExaminableystem.cs b/Content.Server/DetailExaminable/DetailExaminableystem.cs index 07b125b1a4..dec4929a2a 100644 --- a/Content.Server/DetailExaminable/DetailExaminableystem.cs +++ b/Content.Server/DetailExaminable/DetailExaminableystem.cs @@ -32,7 +32,7 @@ namespace Content.Server.DetailExaminable Category = VerbCategory.Examine, Disabled = !detailsRange, Message = Loc.GetString("detail-examinable-verb-disabled"), - IconTexture = "/Textures/Interface/VerbIcons/examine.svg.192dpi.png" + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/examine.svg.192dpi.png")) }; args.Verbs.Add(verb); diff --git a/Content.Server/DeviceNetwork/Systems/NetworkConfiguratorSystem.cs b/Content.Server/DeviceNetwork/Systems/NetworkConfiguratorSystem.cs index f7d67ae2e9..54ac6107fb 100644 --- a/Content.Server/DeviceNetwork/Systems/NetworkConfiguratorSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/NetworkConfiguratorSystem.cs @@ -1,20 +1,17 @@ using System.Linq; using Content.Server.DeviceNetwork.Components; -using Content.Server.UserInterface; using Content.Shared.Access.Components; using Content.Shared.Access.Systems; using Content.Shared.Database; using Content.Shared.DeviceNetwork; using Content.Shared.Interaction; -using Content.Shared.Interaction.Events; -using Content.Shared.Movement; using Content.Shared.Popups; using Content.Shared.Verbs; using JetBrains.Annotations; using Robust.Server.GameObjects; -using Robust.Server.Player; using Robust.Shared.Audio; using Robust.Shared.Player; +using Robust.Shared.Utility; namespace Content.Server.DeviceNetwork.Systems; @@ -56,14 +53,16 @@ public sealed class NetworkConfiguratorSystem : SharedNetworkConfiguratorSystem foreach (var component in EntityManager.EntityQuery()) { + var uid = component.Owner; + if (component.ActiveDeviceList != null && EntityManager.EntityExists(component.ActiveDeviceList.Value) && - _interactionSystem.InRangeUnobstructed(component.Owner, component.ActiveDeviceList.Value)) + _interactionSystem.InRangeUnobstructed(uid, component.ActiveDeviceList.Value)) { - return; + continue; } //The network configurator is a handheld device. There can only ever be an ui session open for the player holding the device. - _uiSystem.GetUiOrNull(component.Owner, NetworkConfiguratorUiKey.Configure)?.CloseAll(); + _uiSystem.GetUiOrNull(uid, NetworkConfiguratorUiKey.Configure)?.CloseAll(); } } @@ -138,7 +137,7 @@ public sealed class NetworkConfiguratorSystem : SharedNetworkConfiguratorSystem private void OnComponentRemoved(EntityUid uid, DeviceListComponent component, ComponentRemove args) { - _uiSystem.GetUiOrNull(component.Owner, NetworkConfiguratorUiKey.Configure)?.CloseAll(); + _uiSystem.GetUiOrNull(uid, NetworkConfiguratorUiKey.Configure)?.CloseAll(); } #region Interactions @@ -177,7 +176,9 @@ public sealed class NetworkConfiguratorSystem : SharedNetworkConfiguratorSystem UtilityVerb verb = new() { Text = Loc.GetString(isDeviceList ? "network-configurator-configure" : "network-configurator-save-device"), - IconTexture = isDeviceList ? "/Textures/Interface/VerbIcons/settings.svg.192dpi.png" : "/Textures/Interface/VerbIcons/in.svg.192dpi.png", + Icon = isDeviceList ? + new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/settings.svg.192dpi.png")) : + new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/in.svg.192dpi.png")), Act = () => OnUsed(uid, component, args.Target, args.User), Impact = LogImpact.Low }; @@ -199,7 +200,7 @@ public sealed class NetworkConfiguratorSystem : SharedNetworkConfiguratorSystem AlternativeVerb verb = new() { Text = Loc.GetString("network-configurator-save-device"), - IconTexture = "/Textures/Interface/VerbIcons/in.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/in.svg.192dpi.png")), Act = () => TryAddNetworkDevice(args.Target, args.Using.Value, args.User), Impact = LogImpact.Low }; diff --git a/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs b/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs index 9afc18faa3..84f109e74a 100644 --- a/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs +++ b/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs @@ -31,6 +31,7 @@ using Robust.Shared.Containers; using Robust.Shared.Physics.Components; using Robust.Shared.Random; using Robust.Shared.Map.Components; +using Robust.Shared.Utility; namespace Content.Server.Disposal.Unit.EntitySystems { @@ -96,7 +97,7 @@ namespace Content.Server.Disposal.Unit.EntitySystems AlternativeVerb flushVerb = new(); flushVerb.Act = () => Engage(uid, component); flushVerb.Text = Loc.GetString("disposal-flush-verb-get-data-text"); - flushVerb.IconTexture = "/Textures/Interface/VerbIcons/delete_transparent.svg.192dpi.png"; + flushVerb.Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/delete_transparent.svg.192dpi.png")); flushVerb.Priority = 1; args.Verbs.Add(flushVerb); diff --git a/Content.Server/Foldable/FoldableSystem.cs b/Content.Server/Foldable/FoldableSystem.cs index deea2b7c08..13ae06df4a 100644 --- a/Content.Server/Foldable/FoldableSystem.cs +++ b/Content.Server/Foldable/FoldableSystem.cs @@ -7,6 +7,7 @@ using Content.Shared.Storage.Components; using Content.Shared.Verbs; using JetBrains.Annotations; using Robust.Shared.Containers; +using Robust.Shared.Utility; namespace Content.Server.Foldable { @@ -32,9 +33,9 @@ namespace Content.Server.Foldable args.Cancelled = true; } - public bool TryToggleFold(FoldableComponent comp) + public bool TryToggleFold(EntityUid uid, FoldableComponent comp) { - return TrySetFolded(comp, !comp.IsFolded); + return TrySetFolded(uid, comp, !comp.IsFolded); } public bool CanToggleFold(EntityUid uid, FoldableComponent? fold = null) @@ -62,18 +63,15 @@ namespace Content.Server.Foldable /// /// Try to fold/unfold /// - /// - /// Folded state we want - /// True if successful - public bool TrySetFolded(FoldableComponent comp, bool state) + public bool TrySetFolded(EntityUid uid, FoldableComponent comp, bool state) { if (state == comp.IsFolded) return false; - if (!CanToggleFold(comp.Owner, comp)) + if (!CanToggleFold(uid, comp)) return false; - SetFolded(comp, state); + SetFolded(uid, comp, state); return true; } @@ -82,12 +80,12 @@ namespace Content.Server.Foldable /// /// /// If true, the component will become folded, else unfolded - public override void SetFolded(FoldableComponent component, bool folded) + public override void SetFolded(EntityUid uid, FoldableComponent component, bool folded) { - base.SetFolded(component, folded); + base.SetFolded(uid, component, folded); // You can't buckle an entity to a folded object - _buckle.StrapSetEnabled(component.Owner, !component.IsFolded); + _buckle.StrapSetEnabled(uid, !component.IsFolded); } public void OnStoreThisAttempt(EntityUid uid, FoldableComponent comp, ref StoreMobInItemContainerAttemptEvent args) @@ -107,9 +105,9 @@ namespace Content.Server.Foldable AlternativeVerb verb = new() { - Act = () => TryToggleFold(component), + Act = () => TryToggleFold(uid, component), Text = component.IsFolded ? Loc.GetString("unfold-verb") : Loc.GetString("fold-verb"), - IconTexture = "/Textures/Interface/VerbIcons/fold.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/fold.svg.192dpi.png")), // If the object is unfolded and they click it, they want to fold it, if it's folded, they want to pick it up Priority = component.IsFolded ? 0 : 2, diff --git a/Content.Server/HealthExaminable/HealthExaminableSystem.cs b/Content.Server/HealthExaminable/HealthExaminableSystem.cs index b571821529..d49f5364eb 100644 --- a/Content.Server/HealthExaminable/HealthExaminableSystem.cs +++ b/Content.Server/HealthExaminable/HealthExaminableSystem.cs @@ -36,7 +36,7 @@ public sealed class HealthExaminableSystem : EntitySystem Category = VerbCategory.Examine, Disabled = !detailsRange, Message = Loc.GetString("health-examinable-verb-disabled"), - IconTexture = "/Textures/Interface/VerbIcons/rejuvenate.svg.192dpi.png" + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/rejuvenate.svg.192dpi.png")) }; args.Verbs.Add(verb); diff --git a/Content.Server/Humanoid/Systems/HumanoidSystem.Modifier.cs b/Content.Server/Humanoid/Systems/HumanoidSystem.Modifier.cs index 4b109c5336..bcd65d77be 100644 --- a/Content.Server/Humanoid/Systems/HumanoidSystem.Modifier.cs +++ b/Content.Server/Humanoid/Systems/HumanoidSystem.Modifier.cs @@ -4,6 +4,7 @@ using Content.Shared.Humanoid; using Content.Shared.Verbs; using Robust.Server.GameObjects; using Robust.Server.Player; +using Robust.Shared.Utility; namespace Content.Server.Humanoid; @@ -28,7 +29,7 @@ public sealed partial class HumanoidAppearanceSystem { Text = "Modify markings", Category = VerbCategory.Tricks, - IconTexture = "/Textures/Mobs/Customization/reptilian_parts.rsi/tail_smooth.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/Mobs/Customization/reptilian_parts.rsi"), "tail_smooth"), Act = () => { _uiSystem.TryOpen(uid, HumanoidMarkingModifierKey.Key, actor.PlayerSession); diff --git a/Content.Server/Kitchen/EntitySystems/SharpSystem.cs b/Content.Server/Kitchen/EntitySystems/SharpSystem.cs index 05894146fc..2b53f34593 100644 --- a/Content.Server/Kitchen/EntitySystems/SharpSystem.cs +++ b/Content.Server/Kitchen/EntitySystems/SharpSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Body.Systems; +using Content.Server.Body.Systems; using Content.Server.DoAfter; using Content.Server.Kitchen.Components; using Content.Shared.Body.Components; @@ -13,6 +13,7 @@ using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; using Robust.Server.Containers; using Robust.Shared.Random; +using Robust.Shared.Utility; namespace Content.Server.Kitchen.EntitySystems; @@ -149,7 +150,7 @@ public sealed class SharpSystem : EntitySystem }, Message = message, Disabled = disabled, - IconTexture = "/Textures/Interface/VerbIcons/cutlery.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/cutlery.svg.192dpi.png")), Text = Loc.GetString("butcherable-verb-name"), }; diff --git a/Content.Server/Light/EntitySystems/ExpendableLightSystem.cs b/Content.Server/Light/EntitySystems/ExpendableLightSystem.cs index 1ea39d2ee6..19ab08005a 100644 --- a/Content.Server/Light/EntitySystems/ExpendableLightSystem.cs +++ b/Content.Server/Light/EntitySystems/ExpendableLightSystem.cs @@ -11,6 +11,7 @@ using JetBrains.Annotations; using Robust.Server.GameObjects; using Robust.Shared.Audio; using Robust.Shared.Player; +using Robust.Shared.Utility; namespace Content.Server.Light.EntitySystems { @@ -183,7 +184,7 @@ namespace Content.Server.Light.EntitySystems ActivationVerb verb = new() { Text = Loc.GetString("expendable-light-start-verb"), - IconTexture = "/Textures/Interface/VerbIcons/light.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/light.svg.192dpi.png")), Act = () => TryActivate(component) }; args.Verbs.Add(verb); diff --git a/Content.Server/Light/EntitySystems/HandheldLightSystem.cs b/Content.Server/Light/EntitySystems/HandheldLightSystem.cs index 9f784e00ad..e37e6c8692 100644 --- a/Content.Server/Light/EntitySystems/HandheldLightSystem.cs +++ b/Content.Server/Light/EntitySystems/HandheldLightSystem.cs @@ -58,7 +58,7 @@ namespace Content.Server.Light.EntitySystems EntInsertedIntoContainerMessage args) { // Not guaranteed to be the correct container for our slot, I don't care. - UpdateLevel(component); + UpdateLevel(uid, component); } private void OnEntRemoved( @@ -67,7 +67,7 @@ namespace Content.Server.Light.EntitySystems EntRemovedFromContainerMessage args) { // Ditto above - UpdateLevel(component); + UpdateLevel(uid, component); } private void OnGetActions(EntityUid uid, HandheldLightComponent component, GetItemActionsEvent args) @@ -88,24 +88,24 @@ namespace Content.Server.Light.EntitySystems return; if (component.Activated) - TurnOff(component); + TurnOff(uid, component); else - TurnOn(args.Performer, component); + TurnOn(args.Performer, uid, component); args.Handled = true; } private void OnGetState(EntityUid uid, HandheldLightComponent component, ref ComponentGetState args) { - args.State = new HandheldLightComponent.HandheldLightComponentState(component.Activated, GetLevel(component)); + args.State = new HandheldLightComponent.HandheldLightComponentState(component.Activated, GetLevel(uid, component)); } - private byte? GetLevel(HandheldLightComponent component) + private byte? GetLevel(EntityUid uid, HandheldLightComponent component) { // Curently every single flashlight has the same number of levels for status and that's all it uses the charge for // Thus we'll just check if the level changes. - if (!_powerCell.TryGetBatteryFromSlot(component.Owner, out var battery)) + if (!_powerCell.TryGetBatteryFromSlot(uid, out var battery)) return null; if (MathHelper.CloseToPercent(battery.CurrentCharge, 0) || component.Wattage > battery.CurrentCharge) @@ -121,9 +121,10 @@ namespace Content.Server.Light.EntitySystems private void OnActivate(EntityUid uid, HandheldLightComponent component, ActivateInWorldEvent args) { - if (args.Handled) return; + if (args.Handled) + return; - if (ToggleStatus(args.User, component)) + if (ToggleStatus(args.User, uid, component)) args.Handled = true; } @@ -131,9 +132,9 @@ namespace Content.Server.Light.EntitySystems /// Illuminates the light if it is not active, extinguishes it if it is active. /// /// True if the light's status was toggled, false otherwise. - public bool ToggleStatus(EntityUid user, HandheldLightComponent component) + public bool ToggleStatus(EntityUid user, EntityUid uid, HandheldLightComponent component) { - return component.Activated ? TurnOff(component) : TurnOn(user, component); + return component.Activated ? TurnOff(uid, component) : TurnOn(user, uid, component); } private void OnExamine(EntityUid uid, HandheldLightComponent component, ExaminedEvent args) @@ -155,14 +156,16 @@ namespace Content.Server.Light.EntitySystems foreach (var handheld in _activeLights) { + var uid = handheld.Owner; + if (handheld.Deleted) { toRemove.Add(handheld); continue; } - if (Paused(handheld.Owner)) continue; - TryUpdate(handheld, frameTime); + if (Paused(uid)) continue; + TryUpdate(uid, handheld, frameTime); } foreach (var light in toRemove) @@ -173,46 +176,47 @@ namespace Content.Server.Light.EntitySystems private void AddToggleLightVerb(EntityUid uid, HandheldLightComponent component, GetVerbsEvent args) { - if (!args.CanAccess || !args.CanInteract) return; + if (!args.CanAccess || !args.CanInteract) + return; ActivationVerb verb = new() { Text = Loc.GetString("verb-common-toggle-light"), - IconTexture = "/Textures/Interface/VerbIcons/light.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/light.svg.192dpi.png")), Act = component.Activated - ? () => TurnOff(component) - : () => TurnOn(args.User, component) + ? () => TurnOff(uid, component) + : () => TurnOn(args.User, uid, component) }; args.Verbs.Add(verb); } - public bool TurnOff(HandheldLightComponent component, bool makeNoise = true) + public bool TurnOff(EntityUid uid, HandheldLightComponent component, bool makeNoise = true) { - if (!component.Activated || !TryComp(component.Owner, out var pointLightComponent)) + if (!component.Activated || !TryComp(uid, out var pointLightComponent)) { return false; } pointLightComponent.Enabled = false; - SetActivated(component.Owner, false, component, makeNoise); + SetActivated(uid, false, component, makeNoise); component.Level = null; _activeLights.Remove(component); return true; } - public bool TurnOn(EntityUid user, HandheldLightComponent component) + public bool TurnOn(EntityUid user, EntityUid uid, HandheldLightComponent component) { - if (component.Activated || !TryComp(component.Owner, out var pointLightComponent)) + if (component.Activated || !TryComp(uid, out var pointLightComponent)) { return false; } - if (!_powerCell.TryGetBatteryFromSlot(component.Owner, out var battery) && - !TryComp(component.Owner, out battery)) + if (!_powerCell.TryGetBatteryFromSlot(uid, out var battery) && + !TryComp(uid, out battery)) { - _audio.PlayPvs(_audio.GetSound(component.TurnOnFailSound), component.Owner); - _popup.PopupEntity(Loc.GetString("handheld-light-component-cell-missing-message"), component.Owner, user); + _audio.PlayPvs(_audio.GetSound(component.TurnOnFailSound), uid); + _popup.PopupEntity(Loc.GetString("handheld-light-component-cell-missing-message"), uid, user); return false; } @@ -221,52 +225,52 @@ namespace Content.Server.Light.EntitySystems // Simple enough. if (component.Wattage > battery.CurrentCharge) { - _audio.PlayPvs(_audio.GetSound(component.TurnOnFailSound), component.Owner); - _popup.PopupEntity(Loc.GetString("handheld-light-component-cell-dead-message"), component.Owner, user); + _audio.PlayPvs(_audio.GetSound(component.TurnOnFailSound), uid); + _popup.PopupEntity(Loc.GetString("handheld-light-component-cell-dead-message"), uid, user); return false; } pointLightComponent.Enabled = true; - SetActivated(component.Owner, true, component, true); + SetActivated(uid, true, component, true); _activeLights.Add(component); return true; } - public void TryUpdate(HandheldLightComponent component, float frameTime) + public void TryUpdate(EntityUid uid, HandheldLightComponent component, float frameTime) { - if (!_powerCell.TryGetBatteryFromSlot(component.Owner, out var battery) && - !TryComp(component.Owner, out battery)) + if (!_powerCell.TryGetBatteryFromSlot(uid, out var battery) && + !TryComp(uid, out battery)) { - TurnOff(component, false); + TurnOff(uid, component, false); return; } - var appearanceComponent = EntityManager.GetComponent(component.Owner); + var appearanceComponent = EntityManager.GetComponentOrNull(uid); var fraction = battery.CurrentCharge / battery.MaxCharge; if (fraction >= 0.30) { - _appearance.SetData(component.Owner, HandheldLightVisuals.Power, HandheldLightPowerStates.FullPower, appearanceComponent); + _appearance.SetData(uid, HandheldLightVisuals.Power, HandheldLightPowerStates.FullPower, appearanceComponent); } else if (fraction >= 0.10) { - _appearance.SetData(component.Owner, HandheldLightVisuals.Power, HandheldLightPowerStates.LowPower, appearanceComponent); + _appearance.SetData(uid, HandheldLightVisuals.Power, HandheldLightPowerStates.LowPower, appearanceComponent); } else { - _appearance.SetData(component.Owner, HandheldLightVisuals.Power, HandheldLightPowerStates.Dying, appearanceComponent); + _appearance.SetData(uid, HandheldLightVisuals.Power, HandheldLightPowerStates.Dying, appearanceComponent); } if (component.Activated && !battery.TryUseCharge(component.Wattage * frameTime)) - TurnOff(component, false); + TurnOff(uid, component, false); - UpdateLevel(component); + UpdateLevel(uid, component); } - private void UpdateLevel(HandheldLightComponent comp) + private void UpdateLevel(EntityUid uid, HandheldLightComponent comp) { - var level = GetLevel(comp); + var level = GetLevel(uid, comp); if (level == comp.Level) return; diff --git a/Content.Server/Light/EntitySystems/UnpoweredFlashlightSystem.cs b/Content.Server/Light/EntitySystems/UnpoweredFlashlightSystem.cs index 998554468f..6f61560d7f 100644 --- a/Content.Server/Light/EntitySystems/UnpoweredFlashlightSystem.cs +++ b/Content.Server/Light/EntitySystems/UnpoweredFlashlightSystem.cs @@ -8,6 +8,7 @@ using Content.Shared.Verbs; using Robust.Server.GameObjects; using Robust.Shared.Audio; using Robust.Shared.Player; +using Robust.Shared.Utility; namespace Content.Server.Light.EntitySystems { @@ -48,7 +49,7 @@ namespace Content.Server.Light.EntitySystems ActivationVerb verb = new(); verb.Text = Loc.GetString("toggle-flashlight-verb-get-data-text"); - verb.IconTexture = "/Textures/Interface/VerbIcons/light.svg.192dpi.png"; + verb.Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/light.svg.192dpi.png")); verb.Act = () => ToggleLight(uid, component); verb.Priority = -1; // For things like PDA's, Open-UI and other verbs that should be higher priority. diff --git a/Content.Server/MachineLinking/System/TwoWayLeverSystem.cs b/Content.Server/MachineLinking/System/TwoWayLeverSystem.cs index 875bc5ced5..764b4f172c 100644 --- a/Content.Server/MachineLinking/System/TwoWayLeverSystem.cs +++ b/Content.Server/MachineLinking/System/TwoWayLeverSystem.cs @@ -3,6 +3,7 @@ using Content.Shared.Interaction; using Content.Shared.MachineLinking; using Content.Shared.Verbs; using Robust.Server.GameObjects; +using Robust.Shared.Utility; namespace Content.Server.MachineLinking.System { @@ -65,7 +66,7 @@ namespace Content.Server.MachineLinking.System Category = VerbCategory.Lever, Message = Loc.GetString("two-way-lever-cant"), Disabled = component.State == TwoWayLeverState.Left, - IconTexture = $"/Textures/Interface/VerbIcons/{_leftToggleImage}", + Icon = new SpriteSpecifier.Texture(new ResourcePath($"/Textures/Interface/VerbIcons/{_leftToggleImage}")), Text = Loc.GetString("two-way-lever-left"), }; @@ -86,7 +87,7 @@ namespace Content.Server.MachineLinking.System Category = VerbCategory.Lever, Message = Loc.GetString("two-way-lever-cant"), Disabled = component.State == TwoWayLeverState.Right, - IconTexture = $"/Textures/Interface/VerbIcons/{_rightToggleImage}", + Icon = new SpriteSpecifier.Texture(new ResourcePath($"/Textures/Interface/VerbIcons/{_rightToggleImage}")), Text = Loc.GetString("two-way-lever-right"), }; diff --git a/Content.Server/Medical/Stethoscope/StethoscopeSystem.cs b/Content.Server/Medical/Stethoscope/StethoscopeSystem.cs index 1ce71c8c71..af9589d016 100644 --- a/Content.Server/Medical/Stethoscope/StethoscopeSystem.cs +++ b/Content.Server/Medical/Stethoscope/StethoscopeSystem.cs @@ -11,6 +11,7 @@ using Content.Shared.Verbs; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; using Content.Shared.DoAfter; +using Robust.Shared.Utility; namespace Content.Server.Medical { @@ -82,7 +83,7 @@ namespace Content.Server.Medical StartListening(component.Stethoscope, uid, args.Target, stetho); // start doafter }, Text = Loc.GetString("stethoscope-verb"), - IconTexture = "Clothing/Neck/Misc/stethoscope.rsi/icon.png", + Icon = new SpriteSpecifier.Rsi(new ResourcePath("Clothing/Neck/Misc/stethoscope.rsi"), "icon"), Priority = 2 }; args.Verbs.Add(verb); diff --git a/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs b/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs index 2c21e83c96..7cbd2b3023 100644 --- a/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs @@ -396,7 +396,7 @@ namespace Content.Server.Nutrition.EntitySystems { TryDrink(ev.User, ev.User, component, uid); }, - IconTexture = "/Textures/Interface/VerbIcons/drink.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/drink.svg.192dpi.png")), Text = Loc.GetString("drink-system-verb-drink"), Priority = 2 }; diff --git a/Content.Server/Nutrition/EntitySystems/FoodSystem.cs b/Content.Server/Nutrition/EntitySystems/FoodSystem.cs index 2ff765f855..b674c2c84c 100644 --- a/Content.Server/Nutrition/EntitySystems/FoodSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/FoodSystem.cs @@ -269,7 +269,7 @@ namespace Content.Server.Nutrition.EntitySystems { TryFeed(ev.User, ev.User, uid, component); }, - IconTexture = "/Textures/Interface/VerbIcons/cutlery.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/cutlery.svg.192dpi.png")), Text = Loc.GetString("food-system-verb-eat"), Priority = -1 }; diff --git a/Content.Server/Power/EntitySystems/CableMultitoolSystem.cs b/Content.Server/Power/EntitySystems/CableMultitoolSystem.cs index 18f0586584..a313419154 100644 --- a/Content.Server/Power/EntitySystems/CableMultitoolSystem.cs +++ b/Content.Server/Power/EntitySystems/CableMultitoolSystem.cs @@ -52,7 +52,7 @@ namespace Content.Server.Power.EntitySystems Message = Loc.GetString("cable-multitool-system-verb-tooltip"), Text = Loc.GetString("cable-multitool-system-verb-name"), Category = VerbCategory.Examine, - IconTexture = "/Textures/Interface/VerbIcons/zap.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/zap.svg.192dpi.png")), Act = () => { var markup = FormattedMessage.FromMarkup(GenerateCableMarkup(uid)); diff --git a/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs b/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs index ed6dc3f083..aa223fb674 100644 --- a/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs +++ b/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs @@ -9,6 +9,7 @@ using Robust.Server.GameObjects; using Robust.Shared.Audio; using Content.Server.Administration.Managers; using Content.Shared.Administration; +using Robust.Shared.Utility; namespace Content.Server.Power.EntitySystems { @@ -45,7 +46,7 @@ namespace Content.Server.Power.EntitySystems { Text = Loc.GetString("verb-debug-toggle-need-power"), Category = VerbCategory.Debug, - IconTexture = "/Textures/Interface/VerbIcons/smite.svg.192dpi.png", // "smite" is a lightning bolt + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/smite.svg.192dpi.png")), // "smite" is a lightning bolt Act = () => component.NeedsPower = !component.NeedsPower }); } @@ -126,7 +127,7 @@ namespace Content.Server.Power.EntitySystems { TogglePower(uid, user: args.User); }, - IconTexture = "/Textures/Interface/VerbIcons/Spare/poweronoff.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/Spare/poweronoff.svg.192dpi.png")), Text = Loc.GetString("power-switch-component-toggle-verb"), Priority = -3 }; diff --git a/Content.Server/Prayer/PrayableComponent.cs b/Content.Server/Prayer/PrayableComponent.cs index ba172b238b..48a5eeedbe 100644 --- a/Content.Server/Prayer/PrayableComponent.cs +++ b/Content.Server/Prayer/PrayableComponent.cs @@ -1,4 +1,6 @@ -namespace Content.Server.Prayer +using Robust.Shared.Utility; + +namespace Content.Server.Prayer { /// /// Allows an entity to be prayed on in the context menu @@ -39,7 +41,7 @@ /// [DataField("verbImage")] [ViewVariables(VVAccess.ReadOnly)] - public string VerbImage = "/Textures/Interface/pray.svg.png"; + public SpriteSpecifier? VerbImage = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/pray.svg.png")); } } diff --git a/Content.Server/Prayer/PrayerSystem.cs b/Content.Server/Prayer/PrayerSystem.cs index 5545231d3e..64c8f376f0 100644 --- a/Content.Server/Prayer/PrayerSystem.cs +++ b/Content.Server/Prayer/PrayerSystem.cs @@ -45,7 +45,7 @@ public sealed class PrayerSystem : EntitySystem var prayerVerb = new ActivationVerb { Text = Loc.GetString(comp.Verb), - IconTexture = comp.VerbImage == "" ? null : comp.VerbImage, + Icon = comp.VerbImage, Act = () => { if (comp.BibleUserOnly && !EntityManager.TryGetComponent(args.User, out var bibleUser)) diff --git a/Content.Server/Rotatable/RotatableSystem.cs b/Content.Server/Rotatable/RotatableSystem.cs index 0816fedc36..3e9efc9c35 100644 --- a/Content.Server/Rotatable/RotatableSystem.cs +++ b/Content.Server/Rotatable/RotatableSystem.cs @@ -1,8 +1,10 @@ +using Content.Server.Popups; using Content.Shared.Popups; using Content.Shared.Rotatable; using Content.Shared.Verbs; using Robust.Shared.Physics; using Robust.Shared.Physics.Components; +using Robust.Shared.Utility; namespace Content.Server.Rotatable { @@ -11,6 +13,8 @@ namespace Content.Server.Rotatable /// public sealed class RotatableSystem : EntitySystem { + [Dependency] private readonly PopupSystem _popup = default!; + public override void Initialize() { SubscribeLocalEvent>(AddFlipVerb); @@ -19,13 +23,15 @@ namespace Content.Server.Rotatable private void AddFlipVerb(EntityUid uid, FlippableComponent component, GetVerbsEvent args) { - if (!args.CanAccess || !args.CanInteract || component.MirrorEntity == null) + if (!args.CanAccess || !args.CanInteract) return; - Verb verb = new(); - verb.Act = () => TryFlip(component, args.User); - verb.Text = Loc.GetString("flippable-verb-get-data-text"); - verb.DoContactInteraction = true; + Verb verb = new() + { + Act = () => TryFlip(uid, component, args.User), + Text = Loc.GetString("flippable-verb-get-data-text"), + DoContactInteraction = true + }; // TODO VERB ICONS Add Uno reverse card style icon? args.Verbs.Add(verb); } @@ -39,16 +45,16 @@ namespace Content.Server.Rotatable // Check if the object is anchored, and whether we are still allowed to rotate it. if (!component.RotateWhileAnchored && - EntityManager.TryGetComponent(component.Owner, out PhysicsComponent? physics) && + EntityManager.TryGetComponent(uid, out PhysicsComponent? physics) && physics.BodyType == BodyType.Static) return; Verb resetRotation = new () { DoContactInteraction = true, - Act = () => EntityManager.GetComponent(component.Owner).LocalRotation = Angle.Zero, + Act = () => EntityManager.GetComponent(uid).LocalRotation = Angle.Zero, Category = VerbCategory.Rotate, - IconTexture = "/Textures/Interface/VerbIcons/refresh.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/refresh.svg.192dpi.png")), Text = "Reset", Priority = -2, // show CCW, then CW, then reset CloseMenu = false, @@ -58,9 +64,9 @@ namespace Content.Server.Rotatable // rotate clockwise Verb rotateCW = new() { - Act = () => EntityManager.GetComponent(component.Owner).LocalRotation -= component.Increment, + Act = () => EntityManager.GetComponent(uid).LocalRotation -= component.Increment, Category = VerbCategory.Rotate, - IconTexture = "/Textures/Interface/VerbIcons/rotate_cw.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/rotate_cw.svg.192dpi.png")), Priority = -1, CloseMenu = false, // allow for easy double rotations. }; @@ -69,9 +75,9 @@ namespace Content.Server.Rotatable // rotate counter-clockwise Verb rotateCCW = new() { - Act = () => EntityManager.GetComponent(component.Owner).LocalRotation += component.Increment, + Act = () => EntityManager.GetComponent(uid).LocalRotation += component.Increment, Category = VerbCategory.Rotate, - IconTexture = "/Textures/Interface/VerbIcons/rotate_ccw.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/rotate_ccw.svg.192dpi.png")), Priority = 0, CloseMenu = false, // allow for easy double rotations. }; @@ -81,21 +87,21 @@ namespace Content.Server.Rotatable /// /// Replace a flippable entity with it's flipped / mirror-symmetric entity. /// - public void TryFlip(FlippableComponent component, EntityUid user) + public void TryFlip(EntityUid uid, FlippableComponent component, EntityUid user) { - if (EntityManager.TryGetComponent(component.Owner, out PhysicsComponent? physics) && + if (EntityManager.TryGetComponent(uid, out PhysicsComponent? physics) && physics.BodyType == BodyType.Static) { - component.Owner.PopupMessage(user, Loc.GetString("flippable-component-try-flip-is-stuck")); + _popup.PopupEntity(Loc.GetString("flippable-component-try-flip-is-stuck"), uid, user); return; } - var oldTransform = EntityManager.GetComponent(component.Owner); + var oldTransform = EntityManager.GetComponent(uid); var entity = EntityManager.SpawnEntity(component.MirrorEntity, oldTransform.Coordinates); var newTransform = EntityManager.GetComponent(entity); newTransform.LocalRotation = oldTransform.LocalRotation; newTransform.Anchored = false; - EntityManager.DeleteEntity(component.Owner); + EntityManager.DeleteEntity(uid); } } } diff --git a/Content.Server/Sticky/Systems/StickySystem.cs b/Content.Server/Sticky/Systems/StickySystem.cs index 693dff6a1b..9437ebbd00 100644 --- a/Content.Server/Sticky/Systems/StickySystem.cs +++ b/Content.Server/Sticky/Systems/StickySystem.cs @@ -10,6 +10,7 @@ using Content.Shared.Verbs; using Robust.Server.GameObjects; using Robust.Shared.Containers; using Robust.Shared.Player; +using Robust.Shared.Utility; namespace Content.Server.Sticky.Systems; @@ -57,7 +58,7 @@ public sealed class StickySystem : EntitySystem { DoContactInteraction = true, Text = Loc.GetString("comp-sticky-unstick-verb-text"), - IconTexture = "/Textures/Interface/VerbIcons/eject.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/eject.svg.192dpi.png")), Act = () => StartUnsticking(uid, args.User, component) }); } diff --git a/Content.Server/Storage/EntitySystems/DumpableSystem.cs b/Content.Server/Storage/EntitySystems/DumpableSystem.cs index 6f61fdc6e8..c0e1c22a1b 100644 --- a/Content.Server/Storage/EntitySystems/DumpableSystem.cs +++ b/Content.Server/Storage/EntitySystems/DumpableSystem.cs @@ -11,6 +11,7 @@ using Content.Shared.Placeable; using Content.Shared.Storage; using Robust.Shared.Containers; using Robust.Shared.Random; +using Robust.Shared.Utility; namespace Content.Server.Storage.EntitySystems { @@ -54,7 +55,7 @@ namespace Content.Server.Storage.EntitySystems StartDoAfter(uid, null, args.User, dumpable);//Had multiplier of 0.6f }, Text = Loc.GetString("dump-verb-name"), - IconTexture = "/Textures/Interface/VerbIcons/drop.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/drop.svg.192dpi.png")), }; args.Verbs.Add(verb); } diff --git a/Content.Server/Storage/EntitySystems/StorageSystem.cs b/Content.Server/Storage/EntitySystems/StorageSystem.cs index 568f5d0a5f..42ebca5515 100644 --- a/Content.Server/Storage/EntitySystems/StorageSystem.cs +++ b/Content.Server/Storage/EntitySystems/StorageSystem.cs @@ -117,12 +117,14 @@ namespace Content.Server.Storage.EntitySystems if (component.Open) { verb.Text = Loc.GetString("verb-common-close"); - verb.IconTexture = "/Textures/Interface/VerbIcons/close.svg.192dpi.png"; + verb.Icon = new SpriteSpecifier.Texture( + new ResourcePath("/Textures/Interface/VerbIcons/close.svg.192dpi.png")); } else { verb.Text = Loc.GetString("verb-common-open"); - verb.IconTexture = "/Textures/Interface/VerbIcons/open.svg.192dpi.png"; + verb.Icon = new SpriteSpecifier.Texture( + new ResourcePath("/Textures/Interface/VerbIcons/open.svg.192dpi.png")); } verb.Act = () => _entityStorage.ToggleOpen(args.User, args.Target, component); args.Verbs.Add(verb); @@ -147,12 +149,14 @@ namespace Content.Server.Storage.EntitySystems if (uiOpen) { verb.Text = Loc.GetString("verb-common-close-ui"); - verb.IconTexture = "/Textures/Interface/VerbIcons/close.svg.192dpi.png"; + verb.Icon = new SpriteSpecifier.Texture( + new ResourcePath("/Textures/Interface/VerbIcons/close.svg.192dpi.png")); } else { verb.Text = Loc.GetString("verb-common-open-ui"); - verb.IconTexture = "/Textures/Interface/VerbIcons/open.svg.192dpi.png"; + verb.Icon = new SpriteSpecifier.Texture( + new ResourcePath("/Textures/Interface/VerbIcons/open.svg.192dpi.png")); } args.Verbs.Add(verb); } diff --git a/Content.Server/Strip/StrippableSystem.cs b/Content.Server/Strip/StrippableSystem.cs index 3501448e8b..6c8edee580 100644 --- a/Content.Server/Strip/StrippableSystem.cs +++ b/Content.Server/Strip/StrippableSystem.cs @@ -19,6 +19,7 @@ using Content.Shared.DoAfter; using Content.Shared.Ensnaring.Components; using Content.Shared.Interaction; using Content.Shared.Strip; +using Robust.Shared.Utility; namespace Content.Server.Strip { @@ -132,7 +133,7 @@ namespace Content.Server.Strip Verb verb = new() { Text = Loc.GetString("strip-verb-get-data-text"), - IconTexture = "/Textures/Interface/VerbIcons/outfit.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/outfit.svg.192dpi.png")), Act = () => StartOpeningStripper(args.User, component, true), }; args.Verbs.Add(verb); @@ -149,7 +150,7 @@ namespace Content.Server.Strip ExamineVerb verb = new() { Text = Loc.GetString("strip-verb-get-data-text"), - IconTexture = "/Textures/Interface/VerbIcons/outfit.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/outfit.svg.192dpi.png")), Act = () => StartOpeningStripper(args.User, component, true), Category = VerbCategory.Examine, }; diff --git a/Content.Server/Tabletop/TabletopSystem.cs b/Content.Server/Tabletop/TabletopSystem.cs index 565dc89a28..5aac809cf2 100644 --- a/Content.Server/Tabletop/TabletopSystem.cs +++ b/Content.Server/Tabletop/TabletopSystem.cs @@ -8,6 +8,7 @@ using Robust.Server.GameObjects; using Robust.Server.Player; using Robust.Shared.Enums; using Robust.Shared.Map; +using Robust.Shared.Utility; namespace Content.Server.Tabletop { @@ -58,7 +59,7 @@ namespace Content.Server.Tabletop ActivationVerb verb = new(); verb.Text = Loc.GetString("tabletop-verb-play-game"); - verb.IconTexture = "/Textures/Interface/VerbIcons/die.svg.192dpi.png"; + verb.Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/die.svg.192dpi.png")); verb.Act = () => OpenSessionFor(actor.PlayerSession, uid); args.Verbs.Add(verb); } diff --git a/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs b/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs index d57583fd35..f5fd861a02 100644 --- a/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs +++ b/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs @@ -26,6 +26,7 @@ using Robust.Shared.Map; using Robust.Shared.Player; using Robust.Shared.Players; using Robust.Shared.Random; +using Robust.Shared.Utility; namespace Content.Server.Weapons.Melee; @@ -74,7 +75,7 @@ public sealed class MeleeWeaponSystem : SharedMeleeWeaponSystem Text = Loc.GetString("damage-examinable-verb-text"), Message = Loc.GetString("damage-examinable-verb-message"), Category = VerbCategory.Examine, - IconTexture = "/Textures/Interface/VerbIcons/smite.svg.192dpi.png" + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/smite.svg.192dpi.png")), }; args.Verbs.Add(verb); diff --git a/Content.Server/Weapons/Ranged/Systems/GunSystem.Battery.cs b/Content.Server/Weapons/Ranged/Systems/GunSystem.Battery.cs index c3abf01d98..5c4dd90dab 100644 --- a/Content.Server/Weapons/Ranged/Systems/GunSystem.Battery.cs +++ b/Content.Server/Weapons/Ranged/Systems/GunSystem.Battery.cs @@ -6,6 +6,7 @@ using Content.Shared.Verbs; using Content.Shared.Weapons.Ranged; using Content.Shared.Weapons.Ranged.Components; using Robust.Shared.Prototypes; +using Robust.Shared.Utility; namespace Content.Server.Weapons.Ranged.Systems; @@ -38,11 +39,13 @@ public sealed partial class GunSystem private void UpdateShots(EntityUid uid, BatteryAmmoProviderComponent component) { - if (!TryComp(uid, out var battery)) return; - UpdateShots(component, battery); + if (!TryComp(uid, out var battery)) + return; + + UpdateShots(uid, component, battery); } - private void UpdateShots(BatteryAmmoProviderComponent component, BatteryComponent battery) + private void UpdateShots(EntityUid uid, BatteryAmmoProviderComponent component, BatteryComponent battery) { var shots = (int) (battery.CurrentCharge / component.FireCost); var maxShots = (int) (battery.MaxCharge / component.FireCost); @@ -54,7 +57,7 @@ public sealed partial class GunSystem component.Shots = shots; component.Capacity = maxShots; - UpdateBatteryAppearance(component.Owner, component); + UpdateBatteryAppearance(uid, component); } private void OnBatteryExaminableVerb(EntityUid uid, BatteryAmmoProviderComponent component, GetVerbsEvent args) @@ -91,7 +94,7 @@ public sealed partial class GunSystem Text = Loc.GetString("damage-examinable-verb-text"), Message = Loc.GetString("damage-examinable-verb-message"), Category = VerbCategory.Examine, - IconTexture = "/Textures/Interface/VerbIcons/smite.svg.192dpi.png" + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/smite.svg.192dpi.png")), }; args.Verbs.Add(verb); @@ -125,9 +128,10 @@ public sealed partial class GunSystem protected override void TakeCharge(EntityUid uid, BatteryAmmoProviderComponent component) { - if (!TryComp(uid, out var battery)) return; + if (!TryComp(uid, out var battery)) + return; battery.CurrentCharge -= component.FireCost; - UpdateShots(component, battery); + UpdateShots(uid, component, battery); } } diff --git a/Content.Server/Weapons/Ranged/Systems/GunSystem.Cartridges.cs b/Content.Server/Weapons/Ranged/Systems/GunSystem.Cartridges.cs index afee1039c6..2a5d646499 100644 --- a/Content.Server/Weapons/Ranged/Systems/GunSystem.Cartridges.cs +++ b/Content.Server/Weapons/Ranged/Systems/GunSystem.Cartridges.cs @@ -5,6 +5,7 @@ using Content.Shared.Projectiles; using Content.Shared.Verbs; using Content.Shared.Weapons.Ranged.Components; using Robust.Shared.Prototypes; +using Robust.Shared.Utility; namespace Content.Server.Weapons.Ranged.Systems; @@ -37,7 +38,7 @@ public sealed partial class GunSystem Text = Loc.GetString("damage-examinable-verb-text"), Message = Loc.GetString("damage-examinable-verb-message"), Category = VerbCategory.Examine, - IconTexture = "/Textures/Interface/VerbIcons/smite.svg.192dpi.png" + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/smite.svg.192dpi.png")), }; args.Verbs.Add(verb); diff --git a/Content.Shared/Cabinet/SharedItemCabinetSystem.cs b/Content.Shared/Cabinet/SharedItemCabinetSystem.cs index 766373c129..0ba03e2076 100644 --- a/Content.Shared/Cabinet/SharedItemCabinetSystem.cs +++ b/Content.Shared/Cabinet/SharedItemCabinetSystem.cs @@ -6,6 +6,7 @@ using Robust.Shared.Audio; using Robust.Shared.Containers; using Robust.Shared.GameStates; using Robust.Shared.Timing; +using Robust.Shared.Utility; namespace Content.Shared.Cabinet; @@ -105,12 +106,14 @@ public abstract class SharedItemCabinetSystem : EntitySystem if (cabinet.Opened) { toggleVerb.Text = Loc.GetString("verb-common-close"); - toggleVerb.IconTexture = "/Textures/Interface/VerbIcons/close.svg.192dpi.png"; + toggleVerb.Icon = + new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/close.svg.192dpi.png")); } else { toggleVerb.Text = Loc.GetString("verb-common-open"); - toggleVerb.IconTexture = "/Textures/Interface/VerbIcons/open.svg.192dpi.png"; + toggleVerb.Icon = + new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/open.svg.192dpi.png")); } args.Verbs.Add(toggleVerb); } diff --git a/Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs b/Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs index 059bf5cb4f..4af573425a 100644 --- a/Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs +++ b/Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs @@ -499,14 +499,18 @@ namespace Content.Shared.Containers.ItemSlots if (slot.InsertVerbText != null) { insertVerb.Text = Loc.GetString(slot.InsertVerbText); - insertVerb.IconTexture = "/Textures/Interface/VerbIcons/insert.svg.192dpi.png"; + insertVerb.Icon = + new SpriteSpecifier.Texture( + new ResourcePath("/Textures/Interface/VerbIcons/insert.svg.192dpi.png")); } else if(slot.EjectOnInteract) { // Inserting/ejecting is a primary interaction for this entity. Instead of using the insert // category, we will use a single "Place " verb. insertVerb.Text = Loc.GetString("place-item-verb-text", ("subject", verbSubject)); - insertVerb.IconTexture = "/Textures/Interface/VerbIcons/drop.svg.192dpi.png"; + insertVerb.Icon = + new SpriteSpecifier.Texture( + new ResourcePath("/Textures/Interface/VerbIcons/drop.svg.192dpi.png")); } else { diff --git a/Content.Shared/Examine/ExamineSystemShared.Group.cs b/Content.Shared/Examine/ExamineSystemShared.Group.cs index a959f35b3b..364284e45a 100644 --- a/Content.Shared/Examine/ExamineSystemShared.Group.cs +++ b/Content.Shared/Examine/ExamineSystemShared.Group.cs @@ -38,7 +38,7 @@ namespace Content.Shared.Examine Text = group.ContextText, Message = group.HoverMessage, Category = VerbCategory.Examine, - IconTexture = group.Icon + Icon = new SpriteSpecifier.Texture(new ResourcePath(group.Icon)), }; args.Verbs.Add(examineVerb); @@ -149,7 +149,7 @@ namespace Content.Shared.Examine Text = verbText, Message = hoverMessage, Category = VerbCategory.Examine, - IconTexture = iconTexture + Icon = new SpriteSpecifier.Texture(new ResourcePath(iconTexture)), }; verbsEvent.Verbs.Add(examineVerb); diff --git a/Content.Shared/Foldable/SharedFoldableSystem.cs b/Content.Shared/Foldable/SharedFoldableSystem.cs index c379ca8bbb..52cca6ee7a 100644 --- a/Content.Shared/Foldable/SharedFoldableSystem.cs +++ b/Content.Shared/Foldable/SharedFoldableSystem.cs @@ -32,24 +32,25 @@ public abstract class SharedFoldableSystem : EntitySystem return; if (state.IsFolded != component.IsFolded) - SetFolded(component, state.IsFolded); + SetFolded(uid, component, state.IsFolded); } private void OnFoldableInit(EntityUid uid, FoldableComponent component, ComponentInit args) { - SetFolded(component, component.IsFolded); + SetFolded(uid, component, component.IsFolded); } /// /// Set the folded state of the given /// - /// - /// If true, the component will become folded, else unfolded - public virtual void SetFolded(FoldableComponent component, bool folded) + public virtual void SetFolded(EntityUid uid, FoldableComponent component, bool folded) { + if (component.IsFolded == folded) + return; + component.IsFolded = folded; Dirty(component); - Appearance.SetData(component.Owner, FoldedVisuals.State, folded); + Appearance.SetData(uid, FoldedVisuals.State, folded); } private void OnInsertEvent(EntityUid uid, FoldableComponent component, ContainerGettingInsertedAttemptEvent args) diff --git a/Content.Shared/Follower/FollowerSystem.cs b/Content.Shared/Follower/FollowerSystem.cs index 9411207d4e..d5739f7806 100644 --- a/Content.Shared/Follower/FollowerSystem.cs +++ b/Content.Shared/Follower/FollowerSystem.cs @@ -4,6 +4,7 @@ using Content.Shared.Ghost; using Content.Shared.Movement.Events; using Content.Shared.Verbs; using Robust.Shared.Map; +using Robust.Shared.Utility; namespace Content.Shared.Follower; @@ -37,7 +38,7 @@ public sealed class FollowerSystem : EntitySystem }), Impact = LogImpact.Low, Text = Loc.GetString("verb-follow-text"), - IconTexture = "/Textures/Interface/VerbIcons/open.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/open.svg.192dpi.png")), }; ev.Verbs.Add(verb); diff --git a/Content.Shared/Item/SharedItemSystem.cs b/Content.Shared/Item/SharedItemSystem.cs index 648ce1a31d..4a88249842 100644 --- a/Content.Shared/Item/SharedItemSystem.cs +++ b/Content.Shared/Item/SharedItemSystem.cs @@ -5,6 +5,7 @@ using Content.Shared.Inventory.Events; using Content.Shared.Verbs; using Robust.Shared.Containers; using Robust.Shared.GameStates; +using Robust.Shared.Utility; namespace Content.Shared.Item; @@ -118,7 +119,7 @@ public abstract class SharedItemSystem : EntitySystem InteractionVerb verb = new(); verb.Act = () => _handsSystem.TryPickupAnyHand(args.User, args.Target, checkActionBlocker: false, handsComp: args.Hands, item: component); - verb.IconTexture = "/Textures/Interface/VerbIcons/pickup.svg.192dpi.png"; + verb.Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/pickup.svg.192dpi.png")); // if the item already in a container (that is not the same as the user's), then change the text. // this occurs when the item is in their inventory or in an open backpack diff --git a/Content.Shared/Lock/LockSystem.cs b/Content.Shared/Lock/LockSystem.cs index 2e4bb935ad..4c27252db8 100644 --- a/Content.Shared/Lock/LockSystem.cs +++ b/Content.Shared/Lock/LockSystem.cs @@ -14,6 +14,7 @@ using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Network; using Robust.Shared.Timing; +using Robust.Shared.Utility; namespace Content.Shared.Lock; @@ -224,7 +225,9 @@ public sealed class LockSystem : EntitySystem () => TryUnlock(uid, args.User, component) : () => TryLock(uid, args.User, component), Text = Loc.GetString(component.Locked ? "toggle-lock-verb-unlock" : "toggle-lock-verb-lock"), - IconTexture = component.Locked ? "/Textures/Interface/VerbIcons/unlock.svg.192dpi.png" : "/Textures/Interface/VerbIcons/lock.svg.192dpi.png" + Icon = component.Locked ? + new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/unlock.svg.192dpi.png")) : + new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/lock.svg.192dpi.png")), }; args.Verbs.Add(verb); } diff --git a/Content.Shared/Verbs/Verb.cs b/Content.Shared/Verbs/Verb.cs index 1fb094a635..c55e1c31fc 100644 --- a/Content.Shared/Verbs/Verb.cs +++ b/Content.Shared/Verbs/Verb.cs @@ -71,14 +71,7 @@ namespace Content.Shared.Verbs /// /// Sprite of the icon that the user sees on the verb button. /// - public SpriteSpecifier? Icon - { - get => _icon ??= - IconTexture == null ? null : new SpriteSpecifier.Texture(new ResourcePath(IconTexture)); - set => _icon = value; - } - [NonSerialized] - private SpriteSpecifier? _icon; + public SpriteSpecifier? Icon; /// /// Name of the category this button is under. Used to group verbs in the context menu. @@ -114,11 +107,6 @@ namespace Content.Shared.Verbs /// public int Priority; - /// - /// Raw texture path used to load the for displaying on the client. - /// - public string? IconTexture; - /// /// If this is not null, and no icon or icon texture were specified, a sprite view of this entity will be /// used as the icon for this verb. @@ -211,7 +199,7 @@ namespace Content.Shared.Verbs } // Finally, compare icon texture paths. Note that this matters for verbs that don't have any text (e.g., the rotate-verbs) - return string.Compare(IconTexture, otherVerb.IconTexture, StringComparison.CurrentCulture); + return string.Compare(Icon?.ToString(), otherVerb.Icon?.ToString(), StringComparison.CurrentCulture); } /// diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Interactions.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Interactions.cs index bb4ab81183..2b04c41e33 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Interactions.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Interactions.cs @@ -35,7 +35,7 @@ public abstract partial class SharedGunSystem { Act = () => SelectFire(component, nextMode, args.User), Text = Loc.GetString("gun-selector-verb", ("mode", GetLocSelector(nextMode))), - IconTexture = "/Textures/Interface/VerbIcons/fold.svg.192dpi.png", + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/fold.svg.192dpi.png")), }; args.Verbs.Add(verb); diff --git a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_misc.yml b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_misc.yml index 42255be5ae..5820ef8b18 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_misc.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_misc.yml @@ -60,7 +60,7 @@ sentMessage: prayer-popup-notify-centcom-sent notifiactionPrefix: prayer-chat-notify-centcom verb: prayer-verbs-call - verbImage: "" + verbImage: null - type: entity parent: BaseHandheldInstrument @@ -168,4 +168,4 @@ sentMessage: prayer-popup-notify-honkmother-sent notifiactionPrefix: prayer-chat-notify-honkmother verb: prayer-verbs-call - verbImage: "" + verbImage: null From 6e2db844eac1d7b27411d6be3eb0e12df3659bb0 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 26 Feb 2023 02:50:01 -0500 Subject: [PATCH 12/53] Automatic changelog update --- Resources/Changelog/Changelog.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index f0bc02caf5..5a5bb4f9ba 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: keronshb - changes: - - {message: Fixed an issue where crates would clip through firelocks., type: Fix} - id: 2569 - time: '2022-11-04T01:18:59.0000000+00:00' - author: Vordenburg changes: - {message: Allowed gas filters to be reset to filter no gases., type: Add} @@ -2916,3 +2911,10 @@ Entries: - {message: Syringes - Prevents multi use on injecting self/targets., type: Fix} id: 3068 time: '2023-02-26T05:33:06.0000000+00:00' +- author: metalgearsloth + changes: + - {message: Fix console warnings about rsi sprite access, type: Fix} + - {message: Fix issue with device configurators out of line-of-sight not closing + properly., type: Fix} + id: 3069 + time: '2023-02-26T07:48:58.0000000+00:00' From a5b9cecc784d71c7f7a6ccfbd0e87b1566db9b1a Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Sun, 26 Feb 2023 07:44:30 -0500 Subject: [PATCH 13/53] Predict entitystorage (#14082) Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> --- .../Components/EntityStorageComponent.cs | 10 + .../Storage/Systems/EntityStorageSystem.cs | 8 + .../Components/EntityStorageComponent.cs | 93 +--- .../EntitySystems/EntityStorageSystem.cs | 379 +-------------- .../Storage/EntitySystems/StorageSystem.cs | 38 -- Content.Shared/Lock/LockSystem.cs | 15 +- .../Placeable/PlaceableSurfaceSystem.cs | 2 +- .../InsideEntityStorageComponent.cs | 2 +- .../Storage/Components/SharedEntityStorage.cs | 25 - .../SharedEntityStorageComponent.cs | 178 +++++++ .../SharedEntityStorageSystem.cs | 455 ++++++++++++++++++ 11 files changed, 682 insertions(+), 523 deletions(-) create mode 100644 Content.Client/Storage/Components/EntityStorageComponent.cs create mode 100644 Content.Client/Storage/Systems/EntityStorageSystem.cs rename {Content.Server => Content.Shared}/Storage/Components/InsideEntityStorageComponent.cs (82%) delete mode 100644 Content.Shared/Storage/Components/SharedEntityStorage.cs create mode 100644 Content.Shared/Storage/Components/SharedEntityStorageComponent.cs create mode 100644 Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs diff --git a/Content.Client/Storage/Components/EntityStorageComponent.cs b/Content.Client/Storage/Components/EntityStorageComponent.cs new file mode 100644 index 0000000000..65b510cf6f --- /dev/null +++ b/Content.Client/Storage/Components/EntityStorageComponent.cs @@ -0,0 +1,10 @@ +using Content.Shared.Storage.Components; +using Robust.Shared.GameStates; + +namespace Content.Client.Storage.Components; + +[RegisterComponent, ComponentReference(typeof(SharedEntityStorageComponent))] +public sealed class EntityStorageComponent : SharedEntityStorageComponent +{ + +} diff --git a/Content.Client/Storage/Systems/EntityStorageSystem.cs b/Content.Client/Storage/Systems/EntityStorageSystem.cs new file mode 100644 index 0000000000..36532b0e9f --- /dev/null +++ b/Content.Client/Storage/Systems/EntityStorageSystem.cs @@ -0,0 +1,8 @@ +using Content.Shared.Storage.EntitySystems; + +namespace Content.Client.Storage.Systems; + +public sealed class EntityStorageSystem : SharedEntityStorageSystem +{ + +} diff --git a/Content.Server/Storage/Components/EntityStorageComponent.cs b/Content.Server/Storage/Components/EntityStorageComponent.cs index 705ad00ab9..568c67bc06 100644 --- a/Content.Server/Storage/Components/EntityStorageComponent.cs +++ b/Content.Server/Storage/Components/EntityStorageComponent.cs @@ -1,97 +1,12 @@ using Content.Server.Atmos; -using Content.Shared.Physics; -using Content.Shared.Whitelist; -using Robust.Shared.Audio; -using Robust.Shared.Containers; +using Content.Shared.Storage.Components; +using Robust.Shared.GameStates; namespace Content.Server.Storage.Components; -[RegisterComponent] -public sealed class EntityStorageComponent : Component, IGasMixtureHolder +[RegisterComponent, ComponentReference(typeof(SharedEntityStorageComponent))] +public sealed class EntityStorageComponent : SharedEntityStorageComponent, IGasMixtureHolder { - public readonly float MaxSize = 1.0f; // maximum width or height of an entity allowed inside the storage. - public const float GasMixVolume = 70f; - - public static readonly TimeSpan InternalOpenAttemptDelay = TimeSpan.FromSeconds(0.5); - public TimeSpan LastInternalOpenAttempt; - - /// - /// Collision masks that get removed when the storage gets opened. - /// - public readonly int MasksToRemove = (int) ( - CollisionGroup.MidImpassable | - CollisionGroup.HighImpassable | - CollisionGroup.LowImpassable); - - /// - /// Collision masks that were removed from ANY layer when the storage was opened; - /// - [DataField("removedMasks")] - public int RemovedMasks; - - [DataField("capacity")] - public int Capacity = 30; - - [DataField("isCollidableWhenOpen")] - public bool IsCollidableWhenOpen; - - /// - /// If true, it opens the storage when the entity inside of it moves - /// If false, it prevents the storage from opening when the entity inside of it moves. - /// This is for objects that you want the player to move while inside, like large cardboard boxes, without opening the storage. - /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField("openOnMove")] - public bool OpenOnMove = true; - - //The offset for where items are emptied/vacuumed for the EntityStorage. - [DataField("enteringOffset")] - public Vector2 EnteringOffset = new(0, 0); - - //The collision groups checked, so that items are depositied or grabbed from inside walls. - [DataField("enteringOffsetCollisionFlags")] - public readonly CollisionGroup EnteringOffsetCollisionFlags = CollisionGroup.Impassable | CollisionGroup.MidImpassable; - - [DataField("enteringRange")] - public float EnteringRange = 0.18f; - - [DataField("showContents")] - public bool ShowContents; - - [DataField("occludesLight")] - public bool OccludesLight = true; - - [DataField("deleteContentsOnDestruction"), ViewVariables(VVAccess.ReadWrite)] - public bool DeleteContentsOnDestruction = false; - - /// - /// Whether or not the container is sealed and traps air inside of it - /// - [DataField("airtight"), ViewVariables(VVAccess.ReadWrite)] - public bool Airtight = true; - - [DataField("open")] - public bool Open; - - [DataField("closeSound")] - public SoundSpecifier CloseSound = new SoundPathSpecifier("/Audio/Effects/closetclose.ogg"); - - [DataField("openSound")] - public SoundSpecifier OpenSound = new SoundPathSpecifier("/Audio/Effects/closetopen.ogg"); - - /// - /// Whitelist for what entities are allowed to be inserted into this container. If this is not null, the - /// standard requirement that the entity must be an item or mob is waived. - /// - [DataField("whitelist")] - public EntityWhitelist? Whitelist; - - [ViewVariables] - public Container Contents = default!; - - [ViewVariables(VVAccess.ReadWrite)] - public bool IsWeldedShut; - /// /// Gas currently contained in this entity storage. /// None while open. Grabs gas from the atmosphere when closed, and exposes any entities inside to it. diff --git a/Content.Server/Storage/EntitySystems/EntityStorageSystem.cs b/Content.Server/Storage/EntitySystems/EntityStorageSystem.cs index 3d2bb019cc..ebefd304f7 100644 --- a/Content.Server/Storage/EntitySystems/EntityStorageSystem.cs +++ b/Content.Server/Storage/EntitySystems/EntityStorageSystem.cs @@ -1,93 +1,50 @@ -using System.Linq; using Content.Server.Atmos.EntitySystems; using Content.Server.Construction; using Content.Server.Construction.Components; -using Content.Server.Popups; using Content.Server.Storage.Components; using Content.Server.Tools.Systems; -using Content.Shared.Body.Components; -using Content.Shared.Destructible; -using Content.Shared.Hands.Components; -using Content.Shared.Interaction; -using Content.Shared.Item; -using Content.Shared.Lock; -using Content.Shared.Placeable; -using Content.Shared.Storage; using Content.Shared.Storage.Components; -using Content.Shared.Wall; -using Content.Shared.Whitelist; -using Robust.Server.Containers; +using Content.Shared.Storage.EntitySystems; using Robust.Shared.Containers; using Robust.Shared.Map; -using Robust.Shared.Physics; -using Robust.Shared.Physics.Components; -using Robust.Shared.Physics.Systems; namespace Content.Server.Storage.EntitySystems; -public sealed class EntityStorageSystem : EntitySystem +public sealed class EntityStorageSystem : SharedEntityStorageSystem { - [Dependency] private readonly SharedAudioSystem _audio = default!; - [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly ConstructionSystem _construction = default!; - [Dependency] private readonly ContainerSystem _container = default!; - [Dependency] private readonly EntityLookupSystem _lookup = default!; - [Dependency] private readonly SharedInteractionSystem _interactionSystem = default!; - [Dependency] private readonly PlaceableSurfaceSystem _placeableSurface = default!; - [Dependency] private readonly PopupSystem _popupSystem = default!; [Dependency] private readonly AtmosphereSystem _atmos = default!; - [Dependency] private readonly SharedPhysicsSystem _physics = default!; [Dependency] private readonly IMapManager _map = default!; - public const string ContainerName = "entity_storage"; - public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnInit); - SubscribeLocalEvent(OnInteract); SubscribeLocalEvent(OnWeldableAttempt); SubscribeLocalEvent(OnWelded); - SubscribeLocalEvent(OnLockToggleAttempt); - SubscribeLocalEvent(OnDestruction); - SubscribeLocalEvent(OnRemoved); SubscribeLocalEvent(OnInsideInhale); SubscribeLocalEvent(OnInsideExhale); SubscribeLocalEvent(OnInsideExposed); + SubscribeLocalEvent(OnRemoved); } - private void OnInit(EntityUid uid, EntityStorageComponent component, ComponentInit args) + protected override void OnInit(EntityUid uid, SharedEntityStorageComponent component, ComponentInit args) { - component.Contents = _container.EnsureContainer(uid, ContainerName); - component.Contents.ShowContents = component.ShowContents; - component.Contents.OccludesLight = component.OccludesLight; + base.OnInit(uid, component, args); if (TryComp(uid, out var construction)) _construction.AddContainer(uid, ContainerName, construction); - if (TryComp(uid, out var placeable)) - _placeableSurface.SetPlaceable(uid, component.Open, placeable); - if (!component.Open) { // If we're closed on spawn, we need to pull some air into our environment from where we spawned, // so that we have -something-. For example, if you bought an animal crate or something. - TakeGas(uid, component); + TakeGas(uid, (EntityStorageComponent) component); } } - private void OnInteract(EntityUid uid, EntityStorageComponent component, ActivateInWorldEvent args) - { - if (args.Handled) - return; - - args.Handled = true; - ToggleOpen(args.User, uid, component); - } - private void OnWeldableAttempt(EntityUid uid, EntityStorageComponent component, WeldableAttemptEvent args) { if (component.Open) @@ -99,7 +56,7 @@ public sealed class EntityStorageSystem : EntitySystem if (component.Contents.Contains(args.User)) { var msg = Loc.GetString("entity-storage-component-already-contains-user-message"); - _popupSystem.PopupEntity(msg, args.User, args.User); + Popup.PopupEntity(msg, args.User, args.User); args.Cancel(); } } @@ -107,334 +64,36 @@ public sealed class EntityStorageSystem : EntitySystem private void OnWelded(EntityUid uid, EntityStorageComponent component, WeldableChangedEvent args) { component.IsWeldedShut = args.IsWelded; + Dirty(component); } - private void OnLockToggleAttempt(EntityUid uid, EntityStorageComponent target, ref LockToggleAttemptEvent args) - { - // Cannot (un)lock open lockers. - if (target.Open) - args.Cancelled = true; - - // Cannot (un)lock from the inside. Maybe a bad idea? Security jocks could trap nerds in lockers? - if (target.Contents.Contains(args.User)) - args.Cancelled = true; - } - - private void OnDestruction(EntityUid uid, EntityStorageComponent component, DestructionEventArgs args) - { - component.Open = true; - if (!component.DeleteContentsOnDestruction) - { - EmptyContents(uid, component); - return; - } - - foreach (var ent in new List(component.Contents.ContainedEntities)) - { - EntityManager.DeleteEntity(ent); - } - } - - public void ToggleOpen(EntityUid user, EntityUid target, EntityStorageComponent? component = null) - { - if (!Resolve(target, ref component)) - return; - - if (component.Open) - { - TryCloseStorage(target); - } - else - { - TryOpenStorage(user, target); - } - } - - public void EmptyContents(EntityUid uid, EntityStorageComponent? component = null) - { - if (!Resolve(uid, ref component)) - return; - - var uidXform = Transform(uid); - var containedArr = component.Contents.ContainedEntities.ToArray(); - foreach (var contained in containedArr) - { - Remove(contained, uid, component, uidXform); - } - } - - public void OpenStorage(EntityUid uid, EntityStorageComponent? component = null) - { - if (!Resolve(uid, ref component)) - return; - - var beforeev = new StorageBeforeOpenEvent(); - RaiseLocalEvent(uid, ref beforeev); - component.Open = true; - EmptyContents(uid, component); - ModifyComponents(uid, component); - _audio.PlayPvs(component.OpenSound, uid); - ReleaseGas(uid, component); - var afterev = new StorageAfterOpenEvent(); - RaiseLocalEvent(uid, ref afterev); - } - - public void CloseStorage(EntityUid uid, EntityStorageComponent? component = null) - { - if (!Resolve(uid, ref component)) - return; - component.Open = false; - - var targetCoordinates = new EntityCoordinates(uid, component.EnteringOffset); - - var entities = _lookup.GetEntitiesInRange(targetCoordinates, component.EnteringRange, LookupFlags.Approximate | LookupFlags.Dynamic | LookupFlags.Sundries); - - var ev = new StorageBeforeCloseEvent(entities, new()); - RaiseLocalEvent(uid, ref ev); - var count = 0; - foreach (var entity in ev.Contents) - { - if (!ev.BypassChecks.Contains(entity)) - { - if (!CanFit(entity, uid, component.Whitelist)) - continue; - } - - if (!AddToContents(entity, uid, component)) - continue; - - count++; - if (count >= component.Capacity) - break; - } - - TakeGas(uid, component); - ModifyComponents(uid, component); - _audio.PlayPvs(component.CloseSound, uid); - component.LastInternalOpenAttempt = default; - var afterev = new StorageAfterCloseEvent(); - RaiseLocalEvent(uid, ref afterev); - } - - public bool Insert(EntityUid toInsert, EntityUid container, EntityStorageComponent? component = null) - { - if (!Resolve(container, ref component)) - return false; - - if (component.Open) - { - Transform(toInsert).WorldPosition = Transform(container).WorldPosition; - return true; - } - - var inside = EnsureComp(toInsert); - inside.Storage = container; - return component.Contents.Insert(toInsert, EntityManager); - } - - public bool Remove(EntityUid toRemove, EntityUid container, EntityStorageComponent? component = null, TransformComponent? xform = null) - { - if (!Resolve(container, ref component, ref xform, false)) - return false; - - RemComp(toRemove); - component.Contents.Remove(toRemove, EntityManager); - Transform(toRemove).WorldPosition = xform.WorldPosition + xform.WorldRotation.RotateVec(component.EnteringOffset); - return true; - } - - public bool CanInsert(EntityUid container, EntityStorageComponent? component = null) - { - if (!Resolve(container, ref component)) - return false; - - if (component.Open) - return true; - - if (component.Contents.ContainedEntities.Count >= component.Capacity) - return false; - - return true; - } - - public bool TryOpenStorage(EntityUid user, EntityUid target, bool silent = false) - { - if (!CanOpen(user, target, silent)) - return false; - - OpenStorage(target); - return true; - } - - public bool TryCloseStorage(EntityUid target) - { - if (!CanClose(target)) - { - return false; - } - - CloseStorage(target); - return true; - } - - public bool CanOpen(EntityUid user, EntityUid target, bool silent = false, EntityStorageComponent? component = null) - { - if (!Resolve(target, ref component)) - return false; - - if (!HasComp(user)) - return false; - - if (component.IsWeldedShut) - { - if (!silent && !component.Contents.Contains(user)) - _popupSystem.PopupEntity(Loc.GetString("entity-storage-component-welded-shut-message"), target); - - return false; - } - - //Checks to see if the opening position, if offset, is inside of a wall. - if (component.EnteringOffset != (0, 0) && !HasComp(target)) //if the entering position is offset - { - var newCoords = new EntityCoordinates(target, component.EnteringOffset); - if (!_interactionSystem.InRangeUnobstructed(target, newCoords, 0, collisionMask: component.EnteringOffsetCollisionFlags)) - { - if (!silent) - _popupSystem.PopupEntity(Loc.GetString("entity-storage-component-cannot-open-no-space"), target); - return false; - } - } - - var ev = new StorageOpenAttemptEvent(silent); - RaiseLocalEvent(target, ref ev, true); - - return !ev.Cancelled; - } - - public bool CanClose(EntityUid target, bool silent = false) - { - var ev = new StorageCloseAttemptEvent(); - RaiseLocalEvent(target, ref ev, silent); - - return !ev.Cancelled; - } - - public bool AddToContents(EntityUid toAdd, EntityUid container, EntityStorageComponent? component = null) - { - if (!Resolve(container, ref component)) - return false; - - if (toAdd == container) - return false; - - if (TryComp(toAdd, out var phys)) - { - var aabb = _physics.GetWorldAABB(toAdd, body: phys); - - if (component.MaxSize < aabb.Size.X || component.MaxSize < aabb.Size.Y) - return false; - } - - return Insert(toAdd, container, component); - } - - public bool CanFit(EntityUid toInsert, EntityUid container, EntityWhitelist? whitelist) - { - // conditions are complicated because of pizzabox-related issues, so follow this guide - // 0. Accomplish your goals at all costs. - // 1. AddToContents can block anything - // 2. maximum item count can block anything - // 3. ghosts can NEVER be eaten - // 4. items can always be eaten unless a previous law prevents it - // 5. if this is NOT AN ITEM, then mobs can always be eaten unless a previous - // law prevents it - // 6. if this is an item, then mobs must only be eaten if some other component prevents - // pick-up interactions while a mob is inside (e.g. foldable) - var attemptEvent = new InsertIntoEntityStorageAttemptEvent(); - RaiseLocalEvent(toInsert, ref attemptEvent); - if (attemptEvent.Cancelled) - return false; - - var targetIsMob = HasComp(toInsert); - var storageIsItem = HasComp(container); - var allowedToEat = whitelist?.IsValid(toInsert) ?? HasComp(toInsert); - - // BEFORE REPLACING THIS WITH, I.E. A PROPERTY: - // Make absolutely 100% sure you have worked out how to stop people ending up in backpacks. - // Seriously, it is insanely hacky and weird to get someone out of a backpack once they end up in there. - // And to be clear, they should NOT be in there. - // For the record, what you need to do is empty the backpack onto a PlacableSurface (table, rack) - if (targetIsMob) - { - if (!storageIsItem) - allowedToEat = true; - else - { - var storeEv = new StoreMobInItemContainerAttemptEvent(); - RaiseLocalEvent(container, ref storeEv); - allowedToEat = storeEv.Handled && !storeEv.Cancelled; - } - } - - return allowedToEat; - } - - public void ModifyComponents(EntityUid uid, EntityStorageComponent? component = null) - { - if (!Resolve(uid, ref component)) - return; - - if (!component.IsCollidableWhenOpen && TryComp(uid, out var fixtures) && fixtures.Fixtures.Count > 0) - { - // currently only works for single-fixture entities. If they have more than one fixture, then - // RemovedMasks needs to be tracked separately for each fixture, using a fixture Id Dictionary. Also the - // fixture IDs probably cant be automatically generated without causing issues, unless there is some - // guarantee that they will get deserialized with the same auto-generated ID when saving+loading the map. - var fixture = fixtures.Fixtures.Values.First(); - - if (component.Open) - { - component.RemovedMasks = fixture.CollisionLayer & component.MasksToRemove; - _physics.SetCollisionLayer(uid, fixture, fixture.CollisionLayer & ~component.MasksToRemove, manager: fixtures); - } - else - { - _physics.SetCollisionLayer(uid, fixture, fixture.CollisionLayer | component.RemovedMasks, manager: fixtures); - component.RemovedMasks = 0; - } - } - - if (TryComp(uid, out var surface)) - _placeableSurface.SetPlaceable(uid, component.Open, surface); - - _appearance.SetData(uid, StorageVisuals.Open, component.Open); - _appearance.SetData(uid, StorageVisuals.HasContents, component.Contents.ContainedEntities.Count > 0); - } - - private void TakeGas(EntityUid uid, EntityStorageComponent component) + protected override void TakeGas(EntityUid uid, SharedEntityStorageComponent component) { if (!component.Airtight) return; - var tile = GetOffsetTileRef(uid, component); + var serverComp = (EntityStorageComponent) component; + var tile = GetOffsetTileRef(uid, serverComp); if (tile != null && _atmos.GetTileMixture(tile.Value.GridUid, null, tile.Value.GridIndices, true) is {} environment) { - _atmos.Merge(component.Air, environment.RemoveVolume(EntityStorageComponent.GasMixVolume)); + _atmos.Merge(serverComp.Air, environment.RemoveVolume(SharedEntityStorageComponent.GasMixVolume)); } } - public void ReleaseGas(EntityUid uid, EntityStorageComponent component) + public override void ReleaseGas(EntityUid uid, SharedEntityStorageComponent component) { - if (!component.Airtight) + var serverComp = (EntityStorageComponent) component; + + if (!serverComp.Airtight) return; - var tile = GetOffsetTileRef(uid, component); + var tile = GetOffsetTileRef(uid, serverComp); if (tile != null && _atmos.GetTileMixture(tile.Value.GridUid, null, tile.Value.GridIndices, true) is {} environment) { - _atmos.Merge(environment, component.Air); - component.Air.Clear(); + _atmos.Merge(environment, serverComp.Air); + serverComp.Air.Clear(); } } diff --git a/Content.Server/Storage/EntitySystems/StorageSystem.cs b/Content.Server/Storage/EntitySystems/StorageSystem.cs index 42ebca5515..91510e339a 100644 --- a/Content.Server/Storage/EntitySystems/StorageSystem.cs +++ b/Content.Server/Storage/EntitySystems/StorageSystem.cs @@ -77,9 +77,6 @@ namespace Content.Server.Storage.EntitySystems SubscribeLocalEvent>(OnDoAfter); - SubscribeLocalEvent>(AddToggleOpenVerb); - SubscribeLocalEvent(OnRelayMovement); - SubscribeLocalEvent(OnStorageFillMapInit); } @@ -95,41 +92,6 @@ namespace Content.Server.Storage.EntitySystems UpdateStorageUI(uid, storageComp); } - private void OnRelayMovement(EntityUid uid, EntityStorageComponent component, ref ContainerRelayMovementEntityEvent args) - { - if (!EntityManager.HasComponent(args.Entity) || _gameTiming.CurTime < component.LastInternalOpenAttempt + EntityStorageComponent.InternalOpenAttemptDelay) - return; - - component.LastInternalOpenAttempt = _gameTiming.CurTime; - if (component.OpenOnMove) - { - _entityStorage.TryOpenStorage(args.Entity, component.Owner); - } - } - - - private void AddToggleOpenVerb(EntityUid uid, EntityStorageComponent component, GetVerbsEvent args) - { - if (!args.CanAccess || !args.CanInteract || !_entityStorage.CanOpen(args.User, args.Target, silent: true, component)) - return; - - InteractionVerb verb = new(); - if (component.Open) - { - verb.Text = Loc.GetString("verb-common-close"); - verb.Icon = new SpriteSpecifier.Texture( - new ResourcePath("/Textures/Interface/VerbIcons/close.svg.192dpi.png")); - } - else - { - verb.Text = Loc.GetString("verb-common-open"); - verb.Icon = new SpriteSpecifier.Texture( - new ResourcePath("/Textures/Interface/VerbIcons/open.svg.192dpi.png")); - } - verb.Act = () => _entityStorage.ToggleOpen(args.User, args.Target, component); - args.Verbs.Add(verb); - } - private void AddOpenUiVerb(EntityUid uid, ServerStorageComponent component, GetVerbsEvent args) { if (!args.CanAccess || !args.CanInteract || TryComp(uid, out var lockComponent) && lockComponent.Locked) diff --git a/Content.Shared/Lock/LockSystem.cs b/Content.Shared/Lock/LockSystem.cs index 4c27252db8..5c01ae0702 100644 --- a/Content.Shared/Lock/LockSystem.cs +++ b/Content.Shared/Lock/LockSystem.cs @@ -86,7 +86,7 @@ public sealed class LockSystem : EntitySystem { if (!component.Locked) return; - if (!args.Silent) + if (!args.Silent && _net.IsServer) _sharedPopupSystem.PopupEntity(Loc.GetString("entity-storage-component-locked-message"), uid); args.Cancelled = true; @@ -118,12 +118,12 @@ public sealed class LockSystem : EntitySystem if (!HasUserAccess(uid, user, quiet: false)) return false; - if (_net.IsClient && _timing.IsFirstTimePredicted) + if (_net.IsServer) { _sharedPopupSystem.PopupEntity(Loc.GetString("lock-comp-do-lock-success", ("entityName", Identity.Name(uid, EntityManager))), uid, user); - _audio.PlayPvs(_audio.GetSound(lockComp.LockSound), uid, AudioParams.Default.WithVolume(-5)); } + _audio.PlayPredicted(lockComp.LockSound, uid, user, AudioParams.Default.WithVolume(-5)); lockComp.Locked = true; _appearanceSystem.SetData(uid, StorageVisuals.Locked, true); @@ -145,15 +145,15 @@ public sealed class LockSystem : EntitySystem if (!Resolve(uid, ref lockComp)) return; - if (_net.IsClient && _timing.IsFirstTimePredicted) + if (_net.IsServer) { if (user is { Valid: true }) { _sharedPopupSystem.PopupEntity(Loc.GetString("lock-comp-do-unlock-success", ("entityName", Identity.Name(uid, EntityManager))), uid, user.Value); } - _audio.PlayPvs(_audio.GetSound(lockComp.UnlockSound), uid, AudioParams.Default.WithVolume(-5)); } + _audio.PlayPredicted(lockComp.UnlockSound, uid, user, AudioParams.Default.WithVolume(-5)); lockComp.Locked = false; _appearanceSystem.SetData(uid, StorageVisuals.Locked, false); @@ -236,10 +236,7 @@ public sealed class LockSystem : EntitySystem { if (!component.Locked) return; - if (_net.IsClient && _timing.IsFirstTimePredicted) - { - _audio.PlayPvs(_audio.GetSound(component.UnlockSound), uid, AudioParams.Default.WithVolume(-5)); - } + _audio.PlayPredicted(component.UnlockSound, uid, null, AudioParams.Default.WithVolume(-5)); _appearanceSystem.SetData(uid, StorageVisuals.Locked, false); RemComp(uid); //Literally destroys the lock as a tell it was emagged args.Handled = true; diff --git a/Content.Shared/Placeable/PlaceableSurfaceSystem.cs b/Content.Shared/Placeable/PlaceableSurfaceSystem.cs index 8ea0940763..1f5c64d37f 100644 --- a/Content.Shared/Placeable/PlaceableSurfaceSystem.cs +++ b/Content.Shared/Placeable/PlaceableSurfaceSystem.cs @@ -25,7 +25,7 @@ namespace Content.Shared.Placeable public void SetPlaceable(EntityUid uid, bool isPlaceable, PlaceableSurfaceComponent? surface = null) { - if (!Resolve(uid, ref surface)) + if (!Resolve(uid, ref surface, false)) return; surface.IsPlaceable = isPlaceable; diff --git a/Content.Server/Storage/Components/InsideEntityStorageComponent.cs b/Content.Shared/Storage/Components/InsideEntityStorageComponent.cs similarity index 82% rename from Content.Server/Storage/Components/InsideEntityStorageComponent.cs rename to Content.Shared/Storage/Components/InsideEntityStorageComponent.cs index 4a4ef0f016..802cf195c3 100644 --- a/Content.Server/Storage/Components/InsideEntityStorageComponent.cs +++ b/Content.Shared/Storage/Components/InsideEntityStorageComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Storage.Components; +namespace Content.Shared.Storage.Components; /// /// Added to entities contained within entity storage, for directed event purposes. diff --git a/Content.Shared/Storage/Components/SharedEntityStorage.cs b/Content.Shared/Storage/Components/SharedEntityStorage.cs deleted file mode 100644 index a3399e2926..0000000000 --- a/Content.Shared/Storage/Components/SharedEntityStorage.cs +++ /dev/null @@ -1,25 +0,0 @@ -namespace Content.Shared.Storage.Components; - -[ByRefEvent] -public record struct InsertIntoEntityStorageAttemptEvent(bool Cancelled = false); - -[ByRefEvent] -public record struct StoreMobInItemContainerAttemptEvent(bool Handled, bool Cancelled = false); - -[ByRefEvent] -public record struct StorageOpenAttemptEvent(bool Silent, bool Cancelled = false); - -[ByRefEvent] -public readonly record struct StorageBeforeOpenEvent; - -[ByRefEvent] -public readonly record struct StorageAfterOpenEvent; - -[ByRefEvent] -public record struct StorageCloseAttemptEvent(bool Cancelled = false); - -[ByRefEvent] -public readonly record struct StorageBeforeCloseEvent(HashSet Contents, HashSet BypassChecks); - -[ByRefEvent] -public readonly record struct StorageAfterCloseEvent; diff --git a/Content.Shared/Storage/Components/SharedEntityStorageComponent.cs b/Content.Shared/Storage/Components/SharedEntityStorageComponent.cs new file mode 100644 index 0000000000..bbabde8e7d --- /dev/null +++ b/Content.Shared/Storage/Components/SharedEntityStorageComponent.cs @@ -0,0 +1,178 @@ +using Content.Shared.Physics; +using Content.Shared.Whitelist; +using Robust.Shared.Audio; +using Robust.Shared.Containers; +using Robust.Shared.GameStates; +using Robust.Shared.Serialization; + +namespace Content.Shared.Storage.Components; + +[NetworkedComponent] +public abstract class SharedEntityStorageComponent : Component +{ + public readonly float MaxSize = 1.0f; // maximum width or height of an entity allowed inside the storage. + public const float GasMixVolume = 70f; + + public static readonly TimeSpan InternalOpenAttemptDelay = TimeSpan.FromSeconds(0.5); + public TimeSpan LastInternalOpenAttempt; + + /// + /// Collision masks that get removed when the storage gets opened. + /// + public readonly int MasksToRemove = (int) ( + CollisionGroup.MidImpassable | + CollisionGroup.HighImpassable | + CollisionGroup.LowImpassable); + + /// + /// Collision masks that were removed from ANY layer when the storage was opened; + /// + [DataField("removedMasks")] + public int RemovedMasks; + + /// + /// The total amount of items that can fit in one entitystorage + /// + [DataField("capacity")] + public int Capacity = 30; + + /// + /// Whether or not the entity still has collision when open + /// + [DataField("isCollidableWhenOpen")] + public bool IsCollidableWhenOpen; + + /// + /// If true, it opens the storage when the entity inside of it moves + /// If false, it prevents the storage from opening when the entity inside of it moves. + /// This is for objects that you want the player to move while inside, like large cardboard boxes, without opening the storage. + /// + [ViewVariables(VVAccess.ReadWrite)] + [DataField("openOnMove")] + public bool OpenOnMove = true; + + //The offset for where items are emptied/vacuumed for the EntityStorage. + [DataField("enteringOffset")] + public Vector2 EnteringOffset = new(0, 0); + + //The collision groups checked, so that items are depositied or grabbed from inside walls. + [DataField("enteringOffsetCollisionFlags")] + public readonly CollisionGroup EnteringOffsetCollisionFlags = CollisionGroup.Impassable | CollisionGroup.MidImpassable; + + /// + /// How close you have to be to the "entering" spot to be able to enter + /// + [DataField("enteringRange")] + public float EnteringRange = 0.18f; + + /// + /// Whether or not to show the contents when the storage is closed + /// + [DataField("showContents")] + public bool ShowContents; + + /// + /// Whether or not light is occluded by the storage + /// + [DataField("occludesLight")] + public bool OccludesLight = true; + + /// + /// Whether or not all the contents stored should be deleted with the entitystorage + /// + [DataField("deleteContentsOnDestruction"), ViewVariables(VVAccess.ReadWrite)] + public bool DeleteContentsOnDestruction; + + /// + /// Whether or not the container is sealed and traps air inside of it + /// + [DataField("airtight"), ViewVariables(VVAccess.ReadWrite)] + public bool Airtight = true; + + /// + /// Whether or not the entitystorage is open or closed + /// + [DataField("open")] + public bool Open; + + /// + /// The sound made when closed + /// + [DataField("closeSound")] + public SoundSpecifier CloseSound = new SoundPathSpecifier("/Audio/Effects/closetclose.ogg"); + + /// + /// The sound made when open + /// + [DataField("openSound")] + public SoundSpecifier OpenSound = new SoundPathSpecifier("/Audio/Effects/closetopen.ogg"); + + /// + /// Whitelist for what entities are allowed to be inserted into this container. If this is not null, the + /// standard requirement that the entity must be an item or mob is waived. + /// + [DataField("whitelist")] + public EntityWhitelist? Whitelist; + + /// + /// The contents of the storage + /// + [ViewVariables] + public Container Contents = default!; + + /// + /// Whether or not the storage has been welded shut + /// + [DataField("isWeldedShut"), ViewVariables(VVAccess.ReadWrite)] + public bool IsWeldedShut; +} + +[Serializable, NetSerializable] +public sealed class EntityStorageComponentState : ComponentState +{ + public bool Open; + + public int Capacity; + + public bool IsCollidableWhenOpen; + + public bool OpenOnMove; + + public float EnteringRange; + + public bool IsWeldedShut; + + public EntityStorageComponentState(bool open, int capacity, bool isCollidableWhenOpen, bool openOnMove, float enteringRange, bool isWeldedShut) + { + Open = open; + Capacity = capacity; + IsCollidableWhenOpen = isCollidableWhenOpen; + OpenOnMove = openOnMove; + EnteringRange = enteringRange; + IsWeldedShut = isWeldedShut; + } +} + +[ByRefEvent] +public record struct InsertIntoEntityStorageAttemptEvent(bool Cancelled = false); + +[ByRefEvent] +public record struct StoreMobInItemContainerAttemptEvent(bool Handled, bool Cancelled = false); + +[ByRefEvent] +public record struct StorageOpenAttemptEvent(bool Silent, bool Cancelled = false); + +[ByRefEvent] +public readonly record struct StorageBeforeOpenEvent; + +[ByRefEvent] +public readonly record struct StorageAfterOpenEvent; + +[ByRefEvent] +public record struct StorageCloseAttemptEvent(bool Cancelled = false); + +[ByRefEvent] +public readonly record struct StorageBeforeCloseEvent(HashSet Contents, HashSet BypassChecks); + +[ByRefEvent] +public readonly record struct StorageAfterCloseEvent; diff --git a/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs b/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs new file mode 100644 index 0000000000..cc2a627141 --- /dev/null +++ b/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs @@ -0,0 +1,455 @@ +using System.Linq; +using Content.Shared.Body.Components; +using Content.Shared.Destructible; +using Content.Shared.Hands.Components; +using Content.Shared.Interaction; +using Content.Shared.Item; +using Content.Shared.Lock; +using Content.Shared.Movement.Events; +using Content.Shared.Placeable; +using Content.Shared.Popups; +using Content.Shared.Storage.Components; +using Content.Shared.Verbs; +using Content.Shared.Wall; +using Content.Shared.Whitelist; +using Robust.Shared.Containers; +using Robust.Shared.GameStates; +using Robust.Shared.Map; +using Robust.Shared.Network; +using Robust.Shared.Physics; +using Robust.Shared.Physics.Components; +using Robust.Shared.Physics.Systems; +using Robust.Shared.Timing; +using Robust.Shared.Utility; + +namespace Content.Shared.Storage.EntitySystems; + +public abstract class SharedEntityStorageSystem : EntitySystem +{ + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly INetManager _net = default!; + [Dependency] private readonly EntityLookupSystem _lookup = default!; + [Dependency] private readonly PlaceableSurfaceSystem _placeableSurface = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedContainerSystem _container = default!; + [Dependency] private readonly SharedInteractionSystem _interaction = default!; + [Dependency] private readonly SharedPhysicsSystem _physics = default!; + [Dependency] protected readonly SharedPopupSystem Popup = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; + + public const string ContainerName = "entity_storage"; + + /// + public override void Initialize() + { + SubscribeLocalEvent(OnInit); + SubscribeLocalEvent(OnInteract, after: new[]{typeof(LockSystem)}); + SubscribeLocalEvent(OnLockToggleAttempt); + SubscribeLocalEvent(OnDestruction); + SubscribeLocalEvent>(AddToggleOpenVerb); + SubscribeLocalEvent(OnRelayMovement); + + SubscribeLocalEvent(OnGetState); + SubscribeLocalEvent(OnHandleState); + } + + private void OnGetState(EntityUid uid, SharedEntityStorageComponent component, ref ComponentGetState args) + { + args.State = new EntityStorageComponentState(component.Open, + component.Capacity, + component.IsCollidableWhenOpen, + component.OpenOnMove, + component.EnteringRange, + component.IsWeldedShut); + } + + private void OnHandleState(EntityUid uid, SharedEntityStorageComponent component, ref ComponentHandleState args) + { + if (args.Current is not EntityStorageComponentState state) + return; + component.Open = state.Open; + component.Capacity = state.Capacity; + component.IsCollidableWhenOpen = state.IsCollidableWhenOpen; + component.OpenOnMove = state.OpenOnMove; + component.EnteringRange = state.EnteringRange; + component.IsWeldedShut = state.IsWeldedShut; + } + + protected virtual void OnInit(EntityUid uid, SharedEntityStorageComponent component, ComponentInit args) + { + component.Contents = _container.EnsureContainer(uid, ContainerName); + component.Contents.ShowContents = component.ShowContents; + component.Contents.OccludesLight = component.OccludesLight; + } + + private void OnInteract(EntityUid uid, SharedEntityStorageComponent component, ActivateInWorldEvent args) + { + if (args.Handled) + return; + + args.Handled = true; + ToggleOpen(args.User, uid, component); + } + + private void OnLockToggleAttempt(EntityUid uid, SharedEntityStorageComponent target, ref LockToggleAttemptEvent args) + { + // Cannot (un)lock open lockers. + if (target.Open) + args.Cancelled = true; + + // Cannot (un)lock from the inside. Maybe a bad idea? Security jocks could trap nerds in lockers? + if (target.Contents.Contains(args.User)) + args.Cancelled = true; + } + + private void OnDestruction(EntityUid uid, SharedEntityStorageComponent component, DestructionEventArgs args) + { + component.Open = true; + Dirty(component); + if (!component.DeleteContentsOnDestruction) + { + EmptyContents(uid, component); + return; + } + + foreach (var ent in new List(component.Contents.ContainedEntities)) + { + Del(ent); + } + } + + private void OnRelayMovement(EntityUid uid, SharedEntityStorageComponent component, ref ContainerRelayMovementEntityEvent args) + { + if (!HasComp(args.Entity)) + return; + + if (_timing.CurTime < component.LastInternalOpenAttempt + SharedEntityStorageComponent.InternalOpenAttemptDelay) + return; + + component.LastInternalOpenAttempt = _timing.CurTime; + if (component.OpenOnMove) + { + TryOpenStorage(args.Entity, uid); + } + } + + private void AddToggleOpenVerb(EntityUid uid, SharedEntityStorageComponent component, GetVerbsEvent args) + { + if (!args.CanAccess || !args.CanInteract) + return; + + if (!CanOpen(args.User, args.Target, silent: true, component)) + return; + + InteractionVerb verb = new(); + if (component.Open) + { + verb.Text = Loc.GetString("verb-common-close"); + verb.Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/close.svg.192dpi.png")); + } + else + { + verb.Text = Loc.GetString("verb-common-open"); + verb.Icon = new SpriteSpecifier.Texture( + new ResourcePath("/Textures/Interface/VerbIcons/open.svg.192dpi.png")); + } + verb.Act = () => ToggleOpen(args.User, args.Target, component); + args.Verbs.Add(verb); + } + + + public void ToggleOpen(EntityUid user, EntityUid target, SharedEntityStorageComponent? component = null) + { + if (!Resolve(target, ref component)) + return; + + if (component.Open) + { + TryCloseStorage(target); + } + else + { + TryOpenStorage(user, target); + } + } + + public void EmptyContents(EntityUid uid, SharedEntityStorageComponent? component = null) + { + if (!Resolve(uid, ref component)) + return; + + var uidXform = Transform(uid); + var containedArr = component.Contents.ContainedEntities.ToArray(); + foreach (var contained in containedArr) + { + Remove(contained, uid, component, uidXform); + } + } + + public void OpenStorage(EntityUid uid, SharedEntityStorageComponent? component = null) + { + if (!Resolve(uid, ref component)) + return; + + var beforeev = new StorageBeforeOpenEvent(); + RaiseLocalEvent(uid, ref beforeev); + component.Open = true; + Dirty(component); + EmptyContents(uid, component); + ModifyComponents(uid, component); + if (_net.IsClient && _timing.IsFirstTimePredicted) + _audio.PlayPvs(component.OpenSound, uid); + ReleaseGas(uid, component); + var afterev = new StorageAfterOpenEvent(); + RaiseLocalEvent(uid, ref afterev); + } + + public void CloseStorage(EntityUid uid, SharedEntityStorageComponent? component = null) + { + if (!Resolve(uid, ref component)) + return; + component.Open = false; + Dirty(component); + + var targetCoordinates = new EntityCoordinates(uid, component.EnteringOffset); + + var entities = _lookup.GetEntitiesInRange(targetCoordinates, component.EnteringRange, LookupFlags.Approximate | LookupFlags.Dynamic | LookupFlags.Sundries); + + var ev = new StorageBeforeCloseEvent(entities, new()); + RaiseLocalEvent(uid, ref ev); + var count = 0; + foreach (var entity in ev.Contents) + { + if (!ev.BypassChecks.Contains(entity)) + { + if (!CanFit(entity, uid, component.Whitelist)) + continue; + } + + if (!AddToContents(entity, uid, component)) + continue; + + count++; + if (count >= component.Capacity) + break; + } + + TakeGas(uid, component); + ModifyComponents(uid, component); + if (_net.IsClient && _timing.IsFirstTimePredicted) + _audio.PlayPvs(component.CloseSound, uid); + component.LastInternalOpenAttempt = default; + var afterev = new StorageAfterCloseEvent(); + RaiseLocalEvent(uid, ref afterev); + } + + public bool Insert(EntityUid toInsert, EntityUid container, SharedEntityStorageComponent? component = null) + { + if (!Resolve(container, ref component)) + return false; + + if (component.Open) + { + _transform.SetWorldPosition(toInsert, _transform.GetWorldPosition(container)); + return true; + } + + var inside = EnsureComp(toInsert); + inside.Storage = container; + return component.Contents.Insert(toInsert, EntityManager); + } + + public bool Remove(EntityUid toRemove, EntityUid container, SharedEntityStorageComponent? component = null, TransformComponent? xform = null) + { + if (!Resolve(container, ref component, ref xform, false)) + return false; + + RemComp(toRemove); + component.Contents.Remove(toRemove, EntityManager); + var pos = _transform.GetWorldPosition(xform) + _transform.GetWorldRotation(xform).RotateVec(component.EnteringOffset); + _transform.SetWorldPosition(toRemove, pos); + return true; + } + + public bool CanInsert(EntityUid container, SharedEntityStorageComponent? component = null) + { + if (!Resolve(container, ref component)) + return false; + + if (component.Open) + return true; + + if (component.Contents.ContainedEntities.Count >= component.Capacity) + return false; + + return true; + } + + public bool TryOpenStorage(EntityUid user, EntityUid target, bool silent = false) + { + if (!CanOpen(user, target, silent)) + return false; + + OpenStorage(target); + return true; + } + + public bool TryCloseStorage(EntityUid target) + { + if (!CanClose(target)) + { + return false; + } + + CloseStorage(target); + return true; + } + + public bool CanOpen(EntityUid user, EntityUid target, bool silent = false, SharedEntityStorageComponent? component = null) + { + if (!Resolve(target, ref component)) + return false; + + if (!HasComp(user)) + return false; + + if (component.IsWeldedShut) + { + if (!silent && !component.Contents.Contains(user) && _net.IsServer) + Popup.PopupEntity(Loc.GetString("entity-storage-component-welded-shut-message"), target); + + return false; + } + + //Checks to see if the opening position, if offset, is inside of a wall. + if (component.EnteringOffset != (0, 0) && !HasComp(target)) //if the entering position is offset + { + var newCoords = new EntityCoordinates(target, component.EnteringOffset); + if (!_interaction.InRangeUnobstructed(target, newCoords, 0, collisionMask: component.EnteringOffsetCollisionFlags)) + { + if (!silent && _net.IsServer) + Popup.PopupEntity(Loc.GetString("entity-storage-component-cannot-open-no-space"), target); + return false; + } + } + + var ev = new StorageOpenAttemptEvent(silent); + RaiseLocalEvent(target, ref ev, true); + + return !ev.Cancelled; + } + + public bool CanClose(EntityUid target, bool silent = false) + { + var ev = new StorageCloseAttemptEvent(); + RaiseLocalEvent(target, ref ev, silent); + + return !ev.Cancelled; + } + + public bool AddToContents(EntityUid toAdd, EntityUid container, SharedEntityStorageComponent? component = null) + { + if (!Resolve(container, ref component)) + return false; + + if (toAdd == container) + return false; + + if (TryComp(toAdd, out var phys)) + { + var aabb = _physics.GetWorldAABB(toAdd, body: phys); + + if (component.MaxSize < aabb.Size.X || component.MaxSize < aabb.Size.Y) + return false; + } + + return Insert(toAdd, container, component); + } + + public bool CanFit(EntityUid toInsert, EntityUid container, EntityWhitelist? whitelist) + { + // conditions are complicated because of pizzabox-related issues, so follow this guide + // 0. Accomplish your goals at all costs. + // 1. AddToContents can block anything + // 2. maximum item count can block anything + // 3. ghosts can NEVER be eaten + // 4. items can always be eaten unless a previous law prevents it + // 5. if this is NOT AN ITEM, then mobs can always be eaten unless a previous + // law prevents it + // 6. if this is an item, then mobs must only be eaten if some other component prevents + // pick-up interactions while a mob is inside (e.g. foldable) + var attemptEvent = new InsertIntoEntityStorageAttemptEvent(); + RaiseLocalEvent(toInsert, ref attemptEvent); + if (attemptEvent.Cancelled) + return false; + + var targetIsMob = HasComp(toInsert); + var storageIsItem = HasComp(container); + var allowedToEat = whitelist?.IsValid(toInsert) ?? HasComp(toInsert); + + // BEFORE REPLACING THIS WITH, I.E. A PROPERTY: + // Make absolutely 100% sure you have worked out how to stop people ending up in backpacks. + // Seriously, it is insanely hacky and weird to get someone out of a backpack once they end up in there. + // And to be clear, they should NOT be in there. + // For the record, what you need to do is empty the backpack onto a PlacableSurface (table, rack) + if (targetIsMob) + { + if (!storageIsItem) + allowedToEat = true; + else + { + var storeEv = new StoreMobInItemContainerAttemptEvent(); + RaiseLocalEvent(container, ref storeEv); + allowedToEat = storeEv is { Handled: true, Cancelled: false }; + } + } + + return allowedToEat; + } + + private void ModifyComponents(EntityUid uid, SharedEntityStorageComponent? component = null) + { + if (!Resolve(uid, ref component)) + return; + + if (!component.IsCollidableWhenOpen && TryComp(uid, out var fixtures) && + fixtures.Fixtures.Count > 0) + { + // currently only works for single-fixture entities. If they have more than one fixture, then + // RemovedMasks needs to be tracked separately for each fixture, using a fixture Id Dictionary. Also the + // fixture IDs probably cant be automatically generated without causing issues, unless there is some + // guarantee that they will get deserialized with the same auto-generated ID when saving+loading the map. + var fixture = fixtures.Fixtures.Values.First(); + + if (component.Open) + { + component.RemovedMasks = fixture.CollisionLayer & component.MasksToRemove; + _physics.SetCollisionLayer(uid, fixture, fixture.CollisionLayer & ~component.MasksToRemove, + manager: fixtures); + } + else + { + _physics.SetCollisionLayer(uid, fixture, fixture.CollisionLayer | component.RemovedMasks, + manager: fixtures); + component.RemovedMasks = 0; + } + } + + if (TryComp(uid, out var surface)) + _placeableSurface.SetPlaceable(uid, component.Open, surface); + + _appearance.SetData(uid, StorageVisuals.Open, component.Open); + _appearance.SetData(uid, StorageVisuals.HasContents, component.Contents.ContainedEntities.Count > 0); + } + + protected virtual void TakeGas(EntityUid uid, SharedEntityStorageComponent component) + { + + } + + public virtual void ReleaseGas(EntityUid uid, SharedEntityStorageComponent component) + { + + } +} From 6ac3c4dc088df25e9429c89ca722c74916a771d4 Mon Sep 17 00:00:00 2001 From: Checkraze <71046427+Cheackraze@users.noreply.github.com> Date: Sun, 26 Feb 2023 07:55:44 -0500 Subject: [PATCH 14/53] Crayonsystem cleanup (#13400) Co-authored-by: 0x6273 <0x40@keemail.me> --- Content.Server/Crayon/CrayonSystem.cs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/Content.Server/Crayon/CrayonSystem.cs b/Content.Server/Crayon/CrayonSystem.cs index 82fb9c157f..3cd43f1654 100644 --- a/Content.Server/Crayon/CrayonSystem.cs +++ b/Content.Server/Crayon/CrayonSystem.cs @@ -23,6 +23,8 @@ public sealed class CrayonSystem : SharedCrayonSystem [Dependency] private readonly IAdminLogManager _adminLogger = default!; [Dependency] private readonly DecalSystem _decals = default!; [Dependency] private readonly PopupSystem _popup = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly UserInterfaceSystem _uiSystem = default!; public override void Initialize() { @@ -68,7 +70,7 @@ public sealed class CrayonSystem : SharedCrayonSystem return; if (component.UseSound != null) - SoundSystem.Play(component.UseSound.GetSound(), Filter.Pvs(uid), uid, AudioHelpers.WithVariation(0.125f)); + _audio.PlayPvs(component.UseSound, uid, AudioHelpers.WithVariation(0.125f)); // Decrease "Ammo" component.Charges--; @@ -86,14 +88,18 @@ public sealed class CrayonSystem : SharedCrayonSystem if (args.Handled) return; - if (!TryComp(args.User, out var actor)) return; + if (!TryComp(args.User, out var actor) || + component.UserInterface == null) + { + return; + } - component.UserInterface?.Toggle(actor.PlayerSession); + _uiSystem.ToggleUi(component.UserInterface, actor.PlayerSession); - if (component.UserInterface?.SessionHasOpen(actor.PlayerSession) == true) + if (component.UserInterface?.SubscribedSessions.Contains(actor.PlayerSession) == true) { // Tell the user interface the selected stuff - component.UserInterface.SetState(new CrayonBoundUserInterfaceState(component.SelectedState, component.SelectableColor, component.Color)); + _uiSystem.SetUiState(component.UserInterface, new CrayonBoundUserInterfaceState(component.SelectedState, component.SelectableColor, component.Color)); } args.Handled = true; @@ -134,7 +140,7 @@ public sealed class CrayonSystem : SharedCrayonSystem private void OnCrayonDropped(EntityUid uid, CrayonComponent component, DroppedEvent args) { if (TryComp(args.User, out var actor)) - component.UserInterface?.Close(actor.PlayerSession); + _uiSystem.TryClose(uid, SharedCrayonComponent.CrayonUiKey.Key, actor.PlayerSession); } private void UseUpCrayon(EntityUid uid, EntityUid user) From 61a671bbc61251c1a552f6ba3c9e58e705c5b9a2 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Sun, 26 Feb 2023 17:45:06 +0100 Subject: [PATCH 15/53] Send changelog to Discord webhook. (#14292) --- .github/workflows/publish.yml | 5 + Tools/actions_changelogs_since_last_run.py | 133 +++++++++++++++++++++ 2 files changed, 138 insertions(+) create mode 100755 Tools/actions_changelogs_since_last_run.py diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index a5644d54bf..08005cd8bd 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -57,3 +57,8 @@ jobs: key: ${{ secrets.CENTCOMM_WIZARDS_BUILDS_PUSH_KEY }} script: /home/wizards-build-push/push.ps1 ${{ github.sha }} + - name: Publish changelog + run: Tools/actions_changelogs_since_last_run.py + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + DISCORD_WEBHOOK_URL: ${{ secrets.CHANGELOG_DISCORD_WEBHOOK }} diff --git a/Tools/actions_changelogs_since_last_run.py b/Tools/actions_changelogs_since_last_run.py new file mode 100755 index 0000000000..cdc2838b58 --- /dev/null +++ b/Tools/actions_changelogs_since_last_run.py @@ -0,0 +1,133 @@ +#!/usr/bin/env python3 + +# +# Sends updates to a Discord webhook for new changelog entries since the last GitHub Actions publish run. +# Automatically figures out the last run and changelog contents with the GitHub API. +# + +import io +import itertools +import os +import requests +import yaml +from typing import Any, Iterable + +GITHUB_API_URL = os.environ.get("GITHUB_API_URL", "https://api.github.com") +GITHUB_REPO = os.environ["GITHUB_REPO"] +GITHUB_RUN = os.environ["GITHUB_RUN_ID"] +GITHUB_TOKEN = os.environ["GITHUB_TOKEN"] + +DISCORD_WEBHOOK_URL = os.environ.get("DISCORD_WEBHOOK_URL") + +CHANGELOG_FILE = "Resources/Changelog/Changelog.yml" + +TYPES_TO_EMOJI = { + "Fix": "🐛", + "Add": "🆕", + "Remove": "❌", + "Tweak": "⚒️" +} + +ChangelogEntry = dict[str, Any] + +def main(): + if not DISCORD_WEBHOOK_URL: + return + + session = requests.Session() + session.headers["Authorization"] = f"Bearer {GITHUB_TOKEN}" + session.headers["Accept"] = "Accept: application/vnd.github+json" + session.headers["X-GitHub-Api-Version"] = "2022-11-28" + + most_recent = get_most_recent_workflow(session) + last_sha = most_recent['head_commit']['id'] + print(f"Last successsful publish job was {most_recent['id']}: {last_sha}") + last_changelog = yaml.safe_load(get_last_changelog(session, last_sha)) + with open(CHANGELOG_FILE, "r") as f: + cur_changelog = yaml.safe_load(f) + + diff = diff_changelog(last_changelog, cur_changelog) + send_to_discord(diff) + + +def get_most_recent_workflow(sess: requests.Session) -> Any: + workflow_run = get_current_run(sess) + past_runs = get_past_runs(sess, workflow_run) + for run in past_runs['workflow_runs']: + # First past successful run that isn't our current run. + if run["id"] == workflow_run["id"]: + continue + + return run + + +def get_current_run(sess: requests.Session) -> Any: + resp = sess.get(f"{GITHUB_API_URL}/repos/{GITHUB_REPO}/actions/runs/{GITHUB_RUN}") + resp.raise_for_status() + return resp.json() + + +def get_past_runs(sess: requests.Session, current_run: Any) -> Any: + """ + Get all successful workflow runs before our current one. + """ + params = { + "status": "success", + "created": f"<={current_run['created_at']}" + } + resp = sess.get(f"{current_run['workflow_url']}/runs", params=params) + resp.raise_for_status() + return resp.json() + + +def get_last_changelog(sess: requests.Session, sha: str) -> str: + """ + Use GitHub API to get the previous version of the changelog YAML (Actions builds are fetched with a shallow clone) + """ + params = { + "ref": sha, + } + headers = { + "Accept": "application/vnd.github.raw" + } + + resp = sess.get(f"{GITHUB_API_URL}/repos/{GITHUB_REPO}/contents/{CHANGELOG_FILE}", headers=headers, params=params) + resp.raise_for_status() + return resp.text + + +def diff_changelog(old: dict[str, Any], cur: dict[str, Any]) -> Iterable[ChangelogEntry]: + """ + Find all new entries not present in the previous publish. + """ + old_entry_ids = {e["id"] for e in old["Entries"]} + return (e for e in cur["Entries"] if e["id"] not in old_entry_ids) + + +def send_to_discord(entries: Iterable[ChangelogEntry]) -> None: + if not DISCORD_WEBHOOK_URL: + return + + content = io.StringIO() + for name, group in itertools.groupby(entries, lambda x: x["author"]): + content.write(f"**{name}** updated:\n") + for entry in group: + for change in entry["changes"]: + emoji = TYPES_TO_EMOJI.get(change['type'], "❓") + message = change['message'] + content.write(f"{emoji} {message}\n") + + body = { + "content": content.getvalue(), + # Do not allow any mentions. + "allowed_mentions": { + "parse": [] + }, + # SUPPRESS_EMBEDS + "flags": 1 << 2 + } + + requests.post(DISCORD_WEBHOOK_URL, json=body) + + +main() \ No newline at end of file From 0e8b3b9999e94c946dfdcc78a9c95142b38a1ce8 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 26 Feb 2023 11:46:10 -0500 Subject: [PATCH 16/53] Automatic changelog update --- Resources/Changelog/Changelog.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 5a5bb4f9ba..8e03966a42 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: Vordenburg - changes: - - {message: Allowed gas filters to be reset to filter no gases., type: Add} - id: 2570 - time: '2022-11-04T01:27:20.0000000+00:00' - author: ShadowCommander changes: - {message: Alt-clicking can now be used on hands again., type: Fix} @@ -2918,3 +2913,9 @@ Entries: properly., type: Fix} id: 3069 time: '2023-02-26T07:48:58.0000000+00:00' +- author: PJB3005 + changes: + - {message: Game changelogs are now sent to Discord. Assuming everything works you + might even be reading this there right now!, type: Add} + id: 3070 + time: '2023-02-26T16:45:07.0000000+00:00' From 587e173bcc0104863c8ffa0e0d48a217e42254b6 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Sun, 26 Feb 2023 17:48:06 +0100 Subject: [PATCH 17/53] Oopsied the workflow file, awesome. (#14293) --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 08005cd8bd..5e1b9d65fa 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -59,6 +59,6 @@ jobs: - name: Publish changelog run: Tools/actions_changelogs_since_last_run.py - with: + env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} DISCORD_WEBHOOK_URL: ${{ secrets.CHANGELOG_DISCORD_WEBHOOK }} From 24121c11688ab10fce05522fe9ab834b1fe93e60 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Sun, 26 Feb 2023 18:03:57 +0100 Subject: [PATCH 18/53] Fix GITHUB_REPOSITORY in changelog pusher (#14294) --- Tools/actions_changelogs_since_last_run.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Tools/actions_changelogs_since_last_run.py b/Tools/actions_changelogs_since_last_run.py index cdc2838b58..0c46cd22ec 100755 --- a/Tools/actions_changelogs_since_last_run.py +++ b/Tools/actions_changelogs_since_last_run.py @@ -12,10 +12,10 @@ import requests import yaml from typing import Any, Iterable -GITHUB_API_URL = os.environ.get("GITHUB_API_URL", "https://api.github.com") -GITHUB_REPO = os.environ["GITHUB_REPO"] -GITHUB_RUN = os.environ["GITHUB_RUN_ID"] -GITHUB_TOKEN = os.environ["GITHUB_TOKEN"] +GITHUB_API_URL = os.environ.get("GITHUB_API_URL", "https://api.github.com") +GITHUB_REPOSITORY = os.environ["GITHUB_REPOSITORY"] +GITHUB_RUN = os.environ["GITHUB_RUN_ID"] +GITHUB_TOKEN = os.environ["GITHUB_TOKEN"] DISCORD_WEBHOOK_URL = os.environ.get("DISCORD_WEBHOOK_URL") @@ -62,7 +62,7 @@ def get_most_recent_workflow(sess: requests.Session) -> Any: def get_current_run(sess: requests.Session) -> Any: - resp = sess.get(f"{GITHUB_API_URL}/repos/{GITHUB_REPO}/actions/runs/{GITHUB_RUN}") + resp = sess.get(f"{GITHUB_API_URL}/repos/{GITHUB_REPOSITORY}/actions/runs/{GITHUB_RUN}") resp.raise_for_status() return resp.json() @@ -91,7 +91,7 @@ def get_last_changelog(sess: requests.Session, sha: str) -> str: "Accept": "application/vnd.github.raw" } - resp = sess.get(f"{GITHUB_API_URL}/repos/{GITHUB_REPO}/contents/{CHANGELOG_FILE}", headers=headers, params=params) + resp = sess.get(f"{GITHUB_API_URL}/repos/{GITHUB_REPOSITORY}/contents/{CHANGELOG_FILE}", headers=headers, params=params) resp.raise_for_status() return resp.text From 5d44386035e357a02185b2028b88536a024cb30e Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Mon, 27 Feb 2023 10:54:15 +1100 Subject: [PATCH 19/53] Sync lava sprites (#14059) --- Resources/Prototypes/Entities/Tiles/lava.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/Entities/Tiles/lava.yml b/Resources/Prototypes/Entities/Tiles/lava.yml index c2129fb143..ee91e83ecb 100644 --- a/Resources/Prototypes/Entities/Tiles/lava.yml +++ b/Resources/Prototypes/Entities/Tiles/lava.yml @@ -12,6 +12,7 @@ - type: Lava - type: Transform anchored: true + - type: SyncSprite - type: Sprite sprite: Tiles/Planet/lava.rsi netsync: false From 68cba24dab5026031c76f55a1e38490dd8f58cf8 Mon Sep 17 00:00:00 2001 From: Emisse <99158783+Emisse@users.noreply.github.com> Date: Mon, 27 Feb 2023 14:17:52 -0700 Subject: [PATCH 20/53] Bagel Station Evac Shuttle Lox (#14307) * proto * mapfile * posters n shit * gyroscope oop --- Resources/Maps/Shuttles/emergency_lox.yml | 6038 +++++++++++++++++++++ Resources/Prototypes/Maps/bagel.yml | 2 +- 2 files changed, 6039 insertions(+), 1 deletion(-) create mode 100644 Resources/Maps/Shuttles/emergency_lox.yml diff --git a/Resources/Maps/Shuttles/emergency_lox.yml b/Resources/Maps/Shuttles/emergency_lox.yml new file mode 100644 index 0000000000..1498e66f92 --- /dev/null +++ b/Resources/Maps/Shuttles/emergency_lox.yml @@ -0,0 +1,6038 @@ +meta: + format: 3 + name: DemoStation + author: Space-Wizards + postmapinit: false +tilemap: + 0: Space + 1: FloorArcadeBlue + 2: FloorArcadeBlue2 + 3: FloorArcadeRed + 4: FloorAsteroidCoarseSand0 + 5: FloorAsteroidCoarseSandDug + 6: FloorAsteroidIronsand1 + 7: FloorAsteroidIronsand2 + 8: FloorAsteroidIronsand3 + 9: FloorAsteroidIronsand4 + 10: FloorAsteroidSand + 11: FloorAsteroidTile + 12: FloorBar + 13: FloorBasalt + 14: FloorBlue + 15: FloorBlueCircuit + 16: FloorBoxing + 17: FloorCarpetClown + 18: FloorCarpetOffice + 19: FloorCave + 20: FloorCaveDrought + 21: FloorClown + 22: FloorDark + 23: FloorDarkDiagonal + 24: FloorDarkDiagonalMini + 25: FloorDarkHerringbone + 26: FloorDarkMini + 27: FloorDarkMono + 28: FloorDarkOffset + 29: FloorDarkPavement + 30: FloorDarkPavementVertical + 31: FloorDarkPlastic + 32: FloorDesert + 33: FloorDirt + 34: FloorEighties + 35: FloorElevatorShaft + 36: FloorFlesh + 37: FloorFreezer + 38: FloorGlass + 39: FloorGold + 40: FloorGrass + 41: FloorGrassDark + 42: FloorGrassJungle + 43: FloorGrassLight + 44: FloorGreenCircuit + 45: FloorGym + 46: FloorHydro + 47: FloorKitchen + 48: FloorLaundry + 49: FloorLino + 50: FloorLowDesert + 51: FloorMetalDiamond + 52: FloorMime + 53: FloorMono + 54: FloorPlanetGrass + 55: FloorPlastic + 56: FloorRGlass + 57: FloorReinforced + 58: FloorRockVault + 59: FloorShowroom + 60: FloorShuttleBlue + 61: FloorShuttleOrange + 62: FloorShuttlePurple + 63: FloorShuttleRed + 64: FloorShuttleWhite + 65: FloorSilver + 66: FloorSnow + 67: FloorSteel + 68: FloorSteelDiagonal + 69: FloorSteelDiagonalMini + 70: FloorSteelDirty + 71: FloorSteelHerringbone + 72: FloorSteelMini + 73: FloorSteelMono + 74: FloorSteelOffset + 75: FloorSteelPavement + 76: FloorSteelPavementVertical + 77: FloorTechMaint + 78: FloorTechMaint2 + 79: FloorTechMaint3 + 80: FloorWhite + 81: FloorWhiteDiagonal + 82: FloorWhiteDiagonalMini + 83: FloorWhiteHerringbone + 84: FloorWhiteMini + 85: FloorWhiteMono + 86: FloorWhiteOffset + 87: FloorWhitePavement + 88: FloorWhitePavementVertical + 89: FloorWhitePlastic + 90: FloorWood + 91: FloorWoodTile + 92: Lattice + 93: Plating +entities: +- uid: 0 + components: + - name: NT Evac Lox + type: MetaData + - pos: 2.2710133,-2.4148211 + parent: invalid + type: Transform + - chunks: + -1,0: + ind: -1,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAJgAAABYAAAFdAAAAFgAAAyYAAAAWAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAEMAAAAWAAABKAAAABYAAABDAAACFgAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAmAAAAFgAAAygAAAAWAAACJgAAABYAAAMoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAQwAAAxYAAAAoAAAAFgAAAUMAAAIWAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAACYAAAAWAAACXQAAABYAAAEmAAAAFgAAAl0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE0AAABDAAABQwAAAEMAAABDAAABQwAAA0MAAAFDAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAFgAAAkMAAABDAAADQwAAAkMAAABDAAAAQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATQAAAEMAAAJDAAABXQAAADEAAAAxAAAAMQAAAF0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAABdAAAAQwAAAV0AAAAxAAAAMQAAADEAAABdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAUAAAA1AAAABdAAAAXQAAAF0AAABdAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAFAAAABQAAACUAAAA1AAAAFQAAABUAAAA10AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAABQAAAAUAAAAVAAAABQAAACUAAAA1AAAABdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAXQAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAF0AAABaAAACMQAAADEAAAAxAAAAMQAAADEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAABdAAAAWgAAAzEAAAAxAAAAMQAAADEAAAAxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAF0AAABaAAABWgAAA1oAAABaAAAAWgAAAA== + -1,-1: + ind: -1,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAF0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAABdAAAAHQAAAR0AAAAdAAACHQAAAx0AAAIdAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAOQAAADkAAAAWAAACOgAAADoAAAA6AAAAQwAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAABYAAAMWAAADFgAAAjoAAAA6AAAAOgAAAF0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAABdAAAAXQAAAF0AAAA6AAAAOgAAADoAAAAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAXQAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAABYAAAAWAAADFgAAARYAAAM/AAAAPwAAAF0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAWAAADFgAAARYAAAEWAAACPwAAAD8AAABdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAXQAAABYAAAJdAAAAFgAAAz8AAAA/AAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATQAAAEMAAAJDAAACXQAAAF0AAABdAAAAXQAAAF0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAWAAAAQwAAA0MAAANDAAABQwAAA0MAAAFDAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNAAAAQwAAAUMAAANDAAACQwAAAEMAAANDAAAAQwAAAQ== + 0,-1: + ind: 0,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAABdAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAXQAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAF0AAABdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEMAAAJDAAADXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDAAABQwAAAV0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQwAAAEMAAAJdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEMAAAFDAAADXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDAAAAQwAAAF0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQwAAAE0AAABdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEMAAAFDAAADTQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDAAAAFgAAAl0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQwAAAkMAAAJNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 0,0: + ind: 0,0 + tiles: FgAAASYAAABdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAABDAAACXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAAAJgAAAF0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAUMAAABdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAAImAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDAAAAQwAAA00AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQwAAABYAAAFdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEMAAAJDAAABTQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDAAACQwAAA10AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQwAAA0MAAABdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEMAAABDAAADXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDAAACQwAAA10AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAV0AAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFoAAAJdAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABaAAABXQAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAF0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + -1,1: + ind: -1,1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 0,1: + ind: 0,1 + tiles: XQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + type: MapGrid + - type: Broadphase + - angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + type: Physics + - fixtures: [] + type: Fixtures + - gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + type: Gravity + - chunkCollection: + 0,0: + 0: + color: '#FFFFFFFF' + id: BrickTileSteelBox + coordinates: 1,0 + 1: + color: '#FFFFFFFF' + id: BrickTileSteelBox + coordinates: 1,2 + 2: + color: '#FFFFFFFF' + id: BrickTileSteelBox + coordinates: 1,4 + 30: + color: '#D4D4D428' + id: QuarterTileOverlayGreyscale180 + coordinates: 1,1 + 31: + color: '#D4D4D428' + id: QuarterTileOverlayGreyscale90 + coordinates: 1,3 + 32: + color: '#D4D4D428' + id: QuarterTileOverlayGreyscale90 + coordinates: 1,5 + 33: + color: '#D4D4D428' + id: QuarterTileOverlayGreyscale90 + coordinates: 1,7 + 34: + color: '#D4D4D428' + id: QuarterTileOverlayGreyscale90 + coordinates: 1,8 + 35: + color: '#334E6DC8' + id: QuarterTileOverlayGreyscale90 + coordinates: 1,9 + 36: + color: '#334E6DC8' + id: QuarterTileOverlayGreyscale90 + coordinates: 1,10 + 37: + color: '#334E6DC8' + id: QuarterTileOverlayGreyscale90 + coordinates: 1,11 + 38: + color: '#FFFFFFFF' + id: BotLeft + 39: + color: '#FFFFFFFF' + id: BotLeft + coordinates: 0,1 + 40: + color: '#FFFFFFFF' + id: BotLeft + coordinates: 0,2 + 41: + color: '#FFFFFFFF' + id: BotLeft + coordinates: 0,3 + 42: + color: '#FFFFFFFF' + id: BotLeft + coordinates: 0,4 + 83: + angle: 1.5707963267948966 rad + color: '#FFFFFFFF' + id: Arrows + coordinates: 1,5 + 84: + angle: 1.5707963267948966 rad + color: '#FFFFFFFF' + id: Arrows + coordinates: 1,7 + 89: + color: '#FFFFFFFF' + id: Bot + coordinates: 1,8 + 90: + color: '#FFFFFFFF' + id: BotLeft + coordinates: 1,9 + 91: + color: '#FFFFFFFF' + id: BotLeft + coordinates: 1,10 + 92: + color: '#334E6DC8' + id: QuarterTileOverlayGreyscale + coordinates: 0,11 + 93: + color: '#334E6DC8' + id: QuarterTileOverlayGreyscale + coordinates: 0,10 + 94: + color: '#334E6DC8' + id: QuarterTileOverlayGreyscale + coordinates: 0,9 + 95: + color: '#D4D4D428' + id: QuarterTileOverlayGreyscale + coordinates: 0,8 + 96: + color: '#D4D4D428' + id: QuarterTileOverlayGreyscale + coordinates: 0,7 + 97: + color: '#D4D4D428' + id: QuarterTileOverlayGreyscale + coordinates: 0,6 + 100: + color: '#D4D4D428' + id: BrickTileWhiteLineS + coordinates: 0,5 + 104: + color: '#D4D4D428' + id: BrickTileWhiteInnerSw + coordinates: 1,5 + 148: + color: '#FFFFFFFF' + id: BotLeft + coordinates: 1,6 + -1,0: + 3: + color: '#FFFFFFFF' + id: BrickTileSteelBox + coordinates: -3,0 + 4: + color: '#FFFFFFFF' + id: BrickTileSteelBox + coordinates: -3,2 + 5: + color: '#FFFFFFFF' + id: BrickTileSteelBox + coordinates: -3,4 + 6: + color: '#FFFFFFFF' + id: BrickTileSteelBox + coordinates: -7,0 + 7: + color: '#FFFFFFFF' + id: BrickTileSteelBox + coordinates: -7,2 + 8: + color: '#FFFFFFFF' + id: BrickTileSteelBox + coordinates: -7,4 + 9: + color: '#FFFFFFFF' + id: WoodTrimThinCornerNw + coordinates: -5,14 + 10: + color: '#FFFFFFFF' + id: WoodTrimThinLineW + coordinates: -5,13 + 11: + color: '#FFFFFFFF' + id: WoodTrimThinCornerNe + coordinates: -1,14 + 12: + color: '#FFFFFFFF' + id: WoodTrimThinLineE + coordinates: -1,13 + 13: + color: '#FFFFFFFF' + id: WoodTrimThinLineN + coordinates: -2,14 + 14: + color: '#FFFFFFFF' + id: WoodTrimThinLineN + coordinates: -3,14 + 15: + color: '#FFFFFFFF' + id: WoodTrimThinLineN + coordinates: -4,14 + 16: + color: '#0000004A' + id: HalfTileOverlayGreyscale + coordinates: -4,6 + 17: + color: '#0000004A' + id: HalfTileOverlayGreyscale + coordinates: -3,6 + 18: + color: '#0000004A' + id: HalfTileOverlayGreyscale + coordinates: -2,6 + 19: + color: '#0000004A' + id: BrickTileWhiteLineN + coordinates: -2,6 + 20: + color: '#0000004A' + id: BrickTileWhiteLineN + coordinates: -3,6 + 21: + color: '#0000004A' + id: BrickTileWhiteLineN + coordinates: -4,6 + 22: + color: '#D4D4D428' + id: QuarterTileOverlayGreyscale + coordinates: -7,7 + 23: + color: '#D4D4D428' + id: QuarterTileOverlayGreyscale + coordinates: -7,5 + 24: + color: '#D4D4D428' + id: QuarterTileOverlayGreyscale + coordinates: -7,3 + 25: + color: '#D4D4D428' + id: QuarterTileOverlayGreyscale270 + coordinates: -7,1 + 43: + color: '#FFFFFFFF' + id: BotLeft + coordinates: -4,0 + 44: + color: '#FFFFFFFF' + id: BotLeft + coordinates: -4,1 + 45: + color: '#FFFFFFFF' + id: BotLeft + coordinates: -4,2 + 46: + color: '#FFFFFFFF' + id: BotLeft + coordinates: -4,3 + 47: + color: '#FFFFFFFF' + id: BotLeft + coordinates: -4,4 + 48: + color: '#FFFFFFFF' + id: BotRight + coordinates: -2,0 + 49: + color: '#FFFFFFFF' + id: BotRight + coordinates: -2,1 + 50: + color: '#FFFFFFFF' + id: BotRight + coordinates: -2,2 + 51: + color: '#FFFFFFFF' + id: BotRight + coordinates: -2,3 + 52: + color: '#FFFFFFFF' + id: BotRight + coordinates: -2,4 + 53: + color: '#FFFFFFFF' + id: BotRight + coordinates: -6,0 + 54: + color: '#FFFFFFFF' + id: BotRight + coordinates: -6,1 + 55: + color: '#FFFFFFFF' + id: BotRight + coordinates: -6,2 + 56: + color: '#FFFFFFFF' + id: BotRight + coordinates: -6,3 + 57: + color: '#FFFFFFFF' + id: BotRight + coordinates: -6,4 + 58: + color: '#9FED5896' + id: BrickTileWhiteCornerNw + coordinates: -7,11 + 59: + color: '#9FED5896' + id: BrickTileWhiteCornerNe + coordinates: -5,11 + 60: + color: '#9FED5896' + id: BrickTileWhiteCornerSe + coordinates: -5,10 + 61: + color: '#9FED5896' + id: BrickTileWhiteCornerSe + coordinates: -6,9 + 62: + color: '#9FED5896' + id: BrickTileWhiteCornerSw + coordinates: -7,9 + 63: + color: '#9FED5896' + id: BrickTileWhiteInnerSe + coordinates: -6,10 + 64: + color: '#9FED5896' + id: BrickTileWhiteLineN + coordinates: -6,11 + 65: + color: '#9FED5896' + id: BrickTileWhiteLineW + coordinates: -7,10 + 66: + color: '#EFDF4196' + id: ThreeQuarterTileOverlayGreyscale + coordinates: -6,10 + 67: + color: '#EFDF4196' + id: QuarterTileOverlayGreyscale270 + coordinates: -6,11 + 68: + color: '#EFDF4196' + id: QuarterTileOverlayGreyscale90 + coordinates: -7,10 + 69: + color: '#52B4E996' + id: BrickTileWhiteCornerNe + coordinates: -2,11 + 70: + color: '#52B4E996' + id: BrickTileWhiteCornerNw + coordinates: -4,11 + 71: + color: '#52B4E996' + id: BrickTileWhiteLineN + coordinates: -3,11 + 72: + color: '#52B4E996' + id: BrickTileWhiteCornerSe + coordinates: -2,10 + 73: + color: '#52B4E996' + id: BrickTileWhiteCornerSw + coordinates: -4,10 + 74: + color: '#52B4E996' + id: BrickTileWhiteLineS + coordinates: -3,10 + 75: + color: '#52B4E996' + id: BoxGreyscale + coordinates: -3,11 + 76: + angle: -3.141592653589793 rad + color: '#52B4E996' + id: ArrowsGreyscale + coordinates: -3,10 + 77: + angle: -1.5707963267948966 rad + color: '#FFFFFFFF' + id: Arrows + coordinates: -7,7 + 78: + angle: -1.5707963267948966 rad + color: '#FFFFFFFF' + id: Arrows + coordinates: -7,5 + 85: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: -5,5 + 86: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: -1,5 + 87: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: -1,6 + 88: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: -5,6 + 98: + color: '#D4D4D428' + id: QuarterTileOverlayGreyscale90 + coordinates: -6,6 + 99: + color: '#D4D4D428' + id: QuarterTileOverlayGreyscale90 + coordinates: -6,7 + 101: + color: '#D4D4D428' + id: BrickTileWhiteLineS + coordinates: -2,5 + 102: + color: '#D4D4D428' + id: BrickTileWhiteLineS + coordinates: -4,5 + 103: + color: '#D4D4D428' + id: BrickTileWhiteLineS + coordinates: -6,5 + 105: + color: '#D4D4D428' + id: BrickTileWhiteInnerSw + coordinates: -3,5 + 106: + color: '#D4D4D428' + id: BrickTileWhiteInnerSe + coordinates: -3,5 + 107: + color: '#D4D4D428' + id: BrickTileWhiteInnerSe + coordinates: -7,5 + 120: + color: '#FFFFFFFF' + id: Grasse3 + coordinates: -1,1 + 121: + color: '#FFFFFFFF' + id: Grasse3 + coordinates: -5,2 + 122: + color: '#FFFFFFFF' + id: Grasse2 + coordinates: -1,2 + 123: + color: '#FFFFFFFF' + id: Grasse2 + coordinates: -1,3 + 124: + color: '#FFFFFFFF' + id: Grasse1 + coordinates: -5,1 + 125: + color: '#FFFFFFFF' + id: Grassd3 + coordinates: -5,3 + 126: + color: '#FFFFFFFF' + id: Flowersy2 + coordinates: -0.95633864,0.9614446 + 127: + color: '#FFFFFFFF' + id: Flowersy2 + coordinates: -5.003214,2.7270696 + 128: + color: '#FFFFFFFF' + id: Flowersy3 + coordinates: -0.97196364,1.8208196 + 129: + color: '#FFFFFFFF' + id: Flowersy3 + coordinates: -5.003214,1.3364446 + 130: + color: '#FFFFFFFF' + id: FlowersBRTwo + coordinates: -0.97196364,2.4770696 + 131: + color: '#FFFFFFFF' + id: FlowersBROne + coordinates: -5.034464,1.8989446 + 132: + color: '#FFFFFFFF' + id: BushCThree + coordinates: -5.018839,0.9301946 + 133: + color: '#FFFFFFFF' + id: Bushc3 + coordinates: -1.0032136,2.9458196 + 134: + color: '#FFFFFFFF' + id: BushATwo + coordinates: -1.0188386,1.4614446 + 135: + color: '#FFFFFFFF' + id: Grassb5 + coordinates: -5.003214,3.1020696 + 136: + color: '#FFFFFFFF' + id: Bushi3 + coordinates: -0.98758864,2.5083196 + 147: + color: '#FFFFFFFF' + id: BotRight + coordinates: -7,6 + -1,-1: + 26: + color: '#D4D4D428' + id: QuarterTileOverlayGreyscale270 + coordinates: -7,-1 + 27: + color: '#D4D4D428' + id: QuarterTileOverlayGreyscale270 + coordinates: -7,-3 + 79: + angle: -1.5707963267948966 rad + color: '#FFFFFFFF' + id: Arrows + coordinates: -7,-1 + 80: + angle: -1.5707963267948966 rad + color: '#FFFFFFFF' + id: Arrows + coordinates: -7,-3 + 109: + color: '#D4D4D428' + id: BrickTileWhiteLineN + coordinates: -2,-1 + 110: + color: '#D4D4D428' + id: BrickTileWhiteLineN + coordinates: -4,-1 + 111: + color: '#D4D4D428' + id: BrickTileWhiteLineN + coordinates: -6,-1 + 113: + color: '#D4D4D428' + id: BrickTileWhiteInnerNw + coordinates: -3,-1 + 114: + color: '#D4D4D428' + id: BrickTileWhiteInnerNe + coordinates: -3,-1 + 115: + color: '#D4D4D428' + id: BrickTileWhiteInnerNe + coordinates: -7,-1 + 116: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: -1,-2 + 117: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: -5,-2 + 118: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: -1,-1 + 119: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: -5,-1 + 149: + color: '#FFFFFFFF' + id: BotLeft + coordinates: -7,-2 + 153: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: -2,-10 + 154: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: -3,-10 + 155: + color: '#FFFFFFFF' + id: WarnCornerSW + coordinates: -4,-10 + 156: + color: '#FFFFFFFF' + id: WarnLineS + coordinates: -4,-9 + 157: + color: '#FFFFFFFF' + id: WarnLineS + coordinates: -4,-8 + 158: + color: '#FFFFFFFF' + id: WarnLineS + coordinates: -5,-10 + 159: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: -6,-9 + 160: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: -7,-9 + 161: + color: '#FFFFFFFF' + id: WarnCornerSmallSW + coordinates: -5,-9 + 162: + color: '#FFFFFFFF' + id: Delivery + coordinates: -7,-9 + 163: + color: '#FFFFFFFF' + id: Caution + coordinates: -5,-9 + 164: + angle: -1.5707963267948966 rad + color: '#FFFFFFFF' + id: Arrows + coordinates: -6,-9 + 166: + color: '#FFFFFFFF' + id: WarnCornerSmallNW + coordinates: -5,-11 + 167: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: -6,-11 + 168: + color: '#D4D4D428' + id: QuarterTileOverlayGreyscale180 + coordinates: -2,-2 + 169: + color: '#D4D4D428' + id: QuarterTileOverlayGreyscale270 + coordinates: -4,-2 + 170: + color: '#DE3A3A96' + id: BrickTileWhiteCornerNw + coordinates: -7,-5 + 171: + color: '#DE3A3A96' + id: BrickTileWhiteCornerSw + coordinates: -7,-6 + 172: + color: '#DE3A3A96' + id: BrickTileWhiteCornerSe + coordinates: -4,-6 + 173: + color: '#DE3A3A96' + id: BrickTileWhiteLineS + coordinates: -5,-6 + 174: + color: '#DE3A3A96' + id: BrickTileWhiteLineS + coordinates: -6,-6 + 175: + color: '#DE3A3A96' + id: BrickTileWhiteLineN + coordinates: -5,-5 + 176: + color: '#DE3A3A96' + id: BrickTileWhiteInnerNw + coordinates: -4,-5 + 177: + color: '#DE3A3A96' + id: BrickTileWhiteEndN + coordinates: -4,-4 + 178: + color: '#DE3A3A96' + id: BrickTileWhiteLineE + coordinates: -4,-5 + 179: + color: '#DE3A3A96' + id: WarnLineGreyscaleN + coordinates: -6,-5 + 180: + color: '#DE3A3A96' + id: Delivery + coordinates: -6,-4 + 181: + color: '#DE3A3A96' + id: WarnLineGreyscaleS + coordinates: -6,-3 + 0,-1: + 28: + color: '#D4D4D428' + id: QuarterTileOverlayGreyscale180 + coordinates: 1,-3 + 29: + color: '#D4D4D428' + id: QuarterTileOverlayGreyscale180 + coordinates: 1,-1 + 81: + angle: 1.5707963267948966 rad + color: '#FFFFFFFF' + id: Arrows + coordinates: 1,-3 + 82: + angle: 1.5707963267948966 rad + color: '#FFFFFFFF' + id: Arrows + coordinates: 1,-1 + 108: + color: '#D4D4D428' + id: BrickTileWhiteLineN + coordinates: 0,-1 + 112: + color: '#D4D4D428' + id: BrickTileWhiteInnerNw + coordinates: 1,-1 + 137: + color: '#A4610696' + id: QuarterTileOverlayGreyscale90 + coordinates: 1,-5 + 138: + color: '#A4610696' + id: QuarterTileOverlayGreyscale90 + coordinates: 1,-6 + 139: + color: '#A4610696' + id: QuarterTileOverlayGreyscale90 + coordinates: 1,-8 + 140: + color: '#A4610696' + id: QuarterTileOverlayGreyscale90 + coordinates: 1,-9 + 141: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale + coordinates: 0,-5 + 142: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale + coordinates: 0,-6 + 143: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale + coordinates: 0,-7 + 144: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale + coordinates: 0,-8 + 145: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale + coordinates: 0,-9 + 146: + color: '#FFFFFFFF' + id: BotRight + coordinates: 1,-2 + 150: + color: '#FFFFFFFF' + id: Bot + coordinates: 1,-5 + 151: + color: '#FFFFFFFF' + id: Bot + coordinates: 1,-6 + 152: + color: '#A4610696' + id: QuarterTileOverlayGreyscale90 + coordinates: 1,-7 + 165: + color: '#FFFFFFFF' + id: Delivery + coordinates: 1,-4 + 182: + color: '#FFFFFFFF' + id: Bot + coordinates: 0,-11 + 183: + color: '#FFFFFFFF' + id: Arrows + coordinates: 0,-9 + type: DecalGrid + - tiles: + -5,-2: 0 + -5,-1: 1 + -4,-10: 0 + -4,-4: 0 + -4,-3: 0 + -3,-11: 0 + -3,-8: 0 + -3,-7: 0 + -3,-6: 0 + -2,-11: 0 + -2,-9: 0 + -2,-8: 0 + -2,-7: 0 + -2,-6: 0 + -2,-5: 0 + -2,-4: 1 + -2,-3: 0 + -2,-1: 0 + -1,-11: 0 + -1,-9: 0 + -1,-8: 0 + -1,-7: 0 + -1,-6: 0 + -1,-5: 0 + -1,-4: 0 + -1,-3: 0 + -1,-1: 0 + -5,5: 0 + -5,6: 0 + -5,7: 0 + -4,1: 0 + -4,2: 0 + -4,3: 0 + -4,7: 0 + -4,8: 0 + -4,9: 0 + -3,12: 0 + -3,13: 0 + -3,14: 0 + -2,0: 0 + -2,1: 0 + -2,2: 0 + -2,3: 0 + -2,4: 0 + -2,5: 0 + -2,7: 0 + -2,8: 0 + -2,9: 0 + -2,10: 0 + -1,0: 0 + -1,1: 0 + -1,2: 0 + -1,3: 0 + -1,4: 0 + -1,5: 0 + -1,7: 0 + -1,8: 0 + -1,9: 0 + -1,10: 0 + -1,12: 0 + -1,13: 0 + -1,14: 0 + 0,-11: 0 + 0,-9: 0 + 0,-8: 0 + 0,-7: 0 + 0,-6: 0 + 0,-5: 0 + 0,-4: 0 + 0,-3: 0 + 1,-11: 0 + 1,-9: 0 + 1,-8: 0 + 1,-7: 0 + 1,-6: 0 + 1,-5: 0 + 1,-4: 0 + 1,-3: 0 + 1,-1: 0 + 2,-11: 0 + 2,-9: 0 + 2,-8: 0 + 2,-7: 0 + 2,-6: 0 + 2,-5: 0 + 2,-4: 0 + 2,-3: 0 + 2,-1: 0 + 3,-11: 0 + 3,-9: 0 + 3,-8: 0 + 3,-7: 0 + 3,-6: 0 + 3,-5: 0 + 3,-4: 0 + 3,-3: 0 + 3,-1: 0 + 4,-11: 0 + 4,-8: 0 + 4,-7: 0 + 4,-6: 0 + 5,-10: 0 + 5,-4: 0 + 5,-3: 0 + 6,-2: 0 + 6,-1: 0 + 0,7: 0 + 0,8: 0 + 0,9: 0 + 0,10: 0 + 0,12: 0 + 0,13: 0 + 0,14: 0 + 0,15: 0 + 1,0: 0 + 1,1: 0 + 1,2: 0 + 1,3: 0 + 1,4: 0 + 1,5: 0 + 1,7: 0 + 1,8: 1 + 1,9: 0 + 1,10: 0 + 1,12: 0 + 1,13: 0 + 1,14: 0 + 1,15: 0 + 2,0: 0 + 2,1: 0 + 2,2: 0 + 2,3: 0 + 2,4: 0 + 2,5: 0 + 2,7: 0 + 2,8: 0 + 2,9: 0 + 2,10: 0 + 2,12: 0 + 2,13: 0 + 2,14: 0 + 3,0: 0 + 3,1: 0 + 3,2: 0 + 3,3: 0 + 3,4: 0 + 3,5: 0 + 3,7: 0 + 3,8: 0 + 3,9: 0 + 3,10: 0 + 4,12: 0 + 4,13: 0 + 4,14: 0 + 5,1: 0 + 5,2: 0 + 5,3: 0 + 5,7: 0 + 5,8: 0 + 5,9: 0 + 6,1: 0 + 6,2: 0 + 6,3: 0 + 6,5: 0 + 6,6: 0 + 6,7: 0 + 0,17: 0 + 1,17: 0 + 2,17: 0 + 3,16: 0 + -2,16: 0 + -1,17: 0 + -4,-9: 0 + -4,-8: 0 + -4,-7: 0 + -4,-6: 0 + -4,-5: 0 + -3,-10: 0 + -3,-9: 0 + -3,-5: 0 + -3,-4: 0 + -3,-3: 0 + -3,-2: 0 + -3,-1: 0 + -2,-10: 0 + -2,-2: 0 + -1,-10: 0 + -1,-2: 0 + -5,0: 0 + -5,1: 0 + -5,2: 0 + -5,3: 0 + -5,4: 0 + -4,0: 0 + -4,4: 0 + -3,0: 0 + -3,1: 0 + -3,2: 0 + -3,3: 0 + -3,4: 0 + -3,5: 0 + -3,6: 0 + -3,7: 0 + -3,8: 0 + -3,9: 0 + -3,10: 0 + -3,11: 0 + -2,6: 0 + -2,11: 0 + -2,12: 0 + -2,13: 0 + -2,14: 0 + -2,15: 0 + -1,6: 0 + -1,11: 0 + -1,15: 0 + 0,-10: 0 + 0,-2: 0 + 0,-1: 0 + 1,-10: 0 + 1,-2: 0 + 2,-10: 0 + 2,-2: 0 + 3,-10: 0 + 3,-2: 0 + 4,-10: 0 + 4,-9: 0 + 4,-5: 0 + 4,-4: 0 + 4,-3: 0 + 4,-2: 0 + 4,-1: 0 + 5,-9: 0 + 5,-8: 0 + 5,-7: 0 + 5,-6: 0 + 5,-5: 0 + 0,0: 0 + 0,1: 0 + 0,2: 0 + 0,3: 0 + 0,4: 0 + 0,5: 0 + 0,6: 0 + 0,11: 0 + 1,6: 0 + 1,11: 1 + 2,6: 0 + 2,11: 0 + 2,15: 0 + 3,6: 0 + 3,11: 0 + 3,12: 0 + 3,13: 0 + 3,14: 0 + 3,15: 0 + 4,0: 0 + 4,1: 0 + 4,2: 0 + 4,3: 0 + 4,4: 0 + 4,5: 0 + 4,6: 0 + 4,7: 0 + 4,8: 0 + 4,9: 0 + 4,10: 0 + 4,11: 0 + 5,0: 0 + 5,4: 0 + 6,0: 0 + 6,4: 0 + 0,16: 0 + 1,16: 0 + 2,16: 0 + -1,16: 0 + -8,0: 0 + -8,1: 0 + -8,2: 0 + -8,3: 0 + -8,4: 0 + -8,5: 0 + -8,6: 0 + -8,7: 0 + -8,8: 0 + -8,9: 0 + -8,10: 0 + -7,0: 0 + -7,1: 0 + -7,2: 0 + -7,3: 0 + -7,4: 0 + -7,5: 0 + -7,6: 0 + -7,7: 0 + -7,8: 0 + -7,9: 0 + -7,10: 0 + -7,11: 0 + -7,12: 0 + -7,13: 0 + -6,0: 0 + -6,1: 0 + -6,2: 0 + -6,3: 0 + -6,4: 0 + -6,5: 0 + -6,6: 0 + -6,7: 0 + -6,8: 0 + -6,9: 0 + -6,10: 0 + -6,11: 0 + -6,12: 0 + -6,13: 0 + -6,14: 0 + -5,8: 0 + -5,9: 0 + -5,10: 0 + -5,11: 1 + -5,12: 0 + -5,13: 0 + -5,14: 0 + -4,5: 0 + -4,6: 0 + -4,10: 0 + -4,11: 0 + -4,12: 0 + -4,13: 0 + -4,14: 0 + -8,-6: 0 + -8,-5: 0 + -8,-4: 0 + -8,-3: 0 + -8,-2: 0 + -8,-1: 0 + -7,-6: 0 + -7,-5: 0 + -7,-4: 0 + -7,-3: 0 + -7,-2: 0 + -7,-1: 0 + -6,-6: 0 + -6,-5: 0 + -6,-4: 0 + -6,-3: 0 + -6,-2: 0 + -6,-1: 0 + -5,-6: 0 + -5,-5: 0 + -5,-4: 0 + -5,-3: 0 + -4,-2: 0 + -4,-1: 0 + -8,11: 0 + -8,12: 0 + -8,13: 0 + -8,14: 0 + -7,14: 0 + -7,15: 0 + -6,15: 0 + -5,15: 0 + -4,15: 0 + -3,15: 0 + -8,-12: 0 + -8,-11: 0 + -8,-10: 0 + -8,-9: 0 + -8,-8: 0 + -8,-7: 0 + -7,-13: 0 + -7,-12: 0 + -7,-11: 0 + -7,-10: 0 + -7,-9: 0 + -7,-8: 0 + -7,-7: 0 + -6,-13: 0 + -6,-12: 0 + -6,-11: 0 + -6,-10: 0 + -6,-9: 0 + -6,-8: 0 + -6,-7: 0 + -5,-12: 0 + -5,-11: 0 + -5,-10: 0 + -5,-9: 0 + -5,-8: 0 + -5,-7: 0 + -4,-12: 0 + -4,-11: 0 + -3,-12: 0 + -2,-12: 0 + -1,-12: 0 + 0,-13: 0 + 0,-12: 0 + 1,-13: 0 + 1,-12: 0 + 2,-12: 0 + -6,16: 0 + -5,16: 0 + -4,16: 0 + -3,16: 0 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - volume: 2500 + temperature: 293.15 + moles: + - 21.213781 + - 79.80423 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: GridAtmosphere + - type: OccluderTree + - type: Shuttle + - nextUpdate: 6334.3237167 + type: GridPathfinding + - type: RadiationGridResistance + - nextShake: 0 + shakeTimes: 10 + type: GravityShake + - type: GasTileOverlay +- uid: 1 + type: FirelockGlass + components: + - pos: -0.5,6.5 + parent: 0 + type: Transform +- uid: 2 + type: ShuttleWindow + components: + - pos: 2.5,-8.5 + parent: 0 + type: Transform +- uid: 3 + type: ShuttleWindow + components: + - pos: 2.5,-6.5 + parent: 0 + type: Transform +- uid: 4 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: -1.5,0.5 + parent: 0 + type: Transform +- uid: 5 + type: SignMedical + components: + - pos: -4.5,8.5 + parent: 0 + type: Transform +- uid: 6 + type: ClosetWallEmergencyFilledRandom + components: + - pos: -4.5,0.5 + parent: 0 + type: Transform +- uid: 7 + type: RailingCornerSmall + components: + - rot: 1.5707963267948966 rad + pos: -3.5,7.5 + parent: 0 + type: Transform +- uid: 8 + type: AirlockEngineeringLocked + components: + - rot: 1.5707963267948966 rad + pos: -0.5,-7.5 + parent: 0 + type: Transform +- uid: 9 + type: PosterLegitNanotrasenLogo + components: + - pos: -0.5,4.5 + parent: 0 + type: Transform +- uid: 10 + type: WindoorSecurityLocked + components: + - rot: -1.5707963267948966 rad + pos: -2.5,-3.5 + parent: 0 + type: Transform +- uid: 11 + type: CableMV + components: + - pos: -5.5,5.5 + parent: 0 + type: Transform +- uid: 12 + type: Windoor + components: + - rot: 3.141592653589793 rad + pos: -6.5,4.5 + parent: 0 + type: Transform +- uid: 13 + type: RailingCornerSmall + components: + - rot: 3.141592653589793 rad + pos: -1.5,7.5 + parent: 0 + type: Transform +- uid: 14 + type: WallShuttle + components: + - pos: 2.5,-5.5 + parent: 0 + type: Transform +- uid: 15 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: -1.5,4.5 + parent: 0 + type: Transform +- uid: 16 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: -3.5,4.5 + parent: 0 + type: Transform +- uid: 17 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: -3.5,0.5 + parent: 0 + type: Transform +- uid: 18 + type: Lamp + components: + - rot: 1.5707963267948966 rad + pos: -3.4716127,8.832692 + parent: 0 + type: Transform +- uid: 19 + type: ClosetWallEmergencyFilledRandom + components: + - pos: 1.5,12.5 + parent: 0 + type: Transform +- uid: 20 + type: CableMV + components: + - pos: -1.5,-8.5 + parent: 0 + type: Transform +- uid: 21 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: -6.5,-4.5 + parent: 0 + type: Transform +- uid: 22 + type: ShuttleWindow + components: + - rot: 1.5707963267948966 rad + pos: -2.5,-11.5 + parent: 0 + type: Transform +- uid: 23 + type: ShuttleWindow + components: + - rot: 1.5707963267948966 rad + pos: -1.5,-11.5 + parent: 0 + type: Transform +- uid: 24 + type: ShuttleWindow + components: + - rot: 1.5707963267948966 rad + pos: -0.5,-11.5 + parent: 0 + type: Transform +- uid: 25 + type: WallShuttle + components: + - rot: 1.5707963267948966 rad + pos: -7.5,-9.5 + parent: 0 + type: Transform +- uid: 26 + type: WallShuttle + components: + - rot: 1.5707963267948966 rad + pos: -6.5,-10.5 + parent: 0 + type: Transform +- uid: 27 + type: CableMV + components: + - pos: -3.5,12.5 + parent: 0 + type: Transform +- uid: 28 + type: CableMV + components: + - pos: -3.5,11.5 + parent: 0 + type: Transform +- uid: 29 + type: GeneratorWallmountAPU + components: + - pos: -5.5,12.5 + parent: 0 + type: Transform +- uid: 30 + type: CableHV + components: + - pos: -4.5,-6.5 + parent: 0 + type: Transform +- uid: 31 + type: CableHV + components: + - pos: -5.5,12.5 + parent: 0 + type: Transform +- uid: 32 + type: CableMV + components: + - pos: -5.5,10.5 + parent: 0 + type: Transform +- uid: 33 + type: CableMV + components: + - pos: -5.5,9.5 + parent: 0 + type: Transform +- uid: 34 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: -2.5,-5.5 + parent: 0 + type: Transform +- uid: 35 + type: Grille + components: + - pos: -6.5,-3.5 + parent: 0 + type: Transform +- uid: 36 + type: CableMV + components: + - pos: 1.5,5.5 + parent: 0 + type: Transform +- uid: 37 + type: CableMV + components: + - pos: -1.5,5.5 + parent: 0 + type: Transform +- uid: 38 + type: WallShuttle + components: + - pos: -0.5,-5.5 + parent: 0 + type: Transform +- uid: 39 + type: CableMV + components: + - pos: 0.5,6.5 + parent: 0 + type: Transform +- uid: 40 + type: WallShuttle + components: + - pos: -0.5,-6.5 + parent: 0 + type: Transform +- uid: 41 + type: VendingMachineSec + components: + - flags: SessionSpecific + type: MetaData + - pos: -3.5,-5.5 + parent: 0 + type: Transform +- uid: 42 + type: DogBed + components: + - pos: -0.5,14.5 + parent: 0 + type: Transform +- uid: 43 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: -1.5,3.5 + parent: 0 + type: Transform +- uid: 44 + type: WallShuttle + components: + - pos: -7.5,0.5 + parent: 0 + type: Transform +- uid: 45 + type: ShuttleWindow + components: + - pos: -7.5,-1.5 + parent: 0 + type: Transform +- uid: 46 + type: WallShuttle + components: + - pos: -0.5,7.5 + parent: 0 + type: Transform +- uid: 47 + type: Grille + components: + - pos: -2.5,-2.5 + parent: 0 + type: Transform +- uid: 48 + type: WallShuttle + components: + - pos: -0.5,-4.5 + parent: 0 + type: Transform +- uid: 49 + type: BedsheetYellow + components: + - pos: -1.5,-4.5 + parent: 0 + type: Transform +- uid: 50 + type: CableMV + components: + - pos: -5.5,-8.5 + parent: 0 + type: Transform +- uid: 51 + type: CigarGold + components: + - pos: -0.57872725,15.578903 + parent: 0 + type: Transform +- uid: 52 + type: Lighter + components: + - pos: -0.67247725,15.656836 + parent: 0 + type: Transform +- uid: 53 + type: WallShuttle + components: + - rot: 1.5707963267948966 rad + pos: 0.5,-11.5 + parent: 0 + type: Transform +- uid: 54 + type: SignalButton + components: + - pos: -4.5,-3.5 + parent: 0 + type: Transform + - outputs: + Pressed: + - port: Toggle + uid: 99 + - port: Toggle + uid: 62 + type: SignalTransmitter +- uid: 55 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: -6.5,-5.5 + parent: 0 + type: Transform +- uid: 56 + type: LockerEvidence + components: + - pos: -1.5,-3.5 + parent: 0 + type: Transform +- uid: 57 + type: WallShuttleDiagonal + components: + - rot: 3.141592653589793 rad + pos: 2.5,-10.5 + parent: 0 + type: Transform +- uid: 58 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: -2.5,-4.5 + parent: 0 + type: Transform +- uid: 59 + type: DrinkGlass + components: + - pos: -2.3443522,13.657028 + parent: 0 + type: Transform +- uid: 60 + type: WallShuttle + components: + - pos: -1.5,-2.5 + parent: 0 + type: Transform +- uid: 61 + type: Thruster + components: + - rot: 1.5707963267948966 rad + pos: -7.5,-11.5 + parent: 0 + type: Transform +- uid: 62 + type: ShuttersWindowOpen + components: + - pos: -2.5,-2.5 + parent: 0 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 54 + type: SignalReceiver +- uid: 63 + type: DrinkGlass + components: + - pos: -2.5631022,13.532028 + parent: 0 + type: Transform +- uid: 64 + type: PosterLegitNanotrasenLogo + components: + - pos: -4.5,12.5 + parent: 0 + type: Transform +- uid: 65 + type: CigarGold + components: + - pos: -0.32872725,15.578903 + parent: 0 + type: Transform +- uid: 66 + type: VendingMachineBooze + components: + - flags: SessionSpecific + type: MetaData + - pos: 0.5,14.5 + parent: 0 + type: Transform +- uid: 67 + type: TableCarpet + components: + - pos: -2.5,13.5 + parent: 0 + type: Transform +- uid: 68 + type: DrinkGoldschlagerBottleFull + components: + - pos: -2.5631022,13.969528 + parent: 0 + type: Transform +- uid: 69 + type: CigarGold + components: + - pos: -0.45372725,15.578903 + parent: 0 + type: Transform +- uid: 70 + type: MedicalBed + components: + - pos: -3.5,11.5 + parent: 0 + type: Transform +- uid: 71 + type: WindowReinforcedDirectional + components: + - pos: 0.5,0.5 + parent: 0 + type: Transform +- uid: 72 + type: PottedPlant21 + components: + - pos: 1.5,11.5 + parent: 0 + type: Transform +- uid: 73 + type: AirlockGlassShuttle + components: + - rot: 1.5707963267948966 rad + pos: 2.5,-0.5 + parent: 0 + type: Transform + - fixtures: + - shape: !type:PolygonShape + vertices: + - 0.49,-0.49 + - 0.49,0.49 + - -0.49,0.49 + - -0.49,-0.49 + mask: + - Impassable + - MidImpassable + - HighImpassable + - LowImpassable + - InteractImpassable + layer: + - MidImpassable + - HighImpassable + - BulletImpassable + - InteractImpassable + - Opaque + density: 100 + - shape: !type:PhysShapeCircle + radius: 0.2 + position: 0,-0.5 + hard: False + id: docking + type: Fixtures +- uid: 74 + type: AirlockGlassShuttle + components: + - rot: 1.5707963267948966 rad + pos: 2.5,5.5 + parent: 0 + type: Transform + - fixtures: + - shape: !type:PolygonShape + vertices: + - 0.49,-0.49 + - 0.49,0.49 + - -0.49,0.49 + - -0.49,-0.49 + mask: + - Impassable + - MidImpassable + - HighImpassable + - LowImpassable + - InteractImpassable + layer: + - MidImpassable + - HighImpassable + - BulletImpassable + - InteractImpassable + - Opaque + density: 100 + - shape: !type:PhysShapeCircle + radius: 0.2 + position: 0,-0.5 + hard: False + id: docking + type: Fixtures +- uid: 75 + type: AirlockGlassShuttle + components: + - rot: 1.5707963267948966 rad + pos: 2.5,7.5 + parent: 0 + type: Transform + - fixtures: + - shape: !type:PolygonShape + vertices: + - 0.49,-0.49 + - 0.49,0.49 + - -0.49,0.49 + - -0.49,-0.49 + mask: + - Impassable + - MidImpassable + - HighImpassable + - LowImpassable + - InteractImpassable + layer: + - MidImpassable + - HighImpassable + - BulletImpassable + - InteractImpassable + - Opaque + density: 100 + - shape: !type:PhysShapeCircle + radius: 0.2 + position: 0,-0.5 + hard: False + id: docking + type: Fixtures +- uid: 76 + type: Grille + components: + - pos: 2.5,3.5 + parent: 0 + type: Transform +- uid: 77 + type: AirlockGlassShuttle + components: + - rot: -1.5707963267948966 rad + pos: -7.5,7.5 + parent: 0 + type: Transform + - fixtures: + - shape: !type:PolygonShape + vertices: + - 0.49,-0.49 + - 0.49,0.49 + - -0.49,0.49 + - -0.49,-0.49 + mask: + - Impassable + - MidImpassable + - HighImpassable + - LowImpassable + - InteractImpassable + layer: + - MidImpassable + - HighImpassable + - BulletImpassable + - InteractImpassable + - Opaque + density: 100 + - shape: !type:PhysShapeCircle + radius: 0.2 + position: 0,-0.5 + hard: False + id: docking + type: Fixtures +- uid: 78 + type: WallShuttle + components: + - pos: -4.5,-3.5 + parent: 0 + type: Transform +- uid: 79 + type: AirlockSecurityGlassLocked + components: + - pos: -5.5,-3.5 + parent: 0 + type: Transform +- uid: 80 + type: BedsheetOrange + components: + - pos: -1.5,-5.5 + parent: 0 + type: Transform +- uid: 81 + type: AirlockGlassShuttle + components: + - rot: -1.5707963267948966 rad + pos: -7.5,-2.5 + parent: 0 + type: Transform + - fixtures: + - shape: !type:PolygonShape + vertices: + - 0.49,-0.49 + - 0.49,0.49 + - -0.49,0.49 + - -0.49,-0.49 + mask: + - Impassable + - MidImpassable + - HighImpassable + - LowImpassable + - InteractImpassable + layer: + - MidImpassable + - HighImpassable + - BulletImpassable + - InteractImpassable + - Opaque + density: 100 + - shape: !type:PhysShapeCircle + radius: 0.2 + position: 0,-0.5 + hard: False + id: docking + type: Fixtures +- uid: 82 + type: ShuttleWindow + components: + - pos: 2.5,9.5 + parent: 0 + type: Transform +- uid: 83 + type: WallShuttle + components: + - pos: -0.5,4.5 + parent: 0 + type: Transform +- uid: 84 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: -4.5,1.5 + parent: 0 + type: Transform +- uid: 85 + type: WallShuttle + components: + - pos: -4.5,-6.5 + parent: 0 + type: Transform +- uid: 86 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: -4.5,2.5 + parent: 0 + type: Transform +- uid: 87 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: -4.5,3.5 + parent: 0 + type: Transform +- uid: 88 + type: WallShuttle + components: + - pos: -4.5,-2.5 + parent: 0 + type: Transform +- uid: 89 + type: CableMV + components: + - pos: -0.5,13.5 + parent: 0 + type: Transform +- uid: 90 + type: ShuttleWindow + components: + - pos: 2.5,10.5 + parent: 0 + type: Transform +- uid: 91 + type: WallShuttle + components: + - pos: -0.5,0.5 + parent: 0 + type: Transform +- uid: 92 + type: WallShuttle + components: + - pos: -4.5,8.5 + parent: 0 + type: Transform +- uid: 93 + type: AirlockGlassShuttle + components: + - rot: -1.5707963267948966 rad + pos: -7.5,5.5 + parent: 0 + type: Transform + - fixtures: + - shape: !type:PolygonShape + vertices: + - 0.49,-0.49 + - 0.49,0.49 + - -0.49,0.49 + - -0.49,-0.49 + mask: + - Impassable + - MidImpassable + - HighImpassable + - LowImpassable + - InteractImpassable + layer: + - MidImpassable + - HighImpassable + - BulletImpassable + - InteractImpassable + - Opaque + density: 100 + - shape: !type:PhysShapeCircle + radius: 0.2 + position: 0,-0.5 + hard: False + id: docking + type: Fixtures +- uid: 94 + type: WallShuttle + components: + - pos: -7.5,8.5 + parent: 0 + type: Transform +- uid: 95 + type: WallShuttle + components: + - pos: 2.5,8.5 + parent: 0 + type: Transform +- uid: 96 + type: AirlockGlassShuttle + components: + - rot: 1.5707963267948966 rad + pos: 2.5,-2.5 + parent: 0 + type: Transform + - fixtures: + - shape: !type:PolygonShape + vertices: + - 0.49,-0.49 + - 0.49,0.49 + - -0.49,0.49 + - -0.49,-0.49 + mask: + - Impassable + - MidImpassable + - HighImpassable + - LowImpassable + - InteractImpassable + layer: + - MidImpassable + - HighImpassable + - BulletImpassable + - InteractImpassable + - Opaque + density: 100 + - shape: !type:PhysShapeCircle + radius: 0.2 + position: 0,-0.5 + hard: False + id: docking + type: Fixtures +- uid: 97 + type: Thruster + components: + - rot: 3.141592653589793 rad + pos: -6.5,-12.5 + parent: 0 + type: Transform +- uid: 98 + type: WallShuttle + components: + - pos: 2.5,-7.5 + parent: 0 + type: Transform +- uid: 99 + type: ShuttersWindowOpen + components: + - pos: -6.5,-3.5 + parent: 0 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 54 + type: SignalReceiver +- uid: 100 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 1.5,9.5 + parent: 0 + type: Transform +- uid: 101 + type: Bed + components: + - pos: -1.5,-5.5 + parent: 0 + type: Transform +- uid: 102 + type: WallShuttle + components: + - pos: -5.5,-6.5 + parent: 0 + type: Transform +- uid: 103 + type: WallShuttle + components: + - pos: -7.5,-3.5 + parent: 0 + type: Transform +- uid: 104 + type: ShuttleWindow + components: + - pos: 2.5,2.5 + parent: 0 + type: Transform +- uid: 105 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: -5.5,2.5 + parent: 0 + type: Transform +- uid: 106 + type: WindowReinforcedDirectional + components: + - pos: -3.5,0.5 + parent: 0 + type: Transform +- uid: 107 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: -1.5,1.5 + parent: 0 + type: Transform +- uid: 108 + type: Grille + components: + - pos: -7.5,3.5 + parent: 0 + type: Transform +- uid: 109 + type: Grille + components: + - pos: -7.5,2.5 + parent: 0 + type: Transform +- uid: 110 + type: Grille + components: + - pos: 2.5,1.5 + parent: 0 + type: Transform +- uid: 111 + type: Grille + components: + - pos: 2.5,2.5 + parent: 0 + type: Transform +- uid: 112 + type: WallShuttle + components: + - pos: -7.5,4.5 + parent: 0 + type: Transform +- uid: 113 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: -3.5,3.5 + parent: 0 + type: Transform +- uid: 114 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: -3.5,2.5 + parent: 0 + type: Transform +- uid: 115 + type: WallShuttle + components: + - pos: 2.5,4.5 + parent: 0 + type: Transform +- uid: 116 + type: ShuttleWindow + components: + - pos: -7.5,6.5 + parent: 0 + type: Transform +- uid: 117 + type: ShuttleWindow + components: + - pos: -7.5,1.5 + parent: 0 + type: Transform +- uid: 118 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: -0.5,1.5 + parent: 0 + type: Transform +- uid: 119 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: -0.5,2.5 + parent: 0 + type: Transform +- uid: 120 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 0.5,1.5 + parent: 0 + type: Transform +- uid: 121 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 0.5,3.5 + parent: 0 + type: Transform +- uid: 122 + type: FirelockEdge + components: + - rot: 3.141592653589793 rad + pos: -2.5,4.5 + parent: 0 + type: Transform +- uid: 123 + type: WallShuttle + components: + - rot: 1.5707963267948966 rad + pos: 1.5,-10.5 + parent: 0 + type: Transform +- uid: 124 + type: WallShuttle + components: + - pos: -2.5,-6.5 + parent: 0 + type: Transform +- uid: 125 + type: WallShuttle + components: + - pos: -3.5,-6.5 + parent: 0 + type: Transform +- uid: 126 + type: WallShuttle + components: + - pos: -3.5,-2.5 + parent: 0 + type: Transform +- uid: 127 + type: WallShuttle + components: + - pos: -6.5,-6.5 + parent: 0 + type: Transform +- uid: 128 + type: WallShuttle + components: + - pos: -1.5,12.5 + parent: 0 + type: Transform +- uid: 129 + type: ShuttleWindow + components: + - pos: 2.5,1.5 + parent: 0 + type: Transform +- uid: 130 + type: WallShuttle + components: + - pos: 2.5,-3.5 + parent: 0 + type: Transform +- uid: 131 + type: WallShuttle + components: + - pos: 2.5,0.5 + parent: 0 + type: Transform +- uid: 132 + type: WindowReinforcedDirectional + components: + - pos: -1.5,0.5 + parent: 0 + type: Transform +- uid: 133 + type: ShuttleWindow + components: + - pos: 2.5,-1.5 + parent: 0 + type: Transform +- uid: 134 + type: WallShuttle + components: + - pos: -0.5,12.5 + parent: 0 + type: Transform +- uid: 135 + type: CableMV + components: + - pos: -0.5,12.5 + parent: 0 + type: Transform +- uid: 136 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 0.5,2.5 + parent: 0 + type: Transform +- uid: 137 + type: ShuttleWindow + components: + - pos: 2.5,11.5 + parent: 0 + type: Transform +- uid: 138 + type: WallShuttle + components: + - pos: -7.5,9.5 + parent: 0 + type: Transform +- uid: 139 + type: WallShuttle + components: + - pos: -0.5,8.5 + parent: 0 + type: Transform +- uid: 140 + type: ShuttleWindow + components: + - pos: -7.5,2.5 + parent: 0 + type: Transform +- uid: 141 + type: WallShuttle + components: + - pos: -1.5,-6.5 + parent: 0 + type: Transform +- uid: 142 + type: AirlockGlassShuttle + components: + - rot: -1.5707963267948966 rad + pos: -7.5,-0.5 + parent: 0 + type: Transform + - fixtures: + - shape: !type:PolygonShape + vertices: + - 0.49,-0.49 + - 0.49,0.49 + - -0.49,0.49 + - -0.49,-0.49 + mask: + - Impassable + - MidImpassable + - HighImpassable + - LowImpassable + - InteractImpassable + layer: + - MidImpassable + - HighImpassable + - BulletImpassable + - InteractImpassable + - Opaque + density: 100 + - shape: !type:PhysShapeCircle + radius: 0.2 + position: 0,-0.5 + hard: False + id: docking + type: Fixtures +- uid: 143 + type: ClosetEmergencyFilledRandom + components: + - pos: 1.5,8.5 + parent: 0 + type: Transform +- uid: 144 + type: Bed + components: + - pos: -1.5,-4.5 + parent: 0 + type: Transform +- uid: 145 + type: CableMV + components: + - pos: 1.5,1.5 + parent: 0 + type: Transform +- uid: 146 + type: ShuttleWindow + components: + - pos: -6.5,-3.5 + parent: 0 + type: Transform +- uid: 147 + type: CableMV + components: + - pos: -0.5,9.5 + parent: 0 + type: Transform +- uid: 148 + type: WallShuttle + components: + - rot: 1.5707963267948966 rad + pos: -5.5,-11.5 + parent: 0 + type: Transform +- uid: 149 + type: ShuttleWindow + components: + - pos: -2.5,-2.5 + parent: 0 + type: Transform +- uid: 150 + type: WallShuttleDiagonal + components: + - rot: -1.5707963267948966 rad + pos: 2.5,12.5 + parent: 0 + type: Transform +- uid: 151 + type: WallShuttle + components: + - pos: -0.5,9.5 + parent: 0 + type: Transform +- uid: 152 + type: CableMV + components: + - pos: 1.5,2.5 + parent: 0 + type: Transform +- uid: 153 + type: Grille + components: + - pos: -3.5,-11.5 + parent: 0 + type: Transform +- uid: 154 + type: WallShuttle + components: + - pos: -7.5,-5.5 + parent: 0 + type: Transform +- uid: 155 + type: WallShuttle + components: + - pos: -0.5,-2.5 + parent: 0 + type: Transform +- uid: 156 + type: CableHV + components: + - pos: -5.5,11.5 + parent: 0 + type: Transform +- uid: 157 + type: CableHV + components: + - pos: -4.5,11.5 + parent: 0 + type: Transform +- uid: 158 + type: CableHV + components: + - pos: -3.5,11.5 + parent: 0 + type: Transform +- uid: 159 + type: CableMV + components: + - pos: -3.5,10.5 + parent: 0 + type: Transform +- uid: 160 + type: CableMV + components: + - pos: -4.5,10.5 + parent: 0 + type: Transform +- uid: 161 + type: CableMV + components: + - pos: -5.5,8.5 + parent: 0 + type: Transform +- uid: 162 + type: CableMV + components: + - pos: -5.5,6.5 + parent: 0 + type: Transform +- uid: 163 + type: CableHV + components: + - pos: -3.5,-6.5 + parent: 0 + type: Transform +- uid: 164 + type: APCBasic + components: + - rot: 3.141592653589793 rad + pos: -4.5,4.5 + parent: 0 + type: Transform +- uid: 165 + type: APCBasic + components: + - rot: 3.141592653589793 rad + pos: -5.5,-6.5 + parent: 0 + type: Transform +- uid: 166 + type: AirlockCargoLocked + components: + - rot: 1.5707963267948966 rad + pos: 0.5,-9.5 + parent: 0 + type: Transform +- uid: 167 + type: SubstationWallBasic + components: + - pos: -3.5,12.5 + parent: 0 + type: Transform +- uid: 168 + type: GeneratorWallmountAPU + components: + - pos: -4.5,-6.5 + parent: 0 + type: Transform +- uid: 169 + type: WallShuttle + components: + - pos: -0.5,-3.5 + parent: 0 + type: Transform +- uid: 170 + type: ExtinguisherCabinetFilled + components: + - pos: -0.5,0.5 + parent: 0 + type: Transform +- uid: 171 + type: APCBasic + components: + - rot: -1.5707963267948966 rad + pos: -0.5,-8.5 + parent: 0 + type: Transform +- uid: 172 + type: CableMV + components: + - pos: -0.5,-8.5 + parent: 0 + type: Transform +- uid: 173 + type: CableMV + components: + - pos: -4.5,5.5 + parent: 0 + type: Transform +- uid: 174 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: -5.5,3.5 + parent: 0 + type: Transform +- uid: 175 + type: CableMV + components: + - pos: 0.5,5.5 + parent: 0 + type: Transform +- uid: 176 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: -4.5,1.5 + parent: 0 + type: Transform +- uid: 177 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: -1.5,4.5 + parent: 0 + type: Transform +- uid: 178 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: -0.5,3.5 + parent: 0 + type: Transform +- uid: 179 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: -0.5,1.5 + parent: 0 + type: Transform +- uid: 180 + type: Grille + components: + - pos: 2.5,6.5 + parent: 0 + type: Transform +- uid: 181 + type: CableMV + components: + - pos: -2.5,-8.5 + parent: 0 + type: Transform +- uid: 182 + type: WallShuttle + components: + - pos: -7.5,-6.5 + parent: 0 + type: Transform +- uid: 183 + type: ShuttleWindow + components: + - pos: 2.5,3.5 + parent: 0 + type: Transform +- uid: 184 + type: WallShuttle + components: + - pos: -6.5,12.5 + parent: 0 + type: Transform +- uid: 185 + type: ShuttleWindow + components: + - pos: 2.5,6.5 + parent: 0 + type: Transform +- uid: 186 + type: SignSecurity + components: + - pos: -4.5,-2.5 + parent: 0 + type: Transform +- uid: 187 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: -5.5,1.5 + parent: 0 + type: Transform +- uid: 188 + type: AirlockCommandLocked + components: + - pos: 0.5,12.5 + parent: 0 + type: Transform +- uid: 189 + type: CableMV + components: + - pos: -2.5,5.5 + parent: 0 + type: Transform +- uid: 190 + type: CableMV + components: + - pos: -3.5,5.5 + parent: 0 + type: Transform +- uid: 191 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: -1.5,2.5 + parent: 0 + type: Transform +- uid: 192 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: -5.5,0.5 + parent: 0 + type: Transform +- uid: 193 + type: CableMV + components: + - pos: -0.5,5.5 + parent: 0 + type: Transform +- uid: 194 + type: WallShuttle + components: + - pos: -4.5,9.5 + parent: 0 + type: Transform +- uid: 195 + type: Windoor + components: + - rot: 3.141592653589793 rad + pos: -2.5,4.5 + parent: 0 + type: Transform +- uid: 196 + type: CableApcExtension + components: + - pos: -0.5,-8.5 + parent: 0 + type: Transform +- uid: 197 + type: WallShuttleDiagonal + components: + - rot: 1.5707963267948966 rad + pos: -7.5,-10.5 + parent: 0 + type: Transform +- uid: 198 + type: CableApcExtension + components: + - pos: -4.5,-8.5 + parent: 0 + type: Transform +- uid: 199 + type: CableMV + components: + - pos: 0.5,8.5 + parent: 0 + type: Transform +- uid: 200 + type: CableMV + components: + - pos: 0.5,7.5 + parent: 0 + type: Transform +- uid: 201 + type: ShuttleWindow + components: + - pos: -7.5,10.5 + parent: 0 + type: Transform +- uid: 202 + type: ShuttleWindow + components: + - pos: -6.5,14.5 + parent: 0 + type: Transform +- uid: 203 + type: ShuttleWindow + components: + - pos: -5.5,15.5 + parent: 0 + type: Transform +- uid: 204 + type: WallShuttle + components: + - pos: -5.5,12.5 + parent: 0 + type: Transform +- uid: 205 + type: WallShuttle + components: + - pos: -4.5,12.5 + parent: 0 + type: Transform +- uid: 206 + type: ShuttleWindow + components: + - pos: -2.5,9.5 + parent: 0 + type: Transform +- uid: 207 + type: WallShuttle + components: + - pos: -0.5,11.5 + parent: 0 + type: Transform +- uid: 208 + type: WallShuttle + components: + - pos: -0.5,10.5 + parent: 0 + type: Transform +- uid: 209 + type: ShuttleWindow + components: + - pos: -6.5,8.5 + parent: 0 + type: Transform +- uid: 210 + type: WallShuttle + components: + - pos: -2.5,12.5 + parent: 0 + type: Transform +- uid: 211 + type: Grille + components: + - pos: 1.5,14.5 + parent: 0 + type: Transform +- uid: 212 + type: Grille + components: + - pos: 1.5,15.5 + parent: 0 + type: Transform +- uid: 213 + type: ShuttleWindow + components: + - pos: -1.5,16.5 + parent: 0 + type: Transform +- uid: 214 + type: ShuttleWindow + components: + - pos: -3.5,16.5 + parent: 0 + type: Transform +- uid: 215 + type: ShuttleWindow + components: + - pos: -4.5,16.5 + parent: 0 + type: Transform +- uid: 216 + type: ShuttleWindow + components: + - pos: 1.5,15.5 + parent: 0 + type: Transform +- uid: 217 + type: ShuttleWindow + components: + - pos: 0.5,15.5 + parent: 0 + type: Transform +- uid: 218 + type: ShuttleWindow + components: + - pos: 0.5,16.5 + parent: 0 + type: Transform +- uid: 219 + type: Grille + components: + - pos: -2.5,16.5 + parent: 0 + type: Transform +- uid: 220 + type: Grille + components: + - pos: -3.5,16.5 + parent: 0 + type: Transform +- uid: 221 + type: Grille + components: + - pos: -4.5,16.5 + parent: 0 + type: Transform +- uid: 222 + type: Grille + components: + - pos: -5.5,16.5 + parent: 0 + type: Transform +- uid: 223 + type: Grille + components: + - pos: 0.5,15.5 + parent: 0 + type: Transform +- uid: 224 + type: Grille + components: + - pos: 0.5,16.5 + parent: 0 + type: Transform +- uid: 225 + type: Grille + components: + - pos: -0.5,16.5 + parent: 0 + type: Transform +- uid: 226 + type: Grille + components: + - pos: -5.5,15.5 + parent: 0 + type: Transform +- uid: 227 + type: Grille + components: + - pos: -6.5,15.5 + parent: 0 + type: Transform +- uid: 228 + type: Grille + components: + - pos: -6.5,14.5 + parent: 0 + type: Transform +- uid: 229 + type: FirelockGlass + components: + - pos: -4.5,5.5 + parent: 0 + type: Transform +- uid: 230 + type: FirelockGlass + components: + - pos: -4.5,6.5 + parent: 0 + type: Transform +- uid: 231 + type: FirelockGlass + components: + - pos: -0.5,5.5 + parent: 0 + type: Transform +- uid: 232 + type: ChairOfficeDark + components: + - rot: -1.5707963267948966 rad + pos: -4.5,-5.5 + parent: 0 + type: Transform +- uid: 233 + type: Grille + components: + - pos: -6.5,8.5 + parent: 0 + type: Transform +- uid: 234 + type: Windoor + components: + - pos: -2.5,0.5 + parent: 0 + type: Transform +- uid: 235 + type: Thruster + components: + - rot: -1.5707963267948966 rad + pos: 2.5,13.5 + parent: 0 + type: Transform +- uid: 236 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: -3.5,1.5 + parent: 0 + type: Transform +- uid: 237 + type: Grille + components: + - pos: -7.5,6.5 + parent: 0 + type: Transform +- uid: 238 + type: AirlockVirologyGlassLocked + components: + - pos: -5.5,8.5 + parent: 0 + type: Transform +- uid: 239 + type: WallShuttle + components: + - pos: -7.5,-8.5 + parent: 0 + type: Transform +- uid: 240 + type: FirelockEdge + components: + - rot: 3.141592653589793 rad + pos: 1.5,4.5 + parent: 0 + type: Transform +- uid: 241 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: -3.5,4.5 + parent: 0 + type: Transform +- uid: 242 + type: FirelockEdge + components: + - pos: -2.5,0.5 + parent: 0 + type: Transform +- uid: 243 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: -4.5,11.5 + parent: 0 + type: Transform +- uid: 244 + type: SignalButton + components: + - pos: -4.5,9.5 + parent: 0 + type: Transform + - outputs: + Pressed: + - port: Toggle + uid: 251 + - port: Toggle + uid: 274 + - port: Toggle + uid: 257 + - port: Toggle + uid: 284 + - port: Toggle + uid: 281 + type: SignalTransmitter +- uid: 245 + type: ComfyChair + components: + - rot: 1.5707963267948966 rad + pos: -3.5,7.5 + parent: 0 + type: Transform +- uid: 246 + type: ComputerComms + components: + - rot: 1.5707963267948966 rad + pos: -5.5,14.5 + parent: 0 + type: Transform +- uid: 247 + type: Grille + components: + - pos: -3.5,9.5 + parent: 0 + type: Transform +- uid: 248 + type: StasisBed + components: + - pos: -2.5,11.5 + parent: 0 + type: Transform +- uid: 249 + type: CarpetGreen + components: + - pos: -2.5,14.5 + parent: 0 + type: Transform +- uid: 250 + type: CarpetGreen + components: + - pos: -3.5,13.5 + parent: 0 + type: Transform +- uid: 251 + type: ShuttersWindowOpen + components: + - pos: -6.5,8.5 + parent: 0 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 244 + type: SignalReceiver +- uid: 252 + type: MedicalBed + components: + - pos: -1.5,11.5 + parent: 0 + type: Transform +- uid: 253 + type: MedkitBruteFilled + components: + - pos: -6.3579483,9.476149 + parent: 0 + type: Transform +- uid: 254 + type: Grille + components: + - pos: -1.5,9.5 + parent: 0 + type: Transform +- uid: 255 + type: ComfyChair + components: + - rot: 1.5707963267948966 rad + pos: -4.5,13.5 + parent: 0 + type: Transform +- uid: 256 + type: LampGold + components: + - pos: -4.476436,15.938278 + parent: 0 + type: Transform + - toggleAction: + icon: + sprite: Objects/Tools/flashlight.rsi + state: flashlight + iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png + name: action-name-toggle-light + description: action-description-toggle-light + keywords: [] + event: !type:ToggleActionEvent {} + type: HandheldLight +- uid: 257 + type: ShuttersWindowOpen + components: + - pos: -2.5,9.5 + parent: 0 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 244 + type: SignalReceiver +- uid: 258 + type: WindoorMedicalLocked + components: + - rot: 1.5707963267948966 rad + pos: -4.5,10.5 + parent: 0 + type: Transform +- uid: 259 + type: Grille + components: + - pos: 2.5,10.5 + parent: 0 + type: Transform +- uid: 260 + type: ComfyChair + components: + - pos: -3.5,15.5 + parent: 0 + type: Transform +- uid: 261 + type: Thruster + components: + - pos: 2.5,14.5 + parent: 0 + type: Transform +- uid: 262 + type: VendingMachineCigs + components: + - flags: SessionSpecific + type: MetaData + - pos: -1.5,8.5 + parent: 0 + type: Transform +- uid: 263 + type: BedsheetMedical + components: + - pos: -3.5,11.5 + parent: 0 + type: Transform +- uid: 264 + type: HospitalCurtainsOpen + components: + - pos: -3.5,11.5 + parent: 0 + type: Transform +- uid: 265 + type: BedsheetMedical + components: + - pos: -1.5,11.5 + parent: 0 + type: Transform +- uid: 266 + type: CarpetGreen + components: + - pos: -1.5,13.5 + parent: 0 + type: Transform +- uid: 267 + type: CarpetGreen + components: + - pos: -1.5,14.5 + parent: 0 + type: Transform +- uid: 268 + type: ComfyChair + components: + - rot: 1.5707963267948966 rad + pos: -4.5,14.5 + parent: 0 + type: Transform +- uid: 269 + type: LockerMedicineFilled + components: + - pos: -4.5,11.5 + parent: 0 + type: Transform +- uid: 270 + type: HospitalCurtainsOpen + components: + - pos: -1.5,11.5 + parent: 0 + type: Transform +- uid: 271 + type: CarpetGreen + components: + - pos: -3.5,14.5 + parent: 0 + type: Transform +- uid: 272 + type: CarpetGreen + components: + - pos: -2.5,13.5 + parent: 0 + type: Transform +- uid: 273 + type: ComputerEmergencyShuttle + components: + - pos: -2.5,15.5 + parent: 0 + type: Transform +- uid: 274 + type: ShuttersWindowOpen + components: + - pos: -3.5,9.5 + parent: 0 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 244 + type: SignalReceiver +- uid: 275 + type: TableWood + components: + - pos: -4.5,15.5 + parent: 0 + type: Transform +- uid: 276 + type: ComfyChair + components: + - pos: -1.5,15.5 + parent: 0 + type: Transform +- uid: 277 + type: ComputerId + components: + - rot: 1.5707963267948966 rad + pos: -5.5,13.5 + parent: 0 + type: Transform +- uid: 278 + type: TableWood + components: + - pos: -0.5,15.5 + parent: 0 + type: Transform +- uid: 279 + type: ComfyChair + components: + - pos: -2.5,8.5 + parent: 0 + type: Transform +- uid: 280 + type: TableCarpet + components: + - pos: -3.5,8.5 + parent: 0 + type: Transform +- uid: 281 + type: BlastDoorOpen + components: + - pos: -7.5,10.5 + parent: 0 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 244 + type: SignalReceiver +- uid: 282 + type: Grille + components: + - pos: 2.5,11.5 + parent: 0 + type: Transform +- uid: 283 + type: MedkitOxygenFilled + components: + - pos: -6.5766983,9.757399 + parent: 0 + type: Transform +- uid: 284 + type: ShuttersWindowOpen + components: + - pos: -1.5,9.5 + parent: 0 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 244 + type: SignalReceiver +- uid: 285 + type: Grille + components: + - pos: -2.5,9.5 + parent: 0 + type: Transform +- uid: 286 + type: MedkitBurnFilled + components: + - pos: -6.4829483,9.616774 + parent: 0 + type: Transform +- uid: 287 + type: FirelockEdge + components: + - rot: -1.5707963267948966 rad + pos: -2.5,-3.5 + parent: 0 + type: Transform +- uid: 288 + type: FirelockGlass + components: + - pos: -4.5,-0.5 + parent: 0 + type: Transform +- uid: 289 + type: WallShuttle + components: + - pos: -0.5,-8.5 + parent: 0 + type: Transform +- uid: 290 + type: CableApcExtension + components: + - pos: -1.5,-8.5 + parent: 0 + type: Transform +- uid: 291 + type: Grille + components: + - pos: -7.5,10.5 + parent: 0 + type: Transform +- uid: 292 + type: ExtinguisherCabinetFilled + components: + - pos: -0.5,7.5 + parent: 0 + type: Transform +- uid: 293 + type: WallShuttle + components: + - pos: -7.5,-4.5 + parent: 0 + type: Transform +- uid: 294 + type: Grille + components: + - pos: -4.5,-11.5 + parent: 0 + type: Transform +- uid: 295 + type: Thruster + components: + - rot: -1.5707963267948966 rad + pos: 2.5,-11.5 + parent: 0 + type: Transform +- uid: 296 + type: FirelockEdge + components: + - pos: 1.5,0.5 + parent: 0 + type: Transform +- uid: 297 + type: WindowReinforcedDirectional + components: + - pos: -5.5,0.5 + parent: 0 + type: Transform +- uid: 298 + type: Grille + components: + - pos: 2.5,9.5 + parent: 0 + type: Transform +- uid: 299 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 0.5,4.5 + parent: 0 + type: Transform +- uid: 300 + type: CableApcExtension + components: + - pos: -4.5,-4.5 + parent: 0 + type: Transform +- uid: 301 + type: WallShuttle + components: + - pos: -6.5,-11.5 + parent: 0 + type: Transform +- uid: 302 + type: CableHV + components: + - pos: -6.5,-7.5 + parent: 0 + type: Transform +- uid: 303 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: -5.5,4.5 + parent: 0 + type: Transform +- uid: 304 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 0.5,4.5 + parent: 0 + type: Transform +- uid: 305 + type: WallShuttle + components: + - pos: -4.5,0.5 + parent: 0 + type: Transform +- uid: 306 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: -4.5,3.5 + parent: 0 + type: Transform +- uid: 307 + type: WallShuttle + components: + - rot: 1.5707963267948966 rad + pos: 1.5,-9.5 + parent: 0 + type: Transform +- uid: 308 + type: Grille + components: + - pos: -1.5,-11.5 + parent: 0 + type: Transform +- uid: 309 + type: FirelockEdge + components: + - pos: -6.5,0.5 + parent: 0 + type: Transform +- uid: 310 + type: Windoor + components: + - pos: 1.5,0.5 + parent: 0 + type: Transform +- uid: 311 + type: WallShuttle + components: + - pos: 1.5,-11.5 + parent: 0 + type: Transform +- uid: 312 + type: Grille + components: + - pos: -2.5,-11.5 + parent: 0 + type: Transform +- uid: 313 + type: FirelockGlass + components: + - pos: -4.5,-1.5 + parent: 0 + type: Transform +- uid: 314 + type: Windoor + components: + - rot: 3.141592653589793 rad + pos: 1.5,4.5 + parent: 0 + type: Transform +- uid: 315 + type: WallShuttle + components: + - pos: -7.5,-7.5 + parent: 0 + type: Transform +- uid: 316 + type: CableMV + components: + - pos: 1.5,-3.5 + parent: 0 + type: Transform +- uid: 317 + type: CableMV + components: + - pos: 1.5,-5.5 + parent: 0 + type: Transform +- uid: 318 + type: CableMV + components: + - pos: 1.5,-6.5 + parent: 0 + type: Transform +- uid: 319 + type: Thruster + components: + - pos: -7.5,14.5 + parent: 0 + type: Transform +- uid: 320 + type: ShuttleWindow + components: + - pos: -3.5,9.5 + parent: 0 + type: Transform +- uid: 321 + type: CableApcExtension + components: + - pos: -2.5,-3.5 + parent: 0 + type: Transform +- uid: 322 + type: CableApcExtension + components: + - pos: -3.5,-3.5 + parent: 0 + type: Transform +- uid: 323 + type: SMESBasic + components: + - pos: -5.5,-7.5 + parent: 0 + type: Transform +- uid: 324 + type: CableHV + components: + - pos: -3.5,-7.5 + parent: 0 + type: Transform +- uid: 325 + type: FirelockGlass + components: + - pos: -0.5,-1.5 + parent: 0 + type: Transform +- uid: 326 + type: FirelockGlass + components: + - pos: -0.5,-0.5 + parent: 0 + type: Transform +- uid: 327 + type: CableMV + components: + - pos: 1.5,-0.5 + parent: 0 + type: Transform +- uid: 328 + type: CableMV + components: + - pos: 1.5,-1.5 + parent: 0 + type: Transform +- uid: 329 + type: CableMV + components: + - pos: 1.5,-2.5 + parent: 0 + type: Transform +- uid: 330 + type: CableApcExtension + components: + - pos: 1.5,-6.5 + parent: 0 + type: Transform +- uid: 331 + type: CableApcExtension + components: + - pos: 1.5,-5.5 + parent: 0 + type: Transform +- uid: 332 + type: CableMV + components: + - pos: 0.5,9.5 + parent: 0 + type: Transform +- uid: 333 + type: CableApcExtension + components: + - pos: -2.5,-8.5 + parent: 0 + type: Transform +- uid: 334 + type: CableApcExtension + components: + - pos: 0.5,-8.5 + parent: 0 + type: Transform +- uid: 335 + type: CableApcExtension + components: + - pos: 1.5,-8.5 + parent: 0 + type: Transform +- uid: 336 + type: CableApcExtension + components: + - pos: 1.5,-7.5 + parent: 0 + type: Transform +- uid: 337 + type: CableMV + components: + - pos: 1.5,-7.5 + parent: 0 + type: Transform +- uid: 338 + type: CableMV + components: + - pos: 1.5,-4.5 + parent: 0 + type: Transform +- uid: 339 + type: CableApcExtension + components: + - pos: -3.5,-8.5 + parent: 0 + type: Transform +- uid: 340 + type: CableMV + components: + - pos: 1.5,-8.5 + parent: 0 + type: Transform +- uid: 341 + type: CableMV + components: + - pos: 0.5,-8.5 + parent: 0 + type: Transform +- uid: 342 + type: WallShuttle + components: + - pos: -0.5,-9.5 + parent: 0 + type: Transform +- uid: 343 + type: CableApcExtension + components: + - pos: -3.5,-4.5 + parent: 0 + type: Transform +- uid: 344 + type: WallShuttle + components: + - pos: -4.5,4.5 + parent: 0 + type: Transform +- uid: 345 + type: CableApcExtension + components: + - pos: 1.5,-2.5 + parent: 0 + type: Transform +- uid: 346 + type: CableApcExtension + components: + - pos: -5.5,-6.5 + parent: 0 + type: Transform +- uid: 347 + type: CableApcExtension + components: + - pos: -2.5,-2.5 + parent: 0 + type: Transform +- uid: 348 + type: CableApcExtension + components: + - pos: -5.5,-5.5 + parent: 0 + type: Transform +- uid: 349 + type: CableApcExtension + components: + - pos: 1.5,-4.5 + parent: 0 + type: Transform +- uid: 350 + type: CableApcExtension + components: + - pos: -5.5,-4.5 + parent: 0 + type: Transform +- uid: 351 + type: ShuttleWindow + components: + - pos: 1.5,14.5 + parent: 0 + type: Transform +- uid: 352 + type: WallShuttle + components: + - pos: 1.5,13.5 + parent: 0 + type: Transform +- uid: 353 + type: CableMV + components: + - pos: 1.5,4.5 + parent: 0 + type: Transform +- uid: 354 + type: APCBasic + components: + - rot: 3.141592653589793 rad + pos: -0.5,12.5 + parent: 0 + type: Transform +- uid: 355 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: -5.5,4.5 + parent: 0 + type: Transform +- uid: 356 + type: Windoor + components: + - pos: -6.5,0.5 + parent: 0 + type: Transform +- uid: 357 + type: Thruster + components: + - rot: 3.141592653589793 rad + pos: 1.5,-12.5 + parent: 0 + type: Transform +- uid: 358 + type: ShuttleWindow + components: + - rot: 1.5707963267948966 rad + pos: -4.5,-11.5 + parent: 0 + type: Transform +- uid: 359 + type: ShuttleWindow + components: + - rot: 1.5707963267948966 rad + pos: -3.5,-11.5 + parent: 0 + type: Transform +- uid: 360 + type: FirelockEdge + components: + - rot: 3.141592653589793 rad + pos: -6.5,4.5 + parent: 0 + type: Transform +- uid: 361 + type: CableApcExtension + components: + - pos: 1.5,-3.5 + parent: 0 + type: Transform +- uid: 362 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: -4.5,2.5 + parent: 0 + type: Transform +- uid: 363 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 0.5,0.5 + parent: 0 + type: Transform +- uid: 364 + type: ShuttleWindow + components: + - pos: -1.5,9.5 + parent: 0 + type: Transform +- uid: 365 + type: ShuttleWindow + components: + - pos: -5.5,16.5 + parent: 0 + type: Transform +- uid: 366 + type: CableMV + components: + - pos: -5.5,-6.5 + parent: 0 + type: Transform +- uid: 367 + type: APCBasic + components: + - rot: 1.5707963267948966 rad + pos: -7.5,9.5 + parent: 0 + type: Transform +- uid: 368 + type: CableMV + components: + - pos: -5.5,7.5 + parent: 0 + type: Transform +- uid: 369 + type: CableHV + components: + - pos: -3.5,12.5 + parent: 0 + type: Transform +- uid: 370 + type: APCBasic + components: + - rot: 1.5707963267948966 rad + pos: -0.5,9.5 + parent: 0 + type: Transform +- uid: 371 + type: CableMV + components: + - pos: -3.5,-8.5 + parent: 0 + type: Transform +- uid: 372 + type: CableMV + components: + - pos: -4.5,-8.5 + parent: 0 + type: Transform +- uid: 373 + type: CableMV + components: + - pos: 0.5,11.5 + parent: 0 + type: Transform +- uid: 374 + type: CableMV + components: + - pos: 0.5,12.5 + parent: 0 + type: Transform +- uid: 375 + type: CableMV + components: + - pos: -4.5,4.5 + parent: 0 + type: Transform +- uid: 376 + type: CableMV + components: + - pos: 0.5,13.5 + parent: 0 + type: Transform +- uid: 377 + type: CableMV + components: + - pos: -3.5,-7.5 + parent: 0 + type: Transform +- uid: 378 + type: CableMV + components: + - pos: -3.5,-6.5 + parent: 0 + type: Transform +- uid: 379 + type: WallShuttle + components: + - pos: -3.5,12.5 + parent: 0 + type: Transform +- uid: 380 + type: ChairOfficeLight + components: + - rot: 1.5707963267948966 rad + pos: -6.5,10.5 + parent: 0 + type: Transform +- uid: 381 + type: VendingMachineMedical + components: + - flags: SessionSpecific + type: MetaData + - pos: -6.5,11.5 + parent: 0 + type: Transform +- uid: 382 + type: ShuttleWindow + components: + - pos: -2.5,16.5 + parent: 0 + type: Transform +- uid: 383 + type: WallShuttle + components: + - pos: -4.5,7.5 + parent: 0 + type: Transform +- uid: 384 + type: ShuttleWindow + components: + - pos: -7.5,3.5 + parent: 0 + type: Transform +- uid: 385 + type: Grille + components: + - pos: -7.5,1.5 + parent: 0 + type: Transform +- uid: 386 + type: WallShuttle + components: + - pos: -7.5,11.5 + parent: 0 + type: Transform +- uid: 387 + type: WallShuttle + components: + - pos: 1.5,12.5 + parent: 0 + type: Transform +- uid: 388 + type: WallShuttleDiagonal + components: + - pos: -7.5,12.5 + parent: 0 + type: Transform +- uid: 389 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: -0.5,3.5 + parent: 0 + type: Transform +- uid: 390 + type: WallShuttle + components: + - pos: -6.5,13.5 + parent: 0 + type: Transform +- uid: 391 + type: Thruster + components: + - rot: 1.5707963267948966 rad + pos: -7.5,13.5 + parent: 0 + type: Transform +- uid: 392 + type: ShuttleWindow + components: + - pos: -6.5,15.5 + parent: 0 + type: Transform +- uid: 393 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: -0.5,2.5 + parent: 0 + type: Transform +- uid: 394 + type: CableMV + components: + - pos: -5.5,-7.5 + parent: 0 + type: Transform +- uid: 395 + type: CableApcExtension + components: + - pos: -5.5,-8.5 + parent: 0 + type: Transform +- uid: 396 + type: CableMV + components: + - pos: 0.5,10.5 + parent: 0 + type: Transform +- uid: 397 + type: CableMV + components: + - pos: 1.5,3.5 + parent: 0 + type: Transform +- uid: 398 + type: CableMV + components: + - pos: 1.5,0.5 + parent: 0 + type: Transform +- uid: 399 + type: SubstationWallBasic + components: + - pos: -3.5,-6.5 + parent: 0 + type: Transform +- uid: 400 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 1.5,10.5 + parent: 0 + type: Transform +- uid: 401 + type: ShuttleWindow + components: + - pos: 2.5,-4.5 + parent: 0 + type: Transform +- uid: 402 + type: GeneratorUranium + components: + - pos: -6.5,-7.5 + parent: 0 + type: Transform +- uid: 403 + type: ChairOfficeLight + components: + - pos: -5.5,11.5 + parent: 0 + type: Transform +- uid: 404 + type: TableReinforcedGlass + components: + - pos: -6.5,9.5 + parent: 0 + type: Transform +- uid: 405 + type: WallShuttle + components: + - pos: 2.5,-9.5 + parent: 0 + type: Transform +- uid: 406 + type: Grille + components: + - pos: -7.5,-1.5 + parent: 0 + type: Transform +- uid: 407 + type: Grille + components: + - pos: 2.5,-1.5 + parent: 0 + type: Transform +- uid: 408 + type: ShuttleWindow + components: + - pos: -0.5,16.5 + parent: 0 + type: Transform +- uid: 409 + type: Grille + components: + - pos: -1.5,16.5 + parent: 0 + type: Transform +- uid: 410 + type: CableApcExtension + components: + - pos: -1.5,-5.5 + parent: 0 + type: Transform +- uid: 411 + type: CableApcExtension + components: + - pos: -2.5,-5.5 + parent: 0 + type: Transform +- uid: 412 + type: CableApcExtension + components: + - pos: -1.5,-4.5 + parent: 0 + type: Transform +- uid: 413 + type: CableApcExtension + components: + - pos: -1.5,-3.5 + parent: 0 + type: Transform +- uid: 414 + type: CableApcExtension + components: + - pos: -6.5,-4.5 + parent: 0 + type: Transform +- uid: 415 + type: CableApcExtension + components: + - pos: -6.5,-3.5 + parent: 0 + type: Transform +- uid: 416 + type: CableApcExtension + components: + - pos: -4.5,4.5 + parent: 0 + type: Transform +- uid: 417 + type: CableApcExtension + components: + - pos: -4.5,5.5 + parent: 0 + type: Transform +- uid: 418 + type: CableApcExtension + components: + - pos: -5.5,5.5 + parent: 0 + type: Transform +- uid: 419 + type: CableApcExtension + components: + - pos: -6.5,5.5 + parent: 0 + type: Transform +- uid: 420 + type: CableApcExtension + components: + - pos: -3.5,5.5 + parent: 0 + type: Transform +- uid: 421 + type: CableApcExtension + components: + - pos: -2.5,5.5 + parent: 0 + type: Transform +- uid: 422 + type: CableApcExtension + components: + - pos: -1.5,5.5 + parent: 0 + type: Transform +- uid: 423 + type: CableApcExtension + components: + - pos: -0.5,5.5 + parent: 0 + type: Transform +- uid: 424 + type: CableApcExtension + components: + - pos: 0.5,5.5 + parent: 0 + type: Transform +- uid: 425 + type: CableApcExtension + components: + - pos: 1.5,5.5 + parent: 0 + type: Transform +- uid: 426 + type: CableApcExtension + components: + - pos: -2.5,4.5 + parent: 0 + type: Transform +- uid: 427 + type: CableApcExtension + components: + - pos: -2.5,3.5 + parent: 0 + type: Transform +- uid: 428 + type: CableApcExtension + components: + - pos: -2.5,2.5 + parent: 0 + type: Transform +- uid: 429 + type: CableApcExtension + components: + - pos: -2.5,1.5 + parent: 0 + type: Transform +- uid: 430 + type: CableApcExtension + components: + - pos: -2.5,0.5 + parent: 0 + type: Transform +- uid: 431 + type: CableApcExtension + components: + - pos: -2.5,-0.5 + parent: 0 + type: Transform +- uid: 432 + type: CableApcExtension + components: + - pos: -3.5,-0.5 + parent: 0 + type: Transform +- uid: 433 + type: CableApcExtension + components: + - pos: -4.5,-0.5 + parent: 0 + type: Transform +- uid: 434 + type: CableApcExtension + components: + - pos: -5.5,-0.5 + parent: 0 + type: Transform +- uid: 435 + type: CableApcExtension + components: + - pos: -6.5,-0.5 + parent: 0 + type: Transform +- uid: 436 + type: CableApcExtension + components: + - pos: -1.5,-0.5 + parent: 0 + type: Transform +- uid: 437 + type: CableApcExtension + components: + - pos: -0.5,-0.5 + parent: 0 + type: Transform +- uid: 438 + type: CableApcExtension + components: + - pos: 0.5,-0.5 + parent: 0 + type: Transform +- uid: 439 + type: CableApcExtension + components: + - pos: 1.5,-0.5 + parent: 0 + type: Transform +- uid: 440 + type: CableApcExtension + components: + - pos: 1.5,0.5 + parent: 0 + type: Transform +- uid: 441 + type: CableApcExtension + components: + - pos: 1.5,1.5 + parent: 0 + type: Transform +- uid: 442 + type: CableApcExtension + components: + - pos: 1.5,2.5 + parent: 0 + type: Transform +- uid: 443 + type: CableApcExtension + components: + - pos: 1.5,3.5 + parent: 0 + type: Transform +- uid: 444 + type: CableApcExtension + components: + - pos: 1.5,4.5 + parent: 0 + type: Transform +- uid: 445 + type: CableApcExtension + components: + - pos: -6.5,0.5 + parent: 0 + type: Transform +- uid: 446 + type: CableApcExtension + components: + - pos: -6.5,1.5 + parent: 0 + type: Transform +- uid: 447 + type: CableApcExtension + components: + - pos: -6.5,2.5 + parent: 0 + type: Transform +- uid: 448 + type: CableApcExtension + components: + - pos: -6.5,3.5 + parent: 0 + type: Transform +- uid: 449 + type: CableApcExtension + components: + - pos: -6.5,4.5 + parent: 0 + type: Transform +- uid: 450 + type: CableApcExtension + components: + - pos: -0.5,9.5 + parent: 0 + type: Transform +- uid: 451 + type: CableApcExtension + components: + - pos: 0.5,9.5 + parent: 0 + type: Transform +- uid: 452 + type: CableApcExtension + components: + - pos: 0.5,8.5 + parent: 0 + type: Transform +- uid: 453 + type: CableApcExtension + components: + - pos: 0.5,7.5 + parent: 0 + type: Transform +- uid: 454 + type: CableApcExtension + components: + - pos: 0.5,10.5 + parent: 0 + type: Transform +- uid: 455 + type: CableApcExtension + components: + - pos: 0.5,11.5 + parent: 0 + type: Transform +- uid: 456 + type: CableMV + components: + - pos: -7.5,9.5 + parent: 0 + type: Transform +- uid: 457 + type: CableMV + components: + - pos: -6.5,9.5 + parent: 0 + type: Transform +- uid: 458 + type: CableApcExtension + components: + - pos: -7.5,9.5 + parent: 0 + type: Transform +- uid: 459 + type: CableApcExtension + components: + - pos: -3.5,10.5 + parent: 0 + type: Transform +- uid: 460 + type: CableApcExtension + components: + - pos: -4.5,10.5 + parent: 0 + type: Transform +- uid: 461 + type: CableApcExtension + components: + - pos: -5.5,10.5 + parent: 0 + type: Transform +- uid: 462 + type: CableApcExtension + components: + - pos: -6.5,10.5 + parent: 0 + type: Transform +- uid: 463 + type: CableApcExtension + components: + - pos: -7.5,10.5 + parent: 0 + type: Transform +- uid: 464 + type: CableApcExtension + components: + - pos: -6.5,9.5 + parent: 0 + type: Transform +- uid: 465 + type: CableApcExtension + components: + - pos: -6.5,8.5 + parent: 0 + type: Transform +- uid: 466 + type: CableApcExtension + components: + - pos: -2.5,10.5 + parent: 0 + type: Transform +- uid: 467 + type: CableApcExtension + components: + - pos: -1.5,10.5 + parent: 0 + type: Transform +- uid: 468 + type: CableApcExtension + components: + - pos: -0.5,12.5 + parent: 0 + type: Transform +- uid: 469 + type: CableApcExtension + components: + - pos: -0.5,13.5 + parent: 0 + type: Transform +- uid: 470 + type: CableApcExtension + components: + - pos: -0.5,14.5 + parent: 0 + type: Transform +- uid: 471 + type: CableApcExtension + components: + - pos: -1.5,14.5 + parent: 0 + type: Transform +- uid: 472 + type: CableApcExtension + components: + - pos: -2.5,14.5 + parent: 0 + type: Transform +- uid: 473 + type: CableApcExtension + components: + - pos: -3.5,14.5 + parent: 0 + type: Transform +- uid: 474 + type: CableApcExtension + components: + - pos: -4.5,14.5 + parent: 0 + type: Transform +- uid: 475 + type: CableApcExtension + components: + - pos: -5.5,14.5 + parent: 0 + type: Transform +- uid: 476 + type: CableApcExtension + components: + - pos: -6.5,14.5 + parent: 0 + type: Transform +- uid: 477 + type: CableApcExtension + components: + - pos: -6.5,15.5 + parent: 0 + type: Transform +- uid: 478 + type: CableApcExtension + components: + - pos: -5.5,15.5 + parent: 0 + type: Transform +- uid: 479 + type: CableApcExtension + components: + - pos: -5.5,16.5 + parent: 0 + type: Transform +- uid: 480 + type: CableApcExtension + components: + - pos: -4.5,16.5 + parent: 0 + type: Transform +- uid: 481 + type: CableApcExtension + components: + - pos: -3.5,16.5 + parent: 0 + type: Transform +- uid: 482 + type: CableApcExtension + components: + - pos: -2.5,16.5 + parent: 0 + type: Transform +- uid: 483 + type: CableApcExtension + components: + - pos: -1.5,16.5 + parent: 0 + type: Transform +- uid: 484 + type: CableApcExtension + components: + - pos: -0.5,16.5 + parent: 0 + type: Transform +- uid: 485 + type: CableApcExtension + components: + - pos: 0.5,16.5 + parent: 0 + type: Transform +- uid: 486 + type: CableApcExtension + components: + - pos: 0.5,15.5 + parent: 0 + type: Transform +- uid: 487 + type: CableApcExtension + components: + - pos: 1.5,15.5 + parent: 0 + type: Transform +- uid: 488 + type: CableApcExtension + components: + - pos: 1.5,14.5 + parent: 0 + type: Transform +- uid: 489 + type: CableApcExtension + components: + - pos: 0.5,14.5 + parent: 0 + type: Transform +- uid: 490 + type: CableApcExtension + components: + - pos: 1.5,7.5 + parent: 0 + type: Transform +- uid: 491 + type: CableMV + components: + - pos: -3.5,13.5 + parent: 0 + type: Transform +- uid: 492 + type: CableMV + components: + - pos: -2.5,13.5 + parent: 0 + type: Transform +- uid: 493 + type: CableMV + components: + - pos: -1.5,13.5 + parent: 0 + type: Transform +- uid: 494 + type: CableApcExtension + components: + - pos: -6.5,-2.5 + parent: 0 + type: Transform +- uid: 495 + type: CableApcExtension + components: + - pos: -5.5,-2.5 + parent: 0 + type: Transform +- uid: 496 + type: CableApcExtension + components: + - pos: -7.5,-2.5 + parent: 0 + type: Transform +- uid: 497 + type: CableApcExtension + components: + - pos: -7.5,-0.5 + parent: 0 + type: Transform +- uid: 498 + type: CableApcExtension + components: + - pos: 2.5,-0.5 + parent: 0 + type: Transform +- uid: 499 + type: CableApcExtension + components: + - pos: 2.5,-2.5 + parent: 0 + type: Transform +- uid: 500 + type: CableApcExtension + components: + - pos: 2.5,5.5 + parent: 0 + type: Transform +- uid: 501 + type: CableApcExtension + components: + - pos: 2.5,7.5 + parent: 0 + type: Transform +- uid: 502 + type: CableApcExtension + components: + - pos: -7.5,5.5 + parent: 0 + type: Transform +- uid: 503 + type: CableApcExtension + components: + - pos: -6.5,7.5 + parent: 0 + type: Transform +- uid: 504 + type: CableApcExtension + components: + - pos: -7.5,7.5 + parent: 0 + type: Transform +- uid: 505 + type: CableApcExtension + components: + - pos: -2.5,6.5 + parent: 0 + type: Transform +- uid: 506 + type: CableApcExtension + components: + - pos: -2.5,7.5 + parent: 0 + type: Transform +- uid: 507 + type: Grille + components: + - pos: -0.5,-11.5 + parent: 0 + type: Transform +- uid: 508 + type: AirlockGlass + components: + - pos: 0.5,-3.5 + parent: 0 + type: Transform +- uid: 509 + type: Gyroscope + components: + - pos: -5.5,-10.5 + parent: 0 + type: Transform +- uid: 510 + type: PlasticFlapsAirtightClear + components: + - pos: 1.5,-3.5 + parent: 0 + type: Transform +- uid: 511 + type: WallShuttleDiagonal + components: + - rot: 1.5707963267948966 rad + pos: 0.5,-12.5 + parent: 0 + type: Transform +- uid: 512 + type: WallShuttleDiagonal + components: + - rot: 3.141592653589793 rad + pos: -5.5,-12.5 + parent: 0 + type: Transform +- uid: 513 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 1.5,-1.5 + parent: 0 + type: Transform +- uid: 514 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: -6.5,-1.5 + parent: 0 + type: Transform +- uid: 515 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: -6.5,6.5 + parent: 0 + type: Transform +- uid: 516 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 1.5,6.5 + parent: 0 + type: Transform +- uid: 517 + type: CableHV + components: + - pos: -5.5,-7.5 + parent: 0 + type: Transform +- uid: 518 + type: CableHV + components: + - pos: -4.5,-7.5 + parent: 0 + type: Transform +- uid: 519 + type: CableTerminal + components: + - rot: 1.5707963267948966 rad + pos: -6.5,-7.5 + parent: 0 + type: Transform +- uid: 520 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 1.5,-8.5 + parent: 0 + type: Transform +- uid: 521 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 1.5,-7.5 + parent: 0 + type: Transform +- uid: 522 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 1.5,-6.5 + parent: 0 + type: Transform +- uid: 523 + type: GasPort + components: + - pos: -6.5,-8.5 + parent: 0 + type: Transform +- uid: 524 + type: GravityGeneratorMini + components: + - pos: -4.5,-7.5 + parent: 0 + type: Transform +- uid: 525 + type: GasPassiveVent + components: + - rot: 3.141592653589793 rad + pos: -6.5,-9.5 + parent: 0 + type: Transform +- uid: 526 + type: GasPassiveVent + components: + - rot: 1.5707963267948966 rad + pos: -5.5,-9.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 527 + type: GasPipeBend + components: + - rot: -1.5707963267948966 rad + pos: -4.5,-9.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 528 + type: GasPressurePump + components: + - rot: 1.5707963267948966 rad + pos: -3.5,-7.5 + parent: 0 + type: Transform +- uid: 529 + type: GasPipeStraight + components: + - pos: -4.5,-8.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 530 + type: GasPipeBend + components: + - rot: 1.5707963267948966 rad + pos: -4.5,-7.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 531 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: -2.5,-7.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 532 + type: GasPipeTJunction + components: + - pos: -1.5,-7.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 533 + type: GasVentPump + components: + - rot: 3.141592653589793 rad + pos: -1.5,-8.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 534 + type: GasPipeStraight + components: + - rot: 1.5707963267948966 rad + pos: -0.5,-7.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 535 + type: GasPipeBend + components: + - rot: -1.5707963267948966 rad + pos: 1.5,-7.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 536 + type: GasPipeBend + components: + - pos: 1.5,-5.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 537 + type: GasPipeBend + components: + - rot: 3.141592653589793 rad + pos: 0.5,-5.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 538 + type: GasPipeStraight + components: + - rot: 1.5707963267948966 rad + pos: 0.5,-7.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 539 + type: GasPipeTJunction + components: + - rot: -1.5707963267948966 rad + pos: 1.5,-6.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 540 + type: GasVentPump + components: + - rot: 1.5707963267948966 rad + pos: 0.5,-6.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 541 + type: GasVentPump + components: + - pos: -6.5,3.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 542 + type: PlasmaReinforcedWindowDirectional + components: + - rot: 3.141592653589793 rad + pos: -5.5,-9.5 + parent: 0 + type: Transform +- uid: 543 + type: GasVentPump + components: + - rot: 3.141592653589793 rad + pos: -2.5,-1.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 544 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 0.5,-4.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 545 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 0.5,-3.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 546 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 0.5,-2.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 547 + type: GasPipeTJunction + components: + - rot: 1.5707963267948966 rad + pos: 0.5,-1.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 548 + type: GasPipeTJunction + components: + - pos: 0.5,-0.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 549 + type: GasPipeTJunction + components: + - pos: -5.5,-0.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 550 + type: GasPipeFourway + components: + - pos: -2.5,-0.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 551 + type: GasPipeBend + components: + - rot: 3.141592653589793 rad + pos: -3.5,0.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 552 + type: GasPipeBend + components: + - rot: -1.5707963267948966 rad + pos: -1.5,0.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 553 + type: GasPipeBend + components: + - pos: -1.5,4.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 554 + type: GasPipeBend + components: + - rot: 1.5707963267948966 rad + pos: -3.5,4.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 555 + type: GasPipeTJunction + components: + - rot: -1.5707963267948966 rad + pos: -1.5,2.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 556 + type: GasPipeTJunction + components: + - pos: -2.5,0.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 557 + type: GasPipeTJunction + components: + - rot: 3.141592653589793 rad + pos: -2.5,4.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 558 + type: GasPipeBend + components: + - rot: 3.141592653589793 rad + pos: -6.5,-0.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 559 + type: GasPipeBend + components: + - rot: -1.5707963267948966 rad + pos: 1.5,-0.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 560 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: -6.5,0.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 561 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: -6.5,1.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 562 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: -6.5,2.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 563 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 1.5,0.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 564 + type: GasVentPump + components: + - pos: 1.5,1.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 565 + type: PlasmaReinforcedWindowDirectional + components: + - rot: 3.141592653589793 rad + pos: -6.5,-9.5 + parent: 0 + type: Transform +- uid: 566 + type: GasPipeStraight + components: + - rot: 1.5707963267948966 rad + pos: -1.5,-0.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 567 + type: GasPipeStraight + components: + - rot: 1.5707963267948966 rad + pos: -0.5,-0.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 568 + type: GasPipeStraight + components: + - rot: 1.5707963267948966 rad + pos: -4.5,-0.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 569 + type: GasPipeStraight + components: + - rot: 1.5707963267948966 rad + pos: -3.5,-0.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 570 + type: GasPipeTJunction + components: + - rot: -1.5707963267948966 rad + pos: -5.5,-1.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 571 + type: GasPipeStraight + components: + - pos: -5.5,-2.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 572 + type: GasPipeStraight + components: + - pos: -5.5,-3.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 573 + type: GasPipeBend + components: + - rot: 3.141592653589793 rad + pos: -5.5,-4.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 574 + type: GasVentPump + components: + - rot: -1.5707963267948966 rad + pos: -4.5,-4.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 575 + type: GasVentPump + components: + - rot: 1.5707963267948966 rad + pos: -2.5,2.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 576 + type: GasPipeStraight + components: + - pos: -3.5,1.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 577 + type: GasPipeStraight + components: + - pos: -3.5,2.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 578 + type: GasPipeStraight + components: + - pos: -3.5,3.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 579 + type: GasPipeStraight + components: + - pos: -1.5,1.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 580 + type: GasPipeStraight + components: + - pos: -1.5,2.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 581 + type: GasPipeStraight + components: + - pos: -1.5,3.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 582 + type: GasPipeFourway + components: + - pos: -2.5,6.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 583 + type: GasPipeTJunction + components: + - rot: -1.5707963267948966 rad + pos: 0.5,6.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 584 + type: GasPipeTJunction + components: + - rot: 1.5707963267948966 rad + pos: -5.5,6.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 585 + type: GasPipeStraight + components: + - pos: -2.5,5.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 586 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: -3.5,6.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 587 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: -4.5,6.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 588 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: -1.5,6.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 589 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: -0.5,6.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 590 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: -5.5,7.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 591 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: -5.5,8.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 592 + type: GasVentPump + components: + - pos: -5.5,9.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 593 + type: GasVentPump + components: + - rot: 3.141592653589793 rad + pos: -5.5,5.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 594 + type: GasVentPump + components: + - rot: 3.141592653589793 rad + pos: 0.5,5.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 595 + type: GasVentPump + components: + - pos: -2.5,7.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 596 + type: GasPipeStraight + components: + - pos: 0.5,7.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 597 + type: GasPipeStraight + components: + - pos: 0.5,8.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 598 + type: GasPipeStraight + components: + - pos: 0.5,9.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 599 + type: GasPipeStraight + components: + - pos: 0.5,10.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 600 + type: GasPipeStraight + components: + - pos: 0.5,11.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 601 + type: GasPipeStraight + components: + - pos: 0.5,12.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 602 + type: GasVentPump + components: + - pos: 0.5,13.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 603 + type: GasVentPump + components: + - rot: 1.5707963267948966 rad + pos: -6.5,-1.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 604 + type: GasVentPump + components: + - rot: -1.5707963267948966 rad + pos: 1.5,-1.5 + parent: 0 + type: Transform + - color: '#0335FCFF' + type: AtmosPipeColor +- uid: 605 + type: PlasmaReinforcedWindowDirectional + components: + - rot: 1.5707963267948966 rad + pos: -5.5,-9.5 + parent: 0 + type: Transform +- uid: 606 + type: PlasmaReinforcedWindowDirectional + components: + - pos: -5.5,-9.5 + parent: 0 + type: Transform +- uid: 607 + type: PlasmaReinforcedWindowDirectional + components: + - pos: -6.5,-9.5 + parent: 0 + type: Transform +- uid: 608 + type: PoweredSmallLight + components: + - rot: 1.5707963267948966 rad + pos: -6.5,-8.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 609 + type: AirCanister + components: + - pos: -6.5,-8.5 + parent: 0 + type: Transform +- uid: 610 + type: InflatableWallStack + components: + - pos: -4.493326,-10.40662 + parent: 0 + type: Transform +- uid: 611 + type: Wrench + components: + - pos: -4.462076,-10.484745 + parent: 0 + type: Transform +- uid: 612 + type: HolofanProjector + components: + - pos: -4.477701,-10.547245 + parent: 0 + type: Transform +- uid: 613 + type: Poweredlight + components: + - pos: -4.5,3.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 614 + type: Poweredlight + components: + - rot: 3.141592653589793 rad + pos: -0.5,1.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 615 + type: Poweredlight + components: + - rot: 3.141592653589793 rad + pos: -5.5,-5.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 616 + type: Poweredlight + components: + - rot: -1.5707963267948966 rad + pos: -1.5,10.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 617 + type: PoweredSmallLight + components: + - rot: -1.5707963267948966 rad + pos: -1.5,7.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 618 + type: PoweredSmallLight + components: + - rot: 3.141592653589793 rad + pos: -2.5,13.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 619 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 0.5,9.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 620 + type: Poweredlight + components: + - pos: -4.5,-0.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 621 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 0.5,-6.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 622 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: -6.5,9.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 623 + type: PoweredSmallLight + components: + - rot: 3.141592653589793 rad + pos: -2.5,-5.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 624 + type: Poweredlight + components: + - pos: -2.5,-7.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 625 + type: Table + components: + - pos: -2.5,-9.5 + parent: 0 + type: Transform +- uid: 626 + type: Table + components: + - pos: -2.5,-8.5 + parent: 0 + type: Transform +- uid: 627 + type: Catwalk + components: + - pos: -6.5,-7.5 + parent: 0 + type: Transform +- uid: 628 + type: Chair + components: + - rot: -1.5707963267948966 rad + pos: -1.5,-8.5 + parent: 0 + type: Transform +- uid: 629 + type: Chair + components: + - rot: -1.5707963267948966 rad + pos: -1.5,-9.5 + parent: 0 + type: Transform +- uid: 630 + type: Catwalk + components: + - pos: -5.5,-7.5 + parent: 0 + type: Transform +- uid: 631 + type: Chair + components: + - rot: 1.5707963267948966 rad + pos: -3.5,-9.5 + parent: 0 + type: Transform +- uid: 632 + type: Chair + components: + - rot: 1.5707963267948966 rad + pos: -3.5,-8.5 + parent: 0 + type: Transform +- uid: 633 + type: Catwalk + components: + - pos: -4.5,-7.5 + parent: 0 + type: Transform +- uid: 634 + type: PoweredSmallLight + components: + - rot: -1.5707963267948966 rad + pos: 0.5,-10.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 635 + type: ChairOfficeDark + components: + - pos: -2.5,-7.5 + parent: 0 + type: Transform +- uid: 636 + type: PortableScrubber + components: + - pos: 1.5,-5.5 + parent: 0 + type: Transform +- uid: 637 + type: PlasmaReinforcedWindowDirectional + components: + - rot: -1.5707963267948966 rad + pos: -6.5,-9.5 + parent: 0 + type: Transform +- uid: 638 + type: EmergencyLight + components: + - pos: -0.5,6.5 + parent: 0 + type: Transform + - type: ActiveEmergencyLight +- uid: 639 + type: EmergencyLight + components: + - rot: 3.141592653589793 rad + pos: -4.5,-1.5 + parent: 0 + type: Transform + - type: ActiveEmergencyLight +- uid: 640 + type: AtmosDeviceFanTiny + components: + - pos: -7.5,-2.5 + parent: 0 + type: Transform +- uid: 641 + type: AtmosDeviceFanTiny + components: + - pos: -7.5,-0.5 + parent: 0 + type: Transform +- uid: 642 + type: AtmosDeviceFanTiny + components: + - pos: 2.5,-2.5 + parent: 0 + type: Transform +- uid: 643 + type: AtmosDeviceFanTiny + components: + - pos: 2.5,-0.5 + parent: 0 + type: Transform +- uid: 644 + type: AtmosDeviceFanTiny + components: + - pos: 2.5,5.5 + parent: 0 + type: Transform +- uid: 645 + type: AtmosDeviceFanTiny + components: + - pos: 2.5,7.5 + parent: 0 + type: Transform +- uid: 646 + type: AtmosDeviceFanTiny + components: + - pos: -7.5,7.5 + parent: 0 + type: Transform +- uid: 647 + type: AtmosDeviceFanTiny + components: + - pos: -7.5,5.5 + parent: 0 + type: Transform +- uid: 648 + type: PosterLegitGetYourLEGS + components: + - pos: -0.5,10.5 + parent: 0 + type: Transform +- uid: 649 + type: PosterLegitReportCrimes + components: + - pos: -0.5,-2.5 + parent: 0 + type: Transform +- uid: 650 + type: PosterContrabandBeachStarYamamoto + components: + - desc: A highly illegal poster outlawed by Nanotrasen. + name: Beach Star Bratton! + type: MetaData + - pos: -1.5,-6.5 + parent: 0 + type: Transform +- uid: 651 + type: PosterContrabandHighEffectEngineering + components: + - pos: 1.5,-10.5 + parent: 0 + type: Transform +- uid: 652 + type: PosterContrabandFreeSyndicateEncryptionKey + components: + - pos: -0.5,-4.5 + parent: 0 + type: Transform +- uid: 653 + type: PowerCellRecharger + components: + - pos: -2.5,-8.5 + parent: 0 + type: Transform +- uid: 654 + type: Grille + components: + - pos: 2.5,-4.5 + parent: 0 + type: Transform +- uid: 655 + type: Grille + components: + - pos: 2.5,-6.5 + parent: 0 + type: Transform +- uid: 656 + type: Grille + components: + - pos: 2.5,-8.5 + parent: 0 + type: Transform +- uid: 657 + type: BlastDoorOpen + components: + - pos: 2.5,-8.5 + parent: 0 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 660 + type: SignalReceiver +- uid: 658 + type: BlastDoorOpen + components: + - pos: 2.5,-6.5 + parent: 0 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 660 + type: SignalReceiver +- uid: 659 + type: BlastDoorOpen + components: + - pos: 2.5,-4.5 + parent: 0 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 660 + type: SignalReceiver +- uid: 660 + type: SignalButton + components: + - pos: -0.5,-6.5 + parent: 0 + type: Transform + - outputs: + Pressed: + - port: Toggle + uid: 658 + - port: Toggle + uid: 657 + - port: Toggle + uid: 659 + type: SignalTransmitter +- uid: 661 + type: CableApcExtension + components: + - pos: -5.5,-9.5 + parent: 0 + type: Transform +- uid: 662 + type: CableApcExtension + components: + - pos: -5.5,-10.5 + parent: 0 + type: Transform +- uid: 663 + type: CableApcExtension + components: + - pos: -5.5,-11.5 + parent: 0 + type: Transform +- uid: 664 + type: CableApcExtension + components: + - pos: 0.5,-9.5 + parent: 0 + type: Transform +- uid: 665 + type: CableApcExtension + components: + - pos: 0.5,-10.5 + parent: 0 + type: Transform +- uid: 666 + type: CableApcExtension + components: + - pos: 0.5,-11.5 + parent: 0 + type: Transform +- uid: 667 + type: CableApcExtension + components: + - pos: -2.5,-9.5 + parent: 0 + type: Transform +- uid: 668 + type: CableApcExtension + components: + - pos: -2.5,-10.5 + parent: 0 + type: Transform +- uid: 669 + type: Rack + components: + - pos: -4.5,-10.5 + parent: 0 + type: Transform +... diff --git a/Resources/Prototypes/Maps/bagel.yml b/Resources/Prototypes/Maps/bagel.yml index 178802db36..338e4ca36c 100644 --- a/Resources/Prototypes/Maps/bagel.yml +++ b/Resources/Prototypes/Maps/bagel.yml @@ -7,7 +7,7 @@ stations: Bagel: mapNameTemplate: '{0} Bagel Station {1}' - emergencyShuttlePath: /Maps/Shuttles/emergency_courser.yml + emergencyShuttlePath: /Maps/Shuttles/emergency_lox.yml nameGenerator: !type:NanotrasenNameGenerator prefixCreator: '14' From 553a46ff908d2a66341460707503badddff274bc Mon Sep 17 00:00:00 2001 From: Interrobang01 <113810873+Interrobang01@users.noreply.github.com> Date: Mon, 27 Feb 2023 13:19:52 -0800 Subject: [PATCH 21/53] Add cooldown to hypospray (#13953) * added cooldown to hypospray * moved one of the 'using's over a space * changed all cooldowns to 0.5 seconds * resolved suggestions * minor comment change --- .../EntitySystems/ChemistrySystemHypospray.cs | 12 ++++++++++++ .../Entities/Objects/Specific/Medical/hypospray.yml | 6 ++++++ 2 files changed, 18 insertions(+) diff --git a/Content.Server/Chemistry/EntitySystems/ChemistrySystemHypospray.cs b/Content.Server/Chemistry/EntitySystems/ChemistrySystemHypospray.cs index 06fd29813b..2e0593ecf1 100644 --- a/Content.Server/Chemistry/EntitySystems/ChemistrySystemHypospray.cs +++ b/Content.Server/Chemistry/EntitySystems/ChemistrySystemHypospray.cs @@ -11,12 +11,15 @@ using Content.Shared.Interaction; using Content.Shared.Interaction.Events; using Content.Shared.Mobs.Components; using Content.Shared.Weapons.Melee.Events; +using Content.Shared.Timing; using Robust.Shared.Player; namespace Content.Server.Chemistry.EntitySystems { public sealed partial class ChemistrySystem { + [Dependency] private readonly UseDelaySystem _useDelay = default!; + private void InitializeHypospray() { SubscribeLocalEvent(OnAfterInteract); @@ -65,6 +68,10 @@ namespace Content.Server.Chemistry.EntitySystems if (!EligibleEntity(target, _entMan)) return false; + if (TryComp(uid, out UseDelayComponent? delayComp)) + if (_useDelay.ActiveDelay(uid, delayComp)) + return false; + string? msgFormat = null; if (target == user) @@ -102,6 +109,11 @@ namespace Content.Server.Chemistry.EntitySystems _audio.PlayPvs(component.InjectSound, user); + // Medipens and such use this system and don't have a delay, requiring extra checks + // BeginDelay function returns if item is already on delay + if (delayComp is not null) + _useDelay.BeginDelay(uid, delayComp); + // Get transfer amount. May be smaller than component.TransferAmount if not enough room var realTransferAmount = FixedPoint2.Min(component.TransferAmount, targetSolution.AvailableVolume); diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml index 7f77b8f6dd..e871c29775 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml @@ -18,6 +18,8 @@ - type: ExaminableSolution solution: hypospray - type: Hypospray + - type: UseDelay + delay: 0.5 - type: StaticPrice price: 750 @@ -41,6 +43,8 @@ - type: ExaminableSolution solution: hypospray - type: Hypospray + - type: UseDelay + delay: 0.5 - type: entity name: chemical medipen @@ -166,5 +170,7 @@ - type: ExaminableSolution solution: hypospray - type: Hypospray + - type: UseDelay + delay: 0.5 - type: StaticPrice # A new shitcurity meta price: 75 From 32d6dbda2ee4e11dab158b2926a3f1139dda11cf Mon Sep 17 00:00:00 2001 From: ChilbroBaggins <107660393+ChilbroBaggins@users.noreply.github.com> Date: Mon, 27 Feb 2023 15:20:52 -0600 Subject: [PATCH 22/53] Medical Wall Locker Hotfix (#14247) Co-authored-by: Jeff --- Resources/Prototypes/Catalog/Fills/Lockers/medical.yml | 2 ++ .../Entities/Structures/Storage/Closets/wall_lockers.yml | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml b/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml index 3e7483ff72..249561ffda 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml @@ -18,6 +18,7 @@ - type: entity id: LockerWallMedicalFilled + name: medicine wall locker suffix: Filled parent: LockerWallMedical components: @@ -72,6 +73,7 @@ - type: entity id: LockerWallMedicalDoctorFilled + name: medical doctor's wall locker suffix: Filled parent: ["LockerWallMedical", "LockerMedicalFilled"] diff --git a/Resources/Prototypes/Entities/Structures/Storage/Closets/wall_lockers.yml b/Resources/Prototypes/Entities/Structures/Storage/Closets/wall_lockers.yml index 8d26eaa233..4000430b5e 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Closets/wall_lockers.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/wall_lockers.yml @@ -168,7 +168,7 @@ - type: entity id: LockerWallMedical parent: BaseWallLocker - name: medical doctor's wall locker + name: medical wall locker components: - type: Appearance visuals: From 374e236dc6a2e14aa89545a9577ca1f5b93c9053 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 27 Feb 2023 16:20:57 -0500 Subject: [PATCH 23/53] Automatic changelog update --- Resources/Changelog/Changelog.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 8e03966a42..e3be6582ab 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: ShadowCommander - changes: - - {message: Alt-clicking can now be used on hands again., type: Fix} - id: 2571 - time: '2022-11-04T01:36:45.0000000+00:00' - author: metalgearsloth changes: - {message: Fixed the damage/death overlay being off-centre while using the "separated" @@ -2919,3 +2914,9 @@ Entries: might even be reading this there right now!, type: Add} id: 3070 time: '2023-02-26T16:45:07.0000000+00:00' +- author: Hypospray Nerfer + changes: + - {message: 'Hypospray, Hypopen, and Gorlax Hypospray now all have short cooldowns.', + type: Tweak} + id: 3071 + time: '2023-02-27T21:19:53.0000000+00:00' From d34d1ff02e66ef589ee8194eceb4cc39b82acb86 Mon Sep 17 00:00:00 2001 From: Scribbles0 <91828755+Scribbles0@users.noreply.github.com> Date: Mon, 27 Feb 2023 15:43:55 -0800 Subject: [PATCH 24/53] NT Evac Raven (#14286) * raven shuttle * add missing blast door in sec compartment * name * extinguishers and emer lights --- Resources/Maps/Shuttles/emergency_raven.yml | 21009 ++++++++++++++++++ Resources/Prototypes/Maps/barratry.yml | 1 + 2 files changed, 21010 insertions(+) create mode 100644 Resources/Maps/Shuttles/emergency_raven.yml diff --git a/Resources/Maps/Shuttles/emergency_raven.yml b/Resources/Maps/Shuttles/emergency_raven.yml new file mode 100644 index 0000000000..35568bb6db --- /dev/null +++ b/Resources/Maps/Shuttles/emergency_raven.yml @@ -0,0 +1,21009 @@ +meta: + format: 3 + name: DemoStation + author: Space-Wizards + postmapinit: false +tilemap: + 0: Space + 1: FloorArcadeBlue + 2: FloorArcadeBlue2 + 3: FloorArcadeRed + 4: FloorAsteroidCoarseSand0 + 5: FloorAsteroidCoarseSandDug + 6: FloorAsteroidIronsand1 + 7: FloorAsteroidIronsand2 + 8: FloorAsteroidIronsand3 + 9: FloorAsteroidIronsand4 + 10: FloorAsteroidSand + 11: FloorAsteroidTile + 12: FloorBar + 13: FloorBasalt + 14: FloorBlue + 15: FloorBlueCircuit + 16: FloorBoxing + 17: FloorCarpetClown + 18: FloorCarpetOffice + 19: FloorCave + 20: FloorCaveDrought + 21: FloorClown + 22: FloorDark + 23: FloorDarkDiagonal + 24: FloorDarkDiagonalMini + 25: FloorDarkHerringbone + 26: FloorDarkMini + 27: FloorDarkMono + 28: FloorDarkOffset + 29: FloorDarkPavement + 30: FloorDarkPavementVertical + 31: FloorDarkPlastic + 32: FloorDesert + 33: FloorDirt + 34: FloorEighties + 35: FloorElevatorShaft + 36: FloorFlesh + 37: FloorFreezer + 38: FloorGlass + 39: FloorGold + 40: FloorGrass + 41: FloorGrassDark + 42: FloorGrassJungle + 43: FloorGrassLight + 44: FloorGreenCircuit + 45: FloorGym + 46: FloorHydro + 47: FloorKitchen + 48: FloorLaundry + 49: FloorLino + 50: FloorLowDesert + 51: FloorMetalDiamond + 52: FloorMime + 53: FloorMono + 54: FloorPlanetGrass + 55: FloorPlastic + 56: FloorRGlass + 57: FloorReinforced + 58: FloorRockVault + 59: FloorShowroom + 60: FloorShuttleBlue + 61: FloorShuttleOrange + 62: FloorShuttlePurple + 63: FloorShuttleRed + 64: FloorShuttleWhite + 65: FloorSilver + 66: FloorSnow + 67: FloorSteel + 68: FloorSteelDiagonal + 69: FloorSteelDiagonalMini + 70: FloorSteelDirty + 71: FloorSteelHerringbone + 72: FloorSteelMini + 73: FloorSteelMono + 74: FloorSteelOffset + 75: FloorSteelPavement + 76: FloorSteelPavementVertical + 77: FloorTechMaint + 78: FloorTechMaint2 + 79: FloorTechMaint3 + 80: FloorWhite + 81: FloorWhiteDiagonal + 82: FloorWhiteDiagonalMini + 83: FloorWhiteHerringbone + 84: FloorWhiteMini + 85: FloorWhiteMono + 86: FloorWhiteOffset + 87: FloorWhitePavement + 88: FloorWhitePavementVertical + 89: FloorWhitePlastic + 90: FloorWood + 91: FloorWoodTile + 92: Lattice + 93: Plating +entities: +- uid: 0 + type: EmergencyLight + components: + - rot: 3.141592653589793 rad + pos: 7.5,-24.5 + parent: 1 + type: Transform + - type: ActiveEmergencyLight +- uid: 1 + components: + - name: NT Evac Raven + type: MetaData + - pos: -0.546875,-0.53125 + parent: invalid + type: Transform + - chunks: + 0,0: + ind: 0,0 + tiles: XQAAAEMAAAIWAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAQwAAAUMAAAIoAAAAQwAAAkMAAAIoAAAAKAAAAF0AAABDAAADFgAAACgAAAAoAAAAKAAAAEMAAAIWAAADFgAAAEMAAAFDAAACQwAAAUMAAAFDAAADFgAAABYAAAJdAAAAQwAAAkMAAAEWAAACFgAAABYAAAFDAAACQwAAAkMAAABDAAAAQwAAAUMAAABDAAACQwAAAUMAAABDAAACXQAAAEMAAABDAAABQwAAAkMAAAFDAAABQwAAAUMAAAFDAAAAWgAAAVoAAANaAAAAWgAAAVoAAAFDAAAAQwAAAV0AAABDAAACQwAAAEMAAANdAAAAQwAAAEMAAAJdAAAAXQAAAFoAAAJaAAAAWgAAAFoAAAFaAAACXQAAAF0AAABdAAAAQwAAAEMAAANDAAADXQAAAEMAAANDAAABQwAAAl0AAABaAAADWgAAAVoAAAFaAAACWgAAA10AAABDAAABXQAAABYAAAFDAAAAQwAAAF0AAABDAAAAQwAAAEMAAABdAAAAWgAAAloAAAFaAAADWgAAAloAAABdAAAAQwAAA10AAAAWAAADQwAAABYAAAJdAAAAQwAAAUMAAABdAAAAXQAAAF0AAABdAAAAWgAAAF0AAABdAAAAXQAAAF0AAABdAAAAQwAAA0MAAAAWAAAAXQAAAEMAAAFDAAADXQAAAEMAAAFDAAABXQAAAFoAAABdAAAAQwAAAkMAAAJdAAAAXQAAAEMAAAJDAAACFgAAAF0AAABDAAACQwAAA10AAABDAAAAQwAAA10AAABaAAAAXQAAAEMAAAFDAAAAXQAAAF0AAAAWAAACQwAAAxYAAAFdAAAAQwAAAUMAAANdAAAAXQAAAEMAAAJdAAAAXQAAAF0AAABDAAACXQAAAF0AAABdAAAAFgAAAEMAAANDAAABXQAAAEMAAABDAAABQwAAAEMAAABDAAAAQwAAAEMAAAFDAAAAQwAAAUMAAABDAAADXQAAAEMAAANDAAADQwAAAl0AAABDAAABQwAAA0MAAAJDAAAAQwAAAEMAAANDAAAAQwAAAEMAAAJDAAACQwAAAl0AAABdAAAAQwAAA0MAAAJdAAAAQwAAAUMAAABDAAADQwAAAkMAAAJDAAABQwAAAEMAAAFDAAACQwAAAUMAAAJcAAAAXQAAABYAAANDAAAAXQAAAEMAAAJDAAADQwAAAEMAAABDAAAAQwAAA0MAAAFDAAACQwAAA0MAAABDAAADXAAAAF0AAAAWAAACQwAAAV0AAABdAAAAXQAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAA== + 0,-1: + ind: 0,-1 + tiles: XAAAAF0AAAAWAAACQwAAABYAAAIWAAACQwAAAF0AAABdAAAAXQAAAF0AAABdAAAAQwAAA0MAAABdAAAAXQAAAFwAAABdAAAAFgAAAkMAAABdAAAAXQAAAF0AAABdAAAAFgAAARYAAANdAAAAQwAAAUMAAAFDAAAAQwAAAl0AAABcAAAAXQAAABYAAAJDAAABXQAAAFAAAANQAAAAXQAAABYAAAEWAAADXQAAAEMAAAJDAAADQwAAA0MAAAM5AAAAXQAAAF0AAABDAAACQwAAAF0AAABQAAADUAAAAV0AAAAWAAACFgAAAF0AAABDAAAAQwAAAkMAAAJDAAACXQAAAF0AAABDAAACQwAAAUMAAANdAAAAXQAAAFAAAANdAAAAXQAAABYAAANdAAAAXQAAAF0AAABDAAABXQAAAF0AAABdAAAAFgAAAUMAAAFDAAABXQAAAFAAAAFQAAAAUAAAAlAAAABQAAAAUAAAAFAAAAFQAAADUAAAAFAAAAFQAAACXQAAABYAAABDAAABFgAAAl0AAABQAAACUAAAA1AAAANQAAADUAAAAFAAAANQAAAAUAAAA1AAAABQAAADUAAAAl0AAABDAAACQwAAAxYAAABdAAAAUAAAAlAAAABQAAABUAAAAlAAAAFQAAACUAAAAF0AAABQAAABUAAAAV0AAABdAAAAQwAAAkMAAAEWAAADXQAAAF0AAABQAAADXQAAAF0AAABdAAAAUAAAAl0AAABdAAAAUAAAAVAAAAJQAAADXQAAABYAAAFDAAAAFgAAAV0AAABQAAABUAAAAVAAAAJdAAAAUAAAAFAAAABQAAABXQAAAFAAAANQAAABUAAAAV0AAAAWAAACQwAAAUMAAANdAAAAUAAAAFAAAAJQAAADXQAAAFAAAANQAAABUAAAAlAAAABQAAABUAAAAVAAAAJdAAAAQwAAAkMAAAJDAAABXQAAAFAAAAJQAAADUAAAAl0AAABQAAACUAAAAVAAAANdAAAAUAAAAVAAAABQAAADXQAAAEMAAAJDAAABQwAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAFAAAAFQAAADXQAAAF0AAABDAAABQwAAAUMAAABDAAACQwAAAUMAAAFDAAAAQwAAAkMAAAIWAAAAFgAAAhYAAANDAAACQwAAA0MAAABdAAAAQwAAAUMAAAEWAAABFgAAAxYAAABDAAACQwAAA0MAAANDAAACQwAAAUMAAABDAAAAQwAAA0MAAABDAAAAXQAAAEMAAAAWAAACKAAAACgAAAAoAAAAQwAAAhYAAAIWAAADQwAAAEMAAAFDAAACQwAAAUMAAAIWAAADFgAAAw== + 1,0: + ind: 1,0 + tiles: KAAAACgAAAAoAAAAKAAAABYAAAJDAAACXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEMAAAEoAAAAKAAAACgAAAAWAAABQwAAAV0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDAAABFgAAARYAAAAWAAABQwAAAkMAAANdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQwAAAkMAAAJDAAACQwAAAEMAAANDAAACXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEMAAAFDAAAAXQAAAEMAAANDAAAAQwAAA10AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDAAABQwAAA10AAABDAAACQwAAAUMAAAJdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQwAAAUMAAAJdAAAAQwAAA0MAAAIWAAADXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEMAAAJDAAACXQAAABYAAANDAAACFgAAAF0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDAAACQwAAAl0AAAAWAAACQwAAAkMAAAJdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQwAAAUMAAAJdAAAAFgAAA0MAAABDAAADXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEMAAAJDAAAAXQAAABYAAABDAAABFgAAAF0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDAAABQwAAAF0AAABDAAADQwAAAhYAAAFdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQwAAAUMAAANdAAAAQwAAA0MAAANDAAADXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEMAAABDAAACXQAAAEMAAANDAAADXQAAAF0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDAAADQwAAAF0AAABDAAAAFgAAA10AAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAF0AAABdAAAAQwAAABYAAAFdAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 1,-1: + ind: 1,-1 + tiles: QwAAARYAAAMWAAABQwAAAxYAAAJdAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAABdAAAAXQAAAEMAAAMWAAACXQAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAAF0AAABDAAAAFgAAAl0AAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAABdAAAAQwAAAUMAAAFdAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAABdAAAAXQAAAEMAAAFDAAADQwAAAF0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAF0AAABDAAABQwAAARYAAANdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAlAAAANdAAAAFgAAAUMAAAEWAAABXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAJdAAAAXQAAABYAAAFDAAACQwAAAV0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAABUAAAAF0AAAAWAAADQwAAAkMAAANdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAVAAAABdAAAAFgAAAEMAAAMWAAABXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABQAAABXQAAAEMAAABDAAABFgAAAl0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAA10AAABDAAADQwAAAEMAAAFdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAF0AAABdAAAAQwAAAUMAAABDAAACXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEMAAANDAAAAQwAAAUMAAANDAAACQwAAA10AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDAAACFgAAABYAAAAWAAACQwAAA0MAAANdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQwAAASgAAAAoAAAAKAAAABYAAAFDAAADXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 0,1: + ind: 0,1 + tiles: XAAAAF0AAAAWAAADQwAAAUMAAAEWAAAAQwAAAxYAAAJDAAACQwAAAkMAAANDAAABQwAAAkMAAANDAAAAFgAAAFwAAABdAAAAQwAAAEMAAABDAAADQwAAAEMAAANDAAAAQwAAAUMAAAIWAAABFgAAABYAAAFDAAADQwAAA0MAAAIAAAAAXQAAAF0AAABDAAABQwAAAUMAAANdAAAAXQAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAF0AAABdAAAAAAAAAFwAAABdAAAAXQAAAEMAAABDAAABXQAAAFoAAABaAAABWgAAAloAAANaAAADWgAAAVoAAANaAAABWgAAAAAAAABcAAAAXQAAAEMAAANDAAAAQwAAAF0AAABaAAADWgAAA1oAAAJaAAACWgAAAVoAAABaAAACWgAAAFoAAAIAAAAAXAAAAF0AAABDAAADQwAAA0MAAAFdAAAAWgAAAloAAAJaAAAAWgAAAloAAANaAAAAWgAAAloAAAFaAAABAAAAAAAAAABdAAAAXQAAAEMAAABDAAADXQAAAF0AAABaAAABXQAAAF0AAABdAAAAXQAAAF0AAABaAAADXQAAAAAAAAAAAAAAXAAAAF0AAABDAAADQwAAAxYAAAIWAAACQwAAAxYAAAIWAAADFgAAABYAAAIWAAABQwAAABYAAAIAAAAAAAAAAFwAAABdAAAAQwAAAUMAAANDAAADQwAAAUMAAAEWAAABFgAAAxYAAAIWAAAAFgAAAUMAAABDAAAAAAAAAAAAAABcAAAAXQAAABYAAAEWAAABQwAAA0MAAAJDAAADQwAAAkMAAAJDAAADQwAAA0MAAANDAAACQwAAAgAAAAAAAAAAAAAAAF0AAABdAAAAFgAAABYAAAAWAAACFgAAAhYAAAIWAAAAFgAAABYAAAEWAAADFgAAARYAAAAAAAAAAAAAAAAAAABcAAAAXQAAAF0AAABdAAAAFgAAAxYAAAIWAAAAFgAAAhYAAAMWAAABFgAAAxYAAAAWAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 1,1: + ind: 1,1 + tiles: QwAAARYAAAFDAAADQwAAAxYAAAJdAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEMAAAJDAAACQwAAAUMAAAFDAAADXQAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAQwAAA0MAAABDAAABQwAAA10AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAEMAAABDAAADXQAAAF0AAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAABDAAACQwAAAEMAAANdAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAQwAAA0MAAAFDAAABXQAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAEMAAAJDAAACXQAAAF0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAANDAAABQwAAAF0AAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDAAACQwAAAkMAAAJdAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQwAAABYAAAIWAAACXQAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAAAWAAACXQAAAF0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAXQAAAF0AAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 0,-2: + ind: 0,-2 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAXAAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAAAAAAAAAAAAAAAAAAAAAABcAAAAXQAAAF0AAABdAAAAXQAAAF0AAABdAAAAQwAAAV0AAABdAAAAXQAAAF0AAAAAAAAAAAAAAAAAAABcAAAAXQAAAF0AAABNAAAAQwAAA10AAABdAAAAXQAAAEMAAABdAAAAXQAAAF0AAABdAAAAAAAAAAAAAABcAAAAXQAAAF0AAABNAAAATQAAAEMAAAJdAAAAXQAAAF0AAABDAAACXQAAAF0AAABdAAAAXQAAAAAAAAAAAAAAXAAAAF0AAABDAAAAQwAAAUMAAABDAAACQwAAA0MAAAFDAAABQwAAAV0AAABDAAACQwAAAkMAAAMAAAAAAAAAAFwAAABdAAAAQwAAA0MAAAFDAAAAQwAAAkMAAAJDAAAAQwAAAEMAAABdAAAAQwAAAkMAAANDAAAAAAAAAAAAAABcAAAAXQAAAEMAAANDAAADQwAAAEMAAANDAAABQwAAAEMAAABDAAABXQAAAEMAAAJDAAAAQwAAAAAAAAAAAAAAXQAAAF0AAABDAAABQwAAAF0AAABdAAAAXQAAAE0AAABNAAAATQAAAF0AAABDAAACQwAAAUMAAAEAAAAAXAAAAF0AAABDAAAAQwAAAEMAAABdAAAAXQAAAF0AAABdAAAAXQAAAF0AAABdAAAAQwAAAkMAAAJDAAAAAAAAAFwAAABdAAAAQwAAAEMAAANDAAAAXQAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAEMAAANDAAACQwAAAgAAAABcAAAAXQAAAF0AAABDAAABQwAAAl0AAABdAAAAXQAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAF0AAAAAAAAAXQAAAF0AAABDAAACQwAAAkMAAANDAAAAQwAAAkMAAANDAAACQwAAAEMAAAAWAAACFgAAAhYAAAFDAAABXAAAAF0AAABDAAAAQwAAAUMAAAJDAAACQwAAAEMAAAEWAAADFgAAARYAAAFDAAAAQwAAAkMAAABDAAADQwAAAA== + 1,-2: + ind: 1,-2 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAABdAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDAAACXQAAAF0AAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQwAAAkMAAAFdAAAAXQAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEMAAAJDAAACQwAAAV0AAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDAAADQwAAA0MAAABdAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQwAAA0MAAAJDAAAAXQAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAABDAAACQwAAAl0AAABdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAQwAAAEMAAABDAAADXQAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAEMAAAJDAAABQwAAAF0AAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAABDAAAAQwAAAV0AAABdAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDAAABQwAAAUMAAABDAAACXQAAAF0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQwAAAUMAAANDAAADQwAAAUMAAAJdAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + type: MapGrid + - type: Broadphase + - angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + type: Physics + - fixtures: [] + type: Fixtures + - type: OccluderTree + - type: Shuttle + - nextUpdate: 4321.2844759 + type: GridPathfinding + - gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + type: Gravity + - chunkCollection: + 0,-1: + 0: + color: '#EFB34196' + id: CheckerNESW + coordinates: 4,-19 + 1: + color: '#EFB34196' + id: CheckerNESW + coordinates: 5,-19 + 2: + color: '#EFB34196' + id: CheckerNESW + coordinates: 5,-20 + 3: + color: '#EFB34196' + id: CheckerNESW + coordinates: 4,-20 + 4: + color: '#EFB34196' + id: CheckerNESW + coordinates: 5,-21 + 5: + color: '#EFB34196' + id: CheckerNESW + coordinates: 4,-21 + 6: + color: '#EFB34196' + id: CheckerNESW + coordinates: 4,-22 + 7: + color: '#EFB34196' + id: CheckerNESW + coordinates: 5,-22 + 8: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale270 + coordinates: 4,-18 + 9: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale270 + coordinates: 5,-18 + 10: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale270 + coordinates: 6,-18 + 11: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale270 + coordinates: 4,-23 + 12: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale270 + coordinates: 4,-24 + 13: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale270 + coordinates: 4,-25 + 14: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale180 + coordinates: 11,-25 + 15: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: 6,-25 + 16: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: 5,-25 + 17: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 10,-23 + 18: + color: '#FFFFFFFF' + id: WarnCornerSmallNE + coordinates: 6,-23 + 19: + color: '#FFFFFFFF' + id: WarnCornerSmallSE + coordinates: 4,-25 + 20: + color: '#FFFFFFFF' + id: Delivery + coordinates: 13,-22 + 21: + color: '#FFFFFFFF' + id: Delivery + coordinates: 14,-22 + 22: + color: '#FFFFFFFF' + id: Delivery + coordinates: 15,-22 + 23: + color: '#FFFFFFFF' + id: Delivery + coordinates: 15,-21 + 24: + color: '#FFFFFFFF' + id: Delivery + coordinates: 14,-21 + 25: + color: '#FFFFFFFF' + id: Delivery + coordinates: 13,-21 + 26: + color: '#FFFFFFFF' + id: Delivery + coordinates: 13,-20 + 27: + color: '#FFFFFFFF' + id: Delivery + coordinates: 14,-20 + 28: + color: '#FFFFFFFF' + id: Delivery + coordinates: 15,-20 + 29: + color: '#A4610696' + id: QuarterTileOverlayGreyscale270 + coordinates: 13,-23 + 30: + color: '#A4610696' + id: QuarterTileOverlayGreyscale270 + coordinates: 13,-24 + 31: + color: '#A4610696' + id: QuarterTileOverlayGreyscale270 + coordinates: 13,-25 + 32: + color: '#A4610696' + id: QuarterTileOverlayGreyscale270 + coordinates: 14,-25 + 33: + color: '#A4610696' + id: QuarterTileOverlayGreyscale270 + coordinates: 15,-25 + 34: + color: '#A4610696' + id: QuarterTileOverlayGreyscale180 + coordinates: 18,-25 + 35: + color: '#A4610696' + id: QuarterTileOverlayGreyscale180 + coordinates: 18,-24 + 36: + color: '#A4610696' + id: QuarterTileOverlayGreyscale180 + coordinates: 18,-23 + 37: + color: '#A4610696' + id: QuarterTileOverlayGreyscale180 + coordinates: 17,-25 + 38: + color: '#A4610696' + id: QuarterTileOverlayGreyscale180 + coordinates: 16,-25 + 39: + color: '#A4610696' + id: CheckerNWSE + coordinates: 16,-26 + 40: + color: '#A4610696' + id: CheckerNWSE + coordinates: 17,-26 + 41: + color: '#A4610696' + id: CheckerNWSE + coordinates: 16,-27 + 42: + color: '#A4610696' + id: CheckerNWSE + coordinates: 17,-22 + 43: + color: '#A4610696' + id: CheckerNWSE + coordinates: 18,-22 + 44: + color: '#A4610696' + id: CheckerNWSE + coordinates: 17,-21 + 45: + color: '#A4610696' + id: CheckerNWSE + coordinates: 18,-21 + 46: + color: '#A4610696' + id: CheckerNWSE + coordinates: 17,-20 + 47: + color: '#A4610696' + id: CheckerNWSE + coordinates: 17,-19 + 48: + color: '#A4610696' + id: QuarterTileOverlayGreyscale180 + coordinates: 18,-18 + 49: + color: '#A4610696' + id: QuarterTileOverlayGreyscale180 + coordinates: 17,-18 + 50: + color: '#A4610696' + id: QuarterTileOverlayGreyscale180 + coordinates: 16,-18 + 51: + color: '#D381C996' + id: CheckerNWSE + coordinates: 12,-16 + 52: + color: '#D381C996' + id: CheckerNWSE + coordinates: 13,-16 + 53: + color: '#D381C996' + id: CheckerNWSE + coordinates: 13,-15 + 54: + color: '#D381C996' + id: CheckerNWSE + coordinates: 12,-15 + 55: + color: '#D381C996' + id: CheckerNWSE + coordinates: 11,-15 + 56: + color: '#D381C996' + id: CheckerNWSE + coordinates: 11,-14 + 57: + color: '#D381C996' + id: CheckerNWSE + coordinates: 11,-13 + 58: + color: '#D381C996' + id: CheckerNWSE + coordinates: 12,-13 + 59: + color: '#D381C996' + id: CheckerNWSE + coordinates: 12,-14 + 60: + color: '#D381C996' + id: CheckerNWSE + coordinates: 13,-14 + 61: + color: '#D381C996' + id: CheckerNWSE + coordinates: 13,-13 + 62: + color: '#D381C996' + id: CheckerNWSE + coordinates: 14,-13 + 63: + color: '#D381C996' + id: CheckerNWSE + coordinates: 14,-14 + 64: + color: '#D381C996' + id: CheckerNWSE + coordinates: 14,-15 + 65: + color: '#D381C996' + id: CheckerNWSE + coordinates: 13,-12 + 66: + color: '#D381C9FF' + id: WarnLineGreyscaleN + coordinates: 12,-17 + 67: + color: '#D381C9FF' + id: WarnLineGreyscaleN + coordinates: 13,-17 + 68: + color: '#D381C9FF' + id: WarnCornerSmallGreyscaleNW + coordinates: 14,-17 + 69: + color: '#D381C9FF' + id: WarnCornerSmallGreyscaleNE + coordinates: 11,-17 + 70: + color: '#52B4E996' + id: CheckerNESW + coordinates: 6,-8 + 71: + color: '#52B4E996' + id: CheckerNESW + coordinates: 5,-7 + 72: + color: '#52B4E996' + id: CheckerNESW + coordinates: 6,-7 + 73: + color: '#52B4E996' + id: CheckerNESW + coordinates: 7,-7 + 74: + color: '#52B4E996' + id: CheckerNESW + coordinates: 7,-6 + 75: + color: '#52B4E996' + id: CheckerNESW + coordinates: 5,-6 + 76: + color: '#52B4E996' + id: CheckerNESW + coordinates: 6,-6 + 77: + color: '#52B4E996' + id: CheckerNESW + coordinates: 5,-5 + 78: + color: '#52B4E996' + id: CheckerNESW + coordinates: 6,-5 + 79: + color: '#52B4E996' + id: CheckerNESW + coordinates: 7,-5 + 80: + color: '#9FED5896' + id: CheckerNESW + coordinates: 6,-12 + 81: + color: '#9FED5896' + id: CheckerNESW + coordinates: 5,-13 + 82: + color: '#9FED5896' + id: CheckerNESW + coordinates: 6,-13 + 83: + color: '#9FED5896' + id: CheckerNESW + coordinates: 6,-14 + 84: + color: '#9FED5896' + id: CheckerNESW + coordinates: 5,-14 + 85: + color: '#334E6DC8' + id: CheckerNESW + coordinates: 8,-13 + 86: + color: '#334E6DC8' + id: CheckerNESW + coordinates: 9,-13 + 87: + color: '#334E6DC8' + id: CheckerNESW + coordinates: 8,-14 + 88: + color: '#334E6DC8' + id: CheckerNESW + coordinates: 9,-14 + 89: + color: '#334E6DC8' + id: CheckerNESW + coordinates: 9,-15 + 90: + color: '#334E6DC8' + id: CheckerNESW + coordinates: 8,-15 + 91: + color: '#334E6DC8' + id: CheckerNESW + coordinates: 9,-12 + 92: + color: '#EF950096' + id: CheckerNESW + coordinates: 11,-7 + 93: + color: '#EF950096' + id: CheckerNESW + coordinates: 10,-7 + 94: + color: '#EF950096' + id: CheckerNESW + coordinates: 9,-7 + 95: + color: '#EF950096' + id: CheckerNESW + coordinates: 9,-6 + 96: + color: '#EF950096' + id: CheckerNESW + coordinates: 10,-6 + 97: + color: '#EF950096' + id: CheckerNESW + coordinates: 11,-6 + 98: + color: '#EF950096' + id: CheckerNESW + coordinates: 11,-5 + 99: + color: '#EF950096' + id: CheckerNESW + coordinates: 10,-5 + 100: + color: '#EF950096' + id: CheckerNESW + coordinates: 9,-5 + 101: + color: '#EF950096' + id: CheckerNESW + coordinates: 10,-8 + 102: + color: '#EF950096' + id: CheckerNESW + coordinates: 12,-6 + 103: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale + coordinates: 5,-9 + 104: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale + coordinates: 6,-9 + 105: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale + coordinates: 7,-9 + 106: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale + coordinates: 8,-9 + 107: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale + coordinates: 9,-9 + 108: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale90 + coordinates: 11,-9 + 109: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale90 + coordinates: 11,-10 + 110: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale90 + coordinates: 12,-10 + 111: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale90 + coordinates: 13,-10 + 112: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale90 + coordinates: 14,-10 + 113: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale90 + coordinates: 15,-10 + 114: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale90 + coordinates: 16,-10 + 115: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale90 + coordinates: 17,-10 + 116: + color: '#52B4E996' + id: HalfTileOverlayGreyscale + coordinates: 10,-9 + 117: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale270 + coordinates: 5,-11 + 118: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale270 + coordinates: 6,-11 + 119: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale270 + coordinates: 7,-11 + 120: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale270 + coordinates: 8,-11 + 121: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale270 + coordinates: 17,-11 + 122: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale180 + coordinates: 17,-11 + 123: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale180 + coordinates: 16,-11 + 124: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale180 + coordinates: 15,-11 + 125: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale180 + coordinates: 14,-11 + 126: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale180 + coordinates: 13,-11 + 127: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale180 + coordinates: 12,-11 + 128: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale180 + coordinates: 11,-11 + 129: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale180 + coordinates: 10,-11 + 130: + color: '#52B4E996' + id: HalfTileOverlayGreyscale180 + coordinates: 9,-11 + 131: + color: '#52B4E996' + id: HalfTileOverlayGreyscale270 + coordinates: 5,-10 + 132: + color: '#52B4E996' + id: CheckerNESW + coordinates: 13,-9 + 133: + color: '#52B4E996' + id: CheckerNESW + coordinates: 14,-9 + 134: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale270 + coordinates: 13,-8 + 135: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale270 + coordinates: 13,-7 + 136: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale270 + coordinates: 14,-8 + 137: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale270 + coordinates: 15,-8 + 138: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale270 + coordinates: 16,-8 + 139: + color: '#52B4E996' + id: FullTileOverlayGreyscale + coordinates: 13,-4 + 140: + color: '#52B4E996' + id: FullTileOverlayGreyscale + coordinates: 14,-4 + 141: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale270 + coordinates: 13,-6 + 142: + color: '#52B4E996' + id: ThreeQuarterTileOverlayGreyscale + coordinates: 13,-5 + 143: + color: '#52B4E996' + id: ThreeQuarterTileOverlayGreyscale180 + coordinates: 17,-8 + 144: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale90 + coordinates: 14,-5 + 145: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale90 + coordinates: 15,-5 + 146: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale90 + coordinates: 16,-5 + 147: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale90 + coordinates: 17,-5 + 148: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale90 + coordinates: 17,-6 + 149: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale90 + coordinates: 17,-7 + 150: + color: '#52B4E996' + id: CheckerNESW + coordinates: 16,-9 + 262: + color: '#FFFFFFFF' + id: Bot + coordinates: 3,-2 + 263: + color: '#FFFFFFFF' + id: Bot + coordinates: 5,-2 + 264: + color: '#FFFFFFFF' + id: Bot + coordinates: 2,-1 + 271: + color: '#FFFFFFFF' + id: Bot + coordinates: 8,-1 + 272: + color: '#FFFFFFFF' + id: Bot + coordinates: 14,-1 + 273: + color: '#FFFFFFFF' + id: Bot + coordinates: 15,-1 + 276: + color: '#FFFFFFFF' + id: Bot + coordinates: 12,-3 + 277: + color: '#FFFFFFFF' + id: Bot + coordinates: 10,-3 + 278: + color: '#FFFFFFFF' + id: Bot + coordinates: 11,-3 + 279: + color: '#FFFFFFFF' + id: Bot + coordinates: 17,-2 + 280: + color: '#FFFFFFFF' + id: Bot + coordinates: 19,-2 + 281: + color: '#FFFFFFFF' + id: Bot + coordinates: 20,-1 + 315: + color: '#FFFFFFFF' + id: Bot + coordinates: 21,-6 + 316: + color: '#FFFFFFFF' + id: Bot + coordinates: 21,-7 + 317: + color: '#FFFFFFFF' + id: Bot + coordinates: 19,-7 + 318: + color: '#FFFFFFFF' + id: Bot + coordinates: 19,-8 + 319: + color: '#FFFFFFFF' + id: Bot + coordinates: 19,-9 + 320: + color: '#FFFFFFFF' + id: Bot + coordinates: 19,-10 + 321: + color: '#FFFFFFFF' + id: Bot + coordinates: 21,-10 + 322: + color: '#FFFFFFFF' + id: Bot + coordinates: 21,-11 + 323: + color: '#FFFFFFFF' + id: Bot + coordinates: 20,-14 + 324: + color: '#FFFFFFFF' + id: Bot + coordinates: 20,-15 + 325: + color: '#FFFFFFFF' + id: Bot + coordinates: 20,-16 + 326: + color: '#FFFFFFFF' + id: Bot + coordinates: 18,-16 + 327: + color: '#FFFFFFFF' + id: Bot + coordinates: 17,-16 + 328: + color: '#FFFFFFFF' + id: Bot + coordinates: 14,-18 + 329: + color: '#FFFFFFFF' + id: Bot + coordinates: 13,-18 + 330: + color: '#FFFFFFFF' + id: Bot + coordinates: 12,-18 + 331: + color: '#FFFFFFFF' + id: Bot + coordinates: 10,-17 + 332: + color: '#FFFFFFFF' + id: Bot + coordinates: 9,-17 + 333: + color: '#FFFFFFFF' + id: Bot + coordinates: 8,-17 + 334: + color: '#FFFFFFFF' + id: Bot + coordinates: 6,-16 + 335: + color: '#FFFFFFFF' + id: Bot + coordinates: 5,-16 + 336: + color: '#FFFFFFFF' + id: Bot + coordinates: 4,-16 + 337: + color: '#FFFFFFFF' + id: Bot + coordinates: 2,-17 + 338: + color: '#FFFFFFFF' + id: Bot + coordinates: 2,-16 + 339: + color: '#FFFFFFFF' + id: Bot + coordinates: 2,-15 + 340: + color: '#FFFFFFFF' + id: Bot + coordinates: 2,-14 + 341: + color: '#FFFFFFFF' + id: Bot + coordinates: 1,-11 + 342: + color: '#FFFFFFFF' + id: Bot + coordinates: 1,-12 + 343: + color: '#FFFFFFFF' + id: Bot + coordinates: 1,-10 + 344: + color: '#FFFFFFFF' + id: Bot + coordinates: 1,-9 + 345: + color: '#FFFFFFFF' + id: Bot + coordinates: 1,-8 + 346: + color: '#FFFFFFFF' + id: Bot + coordinates: 1,-7 + 347: + color: '#FFFFFFFF' + id: Bot + coordinates: 1,-6 + 348: + color: '#FFFFFFFF' + id: Bot + coordinates: 3,-6 + 349: + color: '#FFFFFFFF' + id: Bot + coordinates: 3,-7 + 350: + color: '#FFFFFFFF' + id: Bot + coordinates: 3,-8 + 351: + color: '#FFFFFFFF' + id: Bot + coordinates: 3,-9 + 352: + color: '#FFFFFFFF' + id: Bot + coordinates: 3,-10 + 393: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 9,-23 + 394: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 11,-23 + 395: + color: '#EFB34196' + id: CheckerNESW + coordinates: 3,-21 + 396: + color: '#EFB34196' + id: CheckerNESW + coordinates: 3,-20 + 397: + color: '#A4610696' + id: CheckerNWSE + coordinates: 18,-20 + 398: + color: '#A4610696' + id: CheckerNWSE + coordinates: 19,-20 + 399: + color: '#A4610696' + id: CheckerNWSE + coordinates: 19,-21 + 400: + color: '#A4610696' + id: CheckerNWSE + coordinates: 18,-19 + 401: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale180 + coordinates: 10,-25 + 402: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale180 + coordinates: 9,-25 + 403: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale180 + coordinates: 8,-25 + 404: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale180 + coordinates: 7,-25 + 405: + color: '#FFFFFFFF' + id: WarnCornerSmallSW + coordinates: 7,-25 + 406: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 7,-23 + 407: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 8,-23 + 408: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale270 + coordinates: 3,-18 + 409: + color: '#A4610696' + id: QuarterTileOverlayGreyscale180 + coordinates: 19,-18 + 410: + color: '#FFFFFFFF' + id: Bot + coordinates: 3,-18 + 411: + color: '#FFFFFFFF' + id: Bot + coordinates: 19,-18 + 412: + color: '#FFFFFFFF' + id: Bot + coordinates: 20,-17 + 413: + color: '#EFB34196' + id: CheckerNWSE + coordinates: 11,-26 + 414: + color: '#EFB34196' + id: CheckerNWSE + coordinates: 11,-27 + 415: + color: '#EFB34196' + id: CheckerNWSE + coordinates: 11,-28 + 416: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 5,-26 + 417: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 6,-26 + 418: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: 6,-27 + 419: + color: '#FFFFFFFF' + id: Flowersy2 + coordinates: 3.2683086,-0.86833 + 421: + color: '#FFFFFFFF' + id: FlowersBROne + coordinates: 4.5339336,-0.665205 + 423: + color: '#FFFFFFFF' + id: Grassa4 + coordinates: 3.9714336,-0.031275272 + 424: + color: '#FFFFFFFF' + id: Grasse3 + coordinates: 3.1589336,-0.12502527 + 426: + color: '#FFFFFFFF' + id: Grassc4 + coordinates: 4.748603,-0.0039691925 + 427: + color: '#FFFFFFFF' + id: Flowersy2 + coordinates: 5.936103,-0.019594193 + 428: + color: '#FFFFFFFF' + id: Flowersbr1 + coordinates: 7.4766874,-0.035219193 + 429: + color: '#FFFFFFFF' + id: Flowersbr3 + coordinates: 8.023562,-0.019594193 + 431: + color: '#FFFFFFFF' + id: Grassa3 + coordinates: 14.656893,-0.019594193 + 433: + color: '#FFFFFFFF' + id: Flowersy1 + coordinates: 16.244255,-0.050844193 + 434: + color: '#FFFFFFFF' + id: Flowersy1 + coordinates: 17.45427,-0.6914692 + 438: + color: '#FFFFFFFF' + id: Grassa3 + coordinates: 18.76677,-0.8477192 + 439: + color: '#FFFFFFFF' + id: Grassd1 + coordinates: 17.04802,-0.8945942 + 440: + color: '#FFFFFFFF' + id: Grassd2 + coordinates: 18.626144,-0.050844193 + 442: + color: '#FFFFFFFF' + id: Grasse2 + coordinates: 17.954773,-0.9414692 + 444: + color: '#FFFFFFFF' + id: Bot + coordinates: 7,-1 + 445: + color: '#FFFFFFFF' + id: Bot + coordinates: 6,-1 + 448: + color: '#FFFFFFFF' + id: Bot + coordinates: 16,-1 + 449: + color: '#FFFFFFFF' + id: Bot + coordinates: 19,-6 + 450: + color: '#FFFFFFFF' + id: Bot + coordinates: 21,-8 + 451: + color: '#FFFFFFFF' + id: Bot + coordinates: 21,-9 + 452: + color: '#FFFFFFFF' + id: Bot + coordinates: 21,-12 + 529: + color: '#FFFFFFFF' + id: FlowersBRThree + coordinates: 11.005479,-0.011841536 + 0,0: + 151: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 5,4 + 152: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 6,4 + 153: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 5,5 + 154: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 6,5 + 155: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 5,6 + 156: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 6,6 + 157: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 7,6 + 158: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 7,5 + 159: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 5,7 + 160: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 6,7 + 161: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 5,8 + 162: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 6,8 + 163: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 5,9 + 164: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 6,9 + 165: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 5,10 + 166: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 6,10 + 167: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 5,11 + 168: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 6,11 + 169: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 5,12 + 170: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 6,12 + 171: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 6,13 + 172: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 5,13 + 173: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 5,14 + 174: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 6,14 + 175: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 7,14 + 176: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 7,13 + 177: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 7,12 + 178: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 7,11 + 179: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 8,11 + 180: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 8,12 + 181: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 8,13 + 182: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 8,14 + 183: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 9,14 + 184: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 9,13 + 185: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 9,12 + 186: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 9,11 + 187: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 10,11 + 188: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 10,12 + 189: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 10,13 + 190: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 10,14 + 191: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 11,14 + 192: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 11,13 + 193: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 11,12 + 194: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 11,11 + 195: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 12,11 + 196: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 12,12 + 197: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 12,13 + 198: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 12,14 + 199: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 13,14 + 200: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 13,13 + 201: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 13,12 + 202: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 13,11 + 203: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 14,11 + 204: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 14,12 + 205: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 14,13 + 206: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 14,14 + 207: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 15,14 + 208: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 15,13 + 209: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 15,12 + 210: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 15,11 + 211: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 17,12 + 212: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 16,11 + 213: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 16,12 + 214: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 17,11 + 215: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 17,13 + 216: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 16,13 + 217: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 16,14 + 218: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 17,14 + 219: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 16,9 + 220: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 17,10 + 221: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 16,10 + 222: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 17,9 + 223: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 17,8 + 224: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 16,8 + 225: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 16,7 + 226: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 17,7 + 227: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 17,6 + 228: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 16,6 + 229: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 15,6 + 230: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 15,5 + 231: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 16,5 + 232: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 17,5 + 233: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 17,4 + 234: + color: '#DE3A3A96' + id: CheckerNESW + coordinates: 16,4 + 235: + color: '#EF794196' + id: CheckerNESW + coordinates: 8,9 + 236: + color: '#EF794196' + id: CheckerNESW + coordinates: 8,8 + 237: + color: '#EF794196' + id: CheckerNESW + coordinates: 9,8 + 238: + color: '#EF794196' + id: CheckerNESW + coordinates: 9,9 + 239: + color: '#EF794196' + id: CheckerNESW + coordinates: 9,10 + 240: + color: '#EF794196' + id: CheckerNESW + coordinates: 13,8 + 241: + color: '#EF794196' + id: CheckerNESW + coordinates: 13,9 + 242: + color: '#EF794196' + id: CheckerNESW + coordinates: 13,10 + 243: + color: '#EF794196' + id: CheckerNESW + coordinates: 14,9 + 244: + color: '#EF794196' + id: CheckerNESW + coordinates: 14,8 + 245: + color: '#DE3A3AFF' + id: WarnLineGreyscaleN + coordinates: 5,3 + 246: + color: '#DE3A3AFF' + id: WarnLineGreyscaleN + coordinates: 6,3 + 247: + color: '#DE3A3AFF' + id: WarnLineGreyscaleN + coordinates: 16,3 + 248: + color: '#DE3A3AFF' + id: WarnLineGreyscaleN + coordinates: 17,3 + 249: + color: '#DE3A3AFF' + id: WarnCornerSmallGreyscaleNE + coordinates: 4,3 + 250: + color: '#DE3A3AFF' + id: WarnCornerSmallGreyscaleNE + coordinates: 15,3 + 251: + color: '#DE3A3AFF' + id: WarnCornerSmallGreyscaleNW + coordinates: 7,3 + 252: + color: '#DE3A3AFF' + id: WarnCornerSmallGreyscaleNW + coordinates: 18,3 + 253: + color: '#FFFFFFFF' + id: WoodTrimThinLineE + coordinates: 8,3 + 254: + color: '#FFFFFFFF' + id: WoodTrimThinLineN + coordinates: 9,2 + 255: + color: '#FFFFFFFF' + id: WoodTrimThinLineN + coordinates: 10,2 + 256: + color: '#FFFFFFFF' + id: WoodTrimThinLineN + coordinates: 11,2 + 257: + color: '#FFFFFFFF' + id: WoodTrimThinLineN + coordinates: 12,2 + 258: + color: '#FFFFFFFF' + id: WoodTrimThinLineN + coordinates: 13,2 + 259: + color: '#FFFFFFFF' + id: WoodTrimThinLineW + coordinates: 14,3 + 260: + color: '#FFFFFFFF' + id: WoodTrimThinInnerNw + coordinates: 14,2 + 261: + color: '#FFFFFFFF' + id: WoodTrimThinInnerNe + coordinates: 8,2 + 265: + color: '#FFFFFFFF' + id: Bot + coordinates: 2,0 + 266: + color: '#FFFFFFFF' + id: Bot + coordinates: 2,1 + 267: + color: '#FFFFFFFF' + id: Bot + coordinates: 3,2 + 268: + color: '#FFFFFFFF' + id: Bot + coordinates: 5,2 + 269: + color: '#FFFFFFFF' + id: Bot + coordinates: 7,1 + 270: + color: '#FFFFFFFF' + id: Bot + coordinates: 8,1 + 274: + color: '#FFFFFFFF' + id: Bot + coordinates: 14,1 + 275: + color: '#FFFFFFFF' + id: Bot + coordinates: 15,1 + 282: + color: '#FFFFFFFF' + id: Bot + coordinates: 20,0 + 283: + color: '#FFFFFFFF' + id: Bot + coordinates: 20,1 + 284: + color: '#FFFFFFFF' + id: Bot + coordinates: 19,2 + 285: + color: '#FFFFFFFF' + id: Bot + coordinates: 17,2 + 286: + color: '#FFFFFFFF' + id: Bot + coordinates: 1,6 + 287: + color: '#FFFFFFFF' + id: Bot + coordinates: 1,7 + 288: + color: '#FFFFFFFF' + id: Bot + coordinates: 3,7 + 289: + color: '#FFFFFFFF' + id: Bot + coordinates: 3,8 + 290: + color: '#FFFFFFFF' + id: Bot + coordinates: 3,9 + 291: + color: '#FFFFFFFF' + id: Bot + coordinates: 1,10 + 292: + color: '#FFFFFFFF' + id: Bot + coordinates: 1,11 + 293: + color: '#FFFFFFFF' + id: Bot + coordinates: 3,10 + 294: + color: '#FFFFFFFF' + id: Bot + coordinates: 2,14 + 295: + color: '#FFFFFFFF' + id: Bot + coordinates: 2,15 + 296: + color: '#FFFFFFFF' + id: Bot + coordinates: 2,16 + 297: + color: '#FFFFFFFF' + id: Bot + coordinates: 5,16 + 298: + color: '#FFFFFFFF' + id: Bot + coordinates: 7,16 + 299: + color: '#FFFFFFFF' + id: Bot + coordinates: 10,17 + 300: + color: '#FFFFFFFF' + id: Bot + coordinates: 11,17 + 301: + color: '#FFFFFFFF' + id: Bot + coordinates: 12,17 + 302: + color: '#FFFFFFFF' + id: Bot + coordinates: 15,16 + 303: + color: '#FFFFFFFF' + id: Bot + coordinates: 17,16 + 304: + color: '#FFFFFFFF' + id: Bot + coordinates: 20,16 + 305: + color: '#FFFFFFFF' + id: Bot + coordinates: 20,15 + 306: + color: '#FFFFFFFF' + id: Bot + coordinates: 20,14 + 307: + color: '#FFFFFFFF' + id: Bot + coordinates: 21,11 + 308: + color: '#FFFFFFFF' + id: Bot + coordinates: 21,10 + 309: + color: '#FFFFFFFF' + id: Bot + coordinates: 19,10 + 310: + color: '#FFFFFFFF' + id: Bot + coordinates: 19,9 + 311: + color: '#FFFFFFFF' + id: Bot + coordinates: 19,8 + 312: + color: '#FFFFFFFF' + id: Bot + coordinates: 19,7 + 313: + color: '#FFFFFFFF' + id: Bot + coordinates: 21,7 + 314: + color: '#FFFFFFFF' + id: Bot + coordinates: 21,6 + 353: + color: '#FFFFFFFF' + id: Bot + coordinates: 3,6 + 354: + color: '#FFFFFFFF' + id: Bot + coordinates: 1,8 + 355: + color: '#FFFFFFFF' + id: Bot + coordinates: 1,9 + 356: + color: '#FFFFFFFF' + id: Bot + coordinates: 1,11 + 357: + color: '#FFFFFFFF' + id: Bot + coordinates: 1,12 + 358: + color: '#FFFFFFFF' + id: Bot + coordinates: 2,17 + 359: + color: '#FFFFFFFF' + id: Bot + coordinates: 3,18 + 360: + color: '#FFFFFFFF' + id: Bot + coordinates: 19,18 + 361: + color: '#FFFFFFFF' + id: Bot + coordinates: 20,17 + 362: + color: '#FFFFFFFF' + id: Bot + coordinates: 21,12 + 363: + color: '#FFFFFFFF' + id: Bot + coordinates: 21,9 + 364: + color: '#FFFFFFFF' + id: Bot + coordinates: 21,9 + 365: + color: '#FFFFFFFF' + id: Bot + coordinates: 19,6 + 366: + color: '#FFFFFFFF' + id: Bot + coordinates: 13,17 + 367: + color: '#FFFFFFFF' + id: Bot + coordinates: 9,17 + 368: + color: '#FFFFFFFF' + id: Bot + coordinates: 7,23 + 369: + color: '#FFFFFFFF' + id: Bot + coordinates: 6,23 + 370: + color: '#334EA1FF' + id: BotGreyscale + coordinates: 11,23 + 371: + color: '#334E6FFF' + id: BotGreyscale + coordinates: 11,26 + 372: + color: '#DE3A3AFF' + id: BotGreyscale + coordinates: 8,26 + 373: + color: '#52B4E9FF' + id: BotGreyscale + coordinates: 14,26 + 374: + color: '#D381C9FF' + id: BotGreyscale + coordinates: 17,25 + 375: + color: '#EFB341FF' + id: BotGreyscale + coordinates: 5,25 + 376: + color: '#FFFFFFFF' + id: Bot + coordinates: 15,23 + 377: + color: '#FFFFFFFF' + id: Bot + coordinates: 16,23 + 378: + color: '#FFFFFFFF' + id: Bot + coordinates: 14,11 + 379: + color: '#FFFFFFFF' + id: Bot + coordinates: 15,11 + 380: + color: '#FFFFFFFF' + id: Bot + coordinates: 12,11 + 381: + color: '#FFFFFFFF' + id: Bot + coordinates: 10,11 + 382: + color: '#FFFFFFFF' + id: Bot + coordinates: 8,11 + 383: + color: '#FFFFFFFF' + id: Bot + coordinates: 7,11 + 384: + color: '#FFFFFFFF' + id: Box + coordinates: 11,11 + 385: + color: '#FFFFFFFF' + id: Bot + coordinates: 7,14 + 386: + color: '#FFFFFFFF' + id: Bot + coordinates: 8,14 + 387: + color: '#FFFFFFFF' + id: Bot + coordinates: 8,14 + 388: + color: '#FFFFFFFF' + id: Bot + coordinates: 8,14 + 389: + color: '#FFFFFFFF' + id: Bot + coordinates: 9,14 + 390: + color: '#FFFFFFFF' + id: Bot + coordinates: 13,14 + 391: + color: '#FFFFFFFF' + id: Bot + coordinates: 14,14 + 392: + color: '#FFFFFFFF' + id: Bot + coordinates: 15,14 + 420: + color: '#FFFFFFFF' + id: Flowersy2 + coordinates: 4.7370586,0.522295 + 422: + color: '#FFFFFFFF' + id: Flowerspv1 + coordinates: 3.2526836,0.397295 + 425: + color: '#FFFFFFFF' + id: Grassd2 + coordinates: 3.7995586,0.7030997 + 430: + color: '#FFFFFFFF' + id: Flowerspv3 + coordinates: 13.953768,0.08978081 + 432: + color: '#FFFFFFFF' + id: Grassc1 + coordinates: 15.494255,0.0116558075 + 435: + color: '#FFFFFFFF' + id: FlowersBRThree + coordinates: 17.063644,0.058530807 + 436: + color: '#FFFFFFFF' + id: Flowerspv1 + coordinates: 17.36052,0.8554058 + 437: + color: '#FFFFFFFF' + id: Flowersy1 + coordinates: 19.01677,0.8554058 + 441: + color: '#FFFFFFFF' + id: Grassc4 + coordinates: 18.001144,0.6210308 + 443: + color: '#FFFFFFFF' + id: Grasse2 + coordinates: 6.6772537,0.018819809 + 446: + color: '#FFFFFFFF' + id: Bot + coordinates: 6,1 + 447: + color: '#FFFFFFFF' + id: Bot + coordinates: 16,1 + 453: + color: '#334E6DC8' + id: CheckerNWSE + coordinates: 19,21 + 454: + color: '#334E6DC8' + id: CheckerNWSE + coordinates: 19,20 + 455: + color: '#334E6DC8' + id: CheckerNWSE + coordinates: 18,20 + 456: + color: '#334E6DC8' + id: CheckerNWSE + coordinates: 18,21 + 457: + color: '#334E6DC8' + id: CheckerNWSE + coordinates: 17,21 + 458: + color: '#334E6DC8' + id: CheckerNWSE + coordinates: 17,20 + 459: + color: '#334E6DC8' + id: CheckerNWSE + coordinates: 17,22 + 460: + color: '#334E6DC8' + id: CheckerNWSE + coordinates: 18,22 + 461: + color: '#334E6DC8' + id: CheckerNWSE + coordinates: 17,19 + 462: + color: '#334E6DC8' + id: CheckerNWSE + coordinates: 18,19 + 463: + color: '#334E6DC8' + id: CheckerNESW + coordinates: 5,22 + 464: + color: '#334E6DC8' + id: CheckerNESW + coordinates: 4,22 + 465: + color: '#334E6DC8' + id: CheckerNESW + coordinates: 5,21 + 466: + color: '#334E6DC8' + id: CheckerNESW + coordinates: 4,21 + 467: + color: '#334E6DC8' + id: CheckerNESW + coordinates: 3,21 + 468: + color: '#334E6DC8' + id: CheckerNESW + coordinates: 3,20 + 469: + color: '#334E6DC8' + id: CheckerNESW + coordinates: 4,20 + 470: + color: '#334E6DC8' + id: CheckerNESW + coordinates: 5,20 + 471: + color: '#334E6DC8' + id: CheckerNESW + coordinates: 4,19 + 472: + color: '#334E6DC8' + id: CheckerNESW + coordinates: 5,19 + 473: + color: '#334E6DC8' + id: QuarterTileOverlayGreyscale90 + coordinates: 5,18 + 474: + color: '#334E6DC8' + id: QuarterTileOverlayGreyscale90 + coordinates: 4,18 + 475: + color: '#334E6DC8' + id: QuarterTileOverlayGreyscale + coordinates: 17,18 + 476: + color: '#334E6DC8' + id: QuarterTileOverlayGreyscale + coordinates: 18,18 + 477: + color: '#334E6DC8' + id: QuarterTileOverlayGreyscale270 + coordinates: 4,23 + 478: + color: '#334E6DC8' + id: QuarterTileOverlayGreyscale270 + coordinates: 5,23 + 479: + color: '#334E6DC8' + id: QuarterTileOverlayGreyscale180 + coordinates: 18,23 + 480: + color: '#334E6DC8' + id: QuarterTileOverlayGreyscale180 + coordinates: 17,23 + 481: + color: '#334E6DFF' + id: WarnLineGreyscaleS + coordinates: 8,23 + 482: + color: '#334E6DFF' + id: WarnLineGreyscaleS + coordinates: 14,23 + 483: + color: '#334E6DFF' + id: BrickTileWhiteCornerNw + coordinates: 7,21 + 484: + color: '#334E6DFF' + id: BrickTileWhiteLineN + coordinates: 8,21 + 485: + color: '#334E6DFF' + id: BrickTileWhiteLineN + coordinates: 9,21 + 486: + color: '#334E6DFF' + id: BrickTileWhiteLineN + coordinates: 10,21 + 487: + color: '#334E6DFF' + id: BrickTileWhiteLineN + coordinates: 11,21 + 488: + color: '#334E6DFF' + id: BrickTileWhiteLineN + coordinates: 12,21 + 489: + color: '#334E6DFF' + id: BrickTileWhiteLineN + coordinates: 13,21 + 490: + color: '#334E6DFF' + id: BrickTileWhiteLineN + coordinates: 14,21 + 491: + color: '#334E6DFF' + id: BrickTileWhiteLineS + coordinates: 8,19 + 492: + color: '#334E6DFF' + id: BrickTileWhiteLineS + coordinates: 9,19 + 493: + color: '#334E6DFF' + id: BrickTileWhiteLineS + coordinates: 10,19 + 494: + color: '#334E6DFF' + id: BrickTileWhiteLineS + coordinates: 11,19 + 495: + color: '#334E6DFF' + id: BrickTileWhiteLineS + coordinates: 12,19 + 496: + color: '#334E6DFF' + id: BrickTileWhiteLineS + coordinates: 13,19 + 497: + color: '#334E6DFF' + id: BrickTileWhiteLineS + coordinates: 14,19 + 498: + color: '#334E6DFF' + id: BrickTileWhiteCornerNe + coordinates: 15,21 + 499: + color: '#334E6DFF' + id: BrickTileWhiteCornerSe + coordinates: 15,19 + 500: + color: '#334E6DFF' + id: BrickTileWhiteCornerSw + coordinates: 7,19 + 501: + color: '#334E6DFF' + id: BrickTileWhiteLineE + coordinates: 15,20 + 502: + color: '#334E6DFF' + id: BrickTileWhiteLineW + coordinates: 7,20 + 503: + color: '#334E6DFF' + id: BrickTileWhiteBox + coordinates: 8,22 + 504: + color: '#334E6DFF' + id: BrickTileWhiteBox + coordinates: 14,22 + 505: + color: '#334E6DFF' + id: BrickTileWhiteLineE + coordinates: 13,23 + 506: + color: '#334E6DFF' + id: BrickTileWhiteLineN + coordinates: 10,24 + 507: + color: '#334E6DFF' + id: BrickTileWhiteLineN + coordinates: 11,24 + 508: + color: '#334E6DFF' + id: BrickTileWhiteLineN + coordinates: 12,24 + 509: + color: '#334E6DFF' + id: BrickTileWhiteLineW + coordinates: 9,23 + 510: + color: '#334E6DFF' + id: BrickTileWhiteCornerNw + coordinates: 9,24 + 511: + color: '#334E6DFF' + id: BrickTileWhiteCornerNe + coordinates: 13,24 + 512: + color: '#334E6DFF' + id: BrickTileWhiteLineN + coordinates: 4,24 + 513: + color: '#334E6DFF' + id: BrickTileWhiteLineN + coordinates: 5,24 + 514: + color: '#334E6DFF' + id: BrickTileWhiteLineN + coordinates: 7,25 + 515: + color: '#334E6DFF' + id: BrickTileWhiteLineN + coordinates: 8,25 + 516: + color: '#334E6DFF' + id: BrickTileWhiteLineN + coordinates: 9,25 + 517: + color: '#334E6DFF' + id: BrickTileWhiteLineN + coordinates: 10,25 + 518: + color: '#334E6DFF' + id: BrickTileWhiteLineN + coordinates: 11,25 + 519: + color: '#334E6DFF' + id: BrickTileWhiteLineN + coordinates: 12,25 + 520: + color: '#334E6DFF' + id: BrickTileWhiteLineN + coordinates: 13,25 + 521: + color: '#334E6DFF' + id: BrickTileWhiteLineN + coordinates: 14,25 + 522: + color: '#334E6DFF' + id: BrickTileWhiteLineN + coordinates: 15,25 + 523: + color: '#334E6DFF' + id: BrickTileWhiteLineN + coordinates: 17,24 + 524: + color: '#334E6DFF' + id: BrickTileWhiteLineN + coordinates: 18,24 + 525: + color: '#334E6DFF' + id: BrickTileWhiteCornerNw + coordinates: 6,25 + 526: + color: '#334E6DFF' + id: BrickTileWhiteCornerNe + coordinates: 16,25 + 527: + color: '#334E6DFF' + id: BrickTileWhiteInnerNe + coordinates: 16,24 + 528: + color: '#334E6DFF' + id: BrickTileWhiteInnerNw + coordinates: 6,24 + type: DecalGrid + - type: RadiationGridResistance + - tiles: + 0,0: 0 + 0,1: 0 + 0,2: 0 + 1,0: 0 + 1,1: 0 + 0,-2: 0 + 0,-1: 0 + 1,-2: 0 + 1,-1: 0 + 0,3: 0 + 0,4: 0 + 0,5: 0 + 0,6: 0 + 0,7: 0 + 0,8: 0 + 0,9: 0 + 0,10: 0 + 0,11: 0 + 0,12: 0 + 0,13: 0 + 1,2: 0 + 1,3: 0 + 1,4: 0 + 1,5: 0 + 1,6: 0 + 1,7: 0 + 1,8: 1 + 1,9: 1 + 1,10: 0 + 1,11: 0 + 1,12: 1 + 1,13: 0 + 1,14: 0 + 1,15: 0 + 2,0: 0 + 2,1: 0 + 2,2: 0 + 2,3: 0 + 2,4: 0 + 2,5: 0 + 2,6: 0 + 2,7: 0 + 2,8: 0 + 2,9: 0 + 2,10: 0 + 2,11: 0 + 2,12: 0 + 2,13: 0 + 2,14: 0 + 2,15: 0 + 3,0: 0 + 3,1: 0 + 3,2: 0 + 3,3: 0 + 3,4: 0 + 3,5: 0 + 3,6: 1 + 3,7: 0 + 3,8: 0 + 3,9: 0 + 3,10: 0 + 3,11: 0 + 3,12: 0 + 3,13: 0 + 3,14: 0 + 3,15: 0 + 4,0: 0 + 4,1: 0 + 4,2: 0 + 4,3: 0 + 4,4: 0 + 4,5: 0 + 4,6: 0 + 4,7: 0 + 4,8: 0 + 4,9: 0 + 4,10: 0 + 4,11: 0 + 4,12: 0 + 4,13: 0 + 4,14: 0 + 4,15: 0 + 5,0: 0 + 5,1: 0 + 5,2: 0 + 5,3: 0 + 5,4: 0 + 5,5: 0 + 5,6: 0 + 5,7: 0 + 5,8: 0 + 5,9: 0 + 5,10: 0 + 5,11: 0 + 5,12: 0 + 5,13: 0 + 5,14: 0 + 5,15: 0 + 6,0: 0 + 6,1: 1 + 6,2: 0 + 6,3: 0 + 6,4: 0 + 6,5: 0 + 6,6: 0 + 6,7: 0 + 6,8: 0 + 6,9: 0 + 6,10: 0 + 6,11: 0 + 6,12: 0 + 6,13: 0 + 6,14: 0 + 6,15: 0 + 7,0: 0 + 7,1: 0 + 7,2: 0 + 7,3: 0 + 7,4: 0 + 7,5: 0 + 7,6: 0 + 7,7: 0 + 7,8: 0 + 7,9: 0 + 7,10: 0 + 7,11: 0 + 7,12: 0 + 7,13: 0 + 7,14: 1 + 7,15: 0 + 8,0: 0 + 8,1: 0 + 8,2: 0 + 8,3: 0 + 8,4: 0 + 8,5: 0 + 8,6: 0 + 8,7: 0 + 8,8: 1 + 8,9: 0 + 8,10: 0 + 8,11: 0 + 8,12: 0 + 8,13: 0 + 8,14: 1 + 8,15: 0 + 9,0: 0 + 9,1: 0 + 9,2: 0 + 9,3: 0 + 9,4: 0 + 9,5: 0 + 9,6: 0 + 9,7: 0 + 9,8: 0 + 9,9: 0 + 9,10: 0 + 9,11: 0 + 9,12: 0 + 9,13: 0 + 9,14: 1 + 9,15: 0 + 10,0: 0 + 10,1: 0 + 10,2: 0 + 10,3: 0 + 10,4: 0 + 10,5: 0 + 10,6: 0 + 10,7: 0 + 10,8: 0 + 10,9: 0 + 10,10: 0 + 10,11: 0 + 10,12: 0 + 10,13: 0 + 10,14: 0 + 10,15: 0 + 11,0: 0 + 11,1: 0 + 11,2: 0 + 11,3: 0 + 11,4: 0 + 11,5: 0 + 11,6: 0 + 11,7: 0 + 11,8: 0 + 11,9: 1 + 11,10: 0 + 11,11: 1 + 11,12: 0 + 11,13: 0 + 11,14: 0 + 11,15: 0 + 12,0: 0 + 12,1: 0 + 12,2: 0 + 12,3: 0 + 12,4: 0 + 12,5: 0 + 12,6: 0 + 12,7: 0 + 12,8: 0 + 12,9: 0 + 12,10: 0 + 12,11: 0 + 12,12: 0 + 12,13: 0 + 12,14: 0 + 12,15: 0 + 13,0: 0 + 13,1: 0 + 13,2: 0 + 13,3: 0 + 13,4: 0 + 13,5: 0 + 13,6: 0 + 13,7: 0 + 13,8: 0 + 13,9: 0 + 13,10: 0 + 13,11: 0 + 13,12: 0 + 13,13: 0 + 13,14: 1 + 13,15: 0 + 14,0: 0 + 14,1: 0 + 14,2: 0 + 14,3: 0 + 14,4: 0 + 14,5: 0 + 14,6: 0 + 14,7: 0 + 14,8: 1 + 14,9: 0 + 14,10: 0 + 14,11: 0 + 14,12: 0 + 14,13: 0 + 14,14: 1 + 14,15: 0 + 15,0: 0 + 15,1: 0 + 15,2: 0 + 15,3: 0 + 15,4: 0 + 15,5: 0 + 15,6: 0 + 15,7: 0 + 15,8: 0 + 15,9: 0 + 15,10: 0 + 15,11: 0 + 15,12: 0 + 15,13: 0 + 15,14: 1 + 15,15: 0 + 0,-13: 0 + 0,-12: 0 + 0,-11: 0 + 0,-10: 0 + 0,-9: 0 + 0,-8: 0 + 0,-7: 0 + 0,-6: 0 + 0,-5: 0 + 0,-4: 0 + 0,-3: 0 + 1,-16: 0 + 1,-15: 0 + 1,-14: 0 + 1,-13: 0 + 1,-12: 1 + 1,-11: 0 + 1,-10: 0 + 1,-9: 1 + 1,-8: 1 + 1,-7: 0 + 1,-6: 0 + 1,-5: 0 + 1,-4: 0 + 1,-3: 0 + 2,-16: 0 + 2,-15: 0 + 2,-14: 0 + 2,-13: 0 + 2,-12: 0 + 2,-11: 0 + 2,-10: 0 + 2,-9: 0 + 2,-8: 0 + 2,-7: 0 + 2,-6: 0 + 2,-5: 0 + 2,-4: 0 + 2,-3: 0 + 2,-2: 0 + 2,-1: 0 + 3,-16: 0 + 3,-15: 0 + 3,-14: 0 + 3,-13: 0 + 3,-12: 0 + 3,-11: 0 + 3,-10: 0 + 3,-9: 0 + 3,-8: 0 + 3,-7: 0 + 3,-6: 1 + 3,-5: 0 + 3,-4: 0 + 3,-3: 0 + 3,-2: 0 + 3,-1: 0 + 4,-16: 0 + 4,-15: 0 + 4,-14: 0 + 4,-13: 0 + 4,-12: 0 + 4,-11: 0 + 4,-10: 0 + 4,-9: 0 + 4,-8: 0 + 4,-7: 0 + 4,-6: 0 + 4,-5: 0 + 4,-4: 0 + 4,-3: 0 + 4,-2: 0 + 4,-1: 0 + 5,-16: 0 + 5,-15: 0 + 5,-14: 0 + 5,-13: 0 + 5,-12: 0 + 5,-11: 0 + 5,-10: 0 + 5,-9: 0 + 5,-8: 0 + 5,-7: 0 + 5,-6: 0 + 5,-5: 0 + 5,-4: 0 + 5,-3: 0 + 5,-2: 0 + 5,-1: 0 + 6,-16: 1 + 6,-15: 0 + 6,-14: 0 + 6,-13: 0 + 6,-12: 0 + 6,-11: 0 + 6,-10: 0 + 6,-9: 0 + 6,-8: 0 + 6,-7: 0 + 6,-6: 0 + 6,-5: 0 + 6,-4: 0 + 6,-3: 0 + 6,-2: 0 + 6,-1: 1 + 7,-16: 0 + 7,-15: 0 + 7,-14: 0 + 7,-13: 0 + 7,-12: 0 + 7,-11: 0 + 7,-10: 0 + 7,-9: 0 + 7,-8: 0 + 7,-7: 0 + 7,-6: 0 + 7,-5: 0 + 7,-4: 0 + 7,-3: 0 + 7,-2: 0 + 7,-1: 0 + 8,-16: 0 + 8,-15: 0 + 8,-14: 0 + 8,-13: 0 + 8,-12: 0 + 8,-11: 0 + 8,-10: 0 + 8,-9: 0 + 8,-8: 0 + 8,-7: 0 + 8,-6: 0 + 8,-5: 0 + 8,-4: 0 + 8,-3: 0 + 8,-2: 0 + 8,-1: 0 + 9,-16: 0 + 9,-15: 1 + 9,-14: 1 + 9,-13: 0 + 9,-12: 0 + 9,-11: 0 + 9,-10: 0 + 9,-9: 0 + 9,-8: 0 + 9,-7: 0 + 9,-6: 0 + 9,-5: 0 + 9,-4: 0 + 9,-3: 0 + 9,-2: 0 + 9,-1: 0 + 10,-16: 0 + 10,-15: 0 + 10,-14: 0 + 10,-13: 0 + 10,-12: 0 + 10,-11: 0 + 10,-10: 0 + 10,-9: 0 + 10,-8: 0 + 10,-7: 0 + 10,-6: 0 + 10,-5: 0 + 10,-4: 0 + 10,-3: 0 + 10,-2: 0 + 10,-1: 0 + 11,-16: 0 + 11,-15: 0 + 11,-14: 0 + 11,-13: 0 + 11,-12: 0 + 11,-11: 0 + 11,-10: 0 + 11,-9: 0 + 11,-8: 0 + 11,-7: 1 + 11,-6: 0 + 11,-5: 0 + 11,-4: 0 + 11,-3: 0 + 11,-2: 0 + 11,-1: 0 + 12,-16: 0 + 12,-15: 0 + 12,-14: 0 + 12,-13: 0 + 12,-12: 0 + 12,-11: 0 + 12,-10: 0 + 12,-9: 0 + 12,-8: 0 + 12,-7: 0 + 12,-6: 0 + 12,-5: 0 + 12,-4: 0 + 12,-3: 0 + 12,-2: 0 + 12,-1: 0 + 13,-16: 0 + 13,-15: 0 + 13,-14: 0 + 13,-13: 0 + 13,-12: 0 + 13,-11: 0 + 13,-10: 0 + 13,-9: 0 + 13,-8: 0 + 13,-7: 0 + 13,-6: 0 + 13,-5: 0 + 13,-4: 0 + 13,-3: 0 + 13,-2: 0 + 13,-1: 0 + 14,-16: 0 + 14,-15: 0 + 14,-14: 0 + 14,-13: 0 + 14,-12: 0 + 14,-11: 0 + 14,-10: 0 + 14,-9: 0 + 14,-8: 0 + 14,-7: 0 + 14,-6: 0 + 14,-5: 0 + 14,-4: 0 + 14,-3: 0 + 14,-2: 0 + 14,-1: 0 + 15,-16: 0 + 15,-15: 0 + 15,-14: 0 + 15,-13: 0 + 15,-12: 0 + 15,-11: 1 + 15,-10: 0 + 15,-9: 0 + 15,-8: 0 + 15,-7: 0 + 15,-6: 0 + 15,-5: 0 + 15,-4: 0 + 15,-3: 0 + 15,-2: 0 + 15,-1: 0 + 16,0: 0 + 16,1: 1 + 16,2: 0 + 16,3: 0 + 16,4: 0 + 16,5: 0 + 16,6: 0 + 16,7: 0 + 16,8: 0 + 16,9: 0 + 16,10: 0 + 16,11: 0 + 16,12: 0 + 16,13: 0 + 16,14: 0 + 16,15: 0 + 17,0: 0 + 17,1: 0 + 17,2: 0 + 17,3: 0 + 17,4: 0 + 17,5: 0 + 17,6: 0 + 17,7: 0 + 17,8: 0 + 17,9: 0 + 17,10: 0 + 17,11: 0 + 17,12: 0 + 17,13: 0 + 17,14: 0 + 17,15: 0 + 18,0: 0 + 18,1: 0 + 18,2: 0 + 18,3: 0 + 18,4: 0 + 18,5: 0 + 18,6: 0 + 18,7: 0 + 18,8: 0 + 18,9: 0 + 18,10: 0 + 18,11: 0 + 18,12: 0 + 18,13: 0 + 18,14: 0 + 18,15: 0 + 19,0: 0 + 19,1: 0 + 19,2: 0 + 19,3: 0 + 19,4: 0 + 19,5: 0 + 19,6: 1 + 19,7: 0 + 19,8: 0 + 19,9: 0 + 19,10: 0 + 19,11: 0 + 19,12: 0 + 19,13: 0 + 19,14: 0 + 19,15: 0 + 20,0: 0 + 20,1: 0 + 20,2: 0 + 20,3: 0 + 20,4: 0 + 20,5: 0 + 20,6: 0 + 20,7: 0 + 20,8: 0 + 20,9: 0 + 20,10: 0 + 20,11: 0 + 20,12: 0 + 20,13: 0 + 20,14: 0 + 20,15: 0 + 21,0: 0 + 21,1: 0 + 21,2: 0 + 21,3: 0 + 21,4: 0 + 21,5: 0 + 21,6: 0 + 21,7: 0 + 21,8: 1 + 21,9: 1 + 21,10: 0 + 21,11: 0 + 21,12: 1 + 21,13: 0 + 21,14: 0 + 21,15: 0 + 22,0: 0 + 22,1: 0 + 22,2: 0 + 22,3: 0 + 22,4: 0 + 22,5: 0 + 22,6: 0 + 22,7: 0 + 22,8: 0 + 22,9: 0 + 22,10: 0 + 22,11: 0 + 22,12: 0 + 22,13: 0 + 16,-16: 1 + 16,-15: 0 + 16,-14: 0 + 16,-13: 1 + 16,-12: 0 + 16,-11: 1 + 16,-10: 0 + 16,-9: 0 + 16,-8: 0 + 16,-7: 0 + 16,-6: 0 + 16,-5: 0 + 16,-4: 0 + 16,-3: 0 + 16,-2: 0 + 16,-1: 1 + 17,-16: 0 + 17,-15: 0 + 17,-14: 0 + 17,-13: 1 + 17,-12: 0 + 17,-11: 0 + 17,-10: 0 + 17,-9: 0 + 17,-8: 0 + 17,-7: 0 + 17,-6: 0 + 17,-5: 0 + 17,-4: 0 + 17,-3: 0 + 17,-2: 0 + 17,-1: 0 + 18,-16: 0 + 18,-15: 0 + 18,-14: 0 + 18,-13: 0 + 18,-12: 0 + 18,-11: 0 + 18,-10: 0 + 18,-9: 0 + 18,-8: 0 + 18,-7: 0 + 18,-6: 0 + 18,-5: 0 + 18,-4: 0 + 18,-3: 0 + 18,-2: 0 + 18,-1: 0 + 19,-16: 0 + 19,-15: 0 + 19,-14: 0 + 19,-13: 0 + 19,-12: 0 + 19,-11: 0 + 19,-10: 0 + 19,-9: 0 + 19,-8: 0 + 19,-7: 0 + 19,-6: 1 + 19,-5: 0 + 19,-4: 0 + 19,-3: 0 + 19,-2: 0 + 19,-1: 0 + 20,-16: 0 + 20,-15: 0 + 20,-14: 0 + 20,-13: 0 + 20,-12: 0 + 20,-11: 0 + 20,-10: 0 + 20,-9: 0 + 20,-8: 0 + 20,-7: 0 + 20,-6: 0 + 20,-5: 0 + 20,-4: 0 + 20,-3: 0 + 20,-2: 0 + 20,-1: 0 + 21,-16: 0 + 21,-15: 0 + 21,-14: 0 + 21,-13: 0 + 21,-12: 1 + 21,-11: 0 + 21,-10: 0 + 21,-9: 1 + 21,-8: 1 + 21,-7: 0 + 21,-6: 0 + 21,-5: 0 + 21,-4: 0 + 21,-3: 0 + 21,-2: 0 + 21,-1: 0 + 22,-13: 0 + 22,-12: 0 + 22,-11: 0 + 22,-10: 0 + 22,-9: 0 + 22,-8: 0 + 22,-7: 0 + 22,-6: 0 + 22,-5: 0 + 22,-4: 0 + 22,-3: 0 + 22,-2: 0 + 22,-1: 0 + 1,16: 0 + 1,17: 0 + 1,18: 0 + 2,16: 0 + 2,17: 1 + 2,18: 0 + 2,19: 0 + 2,20: 0 + 2,21: 0 + 2,22: 0 + 3,16: 0 + 3,17: 0 + 3,18: 1 + 3,19: 0 + 3,20: 1 + 3,21: 1 + 3,22: 0 + 3,23: 0 + 3,24: 0 + 3,25: 0 + 3,26: 0 + 4,16: 0 + 4,17: 0 + 4,18: 0 + 4,19: 0 + 4,20: 0 + 4,21: 0 + 4,22: 0 + 4,23: 0 + 4,24: 0 + 4,25: 0 + 4,26: 0 + 4,27: 0 + 5,16: 0 + 5,17: 0 + 5,18: 0 + 5,19: 0 + 5,20: 0 + 5,21: 0 + 5,22: 0 + 5,23: 0 + 5,24: 0 + 5,25: 0 + 5,26: 0 + 5,27: 0 + 6,16: 0 + 6,17: 0 + 6,18: 0 + 6,19: 0 + 6,20: 0 + 6,21: 0 + 6,22: 0 + 6,23: 0 + 6,24: 0 + 6,25: 0 + 6,26: 0 + 6,27: 0 + 6,28: 0 + 7,16: 0 + 7,17: 0 + 7,18: 0 + 7,19: 0 + 7,20: 0 + 7,21: 0 + 7,22: 0 + 7,23: 0 + 7,24: 0 + 7,25: 0 + 7,26: 0 + 7,27: 0 + 7,28: 0 + 8,16: 0 + 8,17: 0 + 8,18: 0 + 8,19: 0 + 8,20: 0 + 8,21: 0 + 8,22: 0 + 8,23: 0 + 8,24: 0 + 8,25: 0 + 8,26: 0 + 8,27: 0 + 8,28: 0 + 9,16: 0 + 9,17: 1 + 9,18: 0 + 9,19: 0 + 9,20: 0 + 9,21: 0 + 9,22: 0 + 9,23: 0 + 9,24: 0 + 9,25: 0 + 9,26: 0 + 9,27: 0 + 9,28: 0 + 10,16: 0 + 10,17: 0 + 10,18: 0 + 10,19: 0 + 10,20: 0 + 10,21: 0 + 10,22: 0 + 10,23: 0 + 10,24: 0 + 10,25: 0 + 10,26: 0 + 10,27: 0 + 10,28: 0 + 11,16: 0 + 11,17: 0 + 11,18: 0 + 11,19: 0 + 11,20: 0 + 11,21: 0 + 11,22: 0 + 11,23: 0 + 11,24: 0 + 11,25: 0 + 11,26: 0 + 11,27: 0 + 11,28: 0 + 12,16: 0 + 12,17: 0 + 12,18: 0 + 12,19: 0 + 12,20: 0 + 12,21: 0 + 12,22: 0 + 12,23: 0 + 12,24: 0 + 12,25: 0 + 12,26: 0 + 12,27: 0 + 12,28: 0 + 13,16: 0 + 13,17: 1 + 13,18: 0 + 13,19: 0 + 13,20: 0 + 13,21: 0 + 13,22: 0 + 13,23: 0 + 13,24: 0 + 13,25: 0 + 13,26: 0 + 13,27: 0 + 13,28: 0 + 14,16: 0 + 14,17: 0 + 14,18: 0 + 14,19: 0 + 14,20: 0 + 14,21: 0 + 14,22: 0 + 14,23: 0 + 14,24: 0 + 14,25: 0 + 14,26: 0 + 14,27: 0 + 14,28: 0 + 15,16: 0 + 15,17: 0 + 15,18: 0 + 15,19: 0 + 15,20: 0 + 15,21: 0 + 15,22: 0 + 15,23: 0 + 15,24: 0 + 15,25: 0 + 15,26: 0 + 15,27: 0 + 15,28: 0 + 16,16: 0 + 16,17: 0 + 16,18: 0 + 16,19: 0 + 16,20: 0 + 16,21: 0 + 16,22: 0 + 16,23: 0 + 16,24: 0 + 16,25: 0 + 16,26: 0 + 16,27: 0 + 16,28: 0 + 17,16: 0 + 17,17: 0 + 17,18: 0 + 17,19: 0 + 17,20: 0 + 17,21: 0 + 17,22: 0 + 17,23: 0 + 17,24: 0 + 17,25: 0 + 17,26: 0 + 17,27: 0 + 18,16: 0 + 18,17: 0 + 18,18: 0 + 18,19: 0 + 18,20: 0 + 18,21: 0 + 18,22: 0 + 18,23: 0 + 18,24: 0 + 18,25: 0 + 18,26: 0 + 18,27: 0 + 19,16: 0 + 19,17: 0 + 19,18: 1 + 19,19: 0 + 19,20: 1 + 19,21: 1 + 19,22: 0 + 19,23: 0 + 19,24: 0 + 19,25: 0 + 19,26: 0 + 20,16: 0 + 20,17: 1 + 20,18: 0 + 20,19: 0 + 20,20: 0 + 20,21: 0 + 20,22: 0 + 21,16: 0 + 21,17: 0 + 21,18: 0 + 1,-18: 0 + 1,-17: 0 + 2,-22: 0 + 2,-21: 0 + 2,-20: 0 + 2,-19: 0 + 2,-18: 0 + 2,-17: 1 + 3,-25: 0 + 3,-24: 0 + 3,-23: 0 + 3,-22: 0 + 3,-21: 1 + 3,-20: 1 + 3,-19: 0 + 3,-18: 1 + 3,-17: 0 + 4,-26: 0 + 4,-25: 0 + 4,-24: 0 + 4,-23: 0 + 4,-22: 0 + 4,-21: 0 + 4,-20: 0 + 4,-19: 0 + 4,-18: 0 + 4,-17: 0 + 5,-27: 0 + 5,-26: 0 + 5,-25: 0 + 5,-24: 0 + 5,-23: 0 + 5,-22: 0 + 5,-21: 0 + 5,-20: 0 + 5,-19: 0 + 5,-18: 0 + 5,-17: 0 + 6,-27: 0 + 6,-26: 0 + 6,-25: 0 + 6,-24: 0 + 6,-23: 0 + 6,-22: 0 + 6,-21: 0 + 6,-20: 0 + 6,-19: 0 + 6,-18: 0 + 6,-17: 0 + 7,-27: 0 + 7,-26: 0 + 7,-25: 0 + 7,-24: 0 + 7,-23: 0 + 7,-22: 0 + 7,-21: 0 + 7,-20: 0 + 7,-19: 0 + 7,-18: 0 + 7,-17: 0 + 8,-27: 2 + 8,-26: 0 + 8,-25: 0 + 8,-24: 0 + 8,-23: 0 + 8,-22: 0 + 8,-21: 0 + 8,-20: 0 + 8,-19: 0 + 8,-18: 0 + 8,-17: 0 + 9,-27: 2 + 9,-26: 0 + 9,-25: 0 + 9,-24: 0 + 9,-23: 1 + 9,-22: 0 + 9,-21: 0 + 9,-20: 0 + 9,-19: 0 + 9,-18: 0 + 9,-17: 0 + 10,-27: 0 + 10,-26: 0 + 10,-25: 0 + 10,-24: 0 + 10,-23: 0 + 10,-22: 0 + 10,-21: 0 + 10,-20: 0 + 10,-19: 0 + 10,-18: 0 + 10,-17: 0 + 11,-27: 0 + 11,-26: 0 + 11,-25: 0 + 11,-24: 0 + 11,-23: 1 + 11,-22: 0 + 11,-21: 0 + 11,-20: 0 + 11,-19: 0 + 11,-18: 0 + 11,-17: 0 + 12,-27: 0 + 12,-26: 0 + 12,-25: 0 + 12,-24: 0 + 12,-23: 0 + 12,-22: 0 + 12,-21: 0 + 12,-20: 0 + 12,-19: 0 + 12,-18: 0 + 12,-17: 0 + 13,-27: 3 + 13,-26: 0 + 13,-25: 0 + 13,-24: 0 + 13,-23: 0 + 13,-22: 0 + 13,-21: 0 + 13,-20: 0 + 13,-19: 0 + 13,-18: 0 + 13,-17: 0 + 14,-27: 3 + 14,-26: 0 + 14,-25: 0 + 14,-24: 0 + 14,-23: 0 + 14,-22: 0 + 14,-21: 0 + 14,-20: 0 + 14,-19: 0 + 14,-18: 0 + 14,-17: 0 + 15,-27: 0 + 15,-26: 0 + 15,-25: 0 + 15,-24: 0 + 15,-23: 0 + 15,-22: 0 + 15,-21: 0 + 15,-20: 0 + 15,-19: 0 + 15,-18: 0 + 15,-17: 0 + 16,-27: 0 + 16,-26: 0 + 16,-25: 0 + 16,-24: 0 + 16,-23: 0 + 16,-22: 0 + 16,-21: 0 + 16,-20: 0 + 16,-19: 0 + 16,-18: 0 + 16,-17: 0 + 17,-27: 0 + 17,-26: 0 + 17,-25: 0 + 17,-24: 0 + 17,-23: 0 + 17,-22: 0 + 17,-21: 0 + 17,-20: 0 + 17,-19: 0 + 17,-18: 0 + 17,-17: 0 + 18,-26: 0 + 18,-25: 0 + 18,-24: 0 + 18,-23: 0 + 18,-22: 0 + 18,-21: 0 + 18,-20: 0 + 18,-19: 0 + 18,-18: 0 + 18,-17: 0 + 19,-25: 0 + 19,-24: 0 + 19,-23: 0 + 19,-22: 0 + 19,-21: 1 + 19,-20: 1 + 19,-19: 0 + 19,-18: 1 + 19,-17: 0 + 20,-22: 0 + 20,-21: 0 + 20,-20: 0 + 20,-19: 0 + 20,-18: 0 + 20,-17: 1 + 21,-18: 0 + 21,-17: 0 + 0,14: 0 + 0,15: 0 + 0,-16: 0 + 0,-15: 0 + 0,-14: 0 + 22,14: 0 + 22,15: 0 + 22,-16: 0 + 22,-15: 0 + 22,-14: 0 + 0,16: 0 + 0,17: 0 + 1,19: 0 + 1,20: 0 + 1,21: 0 + 2,23: 0 + 2,24: 0 + 2,25: 0 + 3,27: 0 + 19,27: 0 + 20,23: 0 + 20,24: 0 + 20,25: 0 + 21,19: 0 + 21,20: 0 + 21,21: 0 + 22,16: 0 + 22,17: 0 + 0,-17: 0 + 1,-21: 0 + 1,-20: 0 + 1,-19: 0 + 2,-26: 0 + 2,-25: 0 + 2,-24: 0 + 2,-23: 0 + 3,-27: 0 + 3,-26: 0 + 4,-28: 0 + 4,-27: 0 + 5,-29: 0 + 5,-28: 0 + 6,-29: 0 + 6,-28: 0 + 7,-29: 0 + 7,-28: 0 + 8,-29: 0 + 8,-28: 2 + 9,-29: 0 + 9,-28: 2 + 10,-29: 0 + 10,-28: 0 + 11,-29: 0 + 11,-28: 1 + 12,-29: 0 + 12,-28: 0 + 13,-29: 0 + 13,-28: 3 + 14,-29: 0 + 14,-28: 3 + 15,-29: 0 + 15,-28: 0 + 16,-29: 0 + 16,-28: 0 + 17,-29: 0 + 17,-28: 0 + 18,-28: 0 + 18,-27: 0 + 19,-27: 0 + 19,-26: 0 + 20,-26: 0 + 20,-25: 0 + 20,-24: 0 + 20,-23: 0 + 21,-21: 0 + 21,-20: 0 + 21,-19: 0 + 22,-17: 0 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - volume: 2500 + temperature: 293.15 + moles: + - 18.935778 + - 71.2346 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - volume: 2500 + temperature: 293.15 + moles: + - 0 + - 6666.982 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - volume: 2500 + temperature: 293.15 + moles: + - 6666.982 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: GridAtmosphere + - type: GasTileOverlay +- uid: 2 + type: ShuttleWindow + components: + - pos: 0.5,-0.5 + parent: 1 + type: Transform +- uid: 3 + type: ShuttleWindow + components: + - pos: 0.5,0.5 + parent: 1 + type: Transform +- uid: 4 + type: ShuttleWindow + components: + - pos: 0.5,1.5 + parent: 1 + type: Transform +- uid: 5 + type: Grille + components: + - pos: 0.5,1.5 + parent: 1 + type: Transform +- uid: 6 + type: Grille + components: + - pos: 0.5,0.5 + parent: 1 + type: Transform +- uid: 7 + type: Grille + components: + - pos: 0.5,-0.5 + parent: 1 + type: Transform +- uid: 8 + type: WallShuttle + components: + - pos: 0.5,2.5 + parent: 1 + type: Transform +- uid: 9 + type: WallShuttle + components: + - pos: 0.5,-1.5 + parent: 1 + type: Transform +- uid: 10 + type: Grille + components: + - pos: 0.5,4.5 + parent: 1 + type: Transform +- uid: 11 + type: Grille + components: + - pos: 0.5,-3.5 + parent: 1 + type: Transform +- uid: 12 + type: ShuttleWindow + components: + - pos: 0.5,-3.5 + parent: 1 + type: Transform +- uid: 13 + type: ShuttleWindow + components: + - pos: 0.5,4.5 + parent: 1 + type: Transform +- uid: 14 + type: Window + components: + - pos: 6.5,0.5 + parent: 1 + type: Transform +- uid: 15 + type: Window + components: + - pos: 7.5,0.5 + parent: 1 + type: Transform +- uid: 16 + type: Window + components: + - pos: 8.5,0.5 + parent: 1 + type: Transform +- uid: 17 + type: ShuttleWindow + components: + - pos: 22.5,1.5 + parent: 1 + type: Transform +- uid: 18 + type: Window + components: + - pos: 16.5,0.5 + parent: 1 + type: Transform +- uid: 19 + type: Window + components: + - pos: 15.5,0.5 + parent: 1 + type: Transform +- uid: 20 + type: Window + components: + - pos: 14.5,0.5 + parent: 1 + type: Transform +- uid: 21 + type: ShuttleWindow + components: + - pos: 22.5,0.5 + parent: 1 + type: Transform +- uid: 22 + type: ShuttleWindow + components: + - pos: 22.5,-0.5 + parent: 1 + type: Transform +- uid: 23 + type: ShuttleWindow + components: + - pos: 22.5,4.5 + parent: 1 + type: Transform +- uid: 24 + type: ShuttleWindow + components: + - pos: 22.5,-3.5 + parent: 1 + type: Transform +- uid: 25 + type: WallShuttle + components: + - pos: 22.5,-1.5 + parent: 1 + type: Transform +- uid: 26 + type: WallShuttle + components: + - pos: 22.5,2.5 + parent: 1 + type: Transform +- uid: 27 + type: Grille + components: + - pos: 22.5,1.5 + parent: 1 + type: Transform +- uid: 28 + type: Grille + components: + - pos: 22.5,0.5 + parent: 1 + type: Transform +- uid: 29 + type: Grille + components: + - pos: 22.5,-0.5 + parent: 1 + type: Transform +- uid: 30 + type: Grille + components: + - pos: 22.5,4.5 + parent: 1 + type: Transform +- uid: 31 + type: Grille + components: + - pos: 22.5,-3.5 + parent: 1 + type: Transform +- uid: 32 + type: WallShuttle + components: + - pos: 0.5,6.5 + parent: 1 + type: Transform +- uid: 33 + type: WallShuttle + components: + - pos: 7.5,9.5 + parent: 1 + type: Transform +- uid: 34 + type: WallShuttle + components: + - pos: 0.5,7.5 + parent: 1 + type: Transform +- uid: 35 + type: Grille + components: + - pos: 18.5,6.5 + parent: 1 + type: Transform +- uid: 36 + type: Grille + components: + - pos: 4.5,5.5 + parent: 1 + type: Transform +- uid: 37 + type: Grille + components: + - pos: 18.5,5.5 + parent: 1 + type: Transform +- uid: 38 + type: WallShuttle + components: + - pos: 7.5,10.5 + parent: 1 + type: Transform +- uid: 39 + type: WallShuttle + components: + - pos: 7.5,8.5 + parent: 1 + type: Transform +- uid: 40 + type: WallShuttle + components: + - pos: 22.5,6.5 + parent: 1 + type: Transform +- uid: 41 + type: WallShuttle + components: + - pos: 22.5,7.5 + parent: 1 + type: Transform +- uid: 42 + type: Grille + components: + - pos: 4.5,6.5 + parent: 1 + type: Transform +- uid: 43 + type: WallShuttle + components: + - pos: 10.5,8.5 + parent: 1 + type: Transform +- uid: 44 + type: WallShuttle + components: + - pos: 10.5,9.5 + parent: 1 + type: Transform +- uid: 45 + type: WallShuttle + components: + - pos: 10.5,10.5 + parent: 1 + type: Transform +- uid: 46 + type: WallShuttle + components: + - pos: 15.5,10.5 + parent: 1 + type: Transform +- uid: 47 + type: WallShuttle + components: + - pos: 15.5,9.5 + parent: 1 + type: Transform +- uid: 48 + type: WallShuttle + components: + - pos: 22.5,-5.5 + parent: 1 + type: Transform +- uid: 49 + type: WallShuttle + components: + - pos: 22.5,-6.5 + parent: 1 + type: Transform +- uid: 50 + type: ShuttleWindow + components: + - pos: 18.5,5.5 + parent: 1 + type: Transform +- uid: 51 + type: ShuttleWindow + components: + - pos: 18.5,6.5 + parent: 1 + type: Transform +- uid: 52 + type: WallShuttle + components: + - pos: 11.5,10.5 + parent: 1 + type: Transform +- uid: 53 + type: Grille + components: + - pos: 14.5,10.5 + parent: 1 + type: Transform +- uid: 54 + type: ShuttleWindow + components: + - pos: 14.5,10.5 + parent: 1 + type: Transform +- uid: 55 + type: Grille + components: + - pos: 8.5,10.5 + parent: 1 + type: Transform +- uid: 56 + type: WallShuttle + components: + - pos: 0.5,-5.5 + parent: 1 + type: Transform +- uid: 57 + type: WallShuttle + components: + - pos: 0.5,-6.5 + parent: 1 + type: Transform +- uid: 58 + type: ShuttleWindow + components: + - pos: 4.5,6.5 + parent: 1 + type: Transform +- uid: 59 + type: ShuttleWindow + components: + - pos: 4.5,5.5 + parent: 1 + type: Transform +- uid: 60 + type: WallShuttle + components: + - pos: 15.5,8.5 + parent: 1 + type: Transform +- uid: 61 + type: WallShuttle + components: + - pos: 12.5,8.5 + parent: 1 + type: Transform +- uid: 62 + type: WallShuttle + components: + - pos: 12.5,9.5 + parent: 1 + type: Transform +- uid: 63 + type: WallShuttle + components: + - pos: 12.5,10.5 + parent: 1 + type: Transform +- uid: 64 + type: WallShuttle + components: + - pos: 4.5,4.5 + parent: 1 + type: Transform +- uid: 65 + type: WallShuttle + components: + - pos: 7.5,4.5 + parent: 1 + type: Transform +- uid: 66 + type: WallShuttle + components: + - pos: 8.5,4.5 + parent: 1 + type: Transform +- uid: 67 + type: WallShuttle + components: + - pos: 8.5,5.5 + parent: 1 + type: Transform +- uid: 68 + type: WallShuttle + components: + - pos: 8.5,6.5 + parent: 1 + type: Transform +- uid: 69 + type: WallShuttle + components: + - pos: 8.5,7.5 + parent: 1 + type: Transform +- uid: 70 + type: WallShuttle + components: + - pos: 9.5,7.5 + parent: 1 + type: Transform +- uid: 71 + type: WallShuttle + components: + - pos: 10.5,7.5 + parent: 1 + type: Transform +- uid: 72 + type: ShuttleWindow + components: + - pos: 8.5,10.5 + parent: 1 + type: Transform +- uid: 73 + type: WallShuttle + components: + - pos: 12.5,7.5 + parent: 1 + type: Transform +- uid: 74 + type: WallShuttle + components: + - pos: 13.5,7.5 + parent: 1 + type: Transform +- uid: 75 + type: WallShuttle + components: + - pos: 14.5,7.5 + parent: 1 + type: Transform +- uid: 76 + type: WallShuttle + components: + - pos: 14.5,6.5 + parent: 1 + type: Transform +- uid: 77 + type: WallShuttle + components: + - pos: 14.5,5.5 + parent: 1 + type: Transform +- uid: 78 + type: WallShuttle + components: + - pos: 14.5,4.5 + parent: 1 + type: Transform +- uid: 79 + type: WallShuttle + components: + - pos: 15.5,4.5 + parent: 1 + type: Transform +- uid: 80 + type: WallShuttle + components: + - pos: 18.5,4.5 + parent: 1 + type: Transform +- uid: 81 + type: WallShuttle + components: + - pos: 4.5,7.5 + parent: 1 + type: Transform +- uid: 82 + type: WallShuttle + components: + - pos: 7.5,7.5 + parent: 1 + type: Transform +- uid: 83 + type: WallShuttle + components: + - pos: 15.5,7.5 + parent: 1 + type: Transform +- uid: 84 + type: WallShuttle + components: + - pos: 18.5,7.5 + parent: 1 + type: Transform +- uid: 85 + type: WallShuttle + components: + - pos: 4.5,8.5 + parent: 1 + type: Transform +- uid: 86 + type: WallShuttle + components: + - pos: 4.5,-3.5 + parent: 1 + type: Transform +- uid: 87 + type: WallShuttle + components: + - pos: 4.5,13.5 + parent: 1 + type: Transform +- uid: 88 + type: WallShuttle + components: + - pos: 4.5,14.5 + parent: 1 + type: Transform +- uid: 89 + type: WallShuttle + components: + - pos: 4.5,15.5 + parent: 1 + type: Transform +- uid: 90 + type: WallShuttle + components: + - pos: 5.5,15.5 + parent: 1 + type: Transform +- uid: 91 + type: WallShuttle + components: + - pos: 17.5,15.5 + parent: 1 + type: Transform +- uid: 92 + type: WallShuttle + components: + - pos: 18.5,15.5 + parent: 1 + type: Transform +- uid: 93 + type: WallShuttle + components: + - pos: 18.5,14.5 + parent: 1 + type: Transform +- uid: 94 + type: WallShuttle + components: + - pos: 18.5,13.5 + parent: 1 + type: Transform +- uid: 95 + type: ShuttleWindow + components: + - rot: -1.5707963267948966 rad + pos: 13.5,15.5 + parent: 1 + type: Transform +- uid: 96 + type: WallShuttle + components: + - pos: 10.5,15.5 + parent: 1 + type: Transform +- uid: 97 + type: WallShuttle + components: + - pos: 11.5,15.5 + parent: 1 + type: Transform +- uid: 98 + type: ShuttleWindow + components: + - pos: 18.5,9.5 + parent: 1 + type: Transform +- uid: 99 + type: WallShuttle + components: + - pos: 18.5,8.5 + parent: 1 + type: Transform +- uid: 100 + type: WallShuttle + components: + - pos: 12.5,15.5 + parent: 1 + type: Transform +- uid: 101 + type: ShuttleWindow + components: + - rot: -1.5707963267948966 rad + pos: 9.5,15.5 + parent: 1 + type: Transform +- uid: 102 + type: ShuttleWindow + components: + - pos: 4.5,10.5 + parent: 1 + type: Transform +- uid: 103 + type: ShuttleWindow + components: + - pos: 4.5,11.5 + parent: 1 + type: Transform +- uid: 104 + type: ShuttleWindow + components: + - pos: 4.5,12.5 + parent: 1 + type: Transform +- uid: 105 + type: WallShuttle + components: + - rot: -1.5707963267948966 rad + pos: 6.5,15.5 + parent: 1 + type: Transform +- uid: 106 + type: ShuttleWindow + components: + - pos: 7.5,15.5 + parent: 1 + type: Transform +- uid: 107 + type: ShuttleWindow + components: + - pos: 8.5,15.5 + parent: 1 + type: Transform +- uid: 108 + type: ShuttleWindow + components: + - pos: 14.5,15.5 + parent: 1 + type: Transform +- uid: 109 + type: ShuttleWindow + components: + - pos: 15.5,15.5 + parent: 1 + type: Transform +- uid: 110 + type: Grille + components: + - rot: -1.5707963267948966 rad + pos: 9.5,15.5 + parent: 1 + type: Transform +- uid: 111 + type: ShuttleWindow + components: + - pos: 18.5,12.5 + parent: 1 + type: Transform +- uid: 112 + type: ShuttleWindow + components: + - pos: 18.5,11.5 + parent: 1 + type: Transform +- uid: 113 + type: ShuttleWindow + components: + - pos: 18.5,10.5 + parent: 1 + type: Transform +- uid: 114 + type: Grille + components: + - pos: 4.5,10.5 + parent: 1 + type: Transform +- uid: 115 + type: Grille + components: + - pos: 4.5,11.5 + parent: 1 + type: Transform +- uid: 116 + type: Grille + components: + - pos: 4.5,12.5 + parent: 1 + type: Transform +- uid: 117 + type: WallShuttle + components: + - rot: -1.5707963267948966 rad + pos: 16.5,15.5 + parent: 1 + type: Transform +- uid: 118 + type: Grille + components: + - pos: 7.5,15.5 + parent: 1 + type: Transform +- uid: 119 + type: Grille + components: + - pos: 8.5,15.5 + parent: 1 + type: Transform +- uid: 120 + type: Grille + components: + - pos: 14.5,15.5 + parent: 1 + type: Transform +- uid: 121 + type: Grille + components: + - pos: 15.5,15.5 + parent: 1 + type: Transform +- uid: 122 + type: Grille + components: + - rot: -1.5707963267948966 rad + pos: 13.5,15.5 + parent: 1 + type: Transform +- uid: 123 + type: Grille + components: + - pos: 18.5,12.5 + parent: 1 + type: Transform +- uid: 124 + type: Grille + components: + - pos: 18.5,11.5 + parent: 1 + type: Transform +- uid: 125 + type: Grille + components: + - pos: 18.5,10.5 + parent: 1 + type: Transform +- uid: 126 + type: WallShuttle + components: + - pos: 0.5,12.5 + parent: 1 + type: Transform +- uid: 127 + type: WallShuttle + components: + - pos: 0.5,13.5 + parent: 1 + type: Transform +- uid: 128 + type: WallShuttle + components: + - pos: 1.5,13.5 + parent: 1 + type: Transform +- uid: 129 + type: WallShuttle + components: + - pos: 0.5,8.5 + parent: 1 + type: Transform +- uid: 130 + type: WallShuttle + components: + - pos: 22.5,8.5 + parent: 1 + type: Transform +- uid: 131 + type: WallShuttle + components: + - pos: 22.5,12.5 + parent: 1 + type: Transform +- uid: 132 + type: WallShuttle + components: + - pos: 22.5,13.5 + parent: 1 + type: Transform +- uid: 133 + type: WallShuttle + components: + - pos: 21.5,13.5 + parent: 1 + type: Transform +- uid: 134 + type: WallShuttle + components: + - pos: 21.5,14.5 + parent: 1 + type: Transform +- uid: 135 + type: WallShuttle + components: + - pos: 21.5,17.5 + parent: 1 + type: Transform +- uid: 136 + type: WallShuttle + components: + - pos: 21.5,18.5 + parent: 1 + type: Transform +- uid: 137 + type: WallShuttle + components: + - pos: 20.5,18.5 + parent: 1 + type: Transform +- uid: 138 + type: ShuttleWindow + components: + - pos: 9.5,18.5 + parent: 1 + type: Transform +- uid: 139 + type: ShuttleWindow + components: + - pos: 8.5,18.5 + parent: 1 + type: Transform +- uid: 140 + type: Grille + components: + - pos: 21.5,16.5 + parent: 1 + type: Transform +- uid: 141 + type: WallShuttle + components: + - pos: 16.5,18.5 + parent: 1 + type: Transform +- uid: 142 + type: WallShuttle + components: + - pos: 15.5,18.5 + parent: 1 + type: Transform +- uid: 143 + type: Grille + components: + - pos: 8.5,18.5 + parent: 1 + type: Transform +- uid: 144 + type: Grille + components: + - pos: 9.5,18.5 + parent: 1 + type: Transform +- uid: 145 + type: WallShuttle + components: + - pos: 12.5,18.5 + parent: 1 + type: Transform +- uid: 146 + type: WallShuttle + components: + - pos: 11.5,18.5 + parent: 1 + type: Transform +- uid: 147 + type: WallShuttle + components: + - pos: 10.5,18.5 + parent: 1 + type: Transform +- uid: 148 + type: Grille + components: + - pos: 13.5,18.5 + parent: 1 + type: Transform +- uid: 149 + type: Grille + components: + - pos: 14.5,18.5 + parent: 1 + type: Transform +- uid: 150 + type: WallShuttle + components: + - pos: 7.5,18.5 + parent: 1 + type: Transform +- uid: 151 + type: WallShuttle + components: + - pos: 6.5,18.5 + parent: 1 + type: Transform +- uid: 152 + type: WallShuttle + components: + - pos: 20.5,19.5 + parent: 1 + type: Transform +- uid: 153 + type: ShuttleWindow + components: + - pos: 12.5,-6.5 + parent: 1 + type: Transform +- uid: 154 + type: WallShuttle + components: + - pos: 20.5,20.5 + parent: 1 + type: Transform +- uid: 155 + type: WallShuttle + components: + - pos: 2.5,18.5 + parent: 1 + type: Transform +- uid: 156 + type: WallShuttle + components: + - pos: 1.5,18.5 + parent: 1 + type: Transform +- uid: 157 + type: WallShuttle + components: + - pos: 1.5,17.5 + parent: 1 + type: Transform +- uid: 158 + type: WallShuttle + components: + - pos: 2.5,20.5 + parent: 1 + type: Transform +- uid: 159 + type: ShuttleWindow + components: + - pos: 13.5,18.5 + parent: 1 + type: Transform +- uid: 160 + type: WallShuttle + components: + - pos: 1.5,14.5 + parent: 1 + type: Transform +- uid: 161 + type: ShuttleWindow + components: + - pos: 14.5,18.5 + parent: 1 + type: Transform +- uid: 162 + type: WallShuttle + components: + - pos: 6.5,19.5 + parent: 1 + type: Transform +- uid: 163 + type: WallShuttle + components: + - pos: 6.5,20.5 + parent: 1 + type: Transform +- uid: 164 + type: WallShuttle + components: + - pos: 6.5,21.5 + parent: 1 + type: Transform +- uid: 165 + type: WallShuttle + components: + - pos: 3.5,19.5 + parent: 1 + type: Transform +- uid: 166 + type: WallShuttle + components: + - pos: 2.5,21.5 + parent: 1 + type: Transform +- uid: 167 + type: WallShuttle + components: + - pos: 2.5,22.5 + parent: 1 + type: Transform +- uid: 168 + type: WallShuttle + components: + - pos: 16.5,19.5 + parent: 1 + type: Transform +- uid: 169 + type: WallShuttle + components: + - pos: 16.5,20.5 + parent: 1 + type: Transform +- uid: 170 + type: WallShuttle + components: + - pos: 16.5,21.5 + parent: 1 + type: Transform +- uid: 171 + type: WallShuttle + components: + - pos: 19.5,19.5 + parent: 1 + type: Transform +- uid: 172 + type: WallShuttle + components: + - pos: 20.5,22.5 + parent: 1 + type: Transform +- uid: 173 + type: WallShuttle + components: + - pos: 20.5,21.5 + parent: 1 + type: Transform +- uid: 174 + type: WallShuttle + components: + - pos: 3.5,22.5 + parent: 1 + type: Transform +- uid: 175 + type: WallShuttle + components: + - pos: 6.5,22.5 + parent: 1 + type: Transform +- uid: 176 + type: WallShuttle + components: + - pos: 16.5,22.5 + parent: 1 + type: Transform +- uid: 177 + type: WallShuttle + components: + - pos: 19.5,22.5 + parent: 1 + type: Transform +- uid: 178 + type: ShuttleWindow + components: + - pos: 7.5,22.5 + parent: 1 + type: Transform +- uid: 179 + type: Grille + components: + - pos: 22.5,10.5 + parent: 1 + type: Transform +- uid: 180 + type: WallShuttle + components: + - pos: 8.5,-3.5 + parent: 1 + type: Transform +- uid: 181 + type: ShuttleWindow + components: + - pos: 10.5,22.5 + parent: 1 + type: Transform +- uid: 182 + type: ShuttleWindow + components: + - pos: 11.5,22.5 + parent: 1 + type: Transform +- uid: 183 + type: ShuttleWindow + components: + - pos: 12.5,22.5 + parent: 1 + type: Transform +- uid: 184 + type: WallShuttle + components: + - pos: 13.5,22.5 + parent: 1 + type: Transform +- uid: 185 + type: Grille + components: + - pos: 21.5,15.5 + parent: 1 + type: Transform +- uid: 186 + type: ShuttleWindow + components: + - pos: 15.5,22.5 + parent: 1 + type: Transform +- uid: 187 + type: Grille + components: + - pos: 7.5,22.5 + parent: 1 + type: Transform +- uid: 188 + type: Grille + components: + - pos: 22.5,11.5 + parent: 1 + type: Transform +- uid: 189 + type: ShuttleWindow + components: + - pos: 4.5,9.5 + parent: 1 + type: Transform +- uid: 190 + type: Grille + components: + - pos: 10.5,22.5 + parent: 1 + type: Transform +- uid: 191 + type: Grille + components: + - pos: 11.5,22.5 + parent: 1 + type: Transform +- uid: 192 + type: Grille + components: + - pos: 12.5,22.5 + parent: 1 + type: Transform +- uid: 193 + type: WallShuttle + components: + - pos: 9.5,22.5 + parent: 1 + type: Transform +- uid: 194 + type: WallShuttle + components: + - pos: 2.5,19.5 + parent: 1 + type: Transform +- uid: 195 + type: Grille + components: + - pos: 15.5,22.5 + parent: 1 + type: Transform +- uid: 196 + type: Grille + components: + - pos: 22.5,9.5 + parent: 1 + type: Transform +- uid: 197 + type: Grille + components: + - pos: 0.5,9.5 + parent: 1 + type: Transform +- uid: 198 + type: Grille + components: + - pos: 0.5,10.5 + parent: 1 + type: Transform +- uid: 199 + type: Grille + components: + - pos: 0.5,11.5 + parent: 1 + type: Transform +- uid: 200 + type: Grille + components: + - pos: 1.5,15.5 + parent: 1 + type: Transform +- uid: 201 + type: Grille + components: + - pos: 1.5,16.5 + parent: 1 + type: Transform +- uid: 202 + type: ShuttleWindow + components: + - pos: 0.5,9.5 + parent: 1 + type: Transform +- uid: 203 + type: ShuttleWindow + components: + - pos: 0.5,10.5 + parent: 1 + type: Transform +- uid: 204 + type: ShuttleWindow + components: + - pos: 0.5,11.5 + parent: 1 + type: Transform +- uid: 205 + type: ShuttleWindow + components: + - pos: 1.5,15.5 + parent: 1 + type: Transform +- uid: 206 + type: ShuttleWindow + components: + - pos: 1.5,16.5 + parent: 1 + type: Transform +- uid: 207 + type: ShuttleWindow + components: + - pos: 21.5,16.5 + parent: 1 + type: Transform +- uid: 208 + type: ShuttleWindow + components: + - pos: 21.5,15.5 + parent: 1 + type: Transform +- uid: 209 + type: ShuttleWindow + components: + - pos: 22.5,11.5 + parent: 1 + type: Transform +- uid: 210 + type: ShuttleWindow + components: + - pos: 22.5,10.5 + parent: 1 + type: Transform +- uid: 211 + type: ShuttleWindow + components: + - pos: 22.5,9.5 + parent: 1 + type: Transform +- uid: 212 + type: WallShuttle + components: + - pos: 3.5,23.5 + parent: 1 + type: Transform +- uid: 213 + type: WallShuttle + components: + - pos: 19.5,23.5 + parent: 1 + type: Transform +- uid: 214 + type: Grille + components: + - pos: 3.5,24.5 + parent: 1 + type: Transform +- uid: 215 + type: Grille + components: + - pos: 3.5,25.5 + parent: 1 + type: Transform +- uid: 216 + type: Grille + components: + - pos: 3.5,26.5 + parent: 1 + type: Transform +- uid: 217 + type: Grille + components: + - pos: 4.5,26.5 + parent: 1 + type: Transform +- uid: 218 + type: Grille + components: + - pos: 4.5,27.5 + parent: 1 + type: Transform +- uid: 219 + type: Grille + components: + - pos: 5.5,27.5 + parent: 1 + type: Transform +- uid: 220 + type: Grille + components: + - pos: 6.5,27.5 + parent: 1 + type: Transform +- uid: 221 + type: Grille + components: + - pos: 6.5,28.5 + parent: 1 + type: Transform +- uid: 222 + type: Grille + components: + - pos: 7.5,28.5 + parent: 1 + type: Transform +- uid: 223 + type: Grille + components: + - pos: 8.5,28.5 + parent: 1 + type: Transform +- uid: 224 + type: Grille + components: + - pos: 9.5,28.5 + parent: 1 + type: Transform +- uid: 225 + type: Grille + components: + - pos: 10.5,28.5 + parent: 1 + type: Transform +- uid: 226 + type: Grille + components: + - pos: 11.5,28.5 + parent: 1 + type: Transform +- uid: 227 + type: Grille + components: + - pos: 12.5,28.5 + parent: 1 + type: Transform +- uid: 228 + type: Grille + components: + - pos: 13.5,28.5 + parent: 1 + type: Transform +- uid: 229 + type: Grille + components: + - pos: 14.5,28.5 + parent: 1 + type: Transform +- uid: 230 + type: Grille + components: + - pos: 15.5,28.5 + parent: 1 + type: Transform +- uid: 231 + type: Grille + components: + - pos: 16.5,28.5 + parent: 1 + type: Transform +- uid: 232 + type: Grille + components: + - pos: 16.5,27.5 + parent: 1 + type: Transform +- uid: 233 + type: Grille + components: + - pos: 17.5,27.5 + parent: 1 + type: Transform +- uid: 234 + type: Grille + components: + - pos: 18.5,27.5 + parent: 1 + type: Transform +- uid: 235 + type: Grille + components: + - pos: 18.5,26.5 + parent: 1 + type: Transform +- uid: 236 + type: Grille + components: + - pos: 19.5,26.5 + parent: 1 + type: Transform +- uid: 237 + type: Grille + components: + - pos: 19.5,24.5 + parent: 1 + type: Transform +- uid: 238 + type: Grille + components: + - pos: 19.5,25.5 + parent: 1 + type: Transform +- uid: 239 + type: ShuttleWindow + components: + - pos: 3.5,24.5 + parent: 1 + type: Transform +- uid: 240 + type: ShuttleWindow + components: + - pos: 3.5,25.5 + parent: 1 + type: Transform +- uid: 241 + type: ShuttleWindow + components: + - pos: 3.5,26.5 + parent: 1 + type: Transform +- uid: 242 + type: ShuttleWindow + components: + - pos: 4.5,26.5 + parent: 1 + type: Transform +- uid: 243 + type: ShuttleWindow + components: + - pos: 4.5,27.5 + parent: 1 + type: Transform +- uid: 244 + type: ShuttleWindow + components: + - pos: 5.5,27.5 + parent: 1 + type: Transform +- uid: 245 + type: ShuttleWindow + components: + - pos: 6.5,27.5 + parent: 1 + type: Transform +- uid: 246 + type: ShuttleWindow + components: + - pos: 6.5,28.5 + parent: 1 + type: Transform +- uid: 247 + type: ShuttleWindow + components: + - pos: 7.5,28.5 + parent: 1 + type: Transform +- uid: 248 + type: ShuttleWindow + components: + - pos: 8.5,28.5 + parent: 1 + type: Transform +- uid: 249 + type: ShuttleWindow + components: + - pos: 9.5,28.5 + parent: 1 + type: Transform +- uid: 250 + type: ShuttleWindow + components: + - pos: 10.5,28.5 + parent: 1 + type: Transform +- uid: 251 + type: ShuttleWindow + components: + - pos: 11.5,28.5 + parent: 1 + type: Transform +- uid: 252 + type: ShuttleWindow + components: + - pos: 12.5,28.5 + parent: 1 + type: Transform +- uid: 253 + type: ShuttleWindow + components: + - pos: 13.5,28.5 + parent: 1 + type: Transform +- uid: 254 + type: ShuttleWindow + components: + - pos: 14.5,28.5 + parent: 1 + type: Transform +- uid: 255 + type: ShuttleWindow + components: + - pos: 15.5,28.5 + parent: 1 + type: Transform +- uid: 256 + type: ShuttleWindow + components: + - pos: 16.5,28.5 + parent: 1 + type: Transform +- uid: 257 + type: ShuttleWindow + components: + - pos: 16.5,27.5 + parent: 1 + type: Transform +- uid: 258 + type: ShuttleWindow + components: + - pos: 17.5,27.5 + parent: 1 + type: Transform +- uid: 259 + type: ShuttleWindow + components: + - pos: 18.5,27.5 + parent: 1 + type: Transform +- uid: 260 + type: ShuttleWindow + components: + - pos: 18.5,26.5 + parent: 1 + type: Transform +- uid: 261 + type: ShuttleWindow + components: + - pos: 19.5,26.5 + parent: 1 + type: Transform +- uid: 262 + type: ShuttleWindow + components: + - pos: 19.5,25.5 + parent: 1 + type: Transform +- uid: 263 + type: ShuttleWindow + components: + - pos: 19.5,24.5 + parent: 1 + type: Transform +- uid: 264 + type: WallShuttle + components: + - pos: 15.5,-8.5 + parent: 1 + type: Transform +- uid: 265 + type: WallShuttle + components: + - pos: 12.5,-7.5 + parent: 1 + type: Transform +- uid: 266 + type: WallShuttle + components: + - pos: 18.5,-7.5 + parent: 1 + type: Transform +- uid: 267 + type: Grille + components: + - pos: 17.5,-3.5 + parent: 1 + type: Transform +- uid: 268 + type: WallShuttle + components: + - pos: 6.5,-3.5 + parent: 1 + type: Transform +- uid: 269 + type: WallShuttle + components: + - pos: 7.5,-3.5 + parent: 1 + type: Transform +- uid: 270 + type: WallShuttle + components: + - pos: 18.5,-10.5 + parent: 1 + type: Transform +- uid: 271 + type: WallShuttle + components: + - pos: 18.5,-11.5 + parent: 1 + type: Transform +- uid: 272 + type: WallShuttle + components: + - pos: 17.5,-11.5 + parent: 1 + type: Transform +- uid: 273 + type: WallShuttle + components: + - pos: 16.5,-11.5 + parent: 1 + type: Transform +- uid: 274 + type: Grille + components: + - pos: 17.5,-14.5 + parent: 1 + type: Transform +- uid: 275 + type: WallShuttle + components: + - pos: 15.5,-14.5 + parent: 1 + type: Transform +- uid: 276 + type: WallShuttle + components: + - pos: 15.5,-15.5 + parent: 1 + type: Transform +- uid: 277 + type: WallShuttle + components: + - pos: 14.5,-15.5 + parent: 1 + type: Transform +- uid: 278 + type: WallShuttle + components: + - pos: 4.5,-10.5 + parent: 1 + type: Transform +- uid: 279 + type: WallShuttle + components: + - pos: 4.5,-8.5 + parent: 1 + type: Transform +- uid: 280 + type: WallShuttle + components: + - pos: 4.5,-9.5 + parent: 1 + type: Transform +- uid: 281 + type: WallShuttle + components: + - pos: 17.5,-8.5 + parent: 1 + type: Transform +- uid: 282 + type: WallShuttle + components: + - pos: 18.5,-4.5 + parent: 1 + type: Transform +- uid: 283 + type: ShuttleWindow + components: + - pos: 15.5,-3.5 + parent: 1 + type: Transform +- uid: 284 + type: ShuttleWindow + components: + - pos: 16.5,-3.5 + parent: 1 + type: Transform +- uid: 285 + type: Grille + components: + - pos: 7.5,-7.5 + parent: 1 + type: Transform +- uid: 286 + type: WallShuttle + components: + - pos: 18.5,-3.5 + parent: 1 + type: Transform +- uid: 287 + type: WallShuttle + components: + - pos: 18.5,-13.5 + parent: 1 + type: Transform +- uid: 288 + type: Grille + components: + - pos: 15.5,-12.5 + parent: 1 + type: Transform +- uid: 289 + type: ShuttleWindow + components: + - pos: 15.5,-12.5 + parent: 1 + type: Transform +- uid: 290 + type: ShuttleWindow + components: + - pos: 16.5,-14.5 + parent: 1 + type: Transform +- uid: 291 + type: Grille + components: + - pos: 12.5,-11.5 + parent: 1 + type: Transform +- uid: 292 + type: WallShuttle + components: + - pos: 18.5,-12.5 + parent: 1 + type: Transform +- uid: 293 + type: WallShuttle + components: + - pos: 18.5,-8.5 + parent: 1 + type: Transform +- uid: 294 + type: Grille + components: + - pos: 15.5,-3.5 + parent: 1 + type: Transform +- uid: 295 + type: ShuttleWindow + components: + - pos: 12.5,-11.5 + parent: 1 + type: Transform +- uid: 296 + type: ShuttleWindow + components: + - pos: 17.5,-14.5 + parent: 1 + type: Transform +- uid: 297 + type: Grille + components: + - pos: 14.5,-11.5 + parent: 1 + type: Transform +- uid: 298 + type: ShuttleWindow + components: + - pos: 14.5,-11.5 + parent: 1 + type: Transform +- uid: 299 + type: Grille + components: + - pos: 16.5,-3.5 + parent: 1 + type: Transform +- uid: 300 + type: WallShuttle + components: + - pos: 7.5,-11.5 + parent: 1 + type: Transform +- uid: 301 + type: Grille + components: + - pos: 5.5,-11.5 + parent: 1 + type: Transform +- uid: 302 + type: WallShuttle + components: + - pos: 0.5,-7.5 + parent: 1 + type: Transform +- uid: 303 + type: ShuttleWindow + components: + - pos: 0.5,-8.5 + parent: 1 + type: Transform +- uid: 304 + type: ShuttleWindow + components: + - pos: 0.5,-9.5 + parent: 1 + type: Transform +- uid: 305 + type: ShuttleWindow + components: + - pos: 0.5,-10.5 + parent: 1 + type: Transform +- uid: 306 + type: Grille + components: + - pos: 0.5,-10.5 + parent: 1 + type: Transform +- uid: 307 + type: Grille + components: + - pos: 0.5,-9.5 + parent: 1 + type: Transform +- uid: 308 + type: Grille + components: + - pos: 0.5,-8.5 + parent: 1 + type: Transform +- uid: 309 + type: WallShuttle + components: + - pos: 0.5,-11.5 + parent: 1 + type: Transform +- uid: 310 + type: WallShuttle + components: + - pos: 0.5,-12.5 + parent: 1 + type: Transform +- uid: 311 + type: WallShuttle + components: + - pos: 1.5,-12.5 + parent: 1 + type: Transform +- uid: 312 + type: WallShuttle + components: + - pos: 1.5,-13.5 + parent: 1 + type: Transform +- uid: 313 + type: ShuttleWindow + components: + - pos: 12.5,-4.5 + parent: 1 + type: Transform +- uid: 314 + type: WallShuttle + components: + - pos: 11.5,-7.5 + parent: 1 + type: Transform +- uid: 315 + type: WallShuttle + components: + - pos: 15.5,-11.5 + parent: 1 + type: Transform +- uid: 316 + type: WallShuttle + components: + - pos: 18.5,-14.5 + parent: 1 + type: Transform +- uid: 317 + type: Grille + components: + - pos: 16.5,-14.5 + parent: 1 + type: Transform +- uid: 318 + type: WallShuttle + components: + - pos: 5.5,-3.5 + parent: 1 + type: Transform +- uid: 319 + type: WallShuttle + components: + - pos: 4.5,-4.5 + parent: 1 + type: Transform +- uid: 320 + type: WallShuttle + components: + - pos: 4.5,-5.5 + parent: 1 + type: Transform +- uid: 321 + type: WallShuttle + components: + - pos: 8.5,-7.5 + parent: 1 + type: Transform +- uid: 322 + type: WallShuttle + components: + - pos: 8.5,-6.5 + parent: 1 + type: Transform +- uid: 323 + type: WallShuttle + components: + - pos: 4.5,-6.5 + parent: 1 + type: Transform +- uid: 324 + type: WallShuttle + components: + - pos: 4.5,-7.5 + parent: 1 + type: Transform +- uid: 325 + type: WallShuttle + components: + - pos: 9.5,-3.5 + parent: 1 + type: Transform +- uid: 326 + type: WallShuttle + components: + - pos: 10.5,-3.5 + parent: 1 + type: Transform +- uid: 327 + type: WallShuttle + components: + - pos: 11.5,-3.5 + parent: 1 + type: Transform +- uid: 328 + type: WallShuttle + components: + - pos: 12.5,-3.5 + parent: 1 + type: Transform +- uid: 329 + type: WallShuttle + components: + - pos: 8.5,-5.5 + parent: 1 + type: Transform +- uid: 330 + type: WallShuttle + components: + - pos: 8.5,-4.5 + parent: 1 + type: Transform +- uid: 331 + type: WallShuttle + components: + - pos: 9.5,-7.5 + parent: 1 + type: Transform +- uid: 332 + type: Grille + components: + - pos: 12.5,-6.5 + parent: 1 + type: Transform +- uid: 333 + type: WallShuttle + components: + - pos: 11.5,-15.5 + parent: 1 + type: Transform +- uid: 334 + type: WallShuttle + components: + - pos: 10.5,-15.5 + parent: 1 + type: Transform +- uid: 335 + type: WallShuttle + components: + - pos: 10.5,-14.5 + parent: 1 + type: Transform +- uid: 336 + type: WallShuttle + components: + - pos: 10.5,-13.5 + parent: 1 + type: Transform +- uid: 337 + type: WallShuttle + components: + - pos: 7.5,-15.5 + parent: 1 + type: Transform +- uid: 338 + type: ShuttleWindow + components: + - pos: 1.5,-15.5 + parent: 1 + type: Transform +- uid: 339 + type: WallShuttle + components: + - pos: 1.5,-17.5 + parent: 1 + type: Transform +- uid: 340 + type: WallShuttle + components: + - pos: 1.5,-16.5 + parent: 1 + type: Transform +- uid: 341 + type: Grille + components: + - pos: 1.5,-15.5 + parent: 1 + type: Transform +- uid: 342 + type: ShuttleWindow + components: + - pos: 1.5,-14.5 + parent: 1 + type: Transform +- uid: 343 + type: Grille + components: + - pos: 1.5,-14.5 + parent: 1 + type: Transform +- uid: 344 + type: WallShuttle + components: + - pos: 2.5,-17.5 + parent: 1 + type: Transform +- uid: 345 + type: WallShuttle + components: + - pos: 2.5,-18.5 + parent: 1 + type: Transform +- uid: 346 + type: Grille + components: + - pos: 12.5,-4.5 + parent: 1 + type: Transform +- uid: 347 + type: ShuttleWindow + components: + - pos: 17.5,-3.5 + parent: 1 + type: Transform +- uid: 348 + type: WallShuttle + components: + - pos: 12.5,-8.5 + parent: 1 + type: Transform +- uid: 349 + type: WallShuttle + components: + - pos: 18.5,-6.5 + parent: 1 + type: Transform +- uid: 350 + type: WallShuttle + components: + - pos: 18.5,-5.5 + parent: 1 + type: Transform +- uid: 351 + type: WallShuttle + components: + - pos: 3.5,-18.5 + parent: 1 + type: Transform +- uid: 352 + type: WallShuttle + components: + - pos: 7.5,-18.5 + parent: 1 + type: Transform +- uid: 353 + type: WallShuttle + components: + - pos: 22.5,-7.5 + parent: 1 + type: Transform +- uid: 354 + type: ShuttleWindow + components: + - pos: 22.5,-8.5 + parent: 1 + type: Transform +- uid: 355 + type: ShuttleWindow + components: + - pos: 22.5,-9.5 + parent: 1 + type: Transform +- uid: 356 + type: ShuttleWindow + components: + - pos: 22.5,-10.5 + parent: 1 + type: Transform +- uid: 357 + type: Grille + components: + - pos: 22.5,-10.5 + parent: 1 + type: Transform +- uid: 358 + type: Grille + components: + - pos: 22.5,-9.5 + parent: 1 + type: Transform +- uid: 359 + type: Grille + components: + - pos: 22.5,-8.5 + parent: 1 + type: Transform +- uid: 360 + type: WallShuttle + components: + - pos: 22.5,-11.5 + parent: 1 + type: Transform +- uid: 361 + type: WallShuttle + components: + - pos: 22.5,-12.5 + parent: 1 + type: Transform +- uid: 362 + type: WallShuttle + components: + - pos: 21.5,-12.5 + parent: 1 + type: Transform +- uid: 363 + type: WallShuttle + components: + - pos: 21.5,-13.5 + parent: 1 + type: Transform +- uid: 364 + type: Grille + components: + - pos: 21.5,-15.5 + parent: 1 + type: Transform +- uid: 365 + type: Grille + components: + - pos: 21.5,-14.5 + parent: 1 + type: Transform +- uid: 366 + type: WallShuttle + components: + - pos: 21.5,-16.5 + parent: 1 + type: Transform +- uid: 367 + type: WallShuttle + components: + - pos: 21.5,-17.5 + parent: 1 + type: Transform +- uid: 368 + type: WallShuttle + components: + - pos: 20.5,-17.5 + parent: 1 + type: Transform +- uid: 369 + type: WallShuttle + components: + - pos: 20.5,-18.5 + parent: 1 + type: Transform +- uid: 370 + type: WallShuttle + components: + - pos: 6.5,-18.5 + parent: 1 + type: Transform +- uid: 371 + type: WallShuttle + components: + - pos: 19.5,-18.5 + parent: 1 + type: Transform +- uid: 372 + type: Grille + components: + - pos: 5.5,-7.5 + parent: 1 + type: Transform +- uid: 373 + type: ShuttleWindow + components: + - pos: 5.5,-7.5 + parent: 1 + type: Transform +- uid: 374 + type: WallShuttle + components: + - pos: 18.5,-9.5 + parent: 1 + type: Transform +- uid: 375 + type: ShuttleWindow + components: + - pos: 7.5,-7.5 + parent: 1 + type: Transform +- uid: 376 + type: WallShuttle + components: + - pos: 7.5,-14.5 + parent: 1 + type: Transform +- uid: 377 + type: WallShuttle + components: + - pos: 6.5,-14.5 + parent: 1 + type: Transform +- uid: 378 + type: WallShuttle + components: + - pos: 4.5,-12.5 + parent: 1 + type: Transform +- uid: 379 + type: WallShuttle + components: + - pos: 4.5,-11.5 + parent: 1 + type: Transform +- uid: 380 + type: WallShuttle + components: + - pos: 5.5,-14.5 + parent: 1 + type: Transform +- uid: 381 + type: WallShuttle + components: + - pos: 4.5,-14.5 + parent: 1 + type: Transform +- uid: 382 + type: WallShuttle + components: + - pos: 4.5,-13.5 + parent: 1 + type: Transform +- uid: 383 + type: WallShuttle + components: + - pos: 11.5,-11.5 + parent: 1 + type: Transform +- uid: 384 + type: WallShuttle + components: + - pos: 10.5,-11.5 + parent: 1 + type: Transform +- uid: 385 + type: WallShuttle + components: + - pos: 10.5,-12.5 + parent: 1 + type: Transform +- uid: 386 + type: WallShuttle + components: + - pos: 8.5,-15.5 + parent: 1 + type: Transform +- uid: 387 + type: WallShuttle + components: + - pos: 9.5,-15.5 + parent: 1 + type: Transform +- uid: 388 + type: WallShuttle + components: + - pos: 8.5,-11.5 + parent: 1 + type: Transform +- uid: 389 + type: WallShuttle + components: + - pos: 7.5,-12.5 + parent: 1 + type: Transform +- uid: 390 + type: WallShuttle + components: + - pos: 7.5,-13.5 + parent: 1 + type: Transform +- uid: 391 + type: ShuttleWindow + components: + - pos: 5.5,-11.5 + parent: 1 + type: Transform +- uid: 392 + type: ShuttleWindow + components: + - pos: 21.5,-15.5 + parent: 1 + type: Transform +- uid: 393 + type: ShuttleWindow + components: + - pos: 21.5,-14.5 + parent: 1 + type: Transform +- uid: 394 + type: WallShuttle + components: + - pos: 8.5,-18.5 + parent: 1 + type: Transform +- uid: 395 + type: WallShuttle + components: + - pos: 9.5,-18.5 + parent: 1 + type: Transform +- uid: 396 + type: WallShuttle + components: + - pos: 10.5,-18.5 + parent: 1 + type: Transform +- uid: 397 + type: WallShuttle + components: + - pos: 11.5,-18.5 + parent: 1 + type: Transform +- uid: 398 + type: WallShuttle + components: + - pos: 12.5,-18.5 + parent: 1 + type: Transform +- uid: 399 + type: WallShuttle + components: + - pos: 13.5,-18.5 + parent: 1 + type: Transform +- uid: 400 + type: WallShuttle + components: + - pos: 14.5,-18.5 + parent: 1 + type: Transform +- uid: 401 + type: WallShuttle + components: + - pos: 15.5,-18.5 + parent: 1 + type: Transform +- uid: 402 + type: WallShuttle + components: + - pos: 16.5,-18.5 + parent: 1 + type: Transform +- uid: 403 + type: WallShuttle + components: + - pos: 20.5,-19.5 + parent: 1 + type: Transform +- uid: 404 + type: WallShuttle + components: + - pos: 20.5,-20.5 + parent: 1 + type: Transform +- uid: 405 + type: WallShuttle + components: + - pos: 20.5,-21.5 + parent: 1 + type: Transform +- uid: 406 + type: WallShuttle + components: + - pos: 19.5,-21.5 + parent: 1 + type: Transform +- uid: 407 + type: Grille + components: + - pos: 19.5,-24.5 + parent: 1 + type: Transform +- uid: 408 + type: Grille + components: + - pos: 19.5,-23.5 + parent: 1 + type: Transform +- uid: 409 + type: Grille + components: + - pos: 19.5,-22.5 + parent: 1 + type: Transform +- uid: 410 + type: ShuttleWindow + components: + - pos: 12.5,-27.5 + parent: 1 + type: Transform +- uid: 411 + type: WallShuttle + components: + - pos: 18.5,-25.5 + parent: 1 + type: Transform +- uid: 412 + type: ShuttleWindow + components: + - pos: 12.5,-26.5 + parent: 1 + type: Transform +- uid: 413 + type: WallShuttle + components: + - pos: 5.5,-26.5 + parent: 1 + type: Transform +- uid: 414 + type: WallShuttle + components: + - pos: 8.5,-25.5 + parent: 1 + type: Transform +- uid: 415 + type: WallShuttle + components: + - pos: 16.5,-19.5 + parent: 1 + type: Transform +- uid: 416 + type: WallShuttle + components: + - pos: 16.5,-20.5 + parent: 1 + type: Transform +- uid: 417 + type: WallShuttle + components: + - pos: 16.5,-21.5 + parent: 1 + type: Transform +- uid: 418 + type: WallShuttle + components: + - pos: 12.5,-19.5 + parent: 1 + type: Transform +- uid: 419 + type: WallShuttle + components: + - pos: 12.5,-20.5 + parent: 1 + type: Transform +- uid: 420 + type: WallShuttle + components: + - pos: 12.5,-21.5 + parent: 1 + type: Transform +- uid: 421 + type: WallShuttle + components: + - pos: 12.5,-22.5 + parent: 1 + type: Transform +- uid: 422 + type: WallShuttle + components: + - pos: 12.5,-23.5 + parent: 1 + type: Transform +- uid: 423 + type: WallShuttle + components: + - pos: 12.5,-24.5 + parent: 1 + type: Transform +- uid: 424 + type: Grille + components: + - pos: 10.5,-26.5 + parent: 1 + type: Transform +- uid: 425 + type: WallShuttle + components: + - pos: 12.5,-25.5 + parent: 1 + type: Transform +- uid: 426 + type: Grille + components: + - pos: 12.5,-26.5 + parent: 1 + type: Transform +- uid: 427 + type: WallShuttle + components: + - pos: 4.5,-25.5 + parent: 1 + type: Transform +- uid: 428 + type: Grille + components: + - pos: 12.5,-27.5 + parent: 1 + type: Transform +- uid: 429 + type: Grille + components: + - pos: 3.5,-22.5 + parent: 1 + type: Transform +- uid: 430 + type: Grille + components: + - pos: 3.5,-23.5 + parent: 1 + type: Transform +- uid: 431 + type: Grille + components: + - pos: 3.5,-24.5 + parent: 1 + type: Transform +- uid: 432 + type: WallShuttle + components: + - pos: 3.5,-21.5 + parent: 1 + type: Transform +- uid: 433 + type: WallShuttle + components: + - pos: 2.5,-21.5 + parent: 1 + type: Transform +- uid: 434 + type: WallShuttle + components: + - pos: 2.5,-20.5 + parent: 1 + type: Transform +- uid: 435 + type: WallShuttle + components: + - pos: 2.5,-19.5 + parent: 1 + type: Transform +- uid: 436 + type: WallShuttle + components: + - pos: 6.5,-19.5 + parent: 1 + type: Transform +- uid: 437 + type: WallShuttle + components: + - pos: 6.5,-20.5 + parent: 1 + type: Transform +- uid: 438 + type: WallShuttle + components: + - pos: 6.5,-21.5 + parent: 1 + type: Transform +- uid: 439 + type: AirlockExternalGlassShuttleEmergencyLocked + components: + - rot: 1.5707963267948966 rad + pos: 22.5,-2.5 + parent: 1 + type: Transform + - fixtures: + - shape: !type:PolygonShape + vertices: + - 0.49,-0.49 + - 0.49,0.49 + - -0.49,0.49 + - -0.49,-0.49 + mask: + - Impassable + - MidImpassable + - HighImpassable + - LowImpassable + - InteractImpassable + layer: + - MidImpassable + - HighImpassable + - BulletImpassable + - InteractImpassable + - Opaque + density: 100 + - shape: !type:PhysShapeCircle + radius: 0.2 + position: 0,-0.5 + hard: False + id: docking + type: Fixtures +- uid: 440 + type: WallShuttle + components: + - pos: 17.5,-26.5 + parent: 1 + type: Transform +- uid: 441 + type: WallShuttle + components: + - pos: 14.5,-25.5 + parent: 1 + type: Transform +- uid: 442 + type: WallShuttle + components: + - pos: 7.5,-27.5 + parent: 1 + type: Transform +- uid: 443 + type: WallShuttle + components: + - pos: 7.5,-26.5 + parent: 1 + type: Transform +- uid: 444 + type: WallShuttle + components: + - pos: 7.5,-25.5 + parent: 1 + type: Transform +- uid: 445 + type: WallShuttle + components: + - pos: 13.5,-25.5 + parent: 1 + type: Transform +- uid: 446 + type: WallShuttle + components: + - pos: 9.5,-25.5 + parent: 1 + type: Transform +- uid: 447 + type: WallShuttle + components: + - pos: 10.5,-25.5 + parent: 1 + type: Transform +- uid: 448 + type: WallShuttle + components: + - pos: 15.5,-25.5 + parent: 1 + type: Transform +- uid: 449 + type: WallShuttle + components: + - pos: 15.5,-26.5 + parent: 1 + type: Transform +- uid: 450 + type: WallShuttle + components: + - pos: 15.5,-27.5 + parent: 1 + type: Transform +- uid: 451 + type: Grille + components: + - pos: 10.5,-27.5 + parent: 1 + type: Transform +- uid: 452 + type: ShuttleWindow + components: + - pos: 10.5,-26.5 + parent: 1 + type: Transform +- uid: 453 + type: ShuttleWindow + components: + - pos: 10.5,-27.5 + parent: 1 + type: Transform +- uid: 454 + type: WallShuttle + components: + - pos: 3.5,-25.5 + parent: 1 + type: Transform +- uid: 455 + type: WallShuttle + components: + - pos: 4.5,-26.5 + parent: 1 + type: Transform +- uid: 456 + type: WallShuttle + components: + - pos: 5.5,-27.5 + parent: 1 + type: Transform +- uid: 457 + type: WallShuttle + components: + - pos: 6.5,-27.5 + parent: 1 + type: Transform +- uid: 458 + type: WallShuttle + components: + - pos: 7.5,-28.5 + parent: 1 + type: Transform +- uid: 459 + type: WallShuttle + components: + - pos: 8.5,-28.5 + parent: 1 + type: Transform +- uid: 460 + type: WallShuttle + components: + - pos: 9.5,-28.5 + parent: 1 + type: Transform +- uid: 461 + type: WallShuttle + components: + - pos: 10.5,-28.5 + parent: 1 + type: Transform +- uid: 462 + type: WallShuttle + components: + - pos: 11.5,-28.5 + parent: 1 + type: Transform +- uid: 463 + type: WallShuttle + components: + - pos: 12.5,-28.5 + parent: 1 + type: Transform +- uid: 464 + type: WallShuttle + components: + - pos: 13.5,-28.5 + parent: 1 + type: Transform +- uid: 465 + type: WallShuttle + components: + - pos: 14.5,-28.5 + parent: 1 + type: Transform +- uid: 466 + type: WallShuttle + components: + - pos: 15.5,-28.5 + parent: 1 + type: Transform +- uid: 467 + type: WallShuttle + components: + - pos: 16.5,-27.5 + parent: 1 + type: Transform +- uid: 468 + type: WallShuttle + components: + - pos: 17.5,-27.5 + parent: 1 + type: Transform +- uid: 469 + type: WallShuttle + components: + - pos: 18.5,-26.5 + parent: 1 + type: Transform +- uid: 470 + type: WallShuttle + components: + - pos: 19.5,-25.5 + parent: 1 + type: Transform +- uid: 471 + type: AirlockExternalGlassShuttleEmergencyLocked + components: + - rot: 1.5707963267948966 rad + pos: 22.5,-4.5 + parent: 1 + type: Transform + - fixtures: + - shape: !type:PolygonShape + vertices: + - 0.49,-0.49 + - 0.49,0.49 + - -0.49,0.49 + - -0.49,-0.49 + mask: + - Impassable + - MidImpassable + - HighImpassable + - LowImpassable + - InteractImpassable + layer: + - MidImpassable + - HighImpassable + - BulletImpassable + - InteractImpassable + - Opaque + density: 100 + - shape: !type:PhysShapeCircle + radius: 0.2 + position: 0,-0.5 + hard: False + id: docking + type: Fixtures +- uid: 472 + type: AirlockExternalGlassShuttleEmergencyLocked + components: + - rot: 1.5707963267948966 rad + pos: 22.5,3.5 + parent: 1 + type: Transform + - fixtures: + - shape: !type:PolygonShape + vertices: + - 0.49,-0.49 + - 0.49,0.49 + - -0.49,0.49 + - -0.49,-0.49 + mask: + - Impassable + - MidImpassable + - HighImpassable + - LowImpassable + - InteractImpassable + layer: + - MidImpassable + - HighImpassable + - BulletImpassable + - InteractImpassable + - Opaque + density: 100 + - shape: !type:PhysShapeCircle + radius: 0.2 + position: 0,-0.5 + hard: False + id: docking + type: Fixtures +- uid: 473 + type: AirlockExternalGlassShuttleEmergencyLocked + components: + - rot: 1.5707963267948966 rad + pos: 22.5,5.5 + parent: 1 + type: Transform + - fixtures: + - shape: !type:PolygonShape + vertices: + - 0.49,-0.49 + - 0.49,0.49 + - -0.49,0.49 + - -0.49,-0.49 + mask: + - Impassable + - MidImpassable + - HighImpassable + - LowImpassable + - InteractImpassable + layer: + - MidImpassable + - HighImpassable + - BulletImpassable + - InteractImpassable + - Opaque + density: 100 + - shape: !type:PhysShapeCircle + radius: 0.2 + position: 0,-0.5 + hard: False + id: docking + type: Fixtures +- uid: 474 + type: AirlockExternalGlassShuttleEmergencyLocked + components: + - rot: -1.5707963267948966 rad + pos: 0.5,5.5 + parent: 1 + type: Transform + - fixtures: + - shape: !type:PolygonShape + vertices: + - 0.49,-0.49 + - 0.49,0.49 + - -0.49,0.49 + - -0.49,-0.49 + mask: + - Impassable + - MidImpassable + - HighImpassable + - LowImpassable + - InteractImpassable + layer: + - MidImpassable + - HighImpassable + - BulletImpassable + - InteractImpassable + - Opaque + density: 100 + - shape: !type:PhysShapeCircle + radius: 0.2 + position: 0,-0.5 + hard: False + id: docking + type: Fixtures +- uid: 475 + type: AirlockExternalGlassShuttleEmergencyLocked + components: + - rot: -1.5707963267948966 rad + pos: 0.5,3.5 + parent: 1 + type: Transform + - fixtures: + - shape: !type:PolygonShape + vertices: + - 0.49,-0.49 + - 0.49,0.49 + - -0.49,0.49 + - -0.49,-0.49 + mask: + - Impassable + - MidImpassable + - HighImpassable + - LowImpassable + - InteractImpassable + layer: + - MidImpassable + - HighImpassable + - BulletImpassable + - InteractImpassable + - Opaque + density: 100 + - shape: !type:PhysShapeCircle + radius: 0.2 + position: 0,-0.5 + hard: False + id: docking + type: Fixtures +- uid: 476 + type: AirlockExternalGlassShuttleEmergencyLocked + components: + - rot: -1.5707963267948966 rad + pos: 0.5,-2.5 + parent: 1 + type: Transform + - fixtures: + - shape: !type:PolygonShape + vertices: + - 0.49,-0.49 + - 0.49,0.49 + - -0.49,0.49 + - -0.49,-0.49 + mask: + - Impassable + - MidImpassable + - HighImpassable + - LowImpassable + - InteractImpassable + layer: + - MidImpassable + - HighImpassable + - BulletImpassable + - InteractImpassable + - Opaque + density: 100 + - shape: !type:PhysShapeCircle + radius: 0.2 + position: 0,-0.5 + hard: False + id: docking + type: Fixtures +- uid: 477 + type: AirlockExternalGlassShuttleEmergencyLocked + components: + - rot: -1.5707963267948966 rad + pos: 0.5,-4.5 + parent: 1 + type: Transform + - fixtures: + - shape: !type:PolygonShape + vertices: + - 0.49,-0.49 + - 0.49,0.49 + - -0.49,0.49 + - -0.49,-0.49 + mask: + - Impassable + - MidImpassable + - HighImpassable + - LowImpassable + - InteractImpassable + layer: + - MidImpassable + - HighImpassable + - BulletImpassable + - InteractImpassable + - Opaque + density: 100 + - shape: !type:PhysShapeCircle + radius: 0.2 + position: 0,-0.5 + hard: False + id: docking + type: Fixtures +- uid: 478 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 1.5,-3.5 + parent: 1 + type: Transform +- uid: 479 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 2.5,-3.5 + parent: 1 + type: Transform +- uid: 480 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 3.5,-3.5 + parent: 1 + type: Transform +- uid: 481 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 4.5,-2.5 + parent: 1 + type: Transform +- uid: 482 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 4.5,-1.5 + parent: 1 + type: Transform +- uid: 483 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 4.5,2.5 + parent: 1 + type: Transform +- uid: 484 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 4.5,3.5 + parent: 1 + type: Transform +- uid: 485 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 1.5,4.5 + parent: 1 + type: Transform +- uid: 486 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 2.5,4.5 + parent: 1 + type: Transform +- uid: 487 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 3.5,4.5 + parent: 1 + type: Transform +- uid: 488 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 2.5,13.5 + parent: 1 + type: Transform +- uid: 489 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 3.5,13.5 + parent: 1 + type: Transform +- uid: 490 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 6.5,17.5 + parent: 1 + type: Transform +- uid: 491 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 6.5,16.5 + parent: 1 + type: Transform +- uid: 492 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 4.5,19.5 + parent: 1 + type: Transform +- uid: 493 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 5.5,19.5 + parent: 1 + type: Transform +- uid: 494 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 4.5,22.5 + parent: 1 + type: Transform +- uid: 495 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 5.5,22.5 + parent: 1 + type: Transform +- uid: 496 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 8.5,22.5 + parent: 1 + type: Transform +- uid: 497 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 14.5,22.5 + parent: 1 + type: Transform +- uid: 498 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 17.5,22.5 + parent: 1 + type: Transform +- uid: 499 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 18.5,22.5 + parent: 1 + type: Transform +- uid: 500 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 17.5,19.5 + parent: 1 + type: Transform +- uid: 501 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 18.5,19.5 + parent: 1 + type: Transform +- uid: 502 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 16.5,17.5 + parent: 1 + type: Transform +- uid: 503 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 16.5,16.5 + parent: 1 + type: Transform +- uid: 504 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 19.5,13.5 + parent: 1 + type: Transform +- uid: 505 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 20.5,13.5 + parent: 1 + type: Transform +- uid: 506 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 19.5,4.5 + parent: 1 + type: Transform +- uid: 507 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 20.5,4.5 + parent: 1 + type: Transform +- uid: 508 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 21.5,4.5 + parent: 1 + type: Transform +- uid: 509 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 5.5,4.5 + parent: 1 + type: Transform +- uid: 510 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 6.5,4.5 + parent: 1 + type: Transform +- uid: 511 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 5.5,7.5 + parent: 1 + type: Transform +- uid: 512 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 6.5,7.5 + parent: 1 + type: Transform +- uid: 513 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 16.5,7.5 + parent: 1 + type: Transform +- uid: 514 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 17.5,7.5 + parent: 1 + type: Transform +- uid: 515 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 16.5,4.5 + parent: 1 + type: Transform +- uid: 516 + type: FirelockGlass + components: + - rot: -1.5707963267948966 rad + pos: 17.5,4.5 + parent: 1 + type: Transform +- uid: 517 + type: FirelockEdge + components: + - rot: 3.141592653589793 rad + pos: 9.5,24.5 + parent: 1 + type: Transform +- uid: 518 + type: FirelockEdge + components: + - rot: -1.5707963267948966 rad + pos: 10.5,25.5 + parent: 1 + type: Transform +- uid: 519 + type: FirelockEdge + components: + - rot: 1.5707963267948966 rad + pos: 12.5,25.5 + parent: 1 + type: Transform +- uid: 520 + type: FirelockEdge + components: + - rot: 3.141592653589793 rad + pos: 9.5,10.5 + parent: 1 + type: Transform +- uid: 521 + type: FirelockEdge + components: + - rot: 3.141592653589793 rad + pos: 13.5,10.5 + parent: 1 + type: Transform +- uid: 522 + type: FirelockGlass + components: + - rot: 3.141592653589793 rad + pos: 11.5,7.5 + parent: 1 + type: Transform +- uid: 523 + type: FirelockEdge + components: + - pos: 9.5,4.5 + parent: 1 + type: Transform +- uid: 524 + type: FirelockEdge + components: + - pos: 10.5,4.5 + parent: 1 + type: Transform +- uid: 525 + type: FirelockEdge + components: + - pos: 11.5,4.5 + parent: 1 + type: Transform +- uid: 526 + type: FirelockEdge + components: + - pos: 12.5,4.5 + parent: 1 + type: Transform +- uid: 527 + type: FirelockEdge + components: + - pos: 13.5,4.5 + parent: 1 + type: Transform +- uid: 528 + type: Window + components: + - pos: 11.5,0.5 + parent: 1 + type: Transform +- uid: 529 + type: FirelockGlass + components: + - pos: 18.5,2.5 + parent: 1 + type: Transform +- uid: 530 + type: FirelockGlass + components: + - pos: 18.5,3.5 + parent: 1 + type: Transform +- uid: 531 + type: FirelockGlass + components: + - pos: 18.5,-1.5 + parent: 1 + type: Transform +- uid: 532 + type: FirelockGlass + components: + - pos: 18.5,-2.5 + parent: 1 + type: Transform +- uid: 533 + type: FirelockGlass + components: + - pos: 19.5,-3.5 + parent: 1 + type: Transform +- uid: 534 + type: FirelockGlass + components: + - pos: 20.5,-3.5 + parent: 1 + type: Transform +- uid: 535 + type: FirelockGlass + components: + - pos: 21.5,-3.5 + parent: 1 + type: Transform +- uid: 536 + type: FirelockGlass + components: + - pos: 19.5,-12.5 + parent: 1 + type: Transform +- uid: 537 + type: FirelockGlass + components: + - pos: 20.5,-12.5 + parent: 1 + type: Transform +- uid: 538 + type: FirelockGlass + components: + - pos: 2.5,-12.5 + parent: 1 + type: Transform +- uid: 539 + type: FirelockGlass + components: + - pos: 3.5,-12.5 + parent: 1 + type: Transform +- uid: 540 + type: FirelockGlass + components: + - pos: 7.5,-16.5 + parent: 1 + type: Transform +- uid: 541 + type: FirelockGlass + components: + - pos: 7.5,-17.5 + parent: 1 + type: Transform +- uid: 542 + type: FirelockGlass + components: + - pos: 4.5,-18.5 + parent: 1 + type: Transform +- uid: 543 + type: FirelockGlass + components: + - pos: 5.5,-18.5 + parent: 1 + type: Transform +- uid: 544 + type: FirelockGlass + components: + - pos: 4.5,-21.5 + parent: 1 + type: Transform +- uid: 545 + type: FirelockGlass + components: + - pos: 5.5,-21.5 + parent: 1 + type: Transform +- uid: 546 + type: FirelockGlass + components: + - pos: 17.5,-21.5 + parent: 1 + type: Transform +- uid: 547 + type: FirelockGlass + components: + - pos: 18.5,-21.5 + parent: 1 + type: Transform +- uid: 548 + type: FirelockGlass + components: + - pos: 17.5,-18.5 + parent: 1 + type: Transform +- uid: 549 + type: FirelockGlass + components: + - pos: 18.5,-18.5 + parent: 1 + type: Transform +- uid: 550 + type: ShuttleWindow + components: + - pos: 19.5,-22.5 + parent: 1 + type: Transform +- uid: 551 + type: ShuttleWindow + components: + - pos: 19.5,-23.5 + parent: 1 + type: Transform +- uid: 552 + type: ShuttleWindow + components: + - pos: 19.5,-24.5 + parent: 1 + type: Transform +- uid: 553 + type: ShuttleWindow + components: + - pos: 3.5,-24.5 + parent: 1 + type: Transform +- uid: 554 + type: ShuttleWindow + components: + - pos: 3.5,-23.5 + parent: 1 + type: Transform +- uid: 555 + type: ShuttleWindow + components: + - pos: 3.5,-22.5 + parent: 1 + type: Transform +- uid: 556 + type: FirelockEdge + components: + - rot: 3.141592653589793 rad + pos: 6.5,-25.5 + parent: 1 + type: Transform +- uid: 557 + type: FirelockEdge + components: + - pos: 10.5,-21.5 + parent: 1 + type: Transform +- uid: 558 + type: FirelockGlass + components: + - pos: 11.5,-25.5 + parent: 1 + type: Transform +- uid: 559 + type: FirelockEdge + components: + - rot: 3.141592653589793 rad + pos: 16.5,-25.5 + parent: 1 + type: Transform +- uid: 560 + type: FirelockEdge + components: + - pos: 15.5,-21.5 + parent: 1 + type: Transform +- uid: 561 + type: FirelockEdge + components: + - pos: 14.5,-21.5 + parent: 1 + type: Transform +- uid: 562 + type: FirelockEdge + components: + - pos: 13.5,-21.5 + parent: 1 + type: Transform +- uid: 563 + type: FirelockGlass + components: + - pos: 15.5,-16.5 + parent: 1 + type: Transform +- uid: 564 + type: FirelockGlass + components: + - pos: 15.5,-17.5 + parent: 1 + type: Transform +- uid: 565 + type: WindowDirectional + components: + - rot: -1.5707963267948966 rad + pos: 17.5,1.5 + parent: 1 + type: Transform +- uid: 566 + type: WindowDirectional + components: + - rot: -1.5707963267948966 rad + pos: 17.5,0.5 + parent: 1 + type: Transform +- uid: 567 + type: WindowDirectional + components: + - rot: -1.5707963267948966 rad + pos: 17.5,-0.5 + parent: 1 + type: Transform +- uid: 568 + type: WindowDirectional + components: + - rot: 3.141592653589793 rad + pos: 17.5,1.5 + parent: 1 + type: Transform +- uid: 569 + type: WindowDirectional + components: + - rot: 3.141592653589793 rad + pos: 18.5,1.5 + parent: 1 + type: Transform +- uid: 570 + type: WindowDirectional + components: + - rot: 3.141592653589793 rad + pos: 19.5,1.5 + parent: 1 + type: Transform +- uid: 571 + type: WindowDirectional + components: + - rot: 1.5707963267948966 rad + pos: 19.5,1.5 + parent: 1 + type: Transform +- uid: 572 + type: WindowDirectional + components: + - rot: 1.5707963267948966 rad + pos: 19.5,0.5 + parent: 1 + type: Transform +- uid: 573 + type: WindowDirectional + components: + - rot: 1.5707963267948966 rad + pos: 19.5,-0.5 + parent: 1 + type: Transform +- uid: 574 + type: WindowDirectional + components: + - pos: 19.5,-0.5 + parent: 1 + type: Transform +- uid: 575 + type: WindowDirectional + components: + - pos: 18.5,-0.5 + parent: 1 + type: Transform +- uid: 576 + type: WindowDirectional + components: + - pos: 17.5,-0.5 + parent: 1 + type: Transform +- uid: 577 + type: WindowDirectional + components: + - pos: 5.5,-0.5 + parent: 1 + type: Transform +- uid: 578 + type: WindowDirectional + components: + - pos: 4.5,-0.5 + parent: 1 + type: Transform +- uid: 579 + type: WindowDirectional + components: + - pos: 3.5,-0.5 + parent: 1 + type: Transform +- uid: 580 + type: WindowDirectional + components: + - rot: -1.5707963267948966 rad + pos: 3.5,-0.5 + parent: 1 + type: Transform +- uid: 581 + type: WindowDirectional + components: + - rot: -1.5707963267948966 rad + pos: 3.5,0.5 + parent: 1 + type: Transform +- uid: 582 + type: WindowDirectional + components: + - rot: -1.5707963267948966 rad + pos: 3.5,1.5 + parent: 1 + type: Transform +- uid: 583 + type: WindowDirectional + components: + - rot: 3.141592653589793 rad + pos: 3.5,1.5 + parent: 1 + type: Transform +- uid: 584 + type: WindowDirectional + components: + - rot: 3.141592653589793 rad + pos: 4.5,1.5 + parent: 1 + type: Transform +- uid: 585 + type: WindowDirectional + components: + - rot: 3.141592653589793 rad + pos: 5.5,1.5 + parent: 1 + type: Transform +- uid: 586 + type: WindowDirectional + components: + - rot: 1.5707963267948966 rad + pos: 5.5,1.5 + parent: 1 + type: Transform +- uid: 587 + type: WindowDirectional + components: + - rot: 1.5707963267948966 rad + pos: 5.5,0.5 + parent: 1 + type: Transform +- uid: 588 + type: WindowDirectional + components: + - rot: 1.5707963267948966 rad + pos: 5.5,-0.5 + parent: 1 + type: Transform +- uid: 589 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 9.5,23.5 + parent: 1 + type: Transform +- uid: 590 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 9.5,24.5 + parent: 1 + type: Transform +- uid: 591 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 10.5,24.5 + parent: 1 + type: Transform +- uid: 592 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 11.5,24.5 + parent: 1 + type: Transform +- uid: 593 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 12.5,24.5 + parent: 1 + type: Transform +- uid: 594 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 13.5,24.5 + parent: 1 + type: Transform +- uid: 595 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 13.5,24.5 + parent: 1 + type: Transform +- uid: 596 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 13.5,23.5 + parent: 1 + type: Transform +- uid: 597 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 10.5,26.5 + parent: 1 + type: Transform +- uid: 598 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 10.5,27.5 + parent: 1 + type: Transform +- uid: 599 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 12.5,27.5 + parent: 1 + type: Transform +- uid: 600 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 12.5,26.5 + parent: 1 + type: Transform +- uid: 601 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 6.5,26.5 + parent: 1 + type: Transform +- uid: 602 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 16.5,26.5 + parent: 1 + type: Transform +- uid: 603 + type: WindowReinforcedDirectional + components: + - pos: 7.5,-21.5 + parent: 1 + type: Transform +- uid: 604 + type: WindowReinforcedDirectional + components: + - pos: 8.5,-21.5 + parent: 1 + type: Transform +- uid: 605 + type: WindowReinforcedDirectional + components: + - pos: 9.5,-21.5 + parent: 1 + type: Transform +- uid: 606 + type: WindowReinforcedDirectional + components: + - pos: 11.5,-21.5 + parent: 1 + type: Transform +- uid: 607 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 5.5,-25.5 + parent: 1 + type: Transform +- uid: 608 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 17.5,-25.5 + parent: 1 + type: Transform +- uid: 609 + type: GeneratorUranium + components: + - pos: 7.5,-19.5 + parent: 1 + type: Transform +- uid: 610 + type: GeneratorUranium + components: + - pos: 9.5,-19.5 + parent: 1 + type: Transform +- uid: 611 + type: GeneratorUranium + components: + - pos: 11.5,-19.5 + parent: 1 + type: Transform +- uid: 612 + type: CableHV + components: + - pos: 10.5,-20.5 + parent: 1 + type: Transform +- uid: 613 + type: GravityGeneratorMini + components: + - pos: 6.5,-26.5 + parent: 1 + type: Transform + - charge: 100 + type: GravityGenerator + - radius: 175.75 + type: PointLight +- uid: 614 + type: GeneratorUranium + components: + - pos: 8.5,-19.5 + parent: 1 + type: Transform +- uid: 615 + type: SMESBasic + components: + - pos: 7.5,-21.5 + parent: 1 + type: Transform +- uid: 616 + type: SMESBasic + components: + - pos: 8.5,-21.5 + parent: 1 + type: Transform +- uid: 617 + type: CableHV + components: + - pos: 7.5,-19.5 + parent: 1 + type: Transform +- uid: 618 + type: CableHV + components: + - pos: 8.5,-19.5 + parent: 1 + type: Transform +- uid: 619 + type: CableHV + components: + - pos: 9.5,-19.5 + parent: 1 + type: Transform +- uid: 620 + type: CableHV + components: + - pos: 10.5,-19.5 + parent: 1 + type: Transform +- uid: 621 + type: CableHV + components: + - pos: 11.5,-19.5 + parent: 1 + type: Transform +- uid: 622 + type: CableHV + components: + - pos: 8.5,-20.5 + parent: 1 + type: Transform +- uid: 623 + type: CableHV + components: + - pos: 7.5,-20.5 + parent: 1 + type: Transform +- uid: 624 + type: CableHV + components: + - pos: 7.5,-21.5 + parent: 1 + type: Transform +- uid: 625 + type: CableHV + components: + - pos: 8.5,-21.5 + parent: 1 + type: Transform +- uid: 626 + type: CableTerminal + components: + - pos: 7.5,-20.5 + parent: 1 + type: Transform +- uid: 627 + type: CableTerminal + components: + - pos: 8.5,-20.5 + parent: 1 + type: Transform +- uid: 628 + type: CableHV + components: + - pos: 7.5,-22.5 + parent: 1 + type: Transform +- uid: 629 + type: CableHV + components: + - pos: 8.5,-22.5 + parent: 1 + type: Transform +- uid: 630 + type: CableHV + components: + - pos: 6.5,-22.5 + parent: 1 + type: Transform +- uid: 631 + type: CableHV + components: + - pos: 6.5,-23.5 + parent: 1 + type: Transform +- uid: 632 + type: CableHV + components: + - pos: 6.5,-24.5 + parent: 1 + type: Transform +- uid: 633 + type: CableHV + components: + - pos: 6.5,-25.5 + parent: 1 + type: Transform +- uid: 634 + type: CableHV + components: + - pos: 5.5,-25.5 + parent: 1 + type: Transform +- uid: 635 + type: CableHV + components: + - pos: 5.5,-22.5 + parent: 1 + type: Transform +- uid: 636 + type: CableHV + components: + - pos: 5.5,-21.5 + parent: 1 + type: Transform +- uid: 637 + type: CableHV + components: + - pos: 5.5,-20.5 + parent: 1 + type: Transform +- uid: 638 + type: CableHV + components: + - pos: 5.5,-19.5 + parent: 1 + type: Transform +- uid: 639 + type: CableHV + components: + - pos: 5.5,-18.5 + parent: 1 + type: Transform +- uid: 640 + type: CableHV + components: + - pos: 5.5,-17.5 + parent: 1 + type: Transform +- uid: 641 + type: SubstationBasic + components: + - pos: 5.5,-25.5 + parent: 1 + type: Transform +- uid: 642 + type: SubstationWallBasic + components: + - rot: -1.5707963267948966 rad + pos: 16.5,-20.5 + parent: 1 + type: Transform +- uid: 643 + type: SubstationWallBasic + components: + - rot: -1.5707963267948966 rad + pos: 10.5,-13.5 + parent: 1 + type: Transform +- uid: 644 + type: SubstationWallBasic + components: + - rot: 3.141592653589793 rad + pos: 9.5,-3.5 + parent: 1 + type: Transform +- uid: 645 + type: SubstationWallBasic + components: + - rot: 3.141592653589793 rad + pos: 11.5,10.5 + parent: 1 + type: Transform +- uid: 646 + type: SubstationWallBasic + components: + - rot: 3.141592653589793 rad + pos: 9.5,22.5 + parent: 1 + type: Transform +- uid: 647 + type: APCBasic + components: + - rot: 3.141592653589793 rad + pos: 13.5,22.5 + parent: 1 + type: Transform +- uid: 648 + type: APCBasic + components: + - pos: 11.5,15.5 + parent: 1 + type: Transform +- uid: 649 + type: APCBasic + components: + - rot: 1.5707963267948966 rad + pos: 0.5,6.5 + parent: 1 + type: Transform +- uid: 650 + type: APCBasic + components: + - rot: 1.5707963267948966 rad + pos: 0.5,-5.5 + parent: 1 + type: Transform +- uid: 651 + type: APCBasic + components: + - rot: -1.5707963267948966 rad + pos: 22.5,-5.5 + parent: 1 + type: Transform +- uid: 652 + type: APCBasic + components: + - rot: -1.5707963267948966 rad + pos: 22.5,6.5 + parent: 1 + type: Transform +- uid: 653 + type: APCBasic + components: + - rot: -1.5707963267948966 rad + pos: 10.5,-12.5 + parent: 1 + type: Transform +- uid: 654 + type: APCBasic + components: + - rot: 3.141592653589793 rad + pos: 4.5,-25.5 + parent: 1 + type: Transform +- uid: 655 + type: APCBasic + components: + - pos: 16.5,-21.5 + parent: 1 + type: Transform +- uid: 656 + type: CableMV + components: + - pos: 4.5,-25.5 + parent: 1 + type: Transform +- uid: 657 + type: CableMV + components: + - pos: 5.5,-25.5 + parent: 1 + type: Transform +- uid: 658 + type: CableMV + components: + - pos: 16.5,-20.5 + parent: 1 + type: Transform +- uid: 659 + type: CableMV + components: + - pos: 16.5,-21.5 + parent: 1 + type: Transform +- uid: 660 + type: CableMV + components: + - pos: 10.5,-12.5 + parent: 1 + type: Transform +- uid: 661 + type: CableMV + components: + - pos: 10.5,-13.5 + parent: 1 + type: Transform +- uid: 662 + type: CableMV + components: + - pos: 9.5,-3.5 + parent: 1 + type: Transform +- uid: 663 + type: CableMV + components: + - pos: 9.5,-2.5 + parent: 1 + type: Transform +- uid: 664 + type: CableMV + components: + - pos: 8.5,-2.5 + parent: 1 + type: Transform +- uid: 665 + type: CableMV + components: + - pos: 7.5,-2.5 + parent: 1 + type: Transform +- uid: 666 + type: CableMV + components: + - pos: 6.5,-2.5 + parent: 1 + type: Transform +- uid: 667 + type: CableMV + components: + - pos: 5.5,-2.5 + parent: 1 + type: Transform +- uid: 668 + type: CableMV + components: + - pos: 4.5,-2.5 + parent: 1 + type: Transform +- uid: 669 + type: CableMV + components: + - pos: 3.5,-2.5 + parent: 1 + type: Transform +- uid: 670 + type: CableMV + components: + - pos: 2.5,-2.5 + parent: 1 + type: Transform +- uid: 671 + type: CableMV + components: + - pos: 1.5,-2.5 + parent: 1 + type: Transform +- uid: 672 + type: CableMV + components: + - pos: 1.5,-3.5 + parent: 1 + type: Transform +- uid: 673 + type: CableMV + components: + - pos: 1.5,-4.5 + parent: 1 + type: Transform +- uid: 674 + type: CableMV + components: + - pos: 1.5,-5.5 + parent: 1 + type: Transform +- uid: 675 + type: CableMV + components: + - pos: 0.5,-5.5 + parent: 1 + type: Transform +- uid: 676 + type: CableMV + components: + - pos: 5.5,3.5 + parent: 1 + type: Transform +- uid: 677 + type: CableMV + components: + - pos: 6.5,3.5 + parent: 1 + type: Transform +- uid: 678 + type: CableMV + components: + - pos: 4.5,3.5 + parent: 1 + type: Transform +- uid: 679 + type: CableMV + components: + - pos: 3.5,3.5 + parent: 1 + type: Transform +- uid: 680 + type: CableMV + components: + - pos: 1.5,3.5 + parent: 1 + type: Transform +- uid: 681 + type: CableMV + components: + - pos: 2.5,3.5 + parent: 1 + type: Transform +- uid: 682 + type: CableMV + components: + - pos: 1.5,4.5 + parent: 1 + type: Transform +- uid: 683 + type: CableMV + components: + - pos: 1.5,5.5 + parent: 1 + type: Transform +- uid: 684 + type: CableMV + components: + - pos: 1.5,6.5 + parent: 1 + type: Transform +- uid: 685 + type: CableMV + components: + - pos: 0.5,6.5 + parent: 1 + type: Transform +- uid: 686 + type: CableMV + components: + - pos: 10.5,-2.5 + parent: 1 + type: Transform +- uid: 687 + type: CableMV + components: + - pos: 11.5,-2.5 + parent: 1 + type: Transform +- uid: 688 + type: CableMV + components: + - pos: 12.5,-2.5 + parent: 1 + type: Transform +- uid: 689 + type: CableMV + components: + - pos: 13.5,-2.5 + parent: 1 + type: Transform +- uid: 690 + type: CableMV + components: + - pos: 14.5,-2.5 + parent: 1 + type: Transform +- uid: 691 + type: CableMV + components: + - pos: 15.5,-2.5 + parent: 1 + type: Transform +- uid: 692 + type: CableMV + components: + - pos: 16.5,-2.5 + parent: 1 + type: Transform +- uid: 693 + type: CableMV + components: + - pos: 17.5,-2.5 + parent: 1 + type: Transform +- uid: 694 + type: CableMV + components: + - pos: 18.5,-2.5 + parent: 1 + type: Transform +- uid: 695 + type: CableMV + components: + - pos: 19.5,-2.5 + parent: 1 + type: Transform +- uid: 696 + type: CableMV + components: + - pos: 20.5,-2.5 + parent: 1 + type: Transform +- uid: 697 + type: CableMV + components: + - pos: 21.5,-2.5 + parent: 1 + type: Transform +- uid: 698 + type: CableMV + components: + - pos: 21.5,-3.5 + parent: 1 + type: Transform +- uid: 699 + type: CableMV + components: + - pos: 21.5,-4.5 + parent: 1 + type: Transform +- uid: 700 + type: CableMV + components: + - pos: 21.5,-5.5 + parent: 1 + type: Transform +- uid: 701 + type: CableMV + components: + - pos: 22.5,-5.5 + parent: 1 + type: Transform +- uid: 702 + type: GeneratorUranium + components: + - pos: 8.5,-20.5 + parent: 1 + type: Transform +- uid: 703 + type: GeneratorUranium + components: + - pos: 9.5,-20.5 + parent: 1 + type: Transform +- uid: 704 + type: CableHV + components: + - pos: 9.5,-20.5 + parent: 1 + type: Transform +- uid: 705 + type: PaperCargoInvoice + components: + - pos: 17.660168,-25.481997 + parent: 1 + type: Transform +- uid: 706 + type: PaperCargoInvoice + components: + - pos: 17.613293,-25.481997 + parent: 1 + type: Transform +- uid: 707 + type: CableMV + components: + - pos: 21.5,3.5 + parent: 1 + type: Transform +- uid: 708 + type: CableMV + components: + - pos: 21.5,4.5 + parent: 1 + type: Transform +- uid: 709 + type: CableMV + components: + - pos: 21.5,5.5 + parent: 1 + type: Transform +- uid: 710 + type: CableMV + components: + - pos: 21.5,6.5 + parent: 1 + type: Transform +- uid: 711 + type: CableMV + components: + - pos: 22.5,6.5 + parent: 1 + type: Transform +- uid: 712 + type: CableMV + components: + - pos: 11.5,15.5 + parent: 1 + type: Transform +- uid: 713 + type: CableMV + components: + - pos: 11.5,14.5 + parent: 1 + type: Transform +- uid: 714 + type: CableMV + components: + - pos: 11.5,13.5 + parent: 1 + type: Transform +- uid: 715 + type: CableMV + components: + - pos: 11.5,12.5 + parent: 1 + type: Transform +- uid: 716 + type: CableMV + components: + - pos: 11.5,11.5 + parent: 1 + type: Transform +- uid: 717 + type: CableMV + components: + - pos: 11.5,10.5 + parent: 1 + type: Transform +- uid: 718 + type: CableMV + components: + - pos: 9.5,22.5 + parent: 1 + type: Transform +- uid: 719 + type: CableMV + components: + - pos: 9.5,23.5 + parent: 1 + type: Transform +- uid: 720 + type: CableMV + components: + - pos: 10.5,23.5 + parent: 1 + type: Transform +- uid: 721 + type: CableMV + components: + - pos: 11.5,23.5 + parent: 1 + type: Transform +- uid: 722 + type: CableMV + components: + - pos: 12.5,23.5 + parent: 1 + type: Transform +- uid: 723 + type: CableMV + components: + - pos: 13.5,23.5 + parent: 1 + type: Transform +- uid: 724 + type: CableMV + components: + - pos: 13.5,22.5 + parent: 1 + type: Transform +- uid: 725 + type: CableHV + components: + - pos: 6.5,-17.5 + parent: 1 + type: Transform +- uid: 726 + type: CableHV + components: + - pos: 7.5,-17.5 + parent: 1 + type: Transform +- uid: 727 + type: CableHV + components: + - pos: 8.5,-17.5 + parent: 1 + type: Transform +- uid: 728 + type: CableHV + components: + - pos: 9.5,-17.5 + parent: 1 + type: Transform +- uid: 729 + type: CableHV + components: + - pos: 10.5,-17.5 + parent: 1 + type: Transform +- uid: 730 + type: CableHV + components: + - pos: 11.5,-17.5 + parent: 1 + type: Transform +- uid: 731 + type: CableHV + components: + - pos: 12.5,-17.5 + parent: 1 + type: Transform +- uid: 732 + type: CableHV + components: + - pos: 12.5,-16.5 + parent: 1 + type: Transform +- uid: 733 + type: CableHV + components: + - pos: 12.5,-15.5 + parent: 1 + type: Transform +- uid: 734 + type: CableHV + components: + - pos: 12.5,-14.5 + parent: 1 + type: Transform +- uid: 735 + type: CableHV + components: + - pos: 12.5,-13.5 + parent: 1 + type: Transform +- uid: 736 + type: CableHV + components: + - pos: 11.5,-13.5 + parent: 1 + type: Transform +- uid: 737 + type: CableHV + components: + - pos: 10.5,-13.5 + parent: 1 + type: Transform +- uid: 738 + type: CableHV + components: + - pos: 13.5,-17.5 + parent: 1 + type: Transform +- uid: 739 + type: CableHV + components: + - pos: 14.5,-17.5 + parent: 1 + type: Transform +- uid: 740 + type: CableHV + components: + - pos: 15.5,-17.5 + parent: 1 + type: Transform +- uid: 741 + type: CableHV + components: + - pos: 16.5,-17.5 + parent: 1 + type: Transform +- uid: 742 + type: CableHV + components: + - pos: 17.5,-17.5 + parent: 1 + type: Transform +- uid: 743 + type: CableHV + components: + - pos: 18.5,-17.5 + parent: 1 + type: Transform +- uid: 744 + type: CableHV + components: + - pos: 19.5,-17.5 + parent: 1 + type: Transform +- uid: 745 + type: CableHV + components: + - pos: 19.5,-16.5 + parent: 1 + type: Transform +- uid: 746 + type: CableHV + components: + - pos: 20.5,-16.5 + parent: 1 + type: Transform +- uid: 747 + type: CableHV + components: + - pos: 20.5,11.5 + parent: 1 + type: Transform +- uid: 748 + type: CableHV + components: + - pos: 20.5,12.5 + parent: 1 + type: Transform +- uid: 749 + type: CableHV + components: + - pos: 20.5,13.5 + parent: 1 + type: Transform +- uid: 750 + type: CableHV + components: + - pos: 20.5,14.5 + parent: 1 + type: Transform +- uid: 751 + type: CableHV + components: + - pos: 20.5,15.5 + parent: 1 + type: Transform +- uid: 752 + type: CableHV + components: + - pos: 20.5,16.5 + parent: 1 + type: Transform +- uid: 753 + type: CableHV + components: + - pos: 20.5,17.5 + parent: 1 + type: Transform +- uid: 754 + type: CableHV + components: + - pos: 20.5,-15.5 + parent: 1 + type: Transform +- uid: 755 + type: CableHV + components: + - pos: 20.5,-14.5 + parent: 1 + type: Transform +- uid: 756 + type: CableHV + components: + - pos: 20.5,-13.5 + parent: 1 + type: Transform +- uid: 757 + type: CableHV + components: + - pos: 20.5,-12.5 + parent: 1 + type: Transform +- uid: 758 + type: CableHV + components: + - pos: 20.5,-11.5 + parent: 1 + type: Transform +- uid: 759 + type: CableHV + components: + - pos: 20.5,-10.5 + parent: 1 + type: Transform +- uid: 760 + type: CableHV + components: + - pos: 20.5,-9.5 + parent: 1 + type: Transform +- uid: 761 + type: CableHV + components: + - pos: 20.5,-8.5 + parent: 1 + type: Transform +- uid: 762 + type: CableHV + components: + - pos: 20.5,-7.5 + parent: 1 + type: Transform +- uid: 763 + type: CableHV + components: + - pos: 20.5,-6.5 + parent: 1 + type: Transform +- uid: 764 + type: CableHV + components: + - pos: 20.5,-5.5 + parent: 1 + type: Transform +- uid: 765 + type: CableHV + components: + - pos: 20.5,-4.5 + parent: 1 + type: Transform +- uid: 766 + type: CableHV + components: + - pos: 20.5,-3.5 + parent: 1 + type: Transform +- uid: 767 + type: CableHV + components: + - pos: 20.5,-2.5 + parent: 1 + type: Transform +- uid: 768 + type: CableHV + components: + - pos: 20.5,-1.5 + parent: 1 + type: Transform +- uid: 769 + type: CableHV + components: + - pos: 20.5,-0.5 + parent: 1 + type: Transform +- uid: 770 + type: CableHV + components: + - pos: 20.5,0.5 + parent: 1 + type: Transform +- uid: 771 + type: CableHV + components: + - pos: 20.5,1.5 + parent: 1 + type: Transform +- uid: 772 + type: CableHV + components: + - pos: 20.5,2.5 + parent: 1 + type: Transform +- uid: 773 + type: CableHV + components: + - pos: 20.5,3.5 + parent: 1 + type: Transform +- uid: 774 + type: CableHV + components: + - pos: 20.5,4.5 + parent: 1 + type: Transform +- uid: 775 + type: CableHV + components: + - pos: 20.5,5.5 + parent: 1 + type: Transform +- uid: 776 + type: CableHV + components: + - pos: 20.5,6.5 + parent: 1 + type: Transform +- uid: 777 + type: CableHV + components: + - pos: 20.5,7.5 + parent: 1 + type: Transform +- uid: 778 + type: CableHV + components: + - pos: 20.5,8.5 + parent: 1 + type: Transform +- uid: 779 + type: CableHV + components: + - pos: 20.5,9.5 + parent: 1 + type: Transform +- uid: 780 + type: CableHV + components: + - pos: 20.5,10.5 + parent: 1 + type: Transform +- uid: 781 + type: CableHV + components: + - pos: 19.5,17.5 + parent: 1 + type: Transform +- uid: 782 + type: CableHV + components: + - pos: 18.5,17.5 + parent: 1 + type: Transform +- uid: 783 + type: CableHV + components: + - pos: 17.5,17.5 + parent: 1 + type: Transform +- uid: 784 + type: CableHV + components: + - pos: 16.5,17.5 + parent: 1 + type: Transform +- uid: 785 + type: CableHV + components: + - pos: 15.5,17.5 + parent: 1 + type: Transform +- uid: 786 + type: CableHV + components: + - pos: 14.5,17.5 + parent: 1 + type: Transform +- uid: 787 + type: CableHV + components: + - pos: 13.5,17.5 + parent: 1 + type: Transform +- uid: 788 + type: CableHV + components: + - pos: 12.5,17.5 + parent: 1 + type: Transform +- uid: 789 + type: CableHV + components: + - pos: 11.5,17.5 + parent: 1 + type: Transform +- uid: 790 + type: CableHV + components: + - pos: 10.5,17.5 + parent: 1 + type: Transform +- uid: 791 + type: CableHV + components: + - pos: 9.5,17.5 + parent: 1 + type: Transform +- uid: 792 + type: CableHV + components: + - pos: 8.5,17.5 + parent: 1 + type: Transform +- uid: 793 + type: CableHV + components: + - pos: 7.5,17.5 + parent: 1 + type: Transform +- uid: 794 + type: CableHV + components: + - pos: 6.5,17.5 + parent: 1 + type: Transform +- uid: 795 + type: CableHV + components: + - pos: 5.5,17.5 + parent: 1 + type: Transform +- uid: 796 + type: CableHV + components: + - pos: 4.5,17.5 + parent: 1 + type: Transform +- uid: 797 + type: CableHV + components: + - pos: 3.5,17.5 + parent: 1 + type: Transform +- uid: 798 + type: CableHV + components: + - pos: 2.5,17.5 + parent: 1 + type: Transform +- uid: 799 + type: CableHV + components: + - pos: 2.5,-10.5 + parent: 1 + type: Transform +- uid: 800 + type: CableHV + components: + - pos: 2.5,-11.5 + parent: 1 + type: Transform +- uid: 801 + type: CableHV + components: + - pos: 2.5,-12.5 + parent: 1 + type: Transform +- uid: 802 + type: CableHV + components: + - pos: 2.5,-13.5 + parent: 1 + type: Transform +- uid: 803 + type: CableHV + components: + - pos: 2.5,-14.5 + parent: 1 + type: Transform +- uid: 804 + type: CableHV + components: + - pos: 2.5,-15.5 + parent: 1 + type: Transform +- uid: 805 + type: CableHV + components: + - pos: 2.5,-16.5 + parent: 1 + type: Transform +- uid: 806 + type: CableHV + components: + - pos: 2.5,16.5 + parent: 1 + type: Transform +- uid: 807 + type: CableHV + components: + - pos: 2.5,15.5 + parent: 1 + type: Transform +- uid: 808 + type: CableHV + components: + - pos: 2.5,14.5 + parent: 1 + type: Transform +- uid: 809 + type: CableHV + components: + - pos: 2.5,13.5 + parent: 1 + type: Transform +- uid: 810 + type: CableHV + components: + - pos: 2.5,12.5 + parent: 1 + type: Transform +- uid: 811 + type: CableHV + components: + - pos: 2.5,11.5 + parent: 1 + type: Transform +- uid: 812 + type: CableHV + components: + - pos: 2.5,10.5 + parent: 1 + type: Transform +- uid: 813 + type: CableHV + components: + - pos: 2.5,9.5 + parent: 1 + type: Transform +- uid: 814 + type: CableHV + components: + - pos: 2.5,8.5 + parent: 1 + type: Transform +- uid: 815 + type: CableHV + components: + - pos: 2.5,7.5 + parent: 1 + type: Transform +- uid: 816 + type: CableHV + components: + - pos: 2.5,6.5 + parent: 1 + type: Transform +- uid: 817 + type: CableHV + components: + - pos: 2.5,5.5 + parent: 1 + type: Transform +- uid: 818 + type: CableHV + components: + - pos: 2.5,4.5 + parent: 1 + type: Transform +- uid: 819 + type: CableHV + components: + - pos: 2.5,3.5 + parent: 1 + type: Transform +- uid: 820 + type: CableHV + components: + - pos: 2.5,2.5 + parent: 1 + type: Transform +- uid: 821 + type: CableHV + components: + - pos: 2.5,1.5 + parent: 1 + type: Transform +- uid: 822 + type: CableHV + components: + - pos: 2.5,0.5 + parent: 1 + type: Transform +- uid: 823 + type: CableHV + components: + - pos: 2.5,-0.5 + parent: 1 + type: Transform +- uid: 824 + type: CableHV + components: + - pos: 2.5,-1.5 + parent: 1 + type: Transform +- uid: 825 + type: CableHV + components: + - pos: 2.5,-2.5 + parent: 1 + type: Transform +- uid: 826 + type: CableHV + components: + - pos: 2.5,-3.5 + parent: 1 + type: Transform +- uid: 827 + type: CableHV + components: + - pos: 2.5,-4.5 + parent: 1 + type: Transform +- uid: 828 + type: CableHV + components: + - pos: 2.5,-5.5 + parent: 1 + type: Transform +- uid: 829 + type: CableHV + components: + - pos: 2.5,-6.5 + parent: 1 + type: Transform +- uid: 830 + type: CableHV + components: + - pos: 2.5,-7.5 + parent: 1 + type: Transform +- uid: 831 + type: CableHV + components: + - pos: 2.5,-8.5 + parent: 1 + type: Transform +- uid: 832 + type: CableHV + components: + - pos: 2.5,-9.5 + parent: 1 + type: Transform +- uid: 833 + type: CableHV + components: + - pos: 3.5,-16.5 + parent: 1 + type: Transform +- uid: 834 + type: CableHV + components: + - pos: 3.5,-17.5 + parent: 1 + type: Transform +- uid: 835 + type: CableHV + components: + - pos: 4.5,-17.5 + parent: 1 + type: Transform +- uid: 836 + type: CableHV + components: + - pos: 3.5,-2.5 + parent: 1 + type: Transform +- uid: 837 + type: CableHV + components: + - pos: 4.5,-2.5 + parent: 1 + type: Transform +- uid: 838 + type: CableHV + components: + - pos: 5.5,-2.5 + parent: 1 + type: Transform +- uid: 839 + type: CableHV + components: + - pos: 6.5,-2.5 + parent: 1 + type: Transform +- uid: 840 + type: CableHV + components: + - pos: 7.5,-2.5 + parent: 1 + type: Transform +- uid: 841 + type: CableHV + components: + - pos: 8.5,-2.5 + parent: 1 + type: Transform +- uid: 842 + type: CableHV + components: + - pos: 9.5,-2.5 + parent: 1 + type: Transform +- uid: 843 + type: CableHV + components: + - pos: 9.5,-3.5 + parent: 1 + type: Transform +- uid: 844 + type: CableHV + components: + - pos: 10.5,-2.5 + parent: 1 + type: Transform +- uid: 845 + type: CableHV + components: + - pos: 11.5,-2.5 + parent: 1 + type: Transform +- uid: 846 + type: CableHV + components: + - pos: 12.5,-2.5 + parent: 1 + type: Transform +- uid: 847 + type: CableHV + components: + - pos: 13.5,-2.5 + parent: 1 + type: Transform +- uid: 848 + type: CableHV + components: + - pos: 14.5,-2.5 + parent: 1 + type: Transform +- uid: 849 + type: CableHV + components: + - pos: 15.5,-2.5 + parent: 1 + type: Transform +- uid: 850 + type: CableHV + components: + - pos: 16.5,-2.5 + parent: 1 + type: Transform +- uid: 851 + type: CableHV + components: + - pos: 17.5,-2.5 + parent: 1 + type: Transform +- uid: 852 + type: CableHV + components: + - pos: 18.5,-2.5 + parent: 1 + type: Transform +- uid: 853 + type: CableHV + components: + - pos: 19.5,-2.5 + parent: 1 + type: Transform +- uid: 854 + type: CableHV + components: + - pos: 10.5,-1.5 + parent: 1 + type: Transform +- uid: 855 + type: CableHV + components: + - pos: 10.5,-0.5 + parent: 1 + type: Transform +- uid: 856 + type: CableHV + components: + - pos: 10.5,0.5 + parent: 1 + type: Transform +- uid: 857 + type: CableHV + components: + - pos: 10.5,1.5 + parent: 1 + type: Transform +- uid: 858 + type: CableHV + components: + - pos: 10.5,2.5 + parent: 1 + type: Transform +- uid: 859 + type: CableHV + components: + - pos: 10.5,3.5 + parent: 1 + type: Transform +- uid: 860 + type: CableHV + components: + - pos: 9.5,3.5 + parent: 1 + type: Transform +- uid: 861 + type: CableHV + components: + - pos: 8.5,3.5 + parent: 1 + type: Transform +- uid: 862 + type: CableHV + components: + - pos: 7.5,3.5 + parent: 1 + type: Transform +- uid: 863 + type: CableHV + components: + - pos: 6.5,3.5 + parent: 1 + type: Transform +- uid: 864 + type: CableHV + components: + - pos: 5.5,3.5 + parent: 1 + type: Transform +- uid: 865 + type: CableHV + components: + - pos: 4.5,3.5 + parent: 1 + type: Transform +- uid: 866 + type: CableHV + components: + - pos: 3.5,3.5 + parent: 1 + type: Transform +- uid: 867 + type: CableHV + components: + - pos: 12.5,3.5 + parent: 1 + type: Transform +- uid: 868 + type: CableHV + components: + - pos: 12.5,2.5 + parent: 1 + type: Transform +- uid: 869 + type: CableHV + components: + - pos: 12.5,1.5 + parent: 1 + type: Transform +- uid: 870 + type: CableHV + components: + - pos: 12.5,0.5 + parent: 1 + type: Transform +- uid: 871 + type: CableHV + components: + - pos: 12.5,-0.5 + parent: 1 + type: Transform +- uid: 872 + type: CableHV + components: + - pos: 12.5,-1.5 + parent: 1 + type: Transform +- uid: 873 + type: CableHV + components: + - pos: 11.5,3.5 + parent: 1 + type: Transform +- uid: 874 + type: CableHV + components: + - pos: 13.5,3.5 + parent: 1 + type: Transform +- uid: 875 + type: CableHV + components: + - pos: 14.5,3.5 + parent: 1 + type: Transform +- uid: 876 + type: CableHV + components: + - pos: 15.5,3.5 + parent: 1 + type: Transform +- uid: 877 + type: CableHV + components: + - pos: 16.5,3.5 + parent: 1 + type: Transform +- uid: 878 + type: CableHV + components: + - pos: 17.5,3.5 + parent: 1 + type: Transform +- uid: 879 + type: CableHV + components: + - pos: 18.5,3.5 + parent: 1 + type: Transform +- uid: 880 + type: CableHV + components: + - pos: 19.5,3.5 + parent: 1 + type: Transform +- uid: 881 + type: CableHV + components: + - pos: 6.5,4.5 + parent: 1 + type: Transform +- uid: 882 + type: CableHV + components: + - pos: 6.5,5.5 + parent: 1 + type: Transform +- uid: 883 + type: CableHV + components: + - pos: 6.5,6.5 + parent: 1 + type: Transform +- uid: 884 + type: CableHV + components: + - pos: 6.5,7.5 + parent: 1 + type: Transform +- uid: 885 + type: CableHV + components: + - pos: 6.5,8.5 + parent: 1 + type: Transform +- uid: 886 + type: CableHV + components: + - pos: 6.5,9.5 + parent: 1 + type: Transform +- uid: 887 + type: CableHV + components: + - pos: 6.5,10.5 + parent: 1 + type: Transform +- uid: 888 + type: CableHV + components: + - pos: 6.5,11.5 + parent: 1 + type: Transform +- uid: 889 + type: CableHV + components: + - pos: 7.5,11.5 + parent: 1 + type: Transform +- uid: 890 + type: CableHV + components: + - pos: 8.5,11.5 + parent: 1 + type: Transform +- uid: 891 + type: CableHV + components: + - pos: 9.5,11.5 + parent: 1 + type: Transform +- uid: 892 + type: CableHV + components: + - pos: 10.5,11.5 + parent: 1 + type: Transform +- uid: 893 + type: CableHV + components: + - pos: 11.5,11.5 + parent: 1 + type: Transform +- uid: 894 + type: CableHV + components: + - pos: 12.5,11.5 + parent: 1 + type: Transform +- uid: 895 + type: CableHV + components: + - pos: 13.5,11.5 + parent: 1 + type: Transform +- uid: 896 + type: CableHV + components: + - pos: 14.5,11.5 + parent: 1 + type: Transform +- uid: 897 + type: CableHV + components: + - pos: 15.5,11.5 + parent: 1 + type: Transform +- uid: 898 + type: CableHV + components: + - pos: 16.5,11.5 + parent: 1 + type: Transform +- uid: 899 + type: CableHV + components: + - pos: 16.5,10.5 + parent: 1 + type: Transform +- uid: 900 + type: CableHV + components: + - pos: 16.5,9.5 + parent: 1 + type: Transform +- uid: 901 + type: CableHV + components: + - pos: 16.5,8.5 + parent: 1 + type: Transform +- uid: 902 + type: CableHV + components: + - pos: 16.5,7.5 + parent: 1 + type: Transform +- uid: 903 + type: CableHV + components: + - pos: 16.5,6.5 + parent: 1 + type: Transform +- uid: 904 + type: CableHV + components: + - pos: 16.5,5.5 + parent: 1 + type: Transform +- uid: 905 + type: CableHV + components: + - pos: 16.5,4.5 + parent: 1 + type: Transform +- uid: 906 + type: CableHV + components: + - pos: 11.5,10.5 + parent: 1 + type: Transform +- uid: 907 + type: CableHV + components: + - pos: 17.5,18.5 + parent: 1 + type: Transform +- uid: 908 + type: CableHV + components: + - pos: 17.5,19.5 + parent: 1 + type: Transform +- uid: 909 + type: CableHV + components: + - pos: 17.5,20.5 + parent: 1 + type: Transform +- uid: 910 + type: CableHV + components: + - pos: 17.5,21.5 + parent: 1 + type: Transform +- uid: 911 + type: CableHV + components: + - pos: 17.5,22.5 + parent: 1 + type: Transform +- uid: 912 + type: CableHV + components: + - pos: 17.5,23.5 + parent: 1 + type: Transform +- uid: 913 + type: CableHV + components: + - pos: 16.5,23.5 + parent: 1 + type: Transform +- uid: 914 + type: CableHV + components: + - pos: 15.5,23.5 + parent: 1 + type: Transform +- uid: 915 + type: CableHV + components: + - pos: 14.5,23.5 + parent: 1 + type: Transform +- uid: 916 + type: CableHV + components: + - pos: 13.5,23.5 + parent: 1 + type: Transform +- uid: 917 + type: CableHV + components: + - pos: 12.5,23.5 + parent: 1 + type: Transform +- uid: 918 + type: CableHV + components: + - pos: 11.5,23.5 + parent: 1 + type: Transform +- uid: 919 + type: CableHV + components: + - pos: 10.5,23.5 + parent: 1 + type: Transform +- uid: 920 + type: CableHV + components: + - pos: 9.5,23.5 + parent: 1 + type: Transform +- uid: 921 + type: CableHV + components: + - pos: 8.5,23.5 + parent: 1 + type: Transform +- uid: 922 + type: CableHV + components: + - pos: 7.5,23.5 + parent: 1 + type: Transform +- uid: 923 + type: CableHV + components: + - pos: 6.5,23.5 + parent: 1 + type: Transform +- uid: 924 + type: CableHV + components: + - pos: 5.5,23.5 + parent: 1 + type: Transform +- uid: 925 + type: CableHV + components: + - pos: 5.5,22.5 + parent: 1 + type: Transform +- uid: 926 + type: CableHV + components: + - pos: 5.5,21.5 + parent: 1 + type: Transform +- uid: 927 + type: CableHV + components: + - pos: 5.5,20.5 + parent: 1 + type: Transform +- uid: 928 + type: CableHV + components: + - pos: 5.5,19.5 + parent: 1 + type: Transform +- uid: 929 + type: CableHV + components: + - pos: 5.5,18.5 + parent: 1 + type: Transform +- uid: 930 + type: CableHV + components: + - pos: 9.5,22.5 + parent: 1 + type: Transform +- uid: 931 + type: CableHV + components: + - pos: 10.5,22.5 + parent: 1 + type: Transform +- uid: 932 + type: CableHV + components: + - pos: 11.5,22.5 + parent: 1 + type: Transform +- uid: 933 + type: CableHV + components: + - pos: 12.5,22.5 + parent: 1 + type: Transform +- uid: 934 + type: CableHV + components: + - pos: 8.5,18.5 + parent: 1 + type: Transform +- uid: 935 + type: CableHV + components: + - pos: 9.5,18.5 + parent: 1 + type: Transform +- uid: 936 + type: CableHV + components: + - pos: 13.5,18.5 + parent: 1 + type: Transform +- uid: 937 + type: CableHV + components: + - pos: 14.5,18.5 + parent: 1 + type: Transform +- uid: 938 + type: CableHV + components: + - pos: 15.5,22.5 + parent: 1 + type: Transform +- uid: 939 + type: CableHV + components: + - pos: 7.5,22.5 + parent: 1 + type: Transform +- uid: 940 + type: CableHV + components: + - pos: 4.5,24.5 + parent: 1 + type: Transform +- uid: 941 + type: CableHV + components: + - pos: 4.5,23.5 + parent: 1 + type: Transform +- uid: 942 + type: CableHV + components: + - pos: 3.5,24.5 + parent: 1 + type: Transform +- uid: 943 + type: CableHV + components: + - pos: 3.5,25.5 + parent: 1 + type: Transform +- uid: 944 + type: CableHV + components: + - pos: 3.5,26.5 + parent: 1 + type: Transform +- uid: 945 + type: CableHV + components: + - pos: 4.5,26.5 + parent: 1 + type: Transform +- uid: 946 + type: CableHV + components: + - pos: 4.5,27.5 + parent: 1 + type: Transform +- uid: 947 + type: CableHV + components: + - pos: 5.5,27.5 + parent: 1 + type: Transform +- uid: 948 + type: CableHV + components: + - pos: 6.5,27.5 + parent: 1 + type: Transform +- uid: 949 + type: CableHV + components: + - pos: 6.5,28.5 + parent: 1 + type: Transform +- uid: 950 + type: CableHV + components: + - pos: 7.5,28.5 + parent: 1 + type: Transform +- uid: 951 + type: CableHV + components: + - pos: 8.5,28.5 + parent: 1 + type: Transform +- uid: 952 + type: CableHV + components: + - pos: 9.5,28.5 + parent: 1 + type: Transform +- uid: 953 + type: CableHV + components: + - pos: 10.5,28.5 + parent: 1 + type: Transform +- uid: 954 + type: CableHV + components: + - pos: 11.5,28.5 + parent: 1 + type: Transform +- uid: 955 + type: CableHV + components: + - pos: 12.5,28.5 + parent: 1 + type: Transform +- uid: 956 + type: CableHV + components: + - pos: 13.5,28.5 + parent: 1 + type: Transform +- uid: 957 + type: CableHV + components: + - pos: 14.5,28.5 + parent: 1 + type: Transform +- uid: 958 + type: CableHV + components: + - pos: 15.5,28.5 + parent: 1 + type: Transform +- uid: 959 + type: CableHV + components: + - pos: 16.5,28.5 + parent: 1 + type: Transform +- uid: 960 + type: CableHV + components: + - pos: 16.5,27.5 + parent: 1 + type: Transform +- uid: 961 + type: CableHV + components: + - pos: 17.5,27.5 + parent: 1 + type: Transform +- uid: 962 + type: CableHV + components: + - pos: 18.5,27.5 + parent: 1 + type: Transform +- uid: 963 + type: CableHV + components: + - pos: 18.5,26.5 + parent: 1 + type: Transform +- uid: 964 + type: CableHV + components: + - pos: 19.5,26.5 + parent: 1 + type: Transform +- uid: 965 + type: CableHV + components: + - pos: 19.5,25.5 + parent: 1 + type: Transform +- uid: 966 + type: CableHV + components: + - pos: 19.5,24.5 + parent: 1 + type: Transform +- uid: 967 + type: CableHV + components: + - pos: 18.5,24.5 + parent: 1 + type: Transform +- uid: 968 + type: CableHV + components: + - pos: 18.5,23.5 + parent: 1 + type: Transform +- uid: 969 + type: CableHV + components: + - pos: 4.5,-22.5 + parent: 1 + type: Transform +- uid: 970 + type: CableHV + components: + - pos: 3.5,-22.5 + parent: 1 + type: Transform +- uid: 971 + type: CableHV + components: + - pos: 3.5,-23.5 + parent: 1 + type: Transform +- uid: 972 + type: CableHV + components: + - pos: 3.5,-24.5 + parent: 1 + type: Transform +- uid: 973 + type: CableApcExtension + components: + - pos: 4.5,-25.5 + parent: 1 + type: Transform +- uid: 974 + type: CableApcExtension + components: + - pos: 4.5,-24.5 + parent: 1 + type: Transform +- uid: 975 + type: CableApcExtension + components: + - pos: 4.5,-23.5 + parent: 1 + type: Transform +- uid: 976 + type: CableApcExtension + components: + - pos: 4.5,-22.5 + parent: 1 + type: Transform +- uid: 977 + type: CableApcExtension + components: + - pos: 4.5,-21.5 + parent: 1 + type: Transform +- uid: 978 + type: CableApcExtension + components: + - pos: 4.5,-20.5 + parent: 1 + type: Transform +- uid: 979 + type: CableApcExtension + components: + - pos: 4.5,-19.5 + parent: 1 + type: Transform +- uid: 980 + type: CableApcExtension + components: + - pos: 5.5,-23.5 + parent: 1 + type: Transform +- uid: 981 + type: CableApcExtension + components: + - pos: 6.5,-23.5 + parent: 1 + type: Transform +- uid: 982 + type: CableApcExtension + components: + - pos: 7.5,-23.5 + parent: 1 + type: Transform +- uid: 983 + type: CableApcExtension + components: + - pos: 8.5,-23.5 + parent: 1 + type: Transform +- uid: 984 + type: CableApcExtension + components: + - pos: 9.5,-23.5 + parent: 1 + type: Transform +- uid: 985 + type: CableApcExtension + components: + - pos: 10.5,-23.5 + parent: 1 + type: Transform +- uid: 986 + type: CableApcExtension + components: + - pos: 11.5,-23.5 + parent: 1 + type: Transform +- uid: 987 + type: CableApcExtension + components: + - pos: 6.5,-24.5 + parent: 1 + type: Transform +- uid: 988 + type: CableApcExtension + components: + - pos: 6.5,-25.5 + parent: 1 + type: Transform +- uid: 989 + type: CableApcExtension + components: + - pos: 11.5,-24.5 + parent: 1 + type: Transform +- uid: 990 + type: CableApcExtension + components: + - pos: 11.5,-25.5 + parent: 1 + type: Transform +- uid: 991 + type: CableApcExtension + components: + - pos: 11.5,-26.5 + parent: 1 + type: Transform +- uid: 992 + type: CableApcExtension + components: + - pos: 10.5,-26.5 + parent: 1 + type: Transform +- uid: 993 + type: CableApcExtension + components: + - pos: 10.5,-27.5 + parent: 1 + type: Transform +- uid: 994 + type: CableApcExtension + components: + - pos: 12.5,-26.5 + parent: 1 + type: Transform +- uid: 995 + type: CableApcExtension + components: + - pos: 12.5,-27.5 + parent: 1 + type: Transform +- uid: 996 + type: CableApcExtension + components: + - pos: 10.5,-22.5 + parent: 1 + type: Transform +- uid: 997 + type: CableApcExtension + components: + - pos: 10.5,-21.5 + parent: 1 + type: Transform +- uid: 998 + type: CableApcExtension + components: + - pos: 10.5,-20.5 + parent: 1 + type: Transform +- uid: 999 + type: CableApcExtension + components: + - pos: 9.5,-20.5 + parent: 1 + type: Transform +- uid: 1000 + type: CableApcExtension + components: + - pos: 8.5,-20.5 + parent: 1 + type: Transform +- uid: 1001 + type: CableApcExtension + components: + - pos: 16.5,-21.5 + parent: 1 + type: Transform +- uid: 1002 + type: CableApcExtension + components: + - pos: 15.5,-21.5 + parent: 1 + type: Transform +- uid: 1003 + type: CableApcExtension + components: + - pos: 14.5,-21.5 + parent: 1 + type: Transform +- uid: 1004 + type: CableApcExtension + components: + - pos: 14.5,-20.5 + parent: 1 + type: Transform +- uid: 1005 + type: CableApcExtension + components: + - pos: 14.5,-23.5 + parent: 1 + type: Transform +- uid: 1006 + type: CableApcExtension + components: + - pos: 14.5,-22.5 + parent: 1 + type: Transform +- uid: 1007 + type: CableApcExtension + components: + - pos: 16.5,-22.5 + parent: 1 + type: Transform +- uid: 1008 + type: CableApcExtension + components: + - pos: 16.5,-23.5 + parent: 1 + type: Transform +- uid: 1009 + type: CableApcExtension + components: + - pos: 16.5,-24.5 + parent: 1 + type: Transform +- uid: 1010 + type: CableApcExtension + components: + - pos: 16.5,-25.5 + parent: 1 + type: Transform +- uid: 1011 + type: CableApcExtension + components: + - pos: 17.5,-23.5 + parent: 1 + type: Transform +- uid: 1012 + type: CableApcExtension + components: + - pos: 18.5,-23.5 + parent: 1 + type: Transform +- uid: 1013 + type: CableApcExtension + components: + - pos: 19.5,-23.5 + parent: 1 + type: Transform +- uid: 1014 + type: CableApcExtension + components: + - pos: 18.5,-22.5 + parent: 1 + type: Transform +- uid: 1015 + type: CableApcExtension + components: + - pos: 18.5,-21.5 + parent: 1 + type: Transform +- uid: 1016 + type: CableApcExtension + components: + - pos: 18.5,-20.5 + parent: 1 + type: Transform +- uid: 1017 + type: CableApcExtension + components: + - pos: 18.5,-19.5 + parent: 1 + type: Transform +- uid: 1018 + type: CableApcExtension + components: + - pos: 19.5,-22.5 + parent: 1 + type: Transform +- uid: 1019 + type: CableApcExtension + components: + - pos: 19.5,-24.5 + parent: 1 + type: Transform +- uid: 1020 + type: CableApcExtension + components: + - pos: 10.5,-12.5 + parent: 1 + type: Transform +- uid: 1021 + type: CableApcExtension + components: + - pos: 9.5,-12.5 + parent: 1 + type: Transform +- uid: 1022 + type: CableApcExtension + components: + - pos: 9.5,-13.5 + parent: 1 + type: Transform +- uid: 1023 + type: CableApcExtension + components: + - pos: 9.5,-11.5 + parent: 1 + type: Transform +- uid: 1024 + type: CableApcExtension + components: + - pos: 9.5,-10.5 + parent: 1 + type: Transform +- uid: 1025 + type: CableApcExtension + components: + - pos: 9.5,-9.5 + parent: 1 + type: Transform +- uid: 1026 + type: CableApcExtension + components: + - pos: 8.5,-9.5 + parent: 1 + type: Transform +- uid: 1027 + type: CableApcExtension + components: + - pos: 7.5,-9.5 + parent: 1 + type: Transform +- uid: 1028 + type: CableApcExtension + components: + - pos: 6.5,-9.5 + parent: 1 + type: Transform +- uid: 1029 + type: CableApcExtension + components: + - pos: 5.5,-9.5 + parent: 1 + type: Transform +- uid: 1030 + type: CableApcExtension + components: + - pos: 5.5,-10.5 + parent: 1 + type: Transform +- uid: 1031 + type: CableApcExtension + components: + - pos: 5.5,-11.5 + parent: 1 + type: Transform +- uid: 1032 + type: CableApcExtension + components: + - pos: 5.5,-12.5 + parent: 1 + type: Transform +- uid: 1033 + type: CableApcExtension + components: + - pos: 6.5,-8.5 + parent: 1 + type: Transform +- uid: 1034 + type: CableApcExtension + components: + - pos: 6.5,-7.5 + parent: 1 + type: Transform +- uid: 1035 + type: CableApcExtension + components: + - pos: 6.5,-6.5 + parent: 1 + type: Transform +- uid: 1036 + type: CableApcExtension + components: + - pos: 6.5,-5.5 + parent: 1 + type: Transform +- uid: 1037 + type: CableApcExtension + components: + - pos: 10.5,-9.5 + parent: 1 + type: Transform +- uid: 1038 + type: CableApcExtension + components: + - pos: 10.5,-8.5 + parent: 1 + type: Transform +- uid: 1039 + type: CableApcExtension + components: + - pos: 10.5,-7.5 + parent: 1 + type: Transform +- uid: 1040 + type: CableApcExtension + components: + - pos: 10.5,-6.5 + parent: 1 + type: Transform +- uid: 1041 + type: CableApcExtension + components: + - pos: 10.5,-5.5 + parent: 1 + type: Transform +- uid: 1042 + type: CableApcExtension + components: + - pos: 11.5,-9.5 + parent: 1 + type: Transform +- uid: 1043 + type: CableApcExtension + components: + - pos: 12.5,-9.5 + parent: 1 + type: Transform +- uid: 1044 + type: CableApcExtension + components: + - pos: 13.5,-9.5 + parent: 1 + type: Transform +- uid: 1045 + type: CableApcExtension + components: + - pos: 14.5,-9.5 + parent: 1 + type: Transform +- uid: 1046 + type: CableApcExtension + components: + - pos: 15.5,-9.5 + parent: 1 + type: Transform +- uid: 1047 + type: CableApcExtension + components: + - pos: 16.5,-9.5 + parent: 1 + type: Transform +- uid: 1048 + type: CableApcExtension + components: + - pos: 14.5,-8.5 + parent: 1 + type: Transform +- uid: 1049 + type: CableApcExtension + components: + - pos: 14.5,-7.5 + parent: 1 + type: Transform +- uid: 1050 + type: CableApcExtension + components: + - pos: 14.5,-6.5 + parent: 1 + type: Transform +- uid: 1051 + type: CableApcExtension + components: + - pos: 14.5,-5.5 + parent: 1 + type: Transform +- uid: 1052 + type: CableApcExtension + components: + - pos: 16.5,-8.5 + parent: 1 + type: Transform +- uid: 1053 + type: CableApcExtension + components: + - pos: 16.5,-7.5 + parent: 1 + type: Transform +- uid: 1054 + type: CableApcExtension + components: + - pos: 16.5,-6.5 + parent: 1 + type: Transform +- uid: 1055 + type: CableApcExtension + components: + - pos: 16.5,-5.5 + parent: 1 + type: Transform +- uid: 1056 + type: CableApcExtension + components: + - pos: 13.5,-10.5 + parent: 1 + type: Transform +- uid: 1057 + type: CableApcExtension + components: + - pos: 13.5,-11.5 + parent: 1 + type: Transform +- uid: 1058 + type: CableApcExtension + components: + - pos: 13.5,-12.5 + parent: 1 + type: Transform +- uid: 1059 + type: CableApcExtension + components: + - pos: 13.5,-13.5 + parent: 1 + type: Transform +- uid: 1060 + type: CableApcExtension + components: + - pos: 12.5,-13.5 + parent: 1 + type: Transform +- uid: 1061 + type: CableApcExtension + components: + - pos: 14.5,-13.5 + parent: 1 + type: Transform +- uid: 1062 + type: CableApcExtension + components: + - pos: 15.5,-13.5 + parent: 1 + type: Transform +- uid: 1063 + type: CableApcExtension + components: + - pos: 16.5,-13.5 + parent: 1 + type: Transform +- uid: 1064 + type: CableApcExtension + components: + - pos: 0.5,-5.5 + parent: 1 + type: Transform +- uid: 1065 + type: CableApcExtension + components: + - pos: 1.5,-5.5 + parent: 1 + type: Transform +- uid: 1066 + type: CableApcExtension + components: + - pos: 2.5,-5.5 + parent: 1 + type: Transform +- uid: 1067 + type: CableApcExtension + components: + - pos: 2.5,-6.5 + parent: 1 + type: Transform +- uid: 1068 + type: CableApcExtension + components: + - pos: 2.5,-7.5 + parent: 1 + type: Transform +- uid: 1069 + type: CableApcExtension + components: + - pos: 2.5,-8.5 + parent: 1 + type: Transform +- uid: 1070 + type: CableApcExtension + components: + - pos: 2.5,-9.5 + parent: 1 + type: Transform +- uid: 1071 + type: CableApcExtension + components: + - pos: 2.5,-10.5 + parent: 1 + type: Transform +- uid: 1072 + type: CableApcExtension + components: + - pos: 2.5,-11.5 + parent: 1 + type: Transform +- uid: 1073 + type: CableApcExtension + components: + - pos: 2.5,-12.5 + parent: 1 + type: Transform +- uid: 1074 + type: CableApcExtension + components: + - pos: 2.5,-13.5 + parent: 1 + type: Transform +- uid: 1075 + type: CableApcExtension + components: + - pos: 2.5,-14.5 + parent: 1 + type: Transform +- uid: 1076 + type: CableApcExtension + components: + - pos: 2.5,-15.5 + parent: 1 + type: Transform +- uid: 1077 + type: CableApcExtension + components: + - pos: 2.5,-16.5 + parent: 1 + type: Transform +- uid: 1078 + type: CableApcExtension + components: + - pos: 3.5,-16.5 + parent: 1 + type: Transform +- uid: 1079 + type: CableApcExtension + components: + - pos: 4.5,-16.5 + parent: 1 + type: Transform +- uid: 1080 + type: CableApcExtension + components: + - pos: 5.5,-16.5 + parent: 1 + type: Transform +- uid: 1081 + type: CableApcExtension + components: + - pos: 6.5,-16.5 + parent: 1 + type: Transform +- uid: 1082 + type: CableApcExtension + components: + - pos: 7.5,-16.5 + parent: 1 + type: Transform +- uid: 1083 + type: CableApcExtension + components: + - pos: 8.5,-16.5 + parent: 1 + type: Transform +- uid: 1084 + type: CableApcExtension + components: + - pos: 9.5,-16.5 + parent: 1 + type: Transform +- uid: 1085 + type: CableApcExtension + components: + - pos: 2.5,-4.5 + parent: 1 + type: Transform +- uid: 1086 + type: CableApcExtension + components: + - pos: 2.5,-3.5 + parent: 1 + type: Transform +- uid: 1087 + type: CableApcExtension + components: + - pos: 2.5,-2.5 + parent: 1 + type: Transform +- uid: 1088 + type: CableApcExtension + components: + - pos: 2.5,-1.5 + parent: 1 + type: Transform +- uid: 1089 + type: CableApcExtension + components: + - pos: 3.5,-1.5 + parent: 1 + type: Transform +- uid: 1090 + type: CableApcExtension + components: + - pos: 4.5,-1.5 + parent: 1 + type: Transform +- uid: 1091 + type: CableApcExtension + components: + - pos: 5.5,-1.5 + parent: 1 + type: Transform +- uid: 1092 + type: CableApcExtension + components: + - pos: 6.5,-1.5 + parent: 1 + type: Transform +- uid: 1093 + type: CableApcExtension + components: + - pos: 7.5,-1.5 + parent: 1 + type: Transform +- uid: 1094 + type: CableApcExtension + components: + - pos: 8.5,-1.5 + parent: 1 + type: Transform +- uid: 1095 + type: CableApcExtension + components: + - pos: 9.5,-1.5 + parent: 1 + type: Transform +- uid: 1096 + type: FirelockGlass + components: + - pos: 9.5,0.5 + parent: 1 + type: Transform +- uid: 1097 + type: FirelockGlass + components: + - pos: 10.5,0.5 + parent: 1 + type: Transform +- uid: 1098 + type: FirelockGlass + components: + - pos: 12.5,0.5 + parent: 1 + type: Transform +- uid: 1099 + type: FirelockGlass + components: + - pos: 13.5,0.5 + parent: 1 + type: Transform +- uid: 1100 + type: CableApcExtension + components: + - pos: 22.5,-5.5 + parent: 1 + type: Transform +- uid: 1101 + type: CableApcExtension + components: + - pos: 21.5,-5.5 + parent: 1 + type: Transform +- uid: 1102 + type: CableApcExtension + components: + - pos: 20.5,-5.5 + parent: 1 + type: Transform +- uid: 1103 + type: CableApcExtension + components: + - pos: 20.5,-4.5 + parent: 1 + type: Transform +- uid: 1104 + type: CableApcExtension + components: + - pos: 20.5,-3.5 + parent: 1 + type: Transform +- uid: 1105 + type: CableApcExtension + components: + - pos: 20.5,-2.5 + parent: 1 + type: Transform +- uid: 1106 + type: CableApcExtension + components: + - pos: 20.5,-1.5 + parent: 1 + type: Transform +- uid: 1107 + type: CableApcExtension + components: + - pos: 19.5,-1.5 + parent: 1 + type: Transform +- uid: 1108 + type: CableApcExtension + components: + - pos: 18.5,-1.5 + parent: 1 + type: Transform +- uid: 1109 + type: CableApcExtension + components: + - pos: 17.5,-1.5 + parent: 1 + type: Transform +- uid: 1110 + type: CableApcExtension + components: + - pos: 16.5,-1.5 + parent: 1 + type: Transform +- uid: 1111 + type: CableApcExtension + components: + - pos: 15.5,-1.5 + parent: 1 + type: Transform +- uid: 1112 + type: CableApcExtension + components: + - pos: 14.5,-1.5 + parent: 1 + type: Transform +- uid: 1113 + type: CableApcExtension + components: + - pos: 13.5,-1.5 + parent: 1 + type: Transform +- uid: 1114 + type: CableApcExtension + components: + - pos: 20.5,-6.5 + parent: 1 + type: Transform +- uid: 1115 + type: CableApcExtension + components: + - pos: 20.5,-7.5 + parent: 1 + type: Transform +- uid: 1116 + type: CableApcExtension + components: + - pos: 20.5,-8.5 + parent: 1 + type: Transform +- uid: 1117 + type: CableApcExtension + components: + - pos: 20.5,-9.5 + parent: 1 + type: Transform +- uid: 1118 + type: CableApcExtension + components: + - pos: 20.5,-10.5 + parent: 1 + type: Transform +- uid: 1119 + type: CableApcExtension + components: + - pos: 20.5,-11.5 + parent: 1 + type: Transform +- uid: 1120 + type: CableApcExtension + components: + - pos: 20.5,-12.5 + parent: 1 + type: Transform +- uid: 1121 + type: CableApcExtension + components: + - pos: 20.5,-13.5 + parent: 1 + type: Transform +- uid: 1122 + type: CableApcExtension + components: + - pos: 20.5,-14.5 + parent: 1 + type: Transform +- uid: 1123 + type: CableApcExtension + components: + - pos: 20.5,-15.5 + parent: 1 + type: Transform +- uid: 1124 + type: CableApcExtension + components: + - pos: 20.5,-16.5 + parent: 1 + type: Transform +- uid: 1125 + type: CableApcExtension + components: + - pos: 19.5,-16.5 + parent: 1 + type: Transform +- uid: 1126 + type: CableApcExtension + components: + - pos: 18.5,-16.5 + parent: 1 + type: Transform +- uid: 1127 + type: CableApcExtension + components: + - pos: 17.5,-16.5 + parent: 1 + type: Transform +- uid: 1128 + type: CableApcExtension + components: + - pos: 16.5,-16.5 + parent: 1 + type: Transform +- uid: 1129 + type: CableApcExtension + components: + - pos: 13.5,-14.5 + parent: 1 + type: Transform +- uid: 1130 + type: CableApcExtension + components: + - pos: 13.5,-15.5 + parent: 1 + type: Transform +- uid: 1131 + type: CableApcExtension + components: + - pos: 22.5,6.5 + parent: 1 + type: Transform +- uid: 1132 + type: CableApcExtension + components: + - pos: 21.5,6.5 + parent: 1 + type: Transform +- uid: 1133 + type: CableApcExtension + components: + - pos: 20.5,6.5 + parent: 1 + type: Transform +- uid: 1134 + type: CableApcExtension + components: + - pos: 20.5,5.5 + parent: 1 + type: Transform +- uid: 1135 + type: CableApcExtension + components: + - pos: 20.5,4.5 + parent: 1 + type: Transform +- uid: 1136 + type: CableApcExtension + components: + - pos: 20.5,3.5 + parent: 1 + type: Transform +- uid: 1137 + type: CableApcExtension + components: + - pos: 20.5,2.5 + parent: 1 + type: Transform +- uid: 1138 + type: CableApcExtension + components: + - pos: 19.5,2.5 + parent: 1 + type: Transform +- uid: 1139 + type: CableApcExtension + components: + - pos: 18.5,2.5 + parent: 1 + type: Transform +- uid: 1140 + type: CableApcExtension + components: + - pos: 17.5,2.5 + parent: 1 + type: Transform +- uid: 1141 + type: CableApcExtension + components: + - pos: 16.5,2.5 + parent: 1 + type: Transform +- uid: 1142 + type: CableApcExtension + components: + - pos: 15.5,2.5 + parent: 1 + type: Transform +- uid: 1143 + type: CableApcExtension + components: + - pos: 14.5,2.5 + parent: 1 + type: Transform +- uid: 1144 + type: CableApcExtension + components: + - pos: 13.5,2.5 + parent: 1 + type: Transform +- uid: 1145 + type: CableApcExtension + components: + - pos: 11.5,3.5 + parent: 1 + type: Transform +- uid: 1146 + type: CableApcExtension + components: + - pos: 11.5,4.5 + parent: 1 + type: Transform +- uid: 1147 + type: CableApcExtension + components: + - pos: 11.5,5.5 + parent: 1 + type: Transform +- uid: 1148 + type: CableApcExtension + components: + - pos: 11.5,6.5 + parent: 1 + type: Transform +- uid: 1149 + type: CableApcExtension + components: + - pos: 11.5,7.5 + parent: 1 + type: Transform +- uid: 1150 + type: CableApcExtension + components: + - pos: 11.5,8.5 + parent: 1 + type: Transform +- uid: 1151 + type: CableApcExtension + components: + - pos: 10.5,5.5 + parent: 1 + type: Transform +- uid: 1152 + type: CableApcExtension + components: + - pos: 12.5,5.5 + parent: 1 + type: Transform +- uid: 1153 + type: CableApcExtension + components: + - pos: 0.5,6.5 + parent: 1 + type: Transform +- uid: 1154 + type: CableApcExtension + components: + - pos: 1.5,6.5 + parent: 1 + type: Transform +- uid: 1155 + type: CableApcExtension + components: + - pos: 2.5,6.5 + parent: 1 + type: Transform +- uid: 1156 + type: CableApcExtension + components: + - pos: 2.5,5.5 + parent: 1 + type: Transform +- uid: 1157 + type: CableApcExtension + components: + - pos: 2.5,4.5 + parent: 1 + type: Transform +- uid: 1158 + type: CableApcExtension + components: + - pos: 2.5,3.5 + parent: 1 + type: Transform +- uid: 1159 + type: CableApcExtension + components: + - pos: 2.5,2.5 + parent: 1 + type: Transform +- uid: 1160 + type: CableApcExtension + components: + - pos: 3.5,2.5 + parent: 1 + type: Transform +- uid: 1161 + type: CableApcExtension + components: + - pos: 4.5,2.5 + parent: 1 + type: Transform +- uid: 1162 + type: CableApcExtension + components: + - pos: 5.5,2.5 + parent: 1 + type: Transform +- uid: 1163 + type: CableApcExtension + components: + - pos: 6.5,2.5 + parent: 1 + type: Transform +- uid: 1164 + type: CableApcExtension + components: + - pos: 7.5,2.5 + parent: 1 + type: Transform +- uid: 1165 + type: CableApcExtension + components: + - pos: 8.5,2.5 + parent: 1 + type: Transform +- uid: 1166 + type: CableApcExtension + components: + - pos: 9.5,2.5 + parent: 1 + type: Transform +- uid: 1167 + type: CableApcExtension + components: + - pos: 2.5,7.5 + parent: 1 + type: Transform +- uid: 1168 + type: CableApcExtension + components: + - pos: 2.5,8.5 + parent: 1 + type: Transform +- uid: 1169 + type: CableApcExtension + components: + - pos: 2.5,9.5 + parent: 1 + type: Transform +- uid: 1170 + type: CableApcExtension + components: + - pos: 2.5,10.5 + parent: 1 + type: Transform +- uid: 1171 + type: CableApcExtension + components: + - pos: 2.5,11.5 + parent: 1 + type: Transform +- uid: 1172 + type: CableApcExtension + components: + - pos: 2.5,12.5 + parent: 1 + type: Transform +- uid: 1173 + type: CableApcExtension + components: + - pos: 2.5,13.5 + parent: 1 + type: Transform +- uid: 1174 + type: CableApcExtension + components: + - pos: 2.5,14.5 + parent: 1 + type: Transform +- uid: 1175 + type: CableApcExtension + components: + - pos: 2.5,15.5 + parent: 1 + type: Transform +- uid: 1176 + type: CableApcExtension + components: + - pos: 2.5,16.5 + parent: 1 + type: Transform +- uid: 1177 + type: CableApcExtension + components: + - pos: 2.5,17.5 + parent: 1 + type: Transform +- uid: 1178 + type: CableApcExtension + components: + - pos: 3.5,17.5 + parent: 1 + type: Transform +- uid: 1179 + type: CableApcExtension + components: + - pos: 4.5,17.5 + parent: 1 + type: Transform +- uid: 1180 + type: CableApcExtension + components: + - pos: 5.5,17.5 + parent: 1 + type: Transform +- uid: 1181 + type: CableApcExtension + components: + - pos: 6.5,17.5 + parent: 1 + type: Transform +- uid: 1182 + type: CableApcExtension + components: + - pos: 7.5,17.5 + parent: 1 + type: Transform +- uid: 1183 + type: CableApcExtension + components: + - pos: 8.5,17.5 + parent: 1 + type: Transform +- uid: 1184 + type: CableApcExtension + components: + - pos: 9.5,17.5 + parent: 1 + type: Transform +- uid: 1185 + type: CableApcExtension + components: + - pos: 13.5,17.5 + parent: 1 + type: Transform +- uid: 1186 + type: CableApcExtension + components: + - pos: 14.5,17.5 + parent: 1 + type: Transform +- uid: 1187 + type: CableApcExtension + components: + - pos: 15.5,17.5 + parent: 1 + type: Transform +- uid: 1188 + type: CableApcExtension + components: + - pos: 16.5,17.5 + parent: 1 + type: Transform +- uid: 1189 + type: CableApcExtension + components: + - pos: 17.5,17.5 + parent: 1 + type: Transform +- uid: 1190 + type: CableApcExtension + components: + - pos: 18.5,17.5 + parent: 1 + type: Transform +- uid: 1191 + type: CableApcExtension + components: + - pos: 19.5,17.5 + parent: 1 + type: Transform +- uid: 1192 + type: CableApcExtension + components: + - pos: 20.5,17.5 + parent: 1 + type: Transform +- uid: 1193 + type: CableApcExtension + components: + - pos: 20.5,16.5 + parent: 1 + type: Transform +- uid: 1194 + type: CableApcExtension + components: + - pos: 20.5,15.5 + parent: 1 + type: Transform +- uid: 1195 + type: CableApcExtension + components: + - pos: 20.5,14.5 + parent: 1 + type: Transform +- uid: 1196 + type: CableApcExtension + components: + - pos: 20.5,13.5 + parent: 1 + type: Transform +- uid: 1197 + type: CableApcExtension + components: + - pos: 20.5,12.5 + parent: 1 + type: Transform +- uid: 1198 + type: CableApcExtension + components: + - pos: 20.5,11.5 + parent: 1 + type: Transform +- uid: 1199 + type: CableApcExtension + components: + - pos: 20.5,10.5 + parent: 1 + type: Transform +- uid: 1200 + type: CableApcExtension + components: + - pos: 20.5,9.5 + parent: 1 + type: Transform +- uid: 1201 + type: CableApcExtension + components: + - pos: 20.5,8.5 + parent: 1 + type: Transform +- uid: 1202 + type: CableApcExtension + components: + - pos: 20.5,7.5 + parent: 1 + type: Transform +- uid: 1203 + type: CableApcExtension + components: + - pos: 11.5,15.5 + parent: 1 + type: Transform +- uid: 1204 + type: CableApcExtension + components: + - pos: 11.5,14.5 + parent: 1 + type: Transform +- uid: 1205 + type: CableApcExtension + components: + - pos: 11.5,13.5 + parent: 1 + type: Transform +- uid: 1206 + type: CableApcExtension + components: + - pos: 11.5,12.5 + parent: 1 + type: Transform +- uid: 1207 + type: CableApcExtension + components: + - pos: 10.5,12.5 + parent: 1 + type: Transform +- uid: 1208 + type: CableApcExtension + components: + - pos: 9.5,12.5 + parent: 1 + type: Transform +- uid: 1209 + type: CableApcExtension + components: + - pos: 8.5,12.5 + parent: 1 + type: Transform +- uid: 1210 + type: CableApcExtension + components: + - pos: 7.5,12.5 + parent: 1 + type: Transform +- uid: 1211 + type: CableApcExtension + components: + - pos: 6.5,12.5 + parent: 1 + type: Transform +- uid: 1212 + type: CableApcExtension + components: + - pos: 6.5,11.5 + parent: 1 + type: Transform +- uid: 1213 + type: CableApcExtension + components: + - pos: 6.5,10.5 + parent: 1 + type: Transform +- uid: 1214 + type: CableApcExtension + components: + - pos: 6.5,9.5 + parent: 1 + type: Transform +- uid: 1215 + type: CableApcExtension + components: + - pos: 6.5,8.5 + parent: 1 + type: Transform +- uid: 1216 + type: CableApcExtension + components: + - pos: 6.5,7.5 + parent: 1 + type: Transform +- uid: 1217 + type: CableApcExtension + components: + - pos: 6.5,6.5 + parent: 1 + type: Transform +- uid: 1218 + type: CableApcExtension + components: + - pos: 6.5,5.5 + parent: 1 + type: Transform +- uid: 1219 + type: CableApcExtension + components: + - pos: 12.5,12.5 + parent: 1 + type: Transform +- uid: 1220 + type: CableApcExtension + components: + - pos: 13.5,12.5 + parent: 1 + type: Transform +- uid: 1221 + type: CableApcExtension + components: + - pos: 14.5,12.5 + parent: 1 + type: Transform +- uid: 1222 + type: CableApcExtension + components: + - pos: 15.5,12.5 + parent: 1 + type: Transform +- uid: 1223 + type: CableApcExtension + components: + - pos: 16.5,12.5 + parent: 1 + type: Transform +- uid: 1224 + type: CableApcExtension + components: + - pos: 16.5,11.5 + parent: 1 + type: Transform +- uid: 1225 + type: CableApcExtension + components: + - pos: 16.5,10.5 + parent: 1 + type: Transform +- uid: 1226 + type: CableApcExtension + components: + - pos: 16.5,9.5 + parent: 1 + type: Transform +- uid: 1227 + type: CableApcExtension + components: + - pos: 16.5,8.5 + parent: 1 + type: Transform +- uid: 1228 + type: CableApcExtension + components: + - pos: 16.5,7.5 + parent: 1 + type: Transform +- uid: 1229 + type: CableApcExtension + components: + - pos: 16.5,6.5 + parent: 1 + type: Transform +- uid: 1230 + type: CableApcExtension + components: + - pos: 16.5,5.5 + parent: 1 + type: Transform +- uid: 1231 + type: CableMV + components: + - pos: 10.5,11.5 + parent: 1 + type: Transform +- uid: 1232 + type: CableMV + components: + - pos: 9.5,11.5 + parent: 1 + type: Transform +- uid: 1233 + type: CableMV + components: + - pos: 8.5,11.5 + parent: 1 + type: Transform +- uid: 1234 + type: CableMV + components: + - pos: 7.5,11.5 + parent: 1 + type: Transform +- uid: 1235 + type: CableMV + components: + - pos: 6.5,11.5 + parent: 1 + type: Transform +- uid: 1236 + type: CableMV + components: + - pos: 5.5,11.5 + parent: 1 + type: Transform +- uid: 1237 + type: CableMV + components: + - pos: 4.5,11.5 + parent: 1 + type: Transform +- uid: 1238 + type: CableMV + components: + - pos: 4.5,10.5 + parent: 1 + type: Transform +- uid: 1239 + type: CableMV + components: + - pos: 4.5,12.5 + parent: 1 + type: Transform +- uid: 1240 + type: CableMV + components: + - pos: 8.5,10.5 + parent: 1 + type: Transform +- uid: 1241 + type: CableMV + components: + - pos: 12.5,11.5 + parent: 1 + type: Transform +- uid: 1242 + type: CableMV + components: + - pos: 13.5,11.5 + parent: 1 + type: Transform +- uid: 1243 + type: CableMV + components: + - pos: 14.5,11.5 + parent: 1 + type: Transform +- uid: 1244 + type: CableMV + components: + - pos: 15.5,11.5 + parent: 1 + type: Transform +- uid: 1245 + type: CableMV + components: + - pos: 16.5,11.5 + parent: 1 + type: Transform +- uid: 1246 + type: CableMV + components: + - pos: 17.5,11.5 + parent: 1 + type: Transform +- uid: 1247 + type: CableMV + components: + - pos: 18.5,11.5 + parent: 1 + type: Transform +- uid: 1248 + type: CableMV + components: + - pos: 18.5,10.5 + parent: 1 + type: Transform +- uid: 1249 + type: CableMV + components: + - pos: 18.5,12.5 + parent: 1 + type: Transform +- uid: 1250 + type: CableMV + components: + - pos: 14.5,10.5 + parent: 1 + type: Transform +- uid: 1251 + type: CableMV + components: + - pos: 14.5,12.5 + parent: 1 + type: Transform +- uid: 1252 + type: CableMV + components: + - pos: 14.5,13.5 + parent: 1 + type: Transform +- uid: 1253 + type: CableMV + components: + - pos: 14.5,14.5 + parent: 1 + type: Transform +- uid: 1254 + type: CableMV + components: + - pos: 14.5,15.5 + parent: 1 + type: Transform +- uid: 1255 + type: CableMV + components: + - pos: 13.5,15.5 + parent: 1 + type: Transform +- uid: 1256 + type: CableMV + components: + - pos: 15.5,15.5 + parent: 1 + type: Transform +- uid: 1257 + type: CableMV + components: + - pos: 8.5,12.5 + parent: 1 + type: Transform +- uid: 1258 + type: CableMV + components: + - pos: 8.5,13.5 + parent: 1 + type: Transform +- uid: 1259 + type: CableMV + components: + - pos: 8.5,14.5 + parent: 1 + type: Transform +- uid: 1260 + type: CableMV + components: + - pos: 8.5,15.5 + parent: 1 + type: Transform +- uid: 1261 + type: CableMV + components: + - pos: 7.5,15.5 + parent: 1 + type: Transform +- uid: 1262 + type: CableMV + components: + - pos: 9.5,15.5 + parent: 1 + type: Transform +- uid: 1263 + type: CableMV + components: + - pos: 17.5,10.5 + parent: 1 + type: Transform +- uid: 1264 + type: CableMV + components: + - pos: 17.5,9.5 + parent: 1 + type: Transform +- uid: 1265 + type: CableMV + components: + - pos: 17.5,8.5 + parent: 1 + type: Transform +- uid: 1266 + type: CableMV + components: + - pos: 17.5,7.5 + parent: 1 + type: Transform +- uid: 1267 + type: CableMV + components: + - pos: 17.5,6.5 + parent: 1 + type: Transform +- uid: 1268 + type: CableMV + components: + - pos: 18.5,6.5 + parent: 1 + type: Transform +- uid: 1269 + type: CableMV + components: + - pos: 18.5,5.5 + parent: 1 + type: Transform +- uid: 1270 + type: CableMV + components: + - pos: 5.5,10.5 + parent: 1 + type: Transform +- uid: 1271 + type: CableMV + components: + - pos: 5.5,9.5 + parent: 1 + type: Transform +- uid: 1272 + type: CableMV + components: + - pos: 5.5,8.5 + parent: 1 + type: Transform +- uid: 1273 + type: CableMV + components: + - pos: 5.5,7.5 + parent: 1 + type: Transform +- uid: 1274 + type: CableMV + components: + - pos: 5.5,6.5 + parent: 1 + type: Transform +- uid: 1275 + type: CableMV + components: + - pos: 4.5,6.5 + parent: 1 + type: Transform +- uid: 1276 + type: CableMV + components: + - pos: 4.5,5.5 + parent: 1 + type: Transform +- uid: 1277 + type: CableApcExtension + components: + - pos: 13.5,22.5 + parent: 1 + type: Transform +- uid: 1278 + type: CableApcExtension + components: + - pos: 13.5,23.5 + parent: 1 + type: Transform +- uid: 1279 + type: CableApcExtension + components: + - pos: 13.5,24.5 + parent: 1 + type: Transform +- uid: 1280 + type: CableApcExtension + components: + - pos: 13.5,25.5 + parent: 1 + type: Transform +- uid: 1281 + type: CableApcExtension + components: + - pos: 14.5,25.5 + parent: 1 + type: Transform +- uid: 1282 + type: CableApcExtension + components: + - pos: 15.5,25.5 + parent: 1 + type: Transform +- uid: 1283 + type: CableApcExtension + components: + - pos: 16.5,25.5 + parent: 1 + type: Transform +- uid: 1284 + type: CableApcExtension + components: + - pos: 17.5,25.5 + parent: 1 + type: Transform +- uid: 1285 + type: CableApcExtension + components: + - pos: 17.5,24.5 + parent: 1 + type: Transform +- uid: 1286 + type: CableApcExtension + components: + - pos: 17.5,23.5 + parent: 1 + type: Transform +- uid: 1287 + type: CableApcExtension + components: + - pos: 17.5,22.5 + parent: 1 + type: Transform +- uid: 1288 + type: CableApcExtension + components: + - pos: 17.5,21.5 + parent: 1 + type: Transform +- uid: 1289 + type: CableApcExtension + components: + - pos: 17.5,20.5 + parent: 1 + type: Transform +- uid: 1290 + type: CableApcExtension + components: + - pos: 12.5,25.5 + parent: 1 + type: Transform +- uid: 1291 + type: CableApcExtension + components: + - pos: 11.5,25.5 + parent: 1 + type: Transform +- uid: 1292 + type: CableApcExtension + components: + - pos: 10.5,25.5 + parent: 1 + type: Transform +- uid: 1293 + type: CableApcExtension + components: + - pos: 9.5,25.5 + parent: 1 + type: Transform +- uid: 1294 + type: CableApcExtension + components: + - pos: 8.5,25.5 + parent: 1 + type: Transform +- uid: 1295 + type: CableApcExtension + components: + - pos: 7.5,25.5 + parent: 1 + type: Transform +- uid: 1296 + type: CableApcExtension + components: + - pos: 6.5,25.5 + parent: 1 + type: Transform +- uid: 1297 + type: CableApcExtension + components: + - pos: 5.5,25.5 + parent: 1 + type: Transform +- uid: 1298 + type: CableApcExtension + components: + - pos: 5.5,24.5 + parent: 1 + type: Transform +- uid: 1299 + type: CableApcExtension + components: + - pos: 5.5,23.5 + parent: 1 + type: Transform +- uid: 1300 + type: CableApcExtension + components: + - pos: 5.5,22.5 + parent: 1 + type: Transform +- uid: 1301 + type: CableApcExtension + components: + - pos: 5.5,21.5 + parent: 1 + type: Transform +- uid: 1302 + type: CableApcExtension + components: + - pos: 5.5,20.5 + parent: 1 + type: Transform +- uid: 1303 + type: CableApcExtension + components: + - pos: 8.5,24.5 + parent: 1 + type: Transform +- uid: 1304 + type: CableApcExtension + components: + - pos: 8.5,23.5 + parent: 1 + type: Transform +- uid: 1305 + type: CableApcExtension + components: + - pos: 8.5,22.5 + parent: 1 + type: Transform +- uid: 1306 + type: CableApcExtension + components: + - pos: 8.5,21.5 + parent: 1 + type: Transform +- uid: 1307 + type: CableApcExtension + components: + - pos: 8.5,20.5 + parent: 1 + type: Transform +- uid: 1308 + type: CableApcExtension + components: + - pos: 9.5,20.5 + parent: 1 + type: Transform +- uid: 1309 + type: CableApcExtension + components: + - pos: 10.5,20.5 + parent: 1 + type: Transform +- uid: 1310 + type: CableApcExtension + components: + - pos: 11.5,20.5 + parent: 1 + type: Transform +- uid: 1311 + type: CableApcExtension + components: + - pos: 12.5,20.5 + parent: 1 + type: Transform +- uid: 1312 + type: CableApcExtension + components: + - pos: 13.5,20.5 + parent: 1 + type: Transform +- uid: 1313 + type: CableApcExtension + components: + - pos: 14.5,20.5 + parent: 1 + type: Transform +- uid: 1314 + type: CableApcExtension + components: + - pos: 12.5,2.5 + parent: 1 + type: Transform +- uid: 1315 + type: CableApcExtension + components: + - pos: 11.5,2.5 + parent: 1 + type: Transform +- uid: 1316 + type: CableApcExtension + components: + - pos: 13.5,11.5 + parent: 1 + type: Transform +- uid: 1317 + type: CableApcExtension + components: + - pos: 13.5,10.5 + parent: 1 + type: Transform +- uid: 1318 + type: CableApcExtension + components: + - pos: 13.5,9.5 + parent: 1 + type: Transform +- uid: 1319 + type: CableApcExtension + components: + - pos: 9.5,11.5 + parent: 1 + type: Transform +- uid: 1320 + type: CableApcExtension + components: + - pos: 9.5,10.5 + parent: 1 + type: Transform +- uid: 1321 + type: CableApcExtension + components: + - pos: 9.5,9.5 + parent: 1 + type: Transform +- uid: 1322 + type: GasMinerNitrogen + components: + - pos: 8.5,-26.5 + parent: 1 + type: Transform +- uid: 1323 + type: GasMinerOxygen + components: + - pos: 14.5,-26.5 + parent: 1 + type: Transform +- uid: 1324 + type: GasMixer + components: + - rot: 3.141592653589793 rad + pos: 11.5,-26.5 + parent: 1 + type: Transform + - inletTwoConcentration: 0.22000003 + inletOneConcentration: 0.78 + type: GasMixer + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1325 + type: AirlockEngineeringLocked + components: + - rot: 3.141592653589793 rad + pos: 4.5,-18.5 + parent: 1 + type: Transform +- uid: 1326 + type: AirlockEngineeringLocked + components: + - rot: 3.141592653589793 rad + pos: 5.5,-18.5 + parent: 1 + type: Transform +- uid: 1327 + type: AirlockEngineeringGlassLocked + components: + - rot: 3.141592653589793 rad + pos: 4.5,-21.5 + parent: 1 + type: Transform +- uid: 1328 + type: AirlockEngineeringGlassLocked + components: + - rot: 3.141592653589793 rad + pos: 5.5,-21.5 + parent: 1 + type: Transform +- uid: 1329 + type: AirlockAtmosphericsGlassLocked + components: + - rot: 3.141592653589793 rad + pos: 11.5,-25.5 + parent: 1 + type: Transform +- uid: 1330 + type: WindoorEngineeringLocked + components: + - rot: 3.141592653589793 rad + pos: 6.5,-25.5 + parent: 1 + type: Transform +- uid: 1331 + type: WindoorEngineeringLocked + components: + - pos: 10.5,-21.5 + parent: 1 + type: Transform +- uid: 1332 + type: AirlockCargoGlassLocked + components: + - pos: 17.5,-21.5 + parent: 1 + type: Transform +- uid: 1333 + type: AirlockCargoGlassLocked + components: + - pos: 18.5,-21.5 + parent: 1 + type: Transform +- uid: 1334 + type: AirlockCargoLocked + components: + - pos: 17.5,-18.5 + parent: 1 + type: Transform +- uid: 1335 + type: AirlockCargoLocked + components: + - pos: 18.5,-18.5 + parent: 1 + type: Transform +- uid: 1336 + type: AirlockScienceLocked + components: + - pos: 12.5,-15.5 + parent: 1 + type: Transform +- uid: 1337 + type: AirlockScienceLocked + components: + - pos: 13.5,-15.5 + parent: 1 + type: Transform +- uid: 1338 + type: AirlockScienceGlassLocked + components: + - pos: 15.5,-13.5 + parent: 1 + type: Transform +- uid: 1339 + type: AirlockMedicalScienceGlassLocked + components: + - pos: 13.5,-11.5 + parent: 1 + type: Transform +- uid: 1340 + type: AirlockMedicalGlassLocked + components: + - pos: 13.5,-8.5 + parent: 1 + type: Transform +- uid: 1341 + type: AirlockMedicalGlassLocked + components: + - pos: 14.5,-8.5 + parent: 1 + type: Transform +- uid: 1342 + type: AirlockMedicalGlass + components: + - pos: 13.5,-3.5 + parent: 1 + type: Transform +- uid: 1343 + type: AirlockMedicalGlass + components: + - pos: 14.5,-3.5 + parent: 1 + type: Transform +- uid: 1344 + type: AirlockMedicalLocked + components: + - pos: 16.5,-8.5 + parent: 1 + type: Transform +- uid: 1345 + type: AirlockMedicalGlassLocked + components: + - pos: 6.5,-7.5 + parent: 1 + type: Transform +- uid: 1346 + type: AirlockChemistryLocked + components: + - pos: 10.5,-7.5 + parent: 1 + type: Transform +- uid: 1347 + type: AirlockVirologyGlassLocked + components: + - pos: 6.5,-11.5 + parent: 1 + type: Transform +- uid: 1348 + type: AirlockMedicalLocked + components: + - pos: 9.5,-11.5 + parent: 1 + type: Transform +- uid: 1349 + type: AirlockSecurityGlassLocked + components: + - pos: 5.5,4.5 + parent: 1 + type: Transform +- uid: 1350 + type: AirlockSecurityGlassLocked + components: + - pos: 6.5,4.5 + parent: 1 + type: Transform +- uid: 1351 + type: AirlockSecurityGlassLocked + components: + - pos: 5.5,7.5 + parent: 1 + type: Transform +- uid: 1352 + type: AirlockSecurityGlassLocked + components: + - pos: 6.5,7.5 + parent: 1 + type: Transform +- uid: 1353 + type: AirlockSecurityGlassLocked + components: + - pos: 16.5,4.5 + parent: 1 + type: Transform +- uid: 1354 + type: AirlockSecurityGlassLocked + components: + - pos: 17.5,4.5 + parent: 1 + type: Transform +- uid: 1355 + type: AirlockSecurityGlassLocked + components: + - pos: 16.5,7.5 + parent: 1 + type: Transform +- uid: 1356 + type: AirlockSecurityGlassLocked + components: + - pos: 17.5,7.5 + parent: 1 + type: Transform +- uid: 1357 + type: AirlockCommandGlassLocked + components: + - pos: 4.5,19.5 + parent: 1 + type: Transform +- uid: 1358 + type: AirlockCommandGlassLocked + components: + - pos: 5.5,19.5 + parent: 1 + type: Transform +- uid: 1359 + type: AirlockCommandGlassLocked + components: + - pos: 4.5,22.5 + parent: 1 + type: Transform +- uid: 1360 + type: AirlockCommandGlassLocked + components: + - pos: 5.5,22.5 + parent: 1 + type: Transform +- uid: 1361 + type: AirlockCommandGlassLocked + components: + - pos: 17.5,22.5 + parent: 1 + type: Transform +- uid: 1362 + type: AirlockCommandGlassLocked + components: + - pos: 18.5,22.5 + parent: 1 + type: Transform +- uid: 1363 + type: AirlockCommandGlassLocked + components: + - pos: 17.5,19.5 + parent: 1 + type: Transform +- uid: 1364 + type: AirlockCommandGlassLocked + components: + - pos: 18.5,19.5 + parent: 1 + type: Transform +- uid: 1365 + type: AirlockCommandLocked + components: + - pos: 8.5,22.5 + parent: 1 + type: Transform +- uid: 1366 + type: AirlockCommandLocked + components: + - pos: 14.5,22.5 + parent: 1 + type: Transform +- uid: 1367 + type: WindoorSecurityLocked + components: + - rot: 3.141592653589793 rad + pos: 9.5,10.5 + parent: 1 + type: Transform +- uid: 1368 + type: WindoorSecurityLocked + components: + - rot: 3.141592653589793 rad + pos: 13.5,10.5 + parent: 1 + type: Transform +- uid: 1369 + type: WindoorCommandLocked + components: + - rot: 3.141592653589793 rad + pos: 9.5,24.5 + parent: 1 + type: Transform +- uid: 1370 + type: WindoorChemistryLocked + components: + - rot: -1.5707963267948966 rad + pos: 12.5,-5.5 + parent: 1 + type: Transform +- uid: 1371 + type: WindoorSecure + components: + - rot: 1.5707963267948966 rad + pos: 12.5,-5.5 + parent: 1 + type: Transform +- uid: 1372 + type: WindoorSecureCargoLocked + components: + - rot: 3.141592653589793 rad + pos: 16.5,-25.5 + parent: 1 + type: Transform +- uid: 1373 + type: WindoorBarLocked + components: + - pos: 13.5,4.5 + parent: 1 + type: Transform +- uid: 1374 + type: AirlockBarLocked + components: + - pos: 11.5,7.5 + parent: 1 + type: Transform +- uid: 1375 + type: GasPassiveVent + components: + - rot: 1.5707963267948966 rad + pos: 8.5,-27.5 + parent: 1 + type: Transform +- uid: 1376 + type: GasPassiveVent + components: + - rot: -1.5707963267948966 rad + pos: 14.5,-27.5 + parent: 1 + type: Transform +- uid: 1377 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 9.5,-27.5 + parent: 1 + type: Transform +- uid: 1378 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 10.5,-27.5 + parent: 1 + type: Transform +- uid: 1379 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 13.5,-27.5 + parent: 1 + type: Transform +- uid: 1380 + type: GasPipeBend + components: + - rot: -1.5707963267948966 rad + pos: 11.5,-27.5 + parent: 1 + type: Transform +- uid: 1381 + type: GasPipeBend + components: + - rot: 3.141592653589793 rad + pos: 12.5,-27.5 + parent: 1 + type: Transform +- uid: 1382 + type: GasPipeBend + components: + - pos: 12.5,-26.5 + parent: 1 + type: Transform +- uid: 1383 + type: GasPipeStraight + components: + - pos: 11.5,-25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1384 + type: GasPipeStraight + components: + - pos: 11.5,-24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1385 + type: GasPipeBend + components: + - pos: 11.5,-23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1386 + type: GasPipeTJunction + components: + - rot: 3.141592653589793 rad + pos: 10.5,-23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1387 + type: GasPipeTJunction + components: + - pos: 9.5,-23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1388 + type: GasPipeTJunction + components: + - rot: 3.141592653589793 rad + pos: 5.5,-23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1389 + type: GasPipeStraight + components: + - rot: 1.5707963267948966 rad + pos: 6.5,-23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1390 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 7.5,-23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1391 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 8.5,-23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1392 + type: GasPipeStraight + components: + - pos: 5.5,-22.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1393 + type: GasPipeStraight + components: + - pos: 5.5,-21.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1394 + type: GasPipeTJunction + components: + - rot: -1.5707963267948966 rad + pos: 5.5,-20.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1395 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 5.5,-19.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1396 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 5.5,-18.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1397 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 5.5,-17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1398 + type: GasPipeTJunction + components: + - pos: 5.5,-16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1399 + type: GasPipeTJunction + components: + - pos: 9.5,-16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1400 + type: GasPipeTJunction + components: + - pos: 13.5,-16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1401 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 6.5,-16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1402 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 7.5,-16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1403 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 8.5,-16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1404 + type: GasPipeTJunction + components: + - rot: 3.141592653589793 rad + pos: 12.5,-16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1405 + type: GasPipeStraight + components: + - rot: 1.5707963267948966 rad + pos: 10.5,-16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1406 + type: GasPipeStraight + components: + - rot: 1.5707963267948966 rad + pos: 11.5,-16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1407 + type: GasPipeStraight + components: + - rot: 1.5707963267948966 rad + pos: 14.5,-16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1408 + type: GasPipeStraight + components: + - rot: 1.5707963267948966 rad + pos: 15.5,-16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1409 + type: GasPipeStraight + components: + - rot: 1.5707963267948966 rad + pos: 16.5,-16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1410 + type: GasPipeTJunction + components: + - pos: 17.5,-16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1411 + type: GasPipeTJunction + components: + - rot: 3.141592653589793 rad + pos: 18.5,-16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1412 + type: GasPipeTJunction + components: + - rot: 3.141592653589793 rad + pos: 4.5,-16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1413 + type: GasPipeTJunction + components: + - rot: -1.5707963267948966 rad + pos: 3.5,-14.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1414 + type: GasPipeTJunction + components: + - rot: 1.5707963267948966 rad + pos: 19.5,-14.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1415 + type: GasPipeStraight + components: + - pos: 3.5,-15.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1416 + type: GasPipeStraight + components: + - pos: 19.5,-15.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1417 + type: GasPipeBend + components: + - rot: -1.5707963267948966 rad + pos: 19.5,-16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1418 + type: GasPipeBend + components: + - rot: 3.141592653589793 rad + pos: 3.5,-16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1419 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 17.5,-17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1420 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 17.5,-18.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1421 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 17.5,-19.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1422 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 17.5,-21.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1423 + type: GasPipeTJunction + components: + - rot: 1.5707963267948966 rad + pos: 17.5,-20.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1424 + type: GasPipeStraight + components: + - pos: 17.5,-22.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1425 + type: GasPipeTJunction + components: + - rot: 3.141592653589793 rad + pos: 17.5,-23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1426 + type: GasPipeTJunction + components: + - pos: 16.5,-23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1427 + type: GasPipeTJunction + components: + - rot: 3.141592653589793 rad + pos: 14.5,-23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1428 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 14.5,-22.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1429 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 14.5,-21.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1430 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 16.5,-24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1431 + type: GasPipeStraight + components: + - rot: 1.5707963267948966 rad + pos: 15.5,-23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1432 + type: GasPipeStraight + components: + - pos: 3.5,-13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1433 + type: GasPipeStraight + components: + - pos: 19.5,-13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1434 + type: GasPipeBend + components: + - pos: 3.5,-12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1435 + type: GasPipeBend + components: + - rot: 3.141592653589793 rad + pos: 2.5,-12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1436 + type: GasPipeBend + components: + - rot: 1.5707963267948966 rad + pos: 19.5,-12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1437 + type: GasPipeBend + components: + - rot: -1.5707963267948966 rad + pos: 20.5,-12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1438 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 20.5,-8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1439 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 20.5,-7.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1440 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 20.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1441 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 20.5,-11.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1442 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 20.5,-5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1443 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 20.5,-4.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1444 + type: GasPipeTJunction + components: + - rot: -1.5707963267948966 rad + pos: 20.5,-6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1445 + type: GasPipeTJunction + components: + - rot: 1.5707963267948966 rad + pos: 20.5,-9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1446 + type: GasPipeTJunction + components: + - rot: -1.5707963267948966 rad + pos: 2.5,-9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1447 + type: GasPipeTJunction + components: + - rot: 1.5707963267948966 rad + pos: 2.5,-6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1448 + type: GasPipeStraight + components: + - pos: 2.5,-11.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1449 + type: GasPipeStraight + components: + - pos: 2.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1450 + type: GasPipeStraight + components: + - pos: 2.5,-8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1451 + type: GasPipeStraight + components: + - pos: 2.5,-7.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1452 + type: GasPipeStraight + components: + - pos: 2.5,-5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1453 + type: GasPipeStraight + components: + - pos: 2.5,-4.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1454 + type: GasPipeStraight + components: + - pos: 2.5,-3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1455 + type: GasPipeStraight + components: + - pos: 20.5,-3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1456 + type: GasPipeStraight + components: + - pos: 12.5,-15.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1457 + type: GasPipeStraight + components: + - pos: 12.5,-14.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1458 + type: GasPipeTJunction + components: + - pos: 12.5,-13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1459 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 14.5,-13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1460 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 15.5,-13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1461 + type: GasPipeTJunction + components: + - rot: 3.141592653589793 rad + pos: 13.5,-13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1462 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 13.5,-12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1463 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 13.5,-11.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1464 + type: GasPipeFourway + components: + - pos: 13.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1465 + type: GasPipeTJunction + components: + - rot: 3.141592653589793 rad + pos: 10.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1466 + type: GasPipeTJunction + components: + - pos: 9.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1467 + type: GasPipeTJunction + components: + - rot: 1.5707963267948966 rad + pos: 6.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1468 + type: GasPipeTJunction + components: + - rot: -1.5707963267948966 rad + pos: 6.5,-9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1469 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 6.5,-8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1470 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 6.5,-7.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1471 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 6.5,-6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1472 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 6.5,-11.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1473 + type: GasPipeStraight + components: + - rot: 1.5707963267948966 rad + pos: 7.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1474 + type: GasPipeStraight + components: + - rot: 1.5707963267948966 rad + pos: 8.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1475 + type: GasPipeStraight + components: + - pos: 9.5,-11.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1476 + type: GasPipeStraight + components: + - pos: 10.5,-9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1477 + type: GasPipeStraight + components: + - pos: 10.5,-8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1478 + type: GasPipeStraight + components: + - pos: 10.5,-7.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1479 + type: GasPipeStraight + components: + - pos: 10.5,-6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1480 + type: GasPipeTJunction + components: + - rot: 3.141592653589793 rad + pos: 11.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1481 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 12.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1482 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 14.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1483 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 15.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1484 + type: GasPipeTJunction + components: + - rot: 3.141592653589793 rad + pos: 16.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1485 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 16.5,-9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1486 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 16.5,-8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1487 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 13.5,-9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1488 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 13.5,-8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1489 + type: GasPipeTJunction + components: + - rot: 1.5707963267948966 rad + pos: 13.5,-7.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1490 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 13.5,-6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1491 + type: GasPipeStraight + components: + - rot: 1.5707963267948966 rad + pos: 14.5,-5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1492 + type: GasPipeStraight + components: + - rot: 1.5707963267948966 rad + pos: 15.5,-5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1493 + type: GasVentPump + components: + - rot: 3.141592653589793 rad + pos: 9.5,-24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1494 + type: GasPipeTJunction + components: + - rot: 1.5707963267948966 rad + pos: 13.5,-5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1495 + type: GasPipeStraight + components: + - pos: 13.5,-4.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1496 + type: GasPipeStraight + components: + - pos: 13.5,-3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1497 + type: GasPipeStraight + components: + - pos: 10.5,-22.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1498 + type: GasVentPump + components: + - pos: 10.5,-21.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1499 + type: GasVentPump + components: + - rot: 1.5707963267948966 rad + pos: 4.5,-23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1500 + type: GasVentPump + components: + - rot: 1.5707963267948966 rad + pos: 4.5,-20.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1501 + type: GasVentPump + components: + - rot: 1.5707963267948966 rad + pos: 13.5,-23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1502 + type: GasVentPump + components: + - pos: 14.5,-20.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1503 + type: GasVentPump + components: + - rot: -1.5707963267948966 rad + pos: 18.5,-23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1504 + type: GasVentPump + components: + - rot: -1.5707963267948966 rad + pos: 18.5,-20.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1505 + type: GasVentPump + components: + - rot: 3.141592653589793 rad + pos: 16.5,-25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1506 + type: GasVentPump + components: + - pos: 18.5,-15.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1507 + type: GasVentPump + components: + - rot: 3.141592653589793 rad + pos: 13.5,-17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1508 + type: GasVentPump + components: + - rot: 3.141592653589793 rad + pos: 9.5,-17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1509 + type: GasVentPump + components: + - pos: 4.5,-15.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1510 + type: GasVentPump + components: + - rot: 1.5707963267948966 rad + pos: 2.5,-14.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1511 + type: GasVentPump + components: + - rot: -1.5707963267948966 rad + pos: 20.5,-14.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1512 + type: GasVentPump + components: + - rot: -1.5707963267948966 rad + pos: 21.5,-9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1513 + type: GasVentPump + components: + - rot: 1.5707963267948966 rad + pos: 19.5,-6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1514 + type: GasVentPump + components: + - rot: 1.5707963267948966 rad + pos: 1.5,-9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1515 + type: GasVentPump + components: + - rot: -1.5707963267948966 rad + pos: 3.5,-6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1516 + type: GasVentPump + components: + - pos: 6.5,-5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1517 + type: GasVentPump + components: + - rot: 1.5707963267948966 rad + pos: 5.5,-9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1518 + type: GasVentPump + components: + - rot: 3.141592653589793 rad + pos: 6.5,-12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1519 + type: GasVentPump + components: + - rot: 3.141592653589793 rad + pos: 9.5,-12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1520 + type: GasVentPump + components: + - rot: 1.5707963267948966 rad + pos: 11.5,-13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1521 + type: GasVentPump + components: + - rot: -1.5707963267948966 rad + pos: 16.5,-13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1522 + type: GasVentPump + components: + - rot: -1.5707963267948966 rad + pos: 17.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1523 + type: GasVentPump + components: + - pos: 11.5,-9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1524 + type: GasVentPump + components: + - pos: 10.5,-5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1525 + type: GasVentPump + components: + - rot: -1.5707963267948966 rad + pos: 16.5,-5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1526 + type: GasVentPump + components: + - rot: -1.5707963267948966 rad + pos: 14.5,-7.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1527 + type: GasPipeTJunction + components: + - rot: 1.5707963267948966 rad + pos: 2.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1528 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 2.5,-0.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1529 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 2.5,0.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1530 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 2.5,1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1531 + type: GasPipeTJunction + components: + - rot: 1.5707963267948966 rad + pos: 2.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1532 + type: GasPipeTJunction + components: + - rot: -1.5707963267948966 rad + pos: 2.5,-1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1533 + type: GasPipeTJunction + components: + - rot: -1.5707963267948966 rad + pos: 2.5,2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1534 + type: GasPipeTJunction + components: + - rot: -1.5707963267948966 rad + pos: 20.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1535 + type: GasPipeTJunction + components: + - rot: 1.5707963267948966 rad + pos: 20.5,-1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1536 + type: GasPipeTJunction + components: + - rot: 1.5707963267948966 rad + pos: 20.5,2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1537 + type: GasPipeTJunction + components: + - rot: -1.5707963267948966 rad + pos: 20.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1538 + type: GasPipeStraight + components: + - pos: 20.5,-0.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1539 + type: GasPipeStraight + components: + - pos: 20.5,0.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1540 + type: GasPipeStraight + components: + - pos: 20.5,1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1541 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 19.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1542 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 18.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1543 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 17.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1544 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 3.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1545 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 4.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1546 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 5.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1547 + type: GasPipeTJunction + components: + - rot: 3.141592653589793 rad + pos: 6.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1548 + type: GasPipeTJunction + components: + - rot: 3.141592653589793 rad + pos: 16.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1549 + type: GasPipeTJunction + components: + - pos: 13.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1550 + type: GasPipeTJunction + components: + - rot: 3.141592653589793 rad + pos: 10.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1551 + type: GasPipeTJunction + components: + - rot: 3.141592653589793 rad + pos: 12.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1552 + type: GasPipeTJunction + components: + - rot: 3.141592653589793 rad + pos: 11.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1553 + type: GasPipeStraight + components: + - rot: 1.5707963267948966 rad + pos: 7.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1554 + type: GasPipeStraight + components: + - rot: 1.5707963267948966 rad + pos: 8.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1555 + type: GasPipeStraight + components: + - rot: 1.5707963267948966 rad + pos: 9.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1556 + type: GasPipeStraight + components: + - rot: 1.5707963267948966 rad + pos: 14.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1557 + type: GasPipeStraight + components: + - rot: 1.5707963267948966 rad + pos: 15.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1558 + type: GasPipeStraight + components: + - pos: 10.5,-1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1559 + type: GasPipeStraight + components: + - pos: 10.5,-0.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1560 + type: GasPipeStraight + components: + - pos: 10.5,0.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1561 + type: GasPipeStraight + components: + - pos: 10.5,1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1562 + type: GasPipeStraight + components: + - pos: 10.5,2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1563 + type: GasPipeStraight + components: + - pos: 12.5,-1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1564 + type: GasPipeStraight + components: + - pos: 12.5,-0.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1565 + type: GasPipeStraight + components: + - pos: 12.5,0.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1566 + type: GasPipeStraight + components: + - pos: 12.5,1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1567 + type: GasPipeStraight + components: + - pos: 12.5,2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1568 + type: GasPipeTJunction + components: + - pos: 6.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1569 + type: GasPipeTJunction + components: + - rot: 3.141592653589793 rad + pos: 5.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1570 + type: GasPipeTJunction + components: + - pos: 10.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1571 + type: GasPipeTJunction + components: + - pos: 12.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1572 + type: GasPipeTJunction + components: + - pos: 16.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1573 + type: GasPipeTJunction + components: + - rot: 3.141592653589793 rad + pos: 17.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1574 + type: GasPipeFourway + components: + - pos: 11.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1575 + type: GasPipeTJunction + components: + - rot: -1.5707963267948966 rad + pos: 11.5,5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1576 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 3.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1577 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 4.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1578 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 7.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1579 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 8.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1580 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 9.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1581 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 13.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1582 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 14.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1583 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 15.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1584 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 18.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1585 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 19.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1586 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 11.5,4.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1587 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 11.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1588 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 11.5,7.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1589 + type: GasVentPump + components: + - rot: 1.5707963267948966 rad + pos: 1.5,-1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1590 + type: GasVentPump + components: + - rot: 1.5707963267948966 rad + pos: 1.5,2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1591 + type: GasVentPump + components: + - pos: 6.5,-1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1592 + type: GasVentPump + components: + - pos: 11.5,-1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1593 + type: GasVentPump + components: + - pos: 16.5,-1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1594 + type: GasVentPump + components: + - rot: 3.141592653589793 rad + pos: 6.5,2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1595 + type: GasVentPump + components: + - rot: 3.141592653589793 rad + pos: 11.5,2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1596 + type: GasVentPump + components: + - rot: 3.141592653589793 rad + pos: 16.5,2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1597 + type: GasVentPump + components: + - rot: -1.5707963267948966 rad + pos: 21.5,2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1598 + type: GasVentPump + components: + - rot: -1.5707963267948966 rad + pos: 21.5,-1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1599 + type: GasVentPump + components: + - rot: 1.5707963267948966 rad + pos: 10.5,5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1600 + type: GasVentPump + components: + - pos: 11.5,8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1601 + type: GasPipeStraight + components: + - pos: 5.5,4.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1602 + type: GasPipeStraight + components: + - pos: 5.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1603 + type: GasPipeStraight + components: + - pos: 5.5,7.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1604 + type: GasPipeStraight + components: + - pos: 5.5,8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1605 + type: GasPipeStraight + components: + - pos: 5.5,10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1606 + type: GasPipeStraight + components: + - pos: 5.5,11.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1607 + type: GasPipeStraight + components: + - pos: 5.5,12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1608 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 6.5,13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1609 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 7.5,13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1610 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 10.5,13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1611 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 11.5,13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1612 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 12.5,13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1613 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 15.5,13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1614 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 16.5,13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1615 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 17.5,12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1616 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 17.5,11.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1617 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 17.5,10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1618 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 17.5,8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1619 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 17.5,7.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1620 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 17.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1621 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 17.5,4.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1622 + type: GasPipeTJunction + components: + - rot: -1.5707963267948966 rad + pos: 17.5,5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1623 + type: GasPipeTJunction + components: + - rot: -1.5707963267948966 rad + pos: 17.5,9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1624 + type: GasPipeTJunction + components: + - pos: 14.5,13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1625 + type: GasPipeTJunction + components: + - pos: 13.5,13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1626 + type: GasPipeTJunction + components: + - pos: 9.5,13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1627 + type: GasPipeTJunction + components: + - pos: 8.5,13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1628 + type: GasPipeTJunction + components: + - rot: 1.5707963267948966 rad + pos: 5.5,9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1629 + type: GasPipeTJunction + components: + - rot: 1.5707963267948966 rad + pos: 5.5,5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1630 + type: GasPipeBend + components: + - rot: 1.5707963267948966 rad + pos: 5.5,13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1631 + type: GasPipeBend + components: + - pos: 17.5,13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1632 + type: GasPipeStraight + components: + - pos: 13.5,12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1633 + type: GasPipeStraight + components: + - pos: 13.5,11.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1634 + type: GasPipeStraight + components: + - pos: 13.5,10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1635 + type: GasPipeStraight + components: + - pos: 9.5,12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1636 + type: GasPipeStraight + components: + - pos: 9.5,11.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1637 + type: GasPipeStraight + components: + - pos: 9.5,10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1638 + type: GasVentPump + components: + - rot: -1.5707963267948966 rad + pos: 6.5,5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1639 + type: GasVentPump + components: + - rot: -1.5707963267948966 rad + pos: 6.5,9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1640 + type: GasVentPump + components: + - rot: 3.141592653589793 rad + pos: 8.5,12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1641 + type: GasVentPump + components: + - rot: 3.141592653589793 rad + pos: 9.5,9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1642 + type: GasVentPump + components: + - rot: 3.141592653589793 rad + pos: 13.5,9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1643 + type: GasPipeStraight + components: + - pos: 2.5,4.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1644 + type: GasVentPump + components: + - rot: 3.141592653589793 rad + pos: 14.5,12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1645 + type: GasVentPump + components: + - rot: 1.5707963267948966 rad + pos: 16.5,9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1646 + type: GasVentPump + components: + - rot: 1.5707963267948966 rad + pos: 16.5,5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1647 + type: GasPipeStraight + components: + - pos: 2.5,5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1648 + type: GasPipeStraight + components: + - pos: 2.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1649 + type: GasPipeStraight + components: + - pos: 2.5,8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1650 + type: GasPipeStraight + components: + - pos: 2.5,9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1651 + type: GasPipeStraight + components: + - pos: 2.5,11.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1652 + type: GasPipeStraight + components: + - pos: 2.5,12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1653 + type: GasPipeStraight + components: + - pos: 2.5,13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1654 + type: GasPipeStraight + components: + - pos: 2.5,14.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1655 + type: GasPipeStraight + components: + - pos: 2.5,16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1656 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 3.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1657 + type: GasPipeTJunction + components: + - rot: 3.141592653589793 rad + pos: 17.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1658 + type: GasPipeTJunction + components: + - rot: 1.5707963267948966 rad + pos: 2.5,15.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1659 + type: GasPipeTJunction + components: + - rot: -1.5707963267948966 rad + pos: 2.5,10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1660 + type: GasPipeTJunction + components: + - rot: 1.5707963267948966 rad + pos: 2.5,7.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1661 + type: GasPipeTJunction + components: + - rot: -1.5707963267948966 rad + pos: 20.5,7.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1662 + type: GasPipeStraight + components: + - pos: 20.5,4.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1663 + type: GasPipeTJunction + components: + - rot: 1.5707963267948966 rad + pos: 20.5,10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1664 + type: GasPipeStraight + components: + - pos: 20.5,5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1665 + type: GasPipeStraight + components: + - pos: 20.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1666 + type: GasPipeStraight + components: + - pos: 20.5,8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1667 + type: GasPipeStraight + components: + - pos: 20.5,9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1668 + type: GasPipeStraight + components: + - pos: 20.5,11.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1669 + type: GasPipeStraight + components: + - pos: 20.5,12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1670 + type: GasPipeStraight + components: + - pos: 20.5,13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1671 + type: GasPipeStraight + components: + - pos: 20.5,14.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1672 + type: GasPipeStraight + components: + - pos: 20.5,16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1673 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 19.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1674 + type: GasPipeTJunction + components: + - rot: 3.141592653589793 rad + pos: 5.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1675 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 16.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1676 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 15.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1677 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 6.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1678 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 7.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1679 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 9.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1680 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 10.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1681 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 12.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1682 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 13.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1683 + type: GasPipeTJunction + components: + - pos: 8.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1684 + type: GasPipeTJunction + components: + - pos: 11.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1685 + type: GasPipeTJunction + components: + - pos: 14.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1686 + type: GasPipeTJunction + components: + - pos: 18.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1687 + type: GasPipeTJunction + components: + - rot: -1.5707963267948966 rad + pos: 20.5,15.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1688 + type: GasPipeTJunction + components: + - pos: 4.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1689 + type: GasPipeBend + components: + - rot: 1.5707963267948966 rad + pos: 2.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1690 + type: GasPipeBend + components: + - pos: 20.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1691 + type: GasVentPump + components: + - rot: -1.5707963267948966 rad + pos: 3.5,15.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1692 + type: GasVentPump + components: + - rot: -1.5707963267948966 rad + pos: 3.5,7.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1693 + type: GasVentPump + components: + - rot: 1.5707963267948966 rad + pos: 1.5,10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1694 + type: GasVentPump + components: + - rot: 3.141592653589793 rad + pos: 4.5,16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1695 + type: GasVentPump + components: + - rot: 3.141592653589793 rad + pos: 8.5,16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1696 + type: GasVentPump + components: + - rot: 3.141592653589793 rad + pos: 11.5,16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1697 + type: GasVentPump + components: + - rot: 3.141592653589793 rad + pos: 14.5,16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1698 + type: GasVentPump + components: + - rot: 3.141592653589793 rad + pos: 18.5,16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1699 + type: GasVentPump + components: + - rot: 1.5707963267948966 rad + pos: 19.5,15.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1700 + type: GasVentPump + components: + - rot: 1.5707963267948966 rad + pos: 19.5,7.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1701 + type: GasVentPump + components: + - rot: -1.5707963267948966 rad + pos: 21.5,10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1702 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 5.5,18.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1703 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 5.5,19.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1704 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 5.5,21.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1705 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 5.5,22.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1706 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 5.5,23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1707 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 17.5,21.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1708 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 17.5,22.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1709 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 17.5,23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1710 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 17.5,18.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1711 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 17.5,19.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1712 + type: GasPipeTJunction + components: + - rot: -1.5707963267948966 rad + pos: 5.5,20.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1713 + type: GasPipeTJunction + components: + - rot: 1.5707963267948966 rad + pos: 17.5,20.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1714 + type: GasPipeTJunction + components: + - rot: 1.5707963267948966 rad + pos: 5.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1715 + type: GasPipeTJunction + components: + - rot: -1.5707963267948966 rad + pos: 17.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1716 + type: GasPipeBend + components: + - rot: 1.5707963267948966 rad + pos: 5.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1717 + type: GasPipeBend + components: + - pos: 17.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1718 + type: GasPipeFourway + components: + - pos: 8.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1719 + type: GasPipeFourway + components: + - pos: 11.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1720 + type: GasPipeFourway + components: + - pos: 14.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1721 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 6.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1722 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 7.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1723 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 9.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1724 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 10.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1725 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 13.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1726 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 12.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1727 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 15.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1728 + type: GasPipeStraight + components: + - rot: -1.5707963267948966 rad + pos: 16.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1729 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 14.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1730 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 14.5,23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1731 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 14.5,22.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1732 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 14.5,21.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1733 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 8.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1734 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 8.5,23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1735 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 8.5,22.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1736 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 8.5,21.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1737 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 11.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1738 + type: GasVentPump + components: + - rot: 3.141592653589793 rad + pos: 8.5,20.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1739 + type: GasVentPump + components: + - rot: 3.141592653589793 rad + pos: 14.5,20.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1740 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 6.5,23.5 + parent: 1 + type: Transform +- uid: 1741 + type: GasVentPump + components: + - pos: 8.5,26.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1742 + type: GasVentPump + components: + - pos: 11.5,26.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1743 + type: GasVentPump + components: + - pos: 14.5,26.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1744 + type: GasVentPump + components: + - rot: -1.5707963267948966 rad + pos: 6.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1745 + type: GasVentPump + components: + - rot: 1.5707963267948966 rad + pos: 4.5,20.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1746 + type: GasVentPump + components: + - rot: 3.141592653589793 rad + pos: 11.5,23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1747 + type: GasVentPump + components: + - rot: -1.5707963267948966 rad + pos: 18.5,20.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 1748 + type: Gyroscope + components: + - rot: -1.5707963267948966 rad + pos: 2.5,-22.5 + parent: 1 + type: Transform +- uid: 1749 + type: Thruster + components: + - rot: 1.5707963267948966 rad + pos: 0.5,-15.5 + parent: 1 + type: Transform +- uid: 1750 + type: Gyroscope + components: + - rot: -1.5707963267948966 rad + pos: 20.5,-22.5 + parent: 1 + type: Transform +- uid: 1751 + type: Gyroscope + components: + - rot: -1.5707963267948966 rad + pos: 22.5,-13.5 + parent: 1 + type: Transform +- uid: 1752 + type: Thruster + components: + - rot: 1.5707963267948966 rad + pos: 0.5,16.5 + parent: 1 + type: Transform +- uid: 1753 + type: Thruster + components: + - pos: 0.5,17.5 + parent: 1 + type: Transform +- uid: 1754 + type: Gyroscope + components: + - rot: -1.5707963267948966 rad + pos: 0.5,14.5 + parent: 1 + type: Transform +- uid: 1755 + type: Gyroscope + components: + - rot: -1.5707963267948966 rad + pos: 22.5,14.5 + parent: 1 + type: Transform +- uid: 1756 + type: Thruster + components: + - rot: 1.5707963267948966 rad + pos: 0.5,15.5 + parent: 1 + type: Transform +- uid: 1757 + type: Thruster + components: + - rot: 1.5707963267948966 rad + pos: 1.5,19.5 + parent: 1 + type: Transform +- uid: 1758 + type: Thruster + components: + - rot: 1.5707963267948966 rad + pos: 1.5,20.5 + parent: 1 + type: Transform +- uid: 1759 + type: Thruster + components: + - rot: 1.5707963267948966 rad + pos: 2.5,23.5 + parent: 1 + type: Transform +- uid: 1760 + type: Thruster + components: + - rot: 1.5707963267948966 rad + pos: 2.5,24.5 + parent: 1 + type: Transform +- uid: 1761 + type: Thruster + components: + - pos: 1.5,21.5 + parent: 1 + type: Transform +- uid: 1762 + type: Thruster + components: + - pos: 2.5,25.5 + parent: 1 + type: Transform +- uid: 1763 + type: Thruster + components: + - pos: 3.5,27.5 + parent: 1 + type: Transform +- uid: 1764 + type: Thruster + components: + - pos: 19.5,27.5 + parent: 1 + type: Transform +- uid: 1765 + type: Thruster + components: + - pos: 20.5,25.5 + parent: 1 + type: Transform +- uid: 1766 + type: Thruster + components: + - pos: 21.5,21.5 + parent: 1 + type: Transform +- uid: 1767 + type: Thruster + components: + - pos: 22.5,17.5 + parent: 1 + type: Transform +- uid: 1768 + type: Thruster + components: + - rot: -1.5707963267948966 rad + pos: 22.5,15.5 + parent: 1 + type: Transform +- uid: 1769 + type: Thruster + components: + - rot: -1.5707963267948966 rad + pos: 22.5,16.5 + parent: 1 + type: Transform +- uid: 1770 + type: Thruster + components: + - rot: -1.5707963267948966 rad + pos: 21.5,19.5 + parent: 1 + type: Transform +- uid: 1771 + type: Thruster + components: + - rot: -1.5707963267948966 rad + pos: 21.5,20.5 + parent: 1 + type: Transform +- uid: 1772 + type: Thruster + components: + - rot: -1.5707963267948966 rad + pos: 20.5,23.5 + parent: 1 + type: Transform +- uid: 1773 + type: Thruster + components: + - rot: -1.5707963267948966 rad + pos: 20.5,24.5 + parent: 1 + type: Transform +- uid: 1774 + type: Thruster + components: + - rot: -1.5707963267948966 rad + pos: 21.5,-18.5 + parent: 1 + type: Transform +- uid: 1775 + type: Thruster + components: + - rot: -1.5707963267948966 rad + pos: 22.5,-14.5 + parent: 1 + type: Transform +- uid: 1776 + type: Thruster + components: + - rot: -1.5707963267948966 rad + pos: 22.5,-15.5 + parent: 1 + type: Transform +- uid: 1777 + type: Thruster + components: + - rot: -1.5707963267948966 rad + pos: 21.5,-19.5 + parent: 1 + type: Transform +- uid: 1778 + type: Thruster + components: + - rot: 3.141592653589793 rad + pos: 21.5,-20.5 + parent: 1 + type: Transform +- uid: 1779 + type: Thruster + components: + - rot: 3.141592653589793 rad + pos: 22.5,-16.5 + parent: 1 + type: Transform +- uid: 1780 + type: Thruster + components: + - rot: -1.5707963267948966 rad + pos: 20.5,-23.5 + parent: 1 + type: Transform +- uid: 1781 + type: Thruster + components: + - rot: -1.5707963267948966 rad + pos: 20.5,-24.5 + parent: 1 + type: Transform +- uid: 1782 + type: Thruster + components: + - rot: 3.141592653589793 rad + pos: 20.5,-25.5 + parent: 1 + type: Transform +- uid: 1783 + type: Thruster + components: + - rot: 3.141592653589793 rad + pos: 19.5,-26.5 + parent: 1 + type: Transform +- uid: 1784 + type: Thruster + components: + - rot: 3.141592653589793 rad + pos: 18.5,-27.5 + parent: 1 + type: Transform +- uid: 1785 + type: Thruster + components: + - rot: 3.141592653589793 rad + pos: 17.5,-28.5 + parent: 1 + type: Transform +- uid: 1786 + type: Thruster + components: + - rot: 3.141592653589793 rad + pos: 16.5,-28.5 + parent: 1 + type: Transform +- uid: 1787 + type: Thruster + components: + - rot: 3.141592653589793 rad + pos: 6.5,-28.5 + parent: 1 + type: Transform +- uid: 1788 + type: Thruster + components: + - rot: 3.141592653589793 rad + pos: 5.5,-28.5 + parent: 1 + type: Transform +- uid: 1789 + type: Thruster + components: + - rot: 3.141592653589793 rad + pos: 4.5,-27.5 + parent: 1 + type: Transform +- uid: 1790 + type: Thruster + components: + - rot: 3.141592653589793 rad + pos: 3.5,-26.5 + parent: 1 + type: Transform +- uid: 1791 + type: Thruster + components: + - rot: 3.141592653589793 rad + pos: 2.5,-25.5 + parent: 1 + type: Transform +- uid: 1792 + type: Thruster + components: + - rot: 3.141592653589793 rad + pos: 1.5,-20.5 + parent: 1 + type: Transform +- uid: 1793 + type: Thruster + components: + - rot: 3.141592653589793 rad + pos: 0.5,-16.5 + parent: 1 + type: Transform +- uid: 1794 + type: Gyroscope + components: + - rot: 3.141592653589793 rad + pos: 0.5,-13.5 + parent: 1 + type: Transform +- uid: 1795 + type: Thruster + components: + - rot: 1.5707963267948966 rad + pos: 0.5,-14.5 + parent: 1 + type: Transform +- uid: 1796 + type: Thruster + components: + - rot: 1.5707963267948966 rad + pos: 1.5,-18.5 + parent: 1 + type: Transform +- uid: 1797 + type: Thruster + components: + - rot: 1.5707963267948966 rad + pos: 1.5,-19.5 + parent: 1 + type: Transform +- uid: 1798 + type: Thruster + components: + - rot: 1.5707963267948966 rad + pos: 2.5,-23.5 + parent: 1 + type: Transform +- uid: 1799 + type: Thruster + components: + - rot: 1.5707963267948966 rad + pos: 2.5,-24.5 + parent: 1 + type: Transform +- uid: 1800 + type: Catwalk + components: + - rot: 1.5707963267948966 rad + pos: 7.5,-20.5 + parent: 1 + type: Transform +- uid: 1801 + type: Catwalk + components: + - rot: 1.5707963267948966 rad + pos: 8.5,-20.5 + parent: 1 + type: Transform +- uid: 1802 + type: Catwalk + components: + - rot: 1.5707963267948966 rad + pos: 9.5,-20.5 + parent: 1 + type: Transform +- uid: 1803 + type: Catwalk + components: + - rot: 1.5707963267948966 rad + pos: 10.5,-20.5 + parent: 1 + type: Transform +- uid: 1804 + type: Catwalk + components: + - rot: 1.5707963267948966 rad + pos: 11.5,-20.5 + parent: 1 + type: Transform +- uid: 1805 + type: CableApcExtension + components: + - pos: 16.5,-26.5 + parent: 1 + type: Transform +- uid: 1806 + type: CableApcExtension + components: + - pos: 6.5,-26.5 + parent: 1 + type: Transform +- uid: 1807 + type: CableApcExtension + components: + - pos: 3.5,-23.5 + parent: 1 + type: Transform +- uid: 1808 + type: CableApcExtension + components: + - pos: 3.5,-19.5 + parent: 1 + type: Transform +- uid: 1809 + type: CableApcExtension + components: + - pos: 1.5,-15.5 + parent: 1 + type: Transform +- uid: 1810 + type: CableApcExtension + components: + - pos: 1.5,15.5 + parent: 1 + type: Transform +- uid: 1811 + type: CableApcExtension + components: + - pos: 4.5,20.5 + parent: 1 + type: Transform +- uid: 1812 + type: CableApcExtension + components: + - pos: 3.5,20.5 + parent: 1 + type: Transform +- uid: 1813 + type: CableApcExtension + components: + - pos: 4.5,25.5 + parent: 1 + type: Transform +- uid: 1814 + type: CableApcExtension + components: + - pos: 3.5,25.5 + parent: 1 + type: Transform +- uid: 1815 + type: CableApcExtension + components: + - pos: 18.5,25.5 + parent: 1 + type: Transform +- uid: 1816 + type: CableApcExtension + components: + - pos: 19.5,25.5 + parent: 1 + type: Transform +- uid: 1817 + type: CableApcExtension + components: + - pos: 18.5,20.5 + parent: 1 + type: Transform +- uid: 1818 + type: CableApcExtension + components: + - pos: 19.5,20.5 + parent: 1 + type: Transform +- uid: 1819 + type: CableApcExtension + components: + - pos: 21.5,16.5 + parent: 1 + type: Transform +- uid: 1820 + type: CableApcExtension + components: + - pos: 21.5,-14.5 + parent: 1 + type: Transform +- uid: 1821 + type: CableApcExtension + components: + - pos: 19.5,-19.5 + parent: 1 + type: Transform +- uid: 1822 + type: CrateEmptySpawner + components: + - pos: 14.5,-19.5 + parent: 1 + type: Transform +- uid: 1823 + type: CrateEmptySpawner + components: + - pos: 15.5,-19.5 + parent: 1 + type: Transform +- uid: 1824 + type: CrateEmptySpawner + components: + - pos: 13.5,-21.5 + parent: 1 + type: Transform +- uid: 1825 + type: CrateEmptySpawner + components: + - pos: 14.5,-22.5 + parent: 1 + type: Transform +- uid: 1826 + type: CrateFilledSpawner + components: + - pos: 13.5,-19.5 + parent: 1 + type: Transform +- uid: 1827 + type: CrateFilledSpawner + components: + - pos: 14.5,-20.5 + parent: 1 + type: Transform +- uid: 1828 + type: CrateFilledSpawner + components: + - pos: 15.5,-21.5 + parent: 1 + type: Transform +- uid: 1829 + type: CrateFilledSpawner + components: + - pos: 13.5,-22.5 + parent: 1 + type: Transform +- uid: 1830 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 13.5,-24.5 + parent: 1 + type: Transform +- uid: 1831 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 14.5,-24.5 + parent: 1 + type: Transform +- uid: 1832 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 15.5,-24.5 + parent: 1 + type: Transform +- uid: 1833 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 7.5,-24.5 + parent: 1 + type: Transform +- uid: 1834 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 8.5,-24.5 + parent: 1 + type: Transform +- uid: 1835 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 9.5,-24.5 + parent: 1 + type: Transform +- uid: 1836 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 10.5,-24.5 + parent: 1 + type: Transform +- uid: 1837 + type: ChairPilotSeat + components: + - pos: 7.5,-22.5 + parent: 1 + type: Transform +- uid: 1838 + type: ChairPilotSeat + components: + - pos: 8.5,-22.5 + parent: 1 + type: Transform +- uid: 1839 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 5.5,-24.5 + parent: 1 + type: Transform +- uid: 1840 + type: AtmosFixNitrogenMarker + components: + - pos: 8.5,-26.5 + parent: 1 + type: Transform +- uid: 1841 + type: AtmosFixNitrogenMarker + components: + - pos: 8.5,-27.5 + parent: 1 + type: Transform +- uid: 1842 + type: AtmosFixNitrogenMarker + components: + - pos: 9.5,-26.5 + parent: 1 + type: Transform +- uid: 1843 + type: AtmosFixNitrogenMarker + components: + - pos: 9.5,-27.5 + parent: 1 + type: Transform +- uid: 1844 + type: AtmosFixOxygenMarker + components: + - pos: 13.5,-26.5 + parent: 1 + type: Transform +- uid: 1845 + type: AtmosFixOxygenMarker + components: + - pos: 13.5,-27.5 + parent: 1 + type: Transform +- uid: 1846 + type: AtmosFixOxygenMarker + components: + - pos: 14.5,-26.5 + parent: 1 + type: Transform +- uid: 1847 + type: AtmosFixOxygenMarker + components: + - pos: 14.5,-27.5 + parent: 1 + type: Transform +- uid: 1848 + type: LockerAtmosphericsFilled + components: + - pos: 11.5,-27.5 + parent: 1 + type: Transform +- uid: 1849 + type: ClosetEmergencyFilledRandom + components: + - pos: 3.5,-19.5 + parent: 1 + type: Transform +- uid: 1850 + type: ClosetFireFilled + components: + - pos: 3.5,-20.5 + parent: 1 + type: Transform +- uid: 1851 + type: LockerElectricalSuppliesFilled + components: + - pos: 9.5,-22.5 + parent: 1 + type: Transform +- uid: 1852 + type: LockerWeldingSuppliesFilled + components: + - pos: 11.5,-22.5 + parent: 1 + type: Transform +- uid: 1853 + type: VendingMachineYouTool + components: + - flags: SessionSpecific + type: MetaData + - pos: 4.5,-24.5 + parent: 1 + type: Transform +- uid: 1854 + type: VendingMachineEngivend + components: + - flags: SessionSpecific + type: MetaData + - pos: 4.5,-23.5 + parent: 1 + type: Transform +- uid: 1855 + type: Table + components: + - pos: 18.5,-24.5 + parent: 1 + type: Transform +- uid: 1856 + type: Table + components: + - pos: 18.5,-23.5 + parent: 1 + type: Transform +- uid: 1857 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 17.5,-24.5 + parent: 1 + type: Transform +- uid: 1858 + type: PowerCellRecharger + components: + - rot: 3.141592653589793 rad + pos: 18.5,-24.5 + parent: 1 + type: Transform +- uid: 1859 + type: Table + components: + - rot: 3.141592653589793 rad + pos: 17.5,-25.5 + parent: 1 + type: Transform +- uid: 1860 + type: ChairOfficeDark + components: + - pos: 16.5,-25.5 + parent: 1 + type: Transform +- uid: 1861 + type: ComputerCargoOrders + components: + - rot: 3.141592653589793 rad + pos: 16.5,-26.5 + parent: 1 + type: Transform +- uid: 1862 + type: SignCargo + components: + - rot: 3.141592653589793 rad + pos: 19.5,-18.5 + parent: 1 + type: Transform +- uid: 1863 + type: SignEngineering + components: + - rot: 3.141592653589793 rad + pos: 3.5,-18.5 + parent: 1 + type: Transform +- uid: 1864 + type: ClosetEmergencyFilledRandom + components: + - pos: 19.5,-19.5 + parent: 1 + type: Transform +- uid: 1865 + type: ClosetFireFilled + components: + - pos: 19.5,-20.5 + parent: 1 + type: Transform +- uid: 1866 + type: Table + components: + - rot: 3.141592653589793 rad + pos: 9.5,-21.5 + parent: 1 + type: Transform +- uid: 1867 + type: Table + components: + - rot: 3.141592653589793 rad + pos: 11.5,-21.5 + parent: 1 + type: Transform +- uid: 1868 + type: PowerCellRecharger + components: + - rot: 3.141592653589793 rad + pos: 11.5,-21.5 + parent: 1 + type: Transform +- uid: 1869 + type: HolofanProjector + components: + - pos: 9.465322,-21.262009 + parent: 1 + type: Transform +- uid: 1870 + type: HolofanProjector + components: + - pos: 9.574697,-21.433884 + parent: 1 + type: Transform +- uid: 1871 + type: InflatableWallStack1 + components: + - pos: 9.496572,-21.277634 + parent: 1 + type: Transform +- uid: 1872 + type: InflatableWallStack1 + components: + - pos: 9.527822,-21.324509 + parent: 1 + type: Transform +- uid: 1873 + type: InflatableWallStack1 + components: + - pos: 9.543447,-21.355759 + parent: 1 + type: Transform +- uid: 1874 + type: InflatableWallStack1 + components: + - pos: 9.559072,-21.371384 + parent: 1 + type: Transform +- uid: 1875 + type: CrateArtifactContainer + components: + - pos: 16.5,-12.5 + parent: 1 + type: Transform +- uid: 1876 + type: CrateArtifactContainer + components: + - pos: 17.5,-12.5 + parent: 1 + type: Transform +- uid: 1877 + type: RandomArtifactSpawner + components: + - pos: 17.5,-13.5 + parent: 1 + type: Transform +- uid: 1878 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 11.5,-12.5 + parent: 1 + type: Transform +- uid: 1879 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 11.5,-13.5 + parent: 1 + type: Transform +- uid: 1880 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 11.5,-14.5 + parent: 1 + type: Transform +- uid: 1881 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 7.5,-10.5 + parent: 1 + type: Transform +- uid: 1882 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 8.5,-10.5 + parent: 1 + type: Transform +- uid: 1883 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 10.5,-10.5 + parent: 1 + type: Transform +- uid: 1884 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 11.5,-10.5 + parent: 1 + type: Transform +- uid: 1885 + type: PowerCellRecharger + components: + - rot: 3.141592653589793 rad + pos: 14.5,-14.5 + parent: 1 + type: Transform +- uid: 1886 + type: Table + components: + - rot: 3.141592653589793 rad + pos: 14.5,-14.5 + parent: 1 + type: Transform +- uid: 1887 + type: ChairOfficeDark + components: + - rot: 3.141592653589793 rad + pos: 16.5,-7.5 + parent: 1 + type: Transform +- uid: 1888 + type: ChairOfficeDark + components: + - rot: 1.5707963267948966 rad + pos: 11.5,-5.5 + parent: 1 + type: Transform +- uid: 1889 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 9.5,-5.5 + parent: 1 + type: Transform +- uid: 1890 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 7.5,-6.5 + parent: 1 + type: Transform +- uid: 1891 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 5.5,-12.5 + parent: 1 + type: Transform +- uid: 1892 + type: Table + components: + - rot: 1.5707963267948966 rad + pos: 12.5,-5.5 + parent: 1 + type: Transform +- uid: 1893 + type: Table + components: + - rot: 1.5707963267948966 rad + pos: 15.5,-7.5 + parent: 1 + type: Transform +- uid: 1894 + type: Table + components: + - rot: 1.5707963267948966 rad + pos: 5.5,-13.5 + parent: 1 + type: Transform +- uid: 1895 + type: Table + components: + - rot: 1.5707963267948966 rad + pos: 15.5,-6.5 + parent: 1 + type: Transform +- uid: 1896 + type: Table + components: + - rot: 1.5707963267948966 rad + pos: 16.5,-6.5 + parent: 1 + type: Transform +- uid: 1897 + type: Table + components: + - rot: 1.5707963267948966 rad + pos: 17.5,-6.5 + parent: 1 + type: Transform +- uid: 1898 + type: ChairPilotSeat + components: + - pos: 15.5,-4.5 + parent: 1 + type: Transform +- uid: 1899 + type: ChairPilotSeat + components: + - pos: 16.5,-4.5 + parent: 1 + type: Transform +- uid: 1900 + type: ChairPilotSeat + components: + - pos: 17.5,-4.5 + parent: 1 + type: Transform +- uid: 1901 + type: Rack + components: + - pos: 5.5,-6.5 + parent: 1 + type: Transform +- uid: 1902 + type: Table + components: + - pos: 9.5,-4.5 + parent: 1 + type: Transform +- uid: 1903 + type: Table + components: + - pos: 9.5,-6.5 + parent: 1 + type: Transform +- uid: 1904 + type: chem_master + components: + - pos: 11.5,-4.5 + parent: 1 + type: Transform +- uid: 1905 + type: chem_dispenser + components: + - pos: 10.5,-4.5 + parent: 1 + type: Transform +- uid: 1906 + type: KitchenReagentGrinder + components: + - pos: 9.5,-4.5 + parent: 1 + type: Transform +- uid: 1907 + type: CloningPod + components: + - pos: 5.5,-4.5 + parent: 1 + type: Transform +- uid: 1908 + type: ComputerCloningConsole + components: + - pos: 6.5,-4.5 + parent: 1 + type: Transform +- uid: 1909 + type: MedicalScanner + components: + - pos: 7.5,-4.5 + parent: 1 + type: Transform +- uid: 1910 + type: Multitool + components: + - pos: 5.518649,-6.4942513 + parent: 1 + type: Transform +- uid: 1911 + type: Wrench + components: + - pos: 5.534274,-6.5255013 + parent: 1 + type: Transform +- uid: 1912 + type: CrowbarRed + components: + - pos: 5.549899,-6.6192513 + parent: 1 + type: Transform +- uid: 1913 + type: MedicalBed + components: + - pos: 7.5,-8.5 + parent: 1 + type: Transform +- uid: 1914 + type: MedicalBed + components: + - pos: 8.5,-8.5 + parent: 1 + type: Transform +- uid: 1915 + type: MedicalBed + components: + - pos: 9.5,-8.5 + parent: 1 + type: Transform +- uid: 1916 + type: MedicalBed + components: + - pos: 5.5,-8.5 + parent: 1 + type: Transform +- uid: 1917 + type: MedicalBed + components: + - pos: 5.5,-9.5 + parent: 1 + type: Transform +- uid: 1918 + type: BedsheetMedical + components: + - pos: 5.5,-9.5 + parent: 1 + type: Transform +- uid: 1919 + type: BedsheetMedical + components: + - pos: 5.5,-8.5 + parent: 1 + type: Transform +- uid: 1920 + type: BedsheetMedical + components: + - pos: 7.5,-8.5 + parent: 1 + type: Transform +- uid: 1921 + type: BedsheetMedical + components: + - pos: 8.5,-8.5 + parent: 1 + type: Transform +- uid: 1922 + type: BedsheetMedical + components: + - pos: 9.5,-8.5 + parent: 1 + type: Transform +- uid: 1923 + type: StasisBed + components: + - pos: 5.5,-10.5 + parent: 1 + type: Transform +- uid: 1924 + type: VendingMachineMedical + components: + - flags: SessionSpecific + type: MetaData + - pos: 11.5,-8.5 + parent: 1 + type: Transform +- uid: 1925 + type: LockerChemistryFilled + components: + - pos: 11.5,-6.5 + parent: 1 + type: Transform +- uid: 1926 + type: ComputerCrewMonitoring + components: + - rot: -1.5707963267948966 rad + pos: 17.5,-7.5 + parent: 1 + type: Transform +- uid: 1927 + type: Table + components: + - rot: -1.5707963267948966 rad + pos: 17.5,-9.5 + parent: 1 + type: Transform +- uid: 1928 + type: LockerMedicineFilled + components: + - pos: 16.5,-10.5 + parent: 1 + type: Transform +- uid: 1929 + type: Table + components: + - rot: -1.5707963267948966 rad + pos: 17.5,-10.5 + parent: 1 + type: Transform +- uid: 1930 + type: LockerMedicalFilled + components: + - pos: 15.5,-10.5 + parent: 1 + type: Transform +- uid: 1931 + type: MachineAPE + components: + - pos: 14.5,-12.5 + parent: 1 + type: Transform +- uid: 1932 + type: ChairPilotSeat + components: + - pos: 8.5,-16.5 + parent: 1 + type: Transform +- uid: 1933 + type: ChairPilotSeat + components: + - pos: 9.5,-16.5 + parent: 1 + type: Transform +- uid: 1934 + type: ChairPilotSeat + components: + - pos: 10.5,-16.5 + parent: 1 + type: Transform +- uid: 1935 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 12.5,-17.5 + parent: 1 + type: Transform +- uid: 1936 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 13.5,-17.5 + parent: 1 + type: Transform +- uid: 1937 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 14.5,-17.5 + parent: 1 + type: Transform +- uid: 1938 + type: ChairPilotSeat + components: + - pos: 5.5,-15.5 + parent: 1 + type: Transform +- uid: 1939 + type: ChairPilotSeat + components: + - pos: 4.5,-15.5 + parent: 1 + type: Transform +- uid: 1940 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 2.5,-15.5 + parent: 1 + type: Transform +- uid: 1941 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 2.5,-14.5 + parent: 1 + type: Transform +- uid: 1942 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 2.5,-13.5 + parent: 1 + type: Transform +- uid: 1943 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 1.5,-10.5 + parent: 1 + type: Transform +- uid: 1944 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 1.5,-9.5 + parent: 1 + type: Transform +- uid: 1945 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 1.5,-6.5 + parent: 1 + type: Transform +- uid: 1946 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 1.5,-5.5 + parent: 1 + type: Transform +- uid: 1947 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 1.5,7.5 + parent: 1 + type: Transform +- uid: 1948 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 1.5,6.5 + parent: 1 + type: Transform +- uid: 1949 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 1.5,10.5 + parent: 1 + type: Transform +- uid: 1950 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 1.5,11.5 + parent: 1 + type: Transform +- uid: 1951 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 2.5,14.5 + parent: 1 + type: Transform +- uid: 1952 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 2.5,15.5 + parent: 1 + type: Transform +- uid: 1953 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 2.5,16.5 + parent: 1 + type: Transform +- uid: 1954 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 5.5,16.5 + parent: 1 + type: Transform +- uid: 1955 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 7.5,16.5 + parent: 1 + type: Transform +- uid: 1956 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 15.5,16.5 + parent: 1 + type: Transform +- uid: 1957 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 17.5,16.5 + parent: 1 + type: Transform +- uid: 1958 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 14.5,1.5 + parent: 1 + type: Transform +- uid: 1959 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 15.5,1.5 + parent: 1 + type: Transform +- uid: 1960 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 17.5,2.5 + parent: 1 + type: Transform +- uid: 1961 + type: Table + components: + - rot: -1.5707963267948966 rad + pos: 10.5,14.5 + parent: 1 + type: Transform +- uid: 1962 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 19.5,2.5 + parent: 1 + type: Transform +- uid: 1963 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 8.5,1.5 + parent: 1 + type: Transform +- uid: 1964 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 7.5,1.5 + parent: 1 + type: Transform +- uid: 1965 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 5.5,2.5 + parent: 1 + type: Transform +- uid: 1966 + type: Table + components: + - rot: -1.5707963267948966 rad + pos: 5.5,14.5 + parent: 1 + type: Transform +- uid: 1967 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 3.5,2.5 + parent: 1 + type: Transform +- uid: 1968 + type: ChairPilotSeat + components: + - pos: 17.5,-15.5 + parent: 1 + type: Transform +- uid: 1969 + type: ChairPilotSeat + components: + - pos: 18.5,-15.5 + parent: 1 + type: Transform +- uid: 1970 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 20.5,-15.5 + parent: 1 + type: Transform +- uid: 1971 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 20.5,-14.5 + parent: 1 + type: Transform +- uid: 1972 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 20.5,-13.5 + parent: 1 + type: Transform +- uid: 1973 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 21.5,-10.5 + parent: 1 + type: Transform +- uid: 1974 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 21.5,-9.5 + parent: 1 + type: Transform +- uid: 1975 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 21.5,-6.5 + parent: 1 + type: Transform +- uid: 1976 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 21.5,-5.5 + parent: 1 + type: Transform +- uid: 1977 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 21.5,6.5 + parent: 1 + type: Transform +- uid: 1978 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 21.5,7.5 + parent: 1 + type: Transform +- uid: 1979 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 21.5,10.5 + parent: 1 + type: Transform +- uid: 1980 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 21.5,11.5 + parent: 1 + type: Transform +- uid: 1981 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 20.5,14.5 + parent: 1 + type: Transform +- uid: 1982 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 20.5,15.5 + parent: 1 + type: Transform +- uid: 1983 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 20.5,16.5 + parent: 1 + type: Transform +- uid: 1984 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 19.5,10.5 + parent: 1 + type: Transform +- uid: 1985 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 19.5,9.5 + parent: 1 + type: Transform +- uid: 1986 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 19.5,8.5 + parent: 1 + type: Transform +- uid: 1987 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 19.5,7.5 + parent: 1 + type: Transform +- uid: 1988 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 20.5,1.5 + parent: 1 + type: Transform +- uid: 1989 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 20.5,0.5 + parent: 1 + type: Transform +- uid: 1990 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 20.5,-0.5 + parent: 1 + type: Transform +- uid: 1991 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 19.5,-6.5 + parent: 1 + type: Transform +- uid: 1992 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 19.5,-7.5 + parent: 1 + type: Transform +- uid: 1993 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 19.5,-8.5 + parent: 1 + type: Transform +- uid: 1994 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 19.5,-9.5 + parent: 1 + type: Transform +- uid: 1995 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 3.5,-6.5 + parent: 1 + type: Transform +- uid: 1996 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 3.5,-7.5 + parent: 1 + type: Transform +- uid: 1997 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 3.5,-8.5 + parent: 1 + type: Transform +- uid: 1998 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 3.5,-9.5 + parent: 1 + type: Transform +- uid: 1999 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 2.5,-0.5 + parent: 1 + type: Transform +- uid: 2000 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 2.5,0.5 + parent: 1 + type: Transform +- uid: 2001 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 2.5,1.5 + parent: 1 + type: Transform +- uid: 2002 + type: ChairPilotSeat + components: + - pos: 3.5,-1.5 + parent: 1 + type: Transform +- uid: 2003 + type: LockerSecurityFilled + components: + - pos: 9.5,14.5 + parent: 1 + type: Transform +- uid: 2004 + type: ChairPilotSeat + components: + - pos: 5.5,-1.5 + parent: 1 + type: Transform +- uid: 2005 + type: ChairPilotSeat + components: + - pos: 14.5,-0.5 + parent: 1 + type: Transform +- uid: 2006 + type: ChairPilotSeat + components: + - pos: 15.5,-0.5 + parent: 1 + type: Transform +- uid: 2007 + type: ChairPilotSeat + components: + - pos: 8.5,-0.5 + parent: 1 + type: Transform +- uid: 2008 + type: ChairPilotSeat + components: + - pos: 7.5,-0.5 + parent: 1 + type: Transform +- uid: 2009 + type: ChairPilotSeat + components: + - pos: 17.5,-1.5 + parent: 1 + type: Transform +- uid: 2010 + type: VendingMachineSec + components: + - flags: SessionSpecific + type: MetaData + - pos: 11.5,14.5 + parent: 1 + type: Transform +- uid: 2011 + type: ChairPilotSeat + components: + - pos: 19.5,-1.5 + parent: 1 + type: Transform +- uid: 2012 + type: ChairPilotSeat + components: + - pos: 10.5,21.5 + parent: 1 + type: Transform +- uid: 2013 + type: ChairPilotSeat + components: + - pos: 11.5,21.5 + parent: 1 + type: Transform +- uid: 2014 + type: ChairPilotSeat + components: + - pos: 12.5,21.5 + parent: 1 + type: Transform +- uid: 2015 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 10.5,19.5 + parent: 1 + type: Transform +- uid: 2016 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 11.5,19.5 + parent: 1 + type: Transform +- uid: 2017 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 12.5,19.5 + parent: 1 + type: Transform +- uid: 2018 + type: ChairPilotSeat + components: + - rot: 1.5707963267948966 rad + pos: 9.5,20.5 + parent: 1 + type: Transform +- uid: 2019 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 13.5,20.5 + parent: 1 + type: Transform +- uid: 2020 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 11.5,23.5 + parent: 1 + type: Transform +- uid: 2021 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 8.5,26.5 + parent: 1 + type: Transform +- uid: 2022 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 5.5,25.5 + parent: 1 + type: Transform +- uid: 2023 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 11.5,26.5 + parent: 1 + type: Transform +- uid: 2024 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 14.5,26.5 + parent: 1 + type: Transform +- uid: 2025 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 17.5,25.5 + parent: 1 + type: Transform +- uid: 2026 + type: ChairPilotSeat + components: + - pos: 10.5,17.5 + parent: 1 + type: Transform +- uid: 2027 + type: ChairPilotSeat + components: + - pos: 11.5,17.5 + parent: 1 + type: Transform +- uid: 2028 + type: ChairPilotSeat + components: + - pos: 12.5,17.5 + parent: 1 + type: Transform +- uid: 2029 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 10.5,11.5 + parent: 1 + type: Transform +- uid: 2030 + type: CrateGenericSteel + components: + - desc: A large container for donuts. + name: donut crate + type: MetaData + - pos: 11.5,11.5 + parent: 1 + type: Transform + - containers: + entity_storage: !type:Container + ents: + - 2031 + - 2032 + - 2033 + paper_label: !type:ContainerSlot {} + type: ContainerContainer +- uid: 2031 + type: FoodBoxDonut + components: + - flags: InContainer + type: MetaData + - parent: 2030 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- uid: 2032 + type: FoodBoxDonut + components: + - flags: InContainer + type: MetaData + - parent: 2030 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- uid: 2033 + type: FoodBoxDonut + components: + - flags: InContainer + type: MetaData + - parent: 2030 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- uid: 2034 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 12.5,11.5 + parent: 1 + type: Transform +- uid: 2035 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 8.5,11.5 + parent: 1 + type: Transform +- uid: 2036 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 7.5,11.5 + parent: 1 + type: Transform +- uid: 2037 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 14.5,11.5 + parent: 1 + type: Transform +- uid: 2038 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 15.5,11.5 + parent: 1 + type: Transform +- uid: 2039 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 12.5,-2.5 + parent: 1 + type: Transform +- uid: 2040 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 11.5,-2.5 + parent: 1 + type: Transform +- uid: 2041 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 10.5,-2.5 + parent: 1 + type: Transform +- uid: 2042 + type: MedicalBed + components: + - pos: 6.5,-13.5 + parent: 1 + type: Transform +- uid: 2043 + type: BedsheetGreen + components: + - rot: 3.141592653589793 rad + pos: 6.5,-13.5 + parent: 1 + type: Transform +- uid: 2044 + type: Morgue + components: + - rot: 1.5707963267948966 rad + pos: 8.5,-14.5 + parent: 1 + type: Transform +- uid: 2045 + type: Morgue + components: + - rot: 1.5707963267948966 rad + pos: 8.5,-13.5 + parent: 1 + type: Transform +- uid: 2046 + type: BiomassReclaimer + components: + - pos: 8.5,-12.5 + parent: 1 + type: Transform +- uid: 2047 + type: FloorDrain + components: + - pos: 9.5,-13.5 + parent: 1 + type: Transform + - fixtures: [] + type: Fixtures +- uid: 2048 + type: MaterialBiomass + components: + - pos: 5.351431,-6.4036293 + parent: 1 + type: Transform +- uid: 2049 + type: MaterialBiomass + components: + - pos: 5.726431,-6.6692543 + parent: 1 + type: Transform +- uid: 2050 + type: SheetPlasma1 + components: + - pos: 9.514079,-6.3833523 + parent: 1 + type: Transform +- uid: 2051 + type: SheetPlasma1 + components: + - pos: 9.514079,-6.3833523 + parent: 1 + type: Transform +- uid: 2052 + type: SheetPlasma1 + components: + - pos: 9.514079,-6.3833523 + parent: 1 + type: Transform +- uid: 2053 + type: LargeBeaker + components: + - pos: 9.310954,-6.2427273 + parent: 1 + type: Transform +- uid: 2054 + type: LargeBeaker + components: + - pos: 9.639079,-6.4302273 + parent: 1 + type: Transform +- uid: 2055 + type: Syringe + components: + - pos: 9.560954,-6.3208523 + parent: 1 + type: Transform +- uid: 2056 + type: PillCanister + components: + - pos: 9.232829,-6.5396023 + parent: 1 + type: Transform +- uid: 2057 + type: PillCanister + components: + - pos: 9.389079,-6.6021023 + parent: 1 + type: Transform +- uid: 2058 + type: SyringeSpaceacillin + components: + - pos: 5.505394,-13.463046 + parent: 1 + type: Transform +- uid: 2059 + type: BoxSterileMask + components: + - pos: 5.396019,-13.3478 + parent: 1 + type: Transform +- uid: 2060 + type: BoxLatexGloves + components: + - pos: 5.614769,-13.457175 + parent: 1 + type: Transform +- uid: 2061 + type: MedkitAdvancedFilled + components: + - pos: 17.522038,-9.5906515 + parent: 1 + type: Transform +- uid: 2062 + type: BoxBodyBag + components: + - pos: 17.506413,-9.3250265 + parent: 1 + type: Transform +- uid: 2063 + type: MedkitBruteFilled + components: + - pos: 17.522038,-9.7312765 + parent: 1 + type: Transform +- uid: 2064 + type: MedkitBurnFilled + components: + - pos: 17.537663,-9.8875265 + parent: 1 + type: Transform +- uid: 2065 + type: MedkitFilled + components: + - pos: 17.537663,-10.0437765 + parent: 1 + type: Transform +- uid: 2066 + type: MedkitOxygenFilled + components: + - pos: 17.522038,-10.1844015 + parent: 1 + type: Transform +- uid: 2067 + type: MedkitRadiationFilled + components: + - pos: 17.522038,-10.3406515 + parent: 1 + type: Transform +- uid: 2068 + type: MedkitToxinFilled + components: + - pos: 17.522038,-10.4969015 + parent: 1 + type: Transform +- uid: 2069 + type: EmergencyMedipen + components: + - pos: 15.4282875,-7.3875265 + parent: 1 + type: Transform +- uid: 2070 + type: EmergencyMedipen + components: + - pos: 15.5845375,-7.5750265 + parent: 1 + type: Transform +- uid: 2071 + type: ToySpawner + components: + - pos: 15.5,-6.5 + parent: 1 + type: Transform +- uid: 2072 + type: Brutepack + components: + - pos: 15.385583,-6.957241 + parent: 1 + type: Transform +- uid: 2073 + type: Brutepack + components: + - pos: 15.713708,-7.050991 + parent: 1 + type: Transform +- uid: 2074 + type: Ointment + components: + - pos: 16.682457,-6.347866 + parent: 1 + type: Transform +- uid: 2075 + type: Ointment + components: + - pos: 16.401207,-6.519741 + parent: 1 + type: Transform +- uid: 2076 + type: Ointment + components: + - pos: 16.369957,-6.285366 + parent: 1 + type: Transform +- uid: 2077 + type: MedkitFilled + components: + - pos: 17.557457,-6.441616 + parent: 1 + type: Transform +- uid: 2078 + type: HandheldHealthAnalyzer + components: + - pos: 16.994957,-6.488491 + parent: 1 + type: Transform +- uid: 2079 + type: HandheldHealthAnalyzer + components: + - pos: 16.994957,-6.238491 + parent: 1 + type: Transform +- uid: 2080 + type: Table + components: + - pos: 8.5,9.5 + parent: 1 + type: Transform +- uid: 2081 + type: Table + components: + - pos: 14.5,9.5 + parent: 1 + type: Transform +- uid: 2082 + type: TableReinforced + components: + - pos: 13.5,23.5 + parent: 1 + type: Transform +- uid: 2083 + type: TableReinforced + components: + - pos: 13.5,24.5 + parent: 1 + type: Transform +- uid: 2084 + type: TableWood + components: + - pos: 9.5,4.5 + parent: 1 + type: Transform +- uid: 2085 + type: TableWood + components: + - pos: 10.5,4.5 + parent: 1 + type: Transform +- uid: 2086 + type: TableWood + components: + - pos: 11.5,4.5 + parent: 1 + type: Transform +- uid: 2087 + type: TableWood + components: + - pos: 12.5,4.5 + parent: 1 + type: Transform +- uid: 2088 + type: TableWood + components: + - pos: 12.5,6.5 + parent: 1 + type: Transform +- uid: 2089 + type: TableWood + components: + - pos: 13.5,6.5 + parent: 1 + type: Transform +- uid: 2090 + type: ChairPilotSeat + components: + - pos: 10.5,6.5 + parent: 1 + type: Transform +- uid: 2091 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 3.5,10.5 + parent: 1 + type: Transform +- uid: 2092 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 3.5,9.5 + parent: 1 + type: Transform +- uid: 2093 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 3.5,8.5 + parent: 1 + type: Transform +- uid: 2094 + type: ChairPilotSeat + components: + - rot: -1.5707963267948966 rad + pos: 3.5,7.5 + parent: 1 + type: Transform +- uid: 2095 + type: Table + components: + - rot: -1.5707963267948966 rad + pos: 12.5,14.5 + parent: 1 + type: Transform +- uid: 2096 + type: Table + components: + - rot: -1.5707963267948966 rad + pos: 15.5,6.5 + parent: 1 + type: Transform +- uid: 2097 + type: Table + components: + - rot: -1.5707963267948966 rad + pos: 16.5,14.5 + parent: 1 + type: Transform +- uid: 2098 + type: Table + components: + - rot: -1.5707963267948966 rad + pos: 17.5,14.5 + parent: 1 + type: Transform +- uid: 2099 + type: Table + components: + - rot: -1.5707963267948966 rad + pos: 6.5,14.5 + parent: 1 + type: Transform +- uid: 2100 + type: LockerEvidence + components: + - pos: 7.5,14.5 + parent: 1 + type: Transform +- uid: 2101 + type: LockerEvidence + components: + - pos: 8.5,14.5 + parent: 1 + type: Transform +- uid: 2102 + type: Table + components: + - rot: -1.5707963267948966 rad + pos: 15.5,5.5 + parent: 1 + type: Transform +- uid: 2103 + type: Table + components: + - rot: -1.5707963267948966 rad + pos: 7.5,5.5 + parent: 1 + type: Transform +- uid: 2104 + type: Table + components: + - rot: -1.5707963267948966 rad + pos: 7.5,6.5 + parent: 1 + type: Transform +- uid: 2105 + type: WeaponCapacitorRecharger + components: + - rot: -1.5707963267948966 rad + pos: 7.5,6.5 + parent: 1 + type: Transform +- uid: 2106 + type: WeaponCapacitorRecharger + components: + - rot: -1.5707963267948966 rad + pos: 15.5,6.5 + parent: 1 + type: Transform +- uid: 2107 + type: PowerCellRecharger + components: + - rot: -1.5707963267948966 rad + pos: 7.5,5.5 + parent: 1 + type: Transform +- uid: 2108 + type: PowerCellRecharger + components: + - rot: -1.5707963267948966 rad + pos: 15.5,5.5 + parent: 1 + type: Transform +- uid: 2109 + type: ClosetEmergencyFilledRandom + components: + - pos: 13.5,14.5 + parent: 1 + type: Transform +- uid: 2110 + type: WeaponCapacitorRecharger + components: + - rot: -1.5707963267948966 rad + pos: 5.5,14.5 + parent: 1 + type: Transform +- uid: 2111 + type: WeaponCapacitorRecharger + components: + - rot: -1.5707963267948966 rad + pos: 17.5,14.5 + parent: 1 + type: Transform +- uid: 2112 + type: ClosetEmergencyFilledRandom + components: + - pos: 14.5,14.5 + parent: 1 + type: Transform +- uid: 2113 + type: ClosetFireFilled + components: + - pos: 15.5,14.5 + parent: 1 + type: Transform +- uid: 2114 + type: Bed + components: + - pos: 9.5,8.5 + parent: 1 + type: Transform +- uid: 2115 + type: Bed + components: + - pos: 13.5,8.5 + parent: 1 + type: Transform +- uid: 2116 + type: BedsheetOrange + components: + - rot: -1.5707963267948966 rad + pos: 9.5,8.5 + parent: 1 + type: Transform +- uid: 2117 + type: BedsheetOrange + components: + - rot: -1.5707963267948966 rad + pos: 13.5,8.5 + parent: 1 + type: Transform +- uid: 2118 + type: WardrobePrisonFilled + components: + - pos: 8.5,8.5 + parent: 1 + type: Transform +- uid: 2119 + type: WardrobePrisonFilled + components: + - pos: 14.5,8.5 + parent: 1 + type: Transform +- uid: 2120 + type: ChairFolding + components: + - rot: -1.5707963267948966 rad + pos: 9.5,9.5 + parent: 1 + type: Transform +- uid: 2121 + type: ChairFolding + components: + - rot: 1.5707963267948966 rad + pos: 13.5,9.5 + parent: 1 + type: Transform +- uid: 2122 + type: RandomInstruments + components: + - pos: 8.5,9.5 + parent: 1 + type: Transform +- uid: 2123 + type: RandomInstruments + components: + - pos: 14.5,9.5 + parent: 1 + type: Transform +- uid: 2124 + type: AcousticGuitarInstrument + components: + - pos: 12.499352,4.6240005 + parent: 1 + type: Transform +- uid: 2125 + type: PowerCellRecharger + components: + - pos: 9.5,4.5 + parent: 1 + type: Transform +- uid: 2126 + type: VendingMachineBooze + components: + - flags: SessionSpecific + type: MetaData + - pos: 9.5,6.5 + parent: 1 + type: Transform +- uid: 2127 + type: BoozeDispenser + components: + - pos: 12.5,6.5 + parent: 1 + type: Transform +- uid: 2128 + type: soda_dispenser + components: + - pos: 13.5,6.5 + parent: 1 + type: Transform +- uid: 2129 + type: DrinkGlass + components: + - pos: 10.171227,4.7839174 + parent: 1 + type: Transform +- uid: 2130 + type: DrinkGlass + components: + - pos: 10.530602,4.5807924 + parent: 1 + type: Transform +- uid: 2131 + type: DrinkGlass + components: + - pos: 10.858727,4.7995424 + parent: 1 + type: Transform +- uid: 2132 + type: DrinkGlass + components: + - pos: 11.858727,4.5651674 + parent: 1 + type: Transform +- uid: 2133 + type: DrinkGlass + components: + - pos: 12.139977,4.8151674 + parent: 1 + type: Transform +- uid: 2134 + type: DrinkShaker + components: + - pos: 11.327477,4.5964174 + parent: 1 + type: Transform +- uid: 2135 + type: StoolBar + components: + - rot: 3.141592653589793 rad + pos: 9.5,3.5 + parent: 1 + type: Transform +- uid: 2136 + type: StoolBar + components: + - rot: 3.141592653589793 rad + pos: 10.5,3.5 + parent: 1 + type: Transform +- uid: 2137 + type: StoolBar + components: + - rot: 3.141592653589793 rad + pos: 11.5,3.5 + parent: 1 + type: Transform +- uid: 2138 + type: StoolBar + components: + - rot: 3.141592653589793 rad + pos: 12.5,3.5 + parent: 1 + type: Transform +- uid: 2139 + type: WeaponDisabler + components: + - pos: 10.4248705,14.735678 + parent: 1 + type: Transform +- uid: 2140 + type: WeaponDisabler + components: + - pos: 10.5811205,14.532553 + parent: 1 + type: Transform +- uid: 2141 + type: Stunbaton + components: + - pos: 12.2998705,14.595053 + parent: 1 + type: Transform +- uid: 2142 + type: Stunbaton + components: + - pos: 12.5498705,14.548178 + parent: 1 + type: Transform +- uid: 2143 + type: BoxHandcuff + components: + - pos: 6.1904955,14.641928 + parent: 1 + type: Transform +- uid: 2144 + type: BoxZiptie + components: + - pos: 6.5811205,14.641928 + parent: 1 + type: Transform +- uid: 2145 + type: BoxFlashbang + components: + - pos: 16.89938,14.641928 + parent: 1 + type: Transform +- uid: 2146 + type: FlashlightSeclite + components: + - pos: 16.602505,14.782553 + parent: 1 + type: Transform +- uid: 2147 + type: FlashlightSeclite + components: + - pos: 16.633755,14.501303 + parent: 1 + type: Transform +- uid: 2148 + type: TableWood + components: + - pos: 10.5,20.5 + parent: 1 + type: Transform +- uid: 2149 + type: TableWood + components: + - pos: 11.5,20.5 + parent: 1 + type: Transform +- uid: 2150 + type: TableWood + components: + - pos: 12.5,20.5 + parent: 1 + type: Transform +- uid: 2151 + type: TableWood + components: + - pos: 7.5,21.5 + parent: 1 + type: Transform +- uid: 2152 + type: TableWood + components: + - pos: 7.5,20.5 + parent: 1 + type: Transform +- uid: 2153 + type: TableWood + components: + - pos: 15.5,21.5 + parent: 1 + type: Transform +- uid: 2154 + type: LockerBoozeFilled + components: + - pos: 11.5,9.5 + parent: 1 + type: Transform +- uid: 2155 + type: ClosetEmergencyFilledRandom + components: + - pos: 2.5,-16.5 + parent: 1 + type: Transform +- uid: 2156 + type: ClosetEmergencyFilledRandom + components: + - pos: 6.5,-15.5 + parent: 1 + type: Transform +- uid: 2157 + type: ClosetEmergencyFilledRandom + components: + - pos: 16.5,-15.5 + parent: 1 + type: Transform +- uid: 2158 + type: ClosetEmergencyFilledRandom + components: + - pos: 20.5,-16.5 + parent: 1 + type: Transform +- uid: 2159 + type: ClosetFireFilled + components: + - pos: 3.5,-17.5 + parent: 1 + type: Transform +- uid: 2160 + type: ClosetFireFilled + components: + - pos: 19.5,-17.5 + parent: 1 + type: Transform +- uid: 2161 + type: ClosetEmergencyFilledRandom + components: + - pos: 21.5,-11.5 + parent: 1 + type: Transform +- uid: 2162 + type: ClosetEmergencyFilledRandom + components: + - pos: 1.5,-8.5 + parent: 1 + type: Transform +- uid: 2163 + type: ClosetEmergencyFilledRandom + components: + - pos: 21.5,-8.5 + parent: 1 + type: Transform +- uid: 2164 + type: ClosetFireFilled + components: + - pos: 21.5,-7.5 + parent: 1 + type: Transform +- uid: 2165 + type: ClosetEmergencyFilledRandom + components: + - pos: 19.5,-5.5 + parent: 1 + type: Transform +- uid: 2166 + type: ClosetEmergencyFilledRandom + components: + - pos: 3.5,-5.5 + parent: 1 + type: Transform +- uid: 2167 + type: ClosetEmergencyFilledRandom + components: + - pos: 1.5,-11.5 + parent: 1 + type: Transform +- uid: 2168 + type: ClosetFireFilled + components: + - pos: 1.5,-7.5 + parent: 1 + type: Transform +- uid: 2169 + type: ClosetEmergencyFilledRandom + components: + - pos: 6.5,-0.5 + parent: 1 + type: Transform +- uid: 2170 + type: ClosetEmergencyFilledRandom + components: + - pos: 6.5,1.5 + parent: 1 + type: Transform +- uid: 2171 + type: ClosetEmergencyFilledRandom + components: + - pos: 16.5,1.5 + parent: 1 + type: Transform +- uid: 2172 + type: ClosetEmergencyFilledRandom + components: + - pos: 16.5,-0.5 + parent: 1 + type: Transform +- uid: 2173 + type: ClosetEmergencyFilledRandom + components: + - pos: 19.5,6.5 + parent: 1 + type: Transform +- uid: 2174 + type: ClosetEmergencyFilledRandom + components: + - pos: 21.5,9.5 + parent: 1 + type: Transform +- uid: 2175 + type: ClosetEmergencyFilledRandom + components: + - pos: 21.5,12.5 + parent: 1 + type: Transform +- uid: 2176 + type: ClosetEmergencyFilledRandom + components: + - pos: 3.5,6.5 + parent: 1 + type: Transform +- uid: 2177 + type: ClosetEmergencyFilledRandom + components: + - pos: 1.5,9.5 + parent: 1 + type: Transform +- uid: 2178 + type: ClosetEmergencyFilledRandom + components: + - pos: 1.5,12.5 + parent: 1 + type: Transform +- uid: 2179 + type: ClosetFireFilled + components: + - pos: 1.5,8.5 + parent: 1 + type: Transform +- uid: 2180 + type: ClosetFireFilled + components: + - pos: 21.5,8.5 + parent: 1 + type: Transform +- uid: 2181 + type: ClosetFireFilled + components: + - pos: 19.5,18.5 + parent: 1 + type: Transform +- uid: 2182 + type: ClosetFireFilled + components: + - pos: 3.5,18.5 + parent: 1 + type: Transform +- uid: 2183 + type: ClosetEmergencyFilledRandom + components: + - pos: 2.5,17.5 + parent: 1 + type: Transform +- uid: 2184 + type: ClosetEmergencyFilledRandom + components: + - pos: 20.5,17.5 + parent: 1 + type: Transform +- uid: 2185 + type: ClosetEmergencyFilledRandom + components: + - pos: 13.5,17.5 + parent: 1 + type: Transform +- uid: 2186 + type: ClosetEmergencyFilledRandom + components: + - pos: 9.5,17.5 + parent: 1 + type: Transform +- uid: 2187 + type: ClosetEmergencyFilledRandom + components: + - pos: 3.5,21.5 + parent: 1 + type: Transform +- uid: 2188 + type: ClosetEmergencyFilledRandom + components: + - pos: 19.5,21.5 + parent: 1 + type: Transform +- uid: 2189 + type: ClosetFireFilled + components: + - pos: 3.5,20.5 + parent: 1 + type: Transform +- uid: 2190 + type: ClosetFireFilled + components: + - pos: 19.5,20.5 + parent: 1 + type: Transform +- uid: 2191 + type: ComputerResearchAndDevelopment + components: + - pos: 17.5,26.5 + parent: 1 + type: Transform +- uid: 2192 + type: ComputerRadar + components: + - pos: 12.5,24.5 + parent: 1 + type: Transform +- uid: 2193 + type: ComputerSurveillanceCameraMonitor + components: + - pos: 8.5,27.5 + parent: 1 + type: Transform +- uid: 2194 + type: ComputerComms + components: + - pos: 10.5,24.5 + parent: 1 + type: Transform +- uid: 2195 + type: ComputerCrewMonitoring + components: + - pos: 14.5,27.5 + parent: 1 + type: Transform +- uid: 2196 + type: ComputerCriminalRecords + components: + - pos: 7.5,27.5 + parent: 1 + type: Transform +- uid: 2197 + type: ComputerPowerMonitoring + components: + - pos: 5.5,26.5 + parent: 1 + type: Transform +- uid: 2198 + type: TableReinforced + components: + - pos: 4.5,25.5 + parent: 1 + type: Transform +- uid: 2199 + type: CableHV + components: + - pos: 5.5,26.5 + parent: 1 + type: Transform +- uid: 2200 + type: ComputerId + components: + - pos: 11.5,27.5 + parent: 1 + type: Transform +- uid: 2201 + type: ComputerMedicalRecords + components: + - pos: 15.5,27.5 + parent: 1 + type: Transform +- uid: 2202 + type: ComputerEmergencyShuttle + components: + - pos: 11.5,24.5 + parent: 1 + type: Transform +- uid: 2203 + type: ComputerStationRecords + components: + - pos: 10.5,27.5 + parent: 1 + type: Transform +- uid: 2204 + type: ComputerAlert + components: + - pos: 12.5,27.5 + parent: 1 + type: Transform +- uid: 2205 + type: TableReinforced + components: + - pos: 6.5,26.5 + parent: 1 + type: Transform +- uid: 2206 + type: TableReinforced + components: + - pos: 9.5,27.5 + parent: 1 + type: Transform +- uid: 2207 + type: TableReinforced + components: + - pos: 13.5,27.5 + parent: 1 + type: Transform +- uid: 2208 + type: TableReinforced + components: + - pos: 16.5,26.5 + parent: 1 + type: Transform +- uid: 2209 + type: TableReinforced + components: + - pos: 18.5,25.5 + parent: 1 + type: Transform +- uid: 2210 + type: FloraTree04 + components: + - pos: 18.567924,0.18368268 + parent: 1 + type: Transform +- uid: 2211 + type: FloraTree03 + components: + - pos: 4.492442,0.04305768 + parent: 1 + type: Transform +- uid: 2212 + type: VendingMachineCoffee + components: + - flags: SessionSpecific + type: MetaData + - pos: 15.5,20.5 + parent: 1 + type: Transform +- uid: 2213 + type: VendingMachineSnack + components: + - flags: SessionSpecific + type: MetaData + - pos: 15.5,19.5 + parent: 1 + type: Transform +- uid: 2214 + type: VendingMachineCigs + components: + - flags: SessionSpecific + type: MetaData + - pos: 7.5,19.5 + parent: 1 + type: Transform +- uid: 2215 + type: FoodBoxDonut + components: + - pos: 7.4771204,20.602934 + parent: 1 + type: Transform +- uid: 2216 + type: FoodBoxDonut + components: + - pos: 7.4771204,20.977934 + parent: 1 + type: Transform +- uid: 2217 + type: FoodDonutJellySlugcat + components: + - pos: 7.5188265,21.57926 + parent: 1 + type: Transform +- uid: 2218 + type: PaperOffice + components: + - pos: 11.35215,20.60304 + parent: 1 + type: Transform +- uid: 2219 + type: PaperOffice + components: + - pos: 11.2584,20.60304 + parent: 1 + type: Transform +- uid: 2220 + type: PaperOffice + components: + - pos: 11.305275,20.60304 + parent: 1 + type: Transform +- uid: 2221 + type: PaperOffice + components: + - pos: 11.3834,20.60304 + parent: 1 + type: Transform +- uid: 2222 + type: PaperOffice + components: + - pos: 11.430275,20.60304 + parent: 1 + type: Transform +- uid: 2223 + type: PaperOffice + components: + - pos: 11.47715,20.60304 + parent: 1 + type: Transform +- uid: 2224 + type: BoxFolderBlue + components: + - pos: 11.711525,20.60304 + parent: 1 + type: Transform +- uid: 2225 + type: Pen + components: + - pos: 11.274025,20.41554 + parent: 1 + type: Transform +- uid: 2226 + type: Pen + components: + - pos: 11.742775,20.79054 + parent: 1 + type: Transform +- uid: 2227 + type: CigarGoldCase + components: + - pos: 10.461525,20.66554 + parent: 1 + type: Transform +- uid: 2228 + type: Lighter + components: + - pos: 10.8834,20.743666 + parent: 1 + type: Transform +- uid: 2229 + type: Lighter + components: + - pos: 10.8834,20.47804 + parent: 1 + type: Transform +- uid: 2230 + type: PhoneInstrument + components: + - pos: 12.430275,20.618666 + parent: 1 + type: Transform +- uid: 2231 + type: BlastDoorOpen + components: + - pos: 4.5,10.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2276 + - port: Pressed + uid: 2277 + type: SignalReceiver +- uid: 2232 + type: BlastDoorOpen + components: + - pos: 4.5,11.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2276 + - port: Pressed + uid: 2277 + type: SignalReceiver +- uid: 2233 + type: BlastDoorOpen + components: + - pos: 4.5,12.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2276 + - port: Pressed + uid: 2277 + type: SignalReceiver +- uid: 2234 + type: BlastDoorOpen + components: + - pos: 7.5,15.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2276 + - port: Pressed + uid: 2277 + type: SignalReceiver +- uid: 2235 + type: BlastDoorOpen + components: + - pos: 8.5,15.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2276 + - port: Pressed + uid: 2277 + type: SignalReceiver +- uid: 2236 + type: BlastDoorOpen + components: + - pos: 9.5,15.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2276 + - port: Pressed + uid: 2277 + type: SignalReceiver +- uid: 2237 + type: BlastDoorOpen + components: + - pos: 13.5,15.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2276 + - port: Pressed + uid: 2277 + type: SignalReceiver +- uid: 2238 + type: BlastDoorOpen + components: + - pos: 14.5,15.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2276 + - port: Pressed + uid: 2277 + type: SignalReceiver +- uid: 2239 + type: BlastDoorOpen + components: + - pos: 15.5,15.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2276 + - port: Pressed + uid: 2277 + type: SignalReceiver +- uid: 2240 + type: BlastDoorOpen + components: + - pos: 18.5,12.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2276 + - port: Pressed + uid: 2277 + type: SignalReceiver +- uid: 2241 + type: BlastDoorOpen + components: + - pos: 18.5,11.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2276 + - port: Pressed + uid: 2277 + type: SignalReceiver +- uid: 2242 + type: BlastDoorOpen + components: + - pos: 18.5,10.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2276 + - port: Pressed + uid: 2277 + type: SignalReceiver +- uid: 2243 + type: BlastDoorOpen + components: + - pos: 13.5,18.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2274 + type: SignalReceiver +- uid: 2244 + type: BlastDoorOpen + components: + - pos: 14.5,18.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2274 + type: SignalReceiver +- uid: 2245 + type: BlastDoorOpen + components: + - pos: 9.5,18.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2274 + type: SignalReceiver +- uid: 2246 + type: BlastDoorOpen + components: + - pos: 8.5,18.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2274 + type: SignalReceiver +- uid: 2247 + type: BlastDoorOpen + components: + - pos: 7.5,22.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2274 + type: SignalReceiver +- uid: 2248 + type: BlastDoorOpen + components: + - pos: 15.5,22.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2274 + type: SignalReceiver +- uid: 2249 + type: BlastDoorOpen + components: + - pos: 19.5,24.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2275 + type: SignalReceiver +- uid: 2250 + type: BlastDoorOpen + components: + - pos: 19.5,25.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2275 + type: SignalReceiver +- uid: 2251 + type: BlastDoorOpen + components: + - pos: 19.5,26.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2275 + type: SignalReceiver +- uid: 2252 + type: BlastDoorOpen + components: + - pos: 18.5,26.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2275 + type: SignalReceiver +- uid: 2253 + type: BlastDoorOpen + components: + - pos: 18.5,27.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2275 + type: SignalReceiver +- uid: 2254 + type: BlastDoorOpen + components: + - pos: 17.5,27.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2275 + type: SignalReceiver +- uid: 2255 + type: BlastDoorOpen + components: + - pos: 16.5,27.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2275 + type: SignalReceiver +- uid: 2256 + type: BlastDoorOpen + components: + - pos: 16.5,28.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2275 + type: SignalReceiver +- uid: 2257 + type: BlastDoorOpen + components: + - pos: 15.5,28.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2275 + type: SignalReceiver +- uid: 2258 + type: BlastDoorOpen + components: + - pos: 14.5,28.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2275 + type: SignalReceiver +- uid: 2259 + type: BlastDoorOpen + components: + - pos: 13.5,28.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2275 + type: SignalReceiver +- uid: 2260 + type: BlastDoorOpen + components: + - pos: 12.5,28.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2275 + type: SignalReceiver +- uid: 2261 + type: BlastDoorOpen + components: + - pos: 11.5,28.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2275 + type: SignalReceiver +- uid: 2262 + type: BlastDoorOpen + components: + - pos: 10.5,28.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2275 + type: SignalReceiver +- uid: 2263 + type: BlastDoorOpen + components: + - pos: 9.5,28.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2275 + type: SignalReceiver +- uid: 2264 + type: BlastDoorOpen + components: + - pos: 8.5,28.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2275 + type: SignalReceiver +- uid: 2265 + type: BlastDoorOpen + components: + - pos: 7.5,28.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2275 + type: SignalReceiver +- uid: 2266 + type: BlastDoorOpen + components: + - pos: 6.5,28.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2275 + type: SignalReceiver +- uid: 2267 + type: BlastDoorOpen + components: + - pos: 6.5,27.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2275 + type: SignalReceiver +- uid: 2268 + type: BlastDoorOpen + components: + - pos: 5.5,27.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2275 + type: SignalReceiver +- uid: 2269 + type: BlastDoorOpen + components: + - pos: 4.5,27.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2275 + type: SignalReceiver +- uid: 2270 + type: BlastDoorOpen + components: + - pos: 4.5,26.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2275 + type: SignalReceiver +- uid: 2271 + type: BlastDoorOpen + components: + - pos: 3.5,26.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2275 + type: SignalReceiver +- uid: 2272 + type: BlastDoorOpen + components: + - pos: 3.5,25.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2275 + type: SignalReceiver +- uid: 2273 + type: BlastDoorOpen + components: + - pos: 3.5,24.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2275 + type: SignalReceiver +- uid: 2274 + type: SignalButton + components: + - rot: -1.5707963267948966 rad + pos: 15.5,21.5 + parent: 1 + type: Transform + - outputs: + Pressed: + - port: Toggle + uid: 2243 + - port: Toggle + uid: 2244 + - port: Toggle + uid: 2245 + - port: Toggle + uid: 2246 + - port: Toggle + uid: 2247 + - port: Toggle + uid: 2248 + - port: Toggle + uid: 2292 + - port: Toggle + uid: 2291 + - port: Toggle + uid: 2290 + type: SignalTransmitter +- uid: 2275 + type: SignalButton + components: + - rot: -1.5707963267948966 rad + pos: 13.5,23.5 + parent: 1 + type: Transform + - outputs: + Pressed: + - port: Toggle + uid: 2273 + - port: Toggle + uid: 2272 + - port: Toggle + uid: 2271 + - port: Toggle + uid: 2270 + - port: Toggle + uid: 2269 + - port: Toggle + uid: 2268 + - port: Toggle + uid: 2267 + - port: Toggle + uid: 2266 + - port: Toggle + uid: 2265 + - port: Toggle + uid: 2264 + - port: Toggle + uid: 2263 + - port: Toggle + uid: 2262 + - port: Toggle + uid: 2261 + - port: Toggle + uid: 2260 + - port: Toggle + uid: 2259 + - port: Toggle + uid: 2258 + - port: Toggle + uid: 2257 + - port: Toggle + uid: 2256 + - port: Toggle + uid: 2255 + - port: Toggle + uid: 2254 + - port: Toggle + uid: 2253 + - port: Toggle + uid: 2252 + - port: Toggle + uid: 2251 + - port: Toggle + uid: 2250 + - port: Toggle + uid: 2249 + type: SignalTransmitter +- uid: 2276 + type: SignalButton + components: + - rot: -1.5707963267948966 rad + pos: 7.5,10.5 + parent: 1 + type: Transform + - outputs: + Pressed: + - port: Toggle + uid: 2231 + - port: Toggle + uid: 2232 + - port: Toggle + uid: 2233 + - port: Toggle + uid: 2234 + - port: Toggle + uid: 2235 + - port: Toggle + uid: 2236 + - port: Toggle + uid: 2237 + - port: Toggle + uid: 2238 + - port: Toggle + uid: 2239 + - port: Toggle + uid: 2240 + - port: Toggle + uid: 2241 + - port: Toggle + uid: 2242 + - port: Toggle + uid: 2451 + - port: Toggle + uid: 2452 + type: SignalTransmitter +- uid: 2277 + type: SignalButton + components: + - rot: 1.5707963267948966 rad + pos: 15.5,10.5 + parent: 1 + type: Transform + - outputs: + Pressed: + - port: Toggle + uid: 2242 + - port: Toggle + uid: 2241 + - port: Toggle + uid: 2240 + - port: Toggle + uid: 2239 + - port: Toggle + uid: 2238 + - port: Toggle + uid: 2237 + - port: Toggle + uid: 2236 + - port: Toggle + uid: 2235 + - port: Toggle + uid: 2234 + - port: Toggle + uid: 2233 + - port: Toggle + uid: 2232 + - port: Toggle + uid: 2231 + - port: Toggle + uid: 2451 + - port: Toggle + uid: 2452 + type: SignalTransmitter +- uid: 2278 + type: ShuttersNormalOpen + components: + - pos: 9.5,4.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2289 + type: SignalReceiver +- uid: 2279 + type: ShuttersNormalOpen + components: + - pos: 10.5,4.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2289 + type: SignalReceiver +- uid: 2280 + type: ShuttersNormalOpen + components: + - pos: 11.5,4.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2289 + type: SignalReceiver +- uid: 2281 + type: ShuttersNormalOpen + components: + - pos: 12.5,4.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2289 + type: SignalReceiver +- uid: 2282 + type: ShuttersNormalOpen + components: + - pos: 13.5,4.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2289 + type: SignalReceiver +- uid: 2283 + type: BlastDoorOpen + components: + - pos: 12.5,-6.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2288 + type: SignalReceiver +- uid: 2284 + type: BlastDoorOpen + components: + - pos: 12.5,-4.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2288 + type: SignalReceiver +- uid: 2285 + type: BlastDoorOpen + components: + - pos: 15.5,-3.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2288 + type: SignalReceiver +- uid: 2286 + type: BlastDoorOpen + components: + - pos: 16.5,-3.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2288 + type: SignalReceiver +- uid: 2287 + type: BlastDoorOpen + components: + - pos: 17.5,-3.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2288 + type: SignalReceiver +- uid: 2288 + type: SignalButton + components: + - pos: 15.5,-8.5 + parent: 1 + type: Transform + - outputs: + Pressed: + - port: Toggle + uid: 2283 + - port: Toggle + uid: 2284 + - port: Toggle + uid: 2286 + - port: Toggle + uid: 2285 + - port: Toggle + uid: 2287 + type: SignalTransmitter +- uid: 2289 + type: SignalButton + components: + - pos: 10.5,7.5 + parent: 1 + type: Transform + - outputs: + Pressed: + - port: Toggle + uid: 2278 + - port: Toggle + uid: 2279 + - port: Toggle + uid: 2280 + - port: Toggle + uid: 2281 + - port: Toggle + uid: 2282 + type: SignalTransmitter +- uid: 2290 + type: BlastDoorOpen + components: + - pos: 10.5,22.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2274 + type: SignalReceiver +- uid: 2291 + type: BlastDoorOpen + components: + - pos: 11.5,22.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2274 + type: SignalReceiver +- uid: 2292 + type: BlastDoorOpen + components: + - pos: 12.5,22.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2274 + type: SignalReceiver +- uid: 2293 + type: GasVentPump + components: + - rot: 1.5707963267948966 rad + pos: 16.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- uid: 2294 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 7.5,23.5 + parent: 1 + type: Transform +- uid: 2295 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 15.5,23.5 + parent: 1 + type: Transform +- uid: 2296 + type: ChairPilotSeat + components: + - rot: 3.141592653589793 rad + pos: 16.5,23.5 + parent: 1 + type: Transform +- uid: 2297 + type: PenCap + components: + - pos: 13.304729,23.47829 + parent: 1 + type: Transform +- uid: 2298 + type: WeaponCapacitorRecharger + components: + - pos: 16.5,26.5 + parent: 1 + type: Transform +- uid: 2299 + type: PowerCellRecharger + components: + - pos: 6.5,26.5 + parent: 1 + type: Transform +- uid: 2300 + type: PaperOffice + components: + - pos: 4.3922954,25.587206 + parent: 1 + type: Transform +- uid: 2301 + type: PaperOffice + components: + - pos: 4.4391704,25.587206 + parent: 1 + type: Transform +- uid: 2302 + type: PaperOffice + components: + - pos: 4.5016704,25.587206 + parent: 1 + type: Transform +- uid: 2303 + type: PaperOffice + components: + - pos: 4.5954204,25.587206 + parent: 1 + type: Transform +- uid: 2304 + type: PaperOffice + components: + - pos: 9.607534,27.587519 + parent: 1 + type: Transform +- uid: 2305 + type: PaperOffice + components: + - pos: 9.576284,27.587519 + parent: 1 + type: Transform +- uid: 2306 + type: PaperOffice + components: + - pos: 9.545034,27.587519 + parent: 1 + type: Transform +- uid: 2307 + type: PaperOffice + components: + - pos: 9.498159,27.587519 + parent: 1 + type: Transform +- uid: 2308 + type: PaperOffice + components: + - pos: 13.447928,27.603144 + parent: 1 + type: Transform +- uid: 2309 + type: PaperOffice + components: + - pos: 13.526053,27.603144 + parent: 1 + type: Transform +- uid: 2310 + type: PaperOffice + components: + - pos: 13.541678,27.603144 + parent: 1 + type: Transform +- uid: 2311 + type: PaperOffice + components: + - pos: 13.604178,27.603144 + parent: 1 + type: Transform +- uid: 2312 + type: PaperOffice + components: + - pos: 18.653933,25.603144 + parent: 1 + type: Transform +- uid: 2313 + type: PaperOffice + components: + - pos: 18.607058,25.603144 + parent: 1 + type: Transform +- uid: 2314 + type: PaperOffice + components: + - pos: 18.560183,25.603144 + parent: 1 + type: Transform +- uid: 2315 + type: PaperOffice + components: + - pos: 18.544558,25.603144 + parent: 1 + type: Transform +- uid: 2316 + type: PaperOffice + components: + - pos: 18.450808,25.603144 + parent: 1 + type: Transform +- uid: 2317 + type: BoxFolderBlue + components: + - pos: 18.39619,25.525019 + parent: 1 + type: Transform +- uid: 2318 + type: BoxFolderWhite + components: + - pos: 13.515551,27.556269 + parent: 1 + type: Transform +- uid: 2319 + type: BoxFolderRed + components: + - pos: 9.401241,27.525019 + parent: 1 + type: Transform +- uid: 2320 + type: BoxFolderYellow + components: + - pos: 4.495926,25.509394 + parent: 1 + type: Transform +- uid: 2321 + type: CableHV + components: + - pos: 11.5,-20.5 + parent: 1 + type: Transform +- uid: 2322 + type: Pen + components: + - pos: 4.714676,25.478144 + parent: 1 + type: Transform +- uid: 2323 + type: Pen + components: + - pos: 9.570522,27.540644 + parent: 1 + type: Transform +- uid: 2324 + type: Pen + components: + - pos: 13.593051,27.493769 + parent: 1 + type: Transform +- uid: 2325 + type: Pen + components: + - pos: 18.582846,25.462519 + parent: 1 + type: Transform +- uid: 2326 + type: GeneratorUranium + components: + - pos: 11.5,-20.5 + parent: 1 + type: Transform +- uid: 2327 + type: GeneratorUranium + components: + - pos: 7.5,-20.5 + parent: 1 + type: Transform +- uid: 2328 + type: Poweredlight + components: + - rot: 3.141592653589793 rad + pos: 6.5,23.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2329 + type: Poweredlight + components: + - rot: 3.141592653589793 rad + pos: 9.5,23.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2330 + type: Poweredlight + components: + - rot: 3.141592653589793 rad + pos: 13.5,23.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2331 + type: Poweredlight + components: + - rot: 3.141592653589793 rad + pos: 16.5,23.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2332 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 7.5,20.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2333 + type: Poweredlight + components: + - rot: -1.5707963267948966 rad + pos: 15.5,20.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2334 + type: Poweredlight + components: + - rot: -1.5707963267948966 rad + pos: 5.5,20.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2335 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 17.5,20.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2336 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 2.5,17.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2337 + type: Poweredlight + components: + - rot: 3.141592653589793 rad + pos: 11.5,16.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2338 + type: Poweredlight + components: + - rot: -1.5707963267948966 rad + pos: 20.5,17.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2339 + type: Poweredlight + components: + - rot: -1.5707963267948966 rad + pos: 21.5,12.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2340 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 1.5,12.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2341 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 5.5,13.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2342 + type: Poweredlight + components: + - rot: -1.5707963267948966 rad + pos: 17.5,13.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2343 + type: Poweredlight + components: + - rot: 3.141592653589793 rad + pos: 11.5,11.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2344 + type: Poweredlight + components: + - pos: 11.5,14.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2345 + type: Poweredlight + components: + - rot: 3.141592653589793 rad + pos: 9.5,8.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2346 + type: Poweredlight + components: + - rot: 3.141592653589793 rad + pos: 13.5,8.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2347 + type: Poweredlight + components: + - rot: -1.5707963267948966 rad + pos: 7.5,5.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2348 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 15.5,5.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2349 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 1.5,-1.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2350 + type: Poweredlight + components: + - pos: 11.5,9.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2351 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 1.5,6.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2352 + type: Poweredlight + components: + - rot: -1.5707963267948966 rad + pos: 21.5,6.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2353 + type: Poweredlight + components: + - rot: 3.141592653589793 rad + pos: 11.5,-2.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2354 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 1.5,2.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2355 + type: Poweredlight + components: + - rot: -1.5707963267948966 rad + pos: 13.5,5.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2356 + type: Poweredlight + components: + - rot: 3.141592653589793 rad + pos: 18.5,-2.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2357 + type: Poweredlight + components: + - rot: 3.141592653589793 rad + pos: 4.5,-2.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2358 + type: Poweredlight + components: + - pos: 4.5,3.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2359 + type: Poweredlight + components: + - pos: 18.5,3.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2360 + type: Poweredlight + components: + - rot: -1.5707963267948966 rad + pos: 21.5,2.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2361 + type: Poweredlight + components: + - rot: -1.5707963267948966 rad + pos: 21.5,-1.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2362 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 19.5,-6.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2363 + type: Poweredlight + components: + - rot: -1.5707963267948966 rad + pos: 21.5,-11.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2364 + type: Poweredlight + components: + - rot: -1.5707963267948966 rad + pos: 20.5,-16.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2365 + type: Poweredlight + components: + - pos: 14.5,-16.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2366 + type: Poweredlight + components: + - pos: 8.5,-16.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2367 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 2.5,-16.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2368 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 1.5,-11.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2369 + type: Poweredlight + components: + - rot: -1.5707963267948966 rad + pos: 3.5,-6.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2370 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 3.5,-19.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2371 + type: Poweredlight + components: + - pos: 9.5,-19.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2372 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 5.5,-25.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2373 + type: Poweredlight + components: + - rot: 3.141592653589793 rad + pos: 9.5,-24.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2374 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 8.5,-26.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2375 + type: Poweredlight + components: + - rot: -1.5707963267948966 rad + pos: 14.5,-26.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2376 + type: Poweredlight + components: + - rot: -1.5707963267948966 rad + pos: 17.5,-25.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2377 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 13.5,-23.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2378 + type: Poweredlight + components: + - pos: 14.5,-19.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2379 + type: Poweredlight + components: + - rot: -1.5707963267948966 rad + pos: 19.5,-20.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2380 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 11.5,-13.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2381 + type: Poweredlight + components: + - pos: 16.5,-12.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2382 + type: Poweredlight + components: + - rot: -1.5707963267948966 rad + pos: 9.5,-13.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2383 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 5.5,-12.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2384 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 5.5,-5.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2385 + type: Poweredlight + components: + - rot: 3.141592653589793 rad + pos: 8.5,-10.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2386 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 9.5,-5.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2387 + type: Poweredlight + components: + - rot: 3.141592653589793 rad + pos: 15.5,-10.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2388 + type: Poweredlight + components: + - rot: -1.5707963267948966 rad + pos: 17.5,-5.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 2389 + type: CableHV + components: + - pos: 17.5,-18.5 + parent: 1 + type: Transform +- uid: 2390 + type: CableHV + components: + - pos: 17.5,-19.5 + parent: 1 + type: Transform +- uid: 2391 + type: CableHV + components: + - pos: 17.5,-20.5 + parent: 1 + type: Transform +- uid: 2392 + type: CableHV + components: + - pos: 16.5,-20.5 + parent: 1 + type: Transform +- uid: 2393 + type: PaperCaptainsThoughts + components: + - pos: 13.539104,23.47829 + parent: 1 + type: Transform +- uid: 2394 + type: PaperCaptainsThoughts + components: + - pos: 13.460979,23.556416 + parent: 1 + type: Transform +- uid: 2395 + type: PaperCaptainsThoughts + components: + - pos: 13.351604,23.63454 + parent: 1 + type: Transform +- uid: 2396 + type: WeaponCapacitorRecharger + components: + - pos: 13.5,24.5 + parent: 1 + type: Transform +- uid: 2397 + type: PaperCargoInvoice + components: + - pos: 17.535168,-25.481997 + parent: 1 + type: Transform +- uid: 2398 + type: PaperCargoInvoice + components: + - pos: 17.488293,-25.481997 + parent: 1 + type: Transform +- uid: 2399 + type: Pen + components: + - pos: 17.361397,-25.437323 + parent: 1 + type: Transform +- uid: 2400 + type: BoxFolderYellow + components: + - pos: 18.627022,-23.874823 + parent: 1 + type: Transform +- uid: 2401 + type: BoxFolderYellow + components: + - pos: 18.408272,-23.890448 + parent: 1 + type: Transform +- uid: 2402 + type: PaperOffice + components: + - pos: 18.689522,-23.374823 + parent: 1 + type: Transform +- uid: 2403 + type: PaperOffice + components: + - pos: 18.611397,-23.374823 + parent: 1 + type: Transform +- uid: 2404 + type: PaperOffice + components: + - pos: 18.580147,-23.374823 + parent: 1 + type: Transform +- uid: 2405 + type: PaperOffice + components: + - pos: 18.470772,-23.390448 + parent: 1 + type: Transform +- uid: 2406 + type: PaperOffice + components: + - pos: 18.455147,-23.390448 + parent: 1 + type: Transform +- uid: 2407 + type: Pen + components: + - pos: 18.565704,-23.409885 + parent: 1 + type: Transform +- uid: 2408 + type: Pen + components: + - pos: 18.315704,-23.597385 + parent: 1 + type: Transform +- uid: 2409 + type: SignCloning + components: + - pos: 8.5,-7.5 + parent: 1 + type: Transform +- uid: 2410 + type: SignChem + components: + - pos: 12.5,-7.5 + parent: 1 + type: Transform +- uid: 2411 + type: SignVirology + components: + - pos: 7.5,-11.5 + parent: 1 + type: Transform +- uid: 2412 + type: SignMedical + components: + - pos: 12.5,-3.5 + parent: 1 + type: Transform +- uid: 2413 + type: SignScience + components: + - pos: 11.5,-11.5 + parent: 1 + type: Transform +- uid: 2414 + type: SignScience + components: + - pos: 14.5,-15.5 + parent: 1 + type: Transform +- uid: 2415 + type: SubstationWallBasic + components: + - pos: 8.5,4.5 + parent: 1 + type: Transform +- uid: 2416 + type: SignBar + components: + - pos: 14.5,4.5 + parent: 1 + type: Transform +- uid: 2417 + type: SignBridge + components: + - pos: 3.5,19.5 + parent: 1 + type: Transform +- uid: 2418 + type: SignBridge + components: + - pos: 19.5,19.5 + parent: 1 + type: Transform +- uid: 2419 + type: SignEngineering + components: + - pos: 6.5,-18.5 + parent: 1 + type: Transform +- uid: 2420 + type: SignCargo + components: + - pos: 16.5,-18.5 + parent: 1 + type: Transform +- uid: 2421 + type: SignChem + components: + - pos: 9.5,-7.5 + parent: 1 + type: Transform +- uid: 2422 + type: SignMorgue + components: + - pos: 8.5,-11.5 + parent: 1 + type: Transform +- uid: 2423 + type: Grille + components: + - pos: 4.5,9.5 + parent: 1 + type: Transform +- uid: 2424 + type: Grille + components: + - pos: 18.5,9.5 + parent: 1 + type: Transform +- uid: 2425 + type: CableMV + components: + - pos: 18.5,9.5 + parent: 1 + type: Transform +- uid: 2426 + type: CableMV + components: + - pos: 4.5,9.5 + parent: 1 + type: Transform +- uid: 2427 + type: CableHV + components: + - pos: 8.5,4.5 + parent: 1 + type: Transform +- uid: 2428 + type: CableMV + components: + - pos: 7.5,3.5 + parent: 1 + type: Transform +- uid: 2429 + type: CableMV + components: + - pos: 8.5,3.5 + parent: 1 + type: Transform +- uid: 2430 + type: CableMV + components: + - pos: 8.5,4.5 + parent: 1 + type: Transform +- uid: 2431 + type: CableMV + components: + - pos: 9.5,3.5 + parent: 1 + type: Transform +- uid: 2432 + type: CableMV + components: + - pos: 10.5,3.5 + parent: 1 + type: Transform +- uid: 2433 + type: CableMV + components: + - pos: 11.5,3.5 + parent: 1 + type: Transform +- uid: 2434 + type: CableMV + components: + - pos: 12.5,3.5 + parent: 1 + type: Transform +- uid: 2435 + type: CableMV + components: + - pos: 13.5,3.5 + parent: 1 + type: Transform +- uid: 2436 + type: CableMV + components: + - pos: 14.5,3.5 + parent: 1 + type: Transform +- uid: 2437 + type: CableMV + components: + - pos: 15.5,3.5 + parent: 1 + type: Transform +- uid: 2438 + type: CableMV + components: + - pos: 16.5,3.5 + parent: 1 + type: Transform +- uid: 2439 + type: CableMV + components: + - pos: 17.5,3.5 + parent: 1 + type: Transform +- uid: 2440 + type: CableMV + components: + - pos: 18.5,3.5 + parent: 1 + type: Transform +- uid: 2441 + type: CableMV + components: + - pos: 19.5,3.5 + parent: 1 + type: Transform +- uid: 2442 + type: CableMV + components: + - pos: 20.5,3.5 + parent: 1 + type: Transform +- uid: 2443 + type: AtmosDeviceFanTiny + components: + - pos: 0.5,-4.5 + parent: 1 + type: Transform +- uid: 2444 + type: AtmosDeviceFanTiny + components: + - pos: 0.5,-2.5 + parent: 1 + type: Transform +- uid: 2445 + type: AtmosDeviceFanTiny + components: + - pos: 0.5,3.5 + parent: 1 + type: Transform +- uid: 2446 + type: AtmosDeviceFanTiny + components: + - pos: 0.5,5.5 + parent: 1 + type: Transform +- uid: 2447 + type: AtmosDeviceFanTiny + components: + - pos: 22.5,5.5 + parent: 1 + type: Transform +- uid: 2448 + type: AtmosDeviceFanTiny + components: + - pos: 22.5,3.5 + parent: 1 + type: Transform +- uid: 2449 + type: AtmosDeviceFanTiny + components: + - pos: 22.5,-2.5 + parent: 1 + type: Transform +- uid: 2450 + type: AtmosDeviceFanTiny + components: + - pos: 22.5,-4.5 + parent: 1 + type: Transform +- uid: 2451 + type: BlastDoorOpen + components: + - pos: 4.5,9.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2276 + - port: Pressed + uid: 2277 + type: SignalReceiver +- uid: 2452 + type: BlastDoorOpen + components: + - pos: 18.5,9.5 + parent: 1 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 2277 + - port: Pressed + uid: 2276 + type: SignalReceiver +- uid: 2453 + type: ExtinguisherCabinetFilled + components: + - pos: 6.5,-20.5 + parent: 1 + type: Transform +- uid: 2454 + type: ExtinguisherCabinetFilled + components: + - pos: 9.5,-25.5 + parent: 1 + type: Transform +- uid: 2455 + type: ExtinguisherCabinetFilled + components: + - pos: 12.5,-23.5 + parent: 1 + type: Transform +- uid: 2456 + type: ExtinguisherCabinetFilled + components: + - pos: 16.5,-19.5 + parent: 1 + type: Transform +- uid: 2457 + type: ExtinguisherCabinetFilled + components: + - pos: 14.5,-25.5 + parent: 1 + type: Transform +- uid: 2458 + type: ExtinguisherCabinetFilled + components: + - pos: 10.5,-14.5 + parent: 1 + type: Transform +- uid: 2459 + type: ExtinguisherCabinetFilled + components: + - pos: 14.5,-18.5 + parent: 1 + type: Transform +- uid: 2460 + type: ExtinguisherCabinetFilled + components: + - pos: 1.5,-12.5 + parent: 1 + type: Transform +- uid: 2461 + type: ExtinguisherCabinetFilled + components: + - pos: 0.5,-6.5 + parent: 1 + type: Transform +- uid: 2462 + type: ExtinguisherCabinetFilled + components: + - pos: 0.5,7.5 + parent: 1 + type: Transform +- uid: 2463 + type: ExtinguisherCabinetFilled + components: + - pos: 1.5,13.5 + parent: 1 + type: Transform +- uid: 2464 + type: ExtinguisherCabinetFilled + components: + - pos: 2.5,18.5 + parent: 1 + type: Transform +- uid: 2465 + type: ExtinguisherCabinetFilled + components: + - pos: 11.5,18.5 + parent: 1 + type: Transform +- uid: 2466 + type: ExtinguisherCabinetFilled + components: + - pos: 20.5,18.5 + parent: 1 + type: Transform +- uid: 2467 + type: ExtinguisherCabinetFilled + components: + - pos: 21.5,13.5 + parent: 1 + type: Transform +- uid: 2468 + type: ExtinguisherCabinetFilled + components: + - pos: 22.5,7.5 + parent: 1 + type: Transform +- uid: 2469 + type: ExtinguisherCabinetFilled + components: + - pos: 22.5,-6.5 + parent: 1 + type: Transform +- uid: 2470 + type: ExtinguisherCabinetFilled + components: + - pos: 21.5,-12.5 + parent: 1 + type: Transform +- uid: 2471 + type: ExtinguisherCabinetFilled + components: + - pos: 20.5,-17.5 + parent: 1 + type: Transform +- uid: 2472 + type: ExtinguisherCabinetFilled + components: + - pos: 8.5,-18.5 + parent: 1 + type: Transform +- uid: 2473 + type: ExtinguisherCabinetFilled + components: + - pos: 4.5,-5.5 + parent: 1 + type: Transform +- uid: 2474 + type: ExtinguisherCabinetFilled + components: + - pos: 7.5,-12.5 + parent: 1 + type: Transform +- uid: 2475 + type: ExtinguisherCabinetFilled + components: + - pos: 16.5,-11.5 + parent: 1 + type: Transform +- uid: 2476 + type: ExtinguisherCabinetFilled + components: + - pos: 10.5,-11.5 + parent: 1 + type: Transform +- uid: 2477 + type: ExtinguisherCabinetFilled + components: + - pos: 18.5,-5.5 + parent: 1 + type: Transform +- uid: 2478 + type: ExtinguisherCabinetFilled + components: + - pos: 18.5,-11.5 + parent: 1 + type: Transform +- uid: 2479 + type: ExtinguisherCabinetFilled + components: + - pos: 12.5,-8.5 + parent: 1 + type: Transform +- uid: 2480 + type: ExtinguisherCabinetFilled + components: + - pos: 7.5,4.5 + parent: 1 + type: Transform +- uid: 2481 + type: ExtinguisherCabinetFilled + components: + - pos: 15.5,4.5 + parent: 1 + type: Transform +- uid: 2482 + type: ExtinguisherCabinetFilled + components: + - pos: 8.5,5.5 + parent: 1 + type: Transform +- uid: 2483 + type: ExtinguisherCabinetFilled + components: + - pos: 4.5,13.5 + parent: 1 + type: Transform +- uid: 2484 + type: ExtinguisherCabinetFilled + components: + - pos: 18.5,13.5 + parent: 1 + type: Transform +- uid: 2485 + type: ExtinguisherCabinetFilled + components: + - pos: 10.5,10.5 + parent: 1 + type: Transform +- uid: 2486 + type: ExtinguisherCabinetFilled + components: + - pos: 12.5,10.5 + parent: 1 + type: Transform +- uid: 2487 + type: ExtinguisherCabinetFilled + components: + - pos: 2.5,21.5 + parent: 1 + type: Transform +- uid: 2488 + type: ExtinguisherCabinetFilled + components: + - pos: 20.5,21.5 + parent: 1 + type: Transform +- uid: 2489 + type: ExtinguisherCabinetFilled + components: + - pos: 6.5,22.5 + parent: 1 + type: Transform +- uid: 2490 + type: ExtinguisherCabinetFilled + components: + - pos: 16.5,22.5 + parent: 1 + type: Transform +- uid: 2491 + type: EmergencyLight + components: + - rot: -1.5707963267948966 rad + pos: 3.5,-14.5 + parent: 1 + type: Transform + - type: ActiveEmergencyLight +- uid: 2492 + type: EmergencyLight + components: + - pos: 7.5,3.5 + parent: 1 + type: Transform + - type: ActiveEmergencyLight +- uid: 2493 + type: EmergencyLight + components: + - pos: 11.5,-16.5 + parent: 1 + type: Transform + - type: ActiveEmergencyLight +- uid: 2494 + type: EmergencyLight + components: + - rot: 1.5707963267948966 rad + pos: 19.5,-14.5 + parent: 1 + type: Transform + - type: ActiveEmergencyLight +- uid: 2495 + type: EmergencyLight + components: + - rot: 1.5707963267948966 rad + pos: 19.5,-7.5 + parent: 1 + type: Transform + - type: ActiveEmergencyLight +- uid: 2496 + type: EmergencyLight + components: + - pos: 15.5,3.5 + parent: 1 + type: Transform + - type: ActiveEmergencyLight +- uid: 2497 + type: EmergencyLight + components: + - rot: 3.141592653589793 rad + pos: 11.5,-2.5 + parent: 1 + type: Transform + - type: ActiveEmergencyLight +- uid: 2498 + type: EmergencyLight + components: + - rot: -1.5707963267948966 rad + pos: 3.5,8.5 + parent: 1 + type: Transform + - type: ActiveEmergencyLight +- uid: 2499 + type: EmergencyLight + components: + - rot: -1.5707963267948966 rad + pos: 3.5,-6.5 + parent: 1 + type: Transform + - type: ActiveEmergencyLight +- uid: 2500 + type: EmergencyLight + components: + - pos: 11.5,17.5 + parent: 1 + type: Transform + - type: ActiveEmergencyLight +- uid: 2501 + type: EmergencyLight + components: + - rot: 3.141592653589793 rad + pos: 15.5,-24.5 + parent: 1 + type: Transform + - type: ActiveEmergencyLight +- uid: 2502 + type: EmergencyLight + components: + - rot: 1.5707963267948966 rad + pos: 19.5,8.5 + parent: 1 + type: Transform + - type: ActiveEmergencyLight +- uid: 2503 + type: EmergencyLight + components: + - pos: 11.5,14.5 + parent: 1 + type: Transform + - type: ActiveEmergencyLight +- uid: 2504 + type: EmergencyLight + components: + - rot: 3.141592653589793 rad + pos: 11.5,-14.5 + parent: 1 + type: Transform + - type: ActiveEmergencyLight +- uid: 2505 + type: EmergencyLight + components: + - rot: 1.5707963267948966 rad + pos: 5.5,-9.5 + parent: 1 + type: Transform + - type: ActiveEmergencyLight +- uid: 2506 + type: EmergencyLight + components: + - rot: -1.5707963267948966 rad + pos: 17.5,-6.5 + parent: 1 + type: Transform + - type: ActiveEmergencyLight +- uid: 2507 + type: EmergencyLight + components: + - pos: 10.5,6.5 + parent: 1 + type: Transform + - type: ActiveEmergencyLight +- uid: 2508 + type: EmergencyLight + components: + - rot: 3.141592653589793 rad + pos: 11.5,19.5 + parent: 1 + type: Transform + - type: ActiveEmergencyLight +- uid: 2509 + type: EmergencyLight + components: + - rot: 1.5707963267948966 rad + pos: 4.5,23.5 + parent: 1 + type: Transform + - type: ActiveEmergencyLight +- uid: 2510 + type: EmergencyLight + components: + - rot: -1.5707963267948966 rad + pos: 18.5,23.5 + parent: 1 + type: Transform + - type: ActiveEmergencyLight +... diff --git a/Resources/Prototypes/Maps/barratry.yml b/Resources/Prototypes/Maps/barratry.yml index 8a21566966..2d9d3e2b57 100644 --- a/Resources/Prototypes/Maps/barratry.yml +++ b/Resources/Prototypes/Maps/barratry.yml @@ -7,6 +7,7 @@ stations: Barratry: mapNameTemplate: '{0} Barratry {1}' + emergencyShuttlePath: /Maps/Shuttles/emergency_raven.yml nameGenerator: !type:NanotrasenNameGenerator prefixCreator: '14' From 809959e21d0a6439077220f6bea7753e74e2c2e8 Mon Sep 17 00:00:00 2001 From: Scribbles0 <91828755+Scribbles0@users.noreply.github.com> Date: Mon, 27 Feb 2023 16:48:15 -0800 Subject: [PATCH 25/53] Update Raven dock (#14311) * update raven dock * name --- Resources/Maps/Shuttles/emergency_raven.yml | 208 ++++++++++---------- 1 file changed, 104 insertions(+), 104 deletions(-) diff --git a/Resources/Maps/Shuttles/emergency_raven.yml b/Resources/Maps/Shuttles/emergency_raven.yml index 35568bb6db..c0b70f044f 100644 --- a/Resources/Maps/Shuttles/emergency_raven.yml +++ b/Resources/Maps/Shuttles/emergency_raven.yml @@ -100,13 +100,38 @@ tilemap: 93: Plating entities: - uid: 0 - type: EmergencyLight + type: AirlockGlassShuttle components: - - rot: 3.141592653589793 rad - pos: 7.5,-24.5 + - rot: 1.5707963267948966 rad + pos: 22.5,-2.5 parent: 1 type: Transform - - type: ActiveEmergencyLight + - fixtures: + - shape: !type:PolygonShape + vertices: + - 0.49,-0.49 + - 0.49,0.49 + - -0.49,0.49 + - -0.49,-0.49 + mask: + - Impassable + - MidImpassable + - HighImpassable + - LowImpassable + - InteractImpassable + layer: + - MidImpassable + - HighImpassable + - BulletImpassable + - InteractImpassable + - Opaque + density: 100 + - shape: !type:PhysShapeCircle + radius: 0.2 + position: 0,-0.5 + hard: False + id: docking + type: Fixtures - uid: 1 components: - name: NT Evac Raven @@ -3534,8 +3559,8 @@ entities: - volume: 2500 temperature: 293.15 moles: - - 18.935778 - - 71.2346 + - 18.405577 + - 69.24003 - 0 - 0 - 0 @@ -6207,10 +6232,10 @@ entities: parent: 1 type: Transform - uid: 439 - type: AirlockExternalGlassShuttleEmergencyLocked + type: AirlockGlassShuttle components: - rot: 1.5707963267948966 rad - pos: 22.5,-2.5 + pos: 22.5,-4.5 parent: 1 type: Transform - fixtures: @@ -6426,40 +6451,7 @@ entities: parent: 1 type: Transform - uid: 471 - type: AirlockExternalGlassShuttleEmergencyLocked - components: - - rot: 1.5707963267948966 rad - pos: 22.5,-4.5 - parent: 1 - type: Transform - - fixtures: - - shape: !type:PolygonShape - vertices: - - 0.49,-0.49 - - 0.49,0.49 - - -0.49,0.49 - - -0.49,-0.49 - mask: - - Impassable - - MidImpassable - - HighImpassable - - LowImpassable - - InteractImpassable - layer: - - MidImpassable - - HighImpassable - - BulletImpassable - - InteractImpassable - - Opaque - density: 100 - - shape: !type:PhysShapeCircle - radius: 0.2 - position: 0,-0.5 - hard: False - id: docking - type: Fixtures -- uid: 472 - type: AirlockExternalGlassShuttleEmergencyLocked + type: AirlockGlassShuttle components: - rot: 1.5707963267948966 rad pos: 22.5,3.5 @@ -6491,8 +6483,8 @@ entities: hard: False id: docking type: Fixtures -- uid: 473 - type: AirlockExternalGlassShuttleEmergencyLocked +- uid: 472 + type: AirlockGlassShuttle components: - rot: 1.5707963267948966 rad pos: 22.5,5.5 @@ -6524,11 +6516,44 @@ entities: hard: False id: docking type: Fixtures -- uid: 474 - type: AirlockExternalGlassShuttleEmergencyLocked +- uid: 473 + type: AirlockGlassShuttle components: - rot: -1.5707963267948966 rad - pos: 0.5,5.5 + pos: 0.5,-4.5 + parent: 1 + type: Transform + - fixtures: + - shape: !type:PolygonShape + vertices: + - 0.49,-0.49 + - 0.49,0.49 + - -0.49,0.49 + - -0.49,-0.49 + mask: + - Impassable + - MidImpassable + - HighImpassable + - LowImpassable + - InteractImpassable + layer: + - MidImpassable + - HighImpassable + - BulletImpassable + - InteractImpassable + - Opaque + density: 100 + - shape: !type:PhysShapeCircle + radius: 0.2 + position: 0,-0.5 + hard: False + id: docking + type: Fixtures +- uid: 474 + type: AirlockGlassShuttle + components: + - rot: -1.5707963267948966 rad + pos: 0.5,-2.5 parent: 1 type: Transform - fixtures: @@ -6558,7 +6583,7 @@ entities: id: docking type: Fixtures - uid: 475 - type: AirlockExternalGlassShuttleEmergencyLocked + type: AirlockGlassShuttle components: - rot: -1.5707963267948966 rad pos: 0.5,3.5 @@ -6591,43 +6616,10 @@ entities: id: docking type: Fixtures - uid: 476 - type: AirlockExternalGlassShuttleEmergencyLocked + type: AirlockGlassShuttle components: - rot: -1.5707963267948966 rad - pos: 0.5,-2.5 - parent: 1 - type: Transform - - fixtures: - - shape: !type:PolygonShape - vertices: - - 0.49,-0.49 - - 0.49,0.49 - - -0.49,0.49 - - -0.49,-0.49 - mask: - - Impassable - - MidImpassable - - HighImpassable - - LowImpassable - - InteractImpassable - layer: - - MidImpassable - - HighImpassable - - BulletImpassable - - InteractImpassable - - Opaque - density: 100 - - shape: !type:PhysShapeCircle - radius: 0.2 - position: 0,-0.5 - hard: False - id: docking - type: Fixtures -- uid: 477 - type: AirlockExternalGlassShuttleEmergencyLocked - components: - - rot: -1.5707963267948966 rad - pos: 0.5,-4.5 + pos: 0.5,5.5 parent: 1 type: Transform - fixtures: @@ -20855,30 +20847,30 @@ entities: - uid: 2491 type: EmergencyLight components: - - rot: -1.5707963267948966 rad - pos: 3.5,-14.5 + - rot: 3.141592653589793 rad + pos: 7.5,-24.5 parent: 1 type: Transform - type: ActiveEmergencyLight - uid: 2492 type: EmergencyLight components: - - pos: 7.5,3.5 + - rot: -1.5707963267948966 rad + pos: 3.5,-14.5 parent: 1 type: Transform - type: ActiveEmergencyLight - uid: 2493 type: EmergencyLight components: - - pos: 11.5,-16.5 + - pos: 7.5,3.5 parent: 1 type: Transform - type: ActiveEmergencyLight - uid: 2494 type: EmergencyLight components: - - rot: 1.5707963267948966 rad - pos: 19.5,-14.5 + - pos: 11.5,-16.5 parent: 1 type: Transform - type: ActiveEmergencyLight @@ -20886,18 +20878,26 @@ entities: type: EmergencyLight components: - rot: 1.5707963267948966 rad - pos: 19.5,-7.5 + pos: 19.5,-14.5 parent: 1 type: Transform - type: ActiveEmergencyLight - uid: 2496 type: EmergencyLight components: - - pos: 15.5,3.5 + - rot: 1.5707963267948966 rad + pos: 19.5,-7.5 parent: 1 type: Transform - type: ActiveEmergencyLight - uid: 2497 + type: EmergencyLight + components: + - pos: 15.5,3.5 + parent: 1 + type: Transform + - type: ActiveEmergencyLight +- uid: 2498 type: EmergencyLight components: - rot: 3.141592653589793 rad @@ -20905,7 +20905,7 @@ entities: parent: 1 type: Transform - type: ActiveEmergencyLight -- uid: 2498 +- uid: 2499 type: EmergencyLight components: - rot: -1.5707963267948966 rad @@ -20913,7 +20913,7 @@ entities: parent: 1 type: Transform - type: ActiveEmergencyLight -- uid: 2499 +- uid: 2500 type: EmergencyLight components: - rot: -1.5707963267948966 rad @@ -20921,14 +20921,14 @@ entities: parent: 1 type: Transform - type: ActiveEmergencyLight -- uid: 2500 +- uid: 2501 type: EmergencyLight components: - pos: 11.5,17.5 parent: 1 type: Transform - type: ActiveEmergencyLight -- uid: 2501 +- uid: 2502 type: EmergencyLight components: - rot: 3.141592653589793 rad @@ -20936,7 +20936,7 @@ entities: parent: 1 type: Transform - type: ActiveEmergencyLight -- uid: 2502 +- uid: 2503 type: EmergencyLight components: - rot: 1.5707963267948966 rad @@ -20944,14 +20944,14 @@ entities: parent: 1 type: Transform - type: ActiveEmergencyLight -- uid: 2503 +- uid: 2504 type: EmergencyLight components: - pos: 11.5,14.5 parent: 1 type: Transform - type: ActiveEmergencyLight -- uid: 2504 +- uid: 2505 type: EmergencyLight components: - rot: 3.141592653589793 rad @@ -20959,7 +20959,7 @@ entities: parent: 1 type: Transform - type: ActiveEmergencyLight -- uid: 2505 +- uid: 2506 type: EmergencyLight components: - rot: 1.5707963267948966 rad @@ -20967,7 +20967,7 @@ entities: parent: 1 type: Transform - type: ActiveEmergencyLight -- uid: 2506 +- uid: 2507 type: EmergencyLight components: - rot: -1.5707963267948966 rad @@ -20975,14 +20975,14 @@ entities: parent: 1 type: Transform - type: ActiveEmergencyLight -- uid: 2507 +- uid: 2508 type: EmergencyLight components: - pos: 10.5,6.5 parent: 1 type: Transform - type: ActiveEmergencyLight -- uid: 2508 +- uid: 2509 type: EmergencyLight components: - rot: 3.141592653589793 rad @@ -20990,7 +20990,7 @@ entities: parent: 1 type: Transform - type: ActiveEmergencyLight -- uid: 2509 +- uid: 2510 type: EmergencyLight components: - rot: 1.5707963267948966 rad @@ -20998,7 +20998,7 @@ entities: parent: 1 type: Transform - type: ActiveEmergencyLight -- uid: 2510 +- uid: 2511 type: EmergencyLight components: - rot: -1.5707963267948966 rad From e402d28d3f2e6316c9badacadaa21ba31b726b3f Mon Sep 17 00:00:00 2001 From: Emisse <99158783+Emisse@users.noreply.github.com> Date: Mon, 27 Feb 2023 19:32:58 -0700 Subject: [PATCH 26/53] siofjaosd (#14313) --- Resources/Maps/Shuttles/emergency_lox.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Maps/Shuttles/emergency_lox.yml b/Resources/Maps/Shuttles/emergency_lox.yml index 1498e66f92..5eac4c57d1 100644 --- a/Resources/Maps/Shuttles/emergency_lox.yml +++ b/Resources/Maps/Shuttles/emergency_lox.yml @@ -1312,8 +1312,8 @@ entities: - volume: 2500 temperature: 293.15 moles: - - 21.213781 - - 79.80423 + - 20.619795 + - 77.56971 - 0 - 0 - 0 @@ -1392,7 +1392,7 @@ entities: parent: 0 type: Transform - uid: 10 - type: WindoorSecurityLocked + type: WindowReinforcedDirectional components: - rot: -1.5707963267948966 rad pos: -2.5,-3.5 @@ -1707,10 +1707,9 @@ entities: parent: 0 type: Transform - uid: 58 - type: WindowReinforcedDirectional + type: ChairPilotSeat components: - - rot: -1.5707963267948966 rad - pos: -2.5,-4.5 + - pos: -3.5,-3.5 parent: 0 type: Transform - uid: 59 @@ -3419,10 +3418,10 @@ entities: parent: 0 type: Transform - uid: 287 - type: FirelockEdge + type: WindoorSecurityLocked components: - rot: -1.5707963267948966 rad - pos: -2.5,-3.5 + pos: -2.5,-4.5 parent: 0 type: Transform - uid: 288 From 25f51379bf0783d48675aa372c115c16f4ddc521 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Tue, 28 Feb 2023 16:32:05 +1100 Subject: [PATCH 27/53] Fix ContentTileDefinition prototype reloads (#14080) --- Content.Shared/Entry/EntryPoint.cs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Content.Shared/Entry/EntryPoint.cs b/Content.Shared/Entry/EntryPoint.cs index b561e732cd..ecf76cc6d6 100644 --- a/Content.Shared/Entry/EntryPoint.cs +++ b/Content.Shared/Entry/EntryPoint.cs @@ -23,6 +23,11 @@ namespace Content.Shared.Entry SharedContentIoC.Register(); } + public override void Shutdown() + { + _prototypeManager.PrototypesReloaded -= PrototypeReload; + } + public override void Init() { } @@ -48,6 +53,8 @@ namespace Content.Shared.Entry private void InitTileDefinitions() { + _prototypeManager.PrototypesReloaded += PrototypeReload; + // Register space first because I'm a hard coding hack. var spaceDef = _prototypeManager.Index(ContentTileDefinition.SpaceID); @@ -75,5 +82,14 @@ namespace Content.Shared.Entry _tileDefinitionManager.Initialize(); } + + private void PrototypeReload(PrototypesReloadedEventArgs obj) + { + // Need to re-allocate tiledefs due to how prototype reloads work + foreach (var def in _prototypeManager.EnumeratePrototypes()) + { + def.AssignTileId(_tileDefinitionManager[def.ID].TileId); + } + } } } From b5b25886eb467fbef8f0f3849311af4cae32be18 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 28 Feb 2023 00:33:09 -0500 Subject: [PATCH 28/53] Automatic changelog update --- Resources/Changelog/Changelog.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index e3be6582ab..636a6a7cd6 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,10 +1,4 @@ Entries: -- author: metalgearsloth - changes: - - {message: Fixed the damage/death overlay being off-centre while using the "separated" - HUD layout., type: Fix} - id: 2572 - time: '2022-11-04T01:44:51.0000000+00:00' - author: Rane changes: - {message: Objectives involving other traitors should be more reliable at providing @@ -2920,3 +2914,8 @@ Entries: type: Tweak} id: 3071 time: '2023-02-27T21:19:53.0000000+00:00' +- author: metalgearsloth + changes: + - {message: Fix tile definition reloads., type: Fix} + id: 3072 + time: '2023-02-28T05:32:05.0000000+00:00' From 625d6a136a6f1d32aad02423bd677311be3bdfdc Mon Sep 17 00:00:00 2001 From: pofitlo <107665898+pofitlo@users.noreply.github.com> Date: Tue, 28 Feb 2023 16:57:08 +0400 Subject: [PATCH 29/53] add type "Puller" for few pets in .yaml file (#14022) --- .../Prototypes/Entities/Mobs/NPCs/animals.yml | 21 ++++++++++++++++--- .../Prototypes/Entities/Mobs/NPCs/pets.yml | 3 +-- .../Entities/Mobs/NPCs/regalrat.yml | 4 ---- .../Entities/Mobs/NPCs/simplemob.yml | 2 ++ 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index e90646741f..6c0f63e6a3 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -63,6 +63,8 @@ types: Piercing: 5 - type: NoSlip + - type: Puller + needsHands: true - type: entity name: bee @@ -121,6 +123,8 @@ - type: NoSlip - type: MobPrice price: 50 + - type: Puller + needsHands: true - type: entity name: bee @@ -203,6 +207,8 @@ accent: chicken - type: SentienceTarget flavorKind: station-event-random-sentience-flavor-organic + - type: Puller + needsHands: true - type: entity name: mallard duck #Quack @@ -350,6 +356,8 @@ - type: NoSlip - type: MobPrice price: 50 + - type: Puller + needsHands: true - type: entity name: cow @@ -862,6 +870,8 @@ - type: CanEscapeInventory - type: MobPrice price: 50 + - type: Puller + needsHands: true - type: entity parent: MobMouse @@ -965,6 +975,9 @@ - type: Damageable damageContainer: Biological damageModifierSet: Scale + - type: Puller + needsHands: true + - type: entity name: slug @@ -1059,6 +1072,8 @@ path: /Audio/Animals/frog_ribbit.ogg - type: Bloodstream bloodMaxVolume: 50 + - type: Puller + needsHands: true # Would be cool to have some functionality for the parrot to be able to sit on stuff - type: entity @@ -1272,6 +1287,8 @@ - type: Damageable damageContainer: Biological damageModifierSet: Scale + - type: Puller + needsHands: true # Code unique spider prototypes or combine them all into one spider and get a # random sprite state when you spawn it. @@ -1337,8 +1354,6 @@ successChance: 0.5 interactSuccessString: petting-success-tarantula interactFailureString: petting-failure-generic - - type: Puller - needsHands: false - type: NoSlip - type: Spider - type: IgnoreSpiderWeb @@ -1644,7 +1659,7 @@ damageContainer: Biological damageModifierSet: Infernal - type: Temperature - heatDamageThreshold: 4000 #They come from hell, so... + heatDamageThreshold: 4000 #They come from hell, so.. coldDamageThreshold: 260 currentTemperature: 310.15 coldDamage: diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml b/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml index e61f0e0576..96902e589b 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml @@ -57,6 +57,7 @@ proper: true gender: male + - type: entity name: Lisa parent: MobCorgi @@ -404,8 +405,6 @@ description: ghost-role-information-hamlet-description - type: InteractionPopup successChance: 1 - - type: Puller - needsHands: false - type: Butcherable spawned: - id: FoodMeat diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml b/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml index d7d041a31b..541ec17783 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml @@ -82,8 +82,6 @@ Base: dead Dead: Base: dead - - type: Puller - needsHands: false - type: GhostTakeoverAvailable makeSentient: true name: Rat King @@ -264,8 +262,6 @@ Base: dead-3 Dead: Base: splat-3 - - type: Puller - needsHands: false - type: DiseaseCarrier carrierDiseases: - VentCough diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml b/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml index 34b3d18bd3..ac38c18fe4 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml @@ -224,4 +224,6 @@ price: 150 - type: Appearance - type: FloatingVisuals + - type: Puller + needsHands: false From c25a7c8d9b99dc1263df6f58d951ca7330c9dbab Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 28 Feb 2023 07:58:13 -0500 Subject: [PATCH 30/53] Automatic changelog update --- Resources/Changelog/Changelog.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 636a6a7cd6..00ded00445 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,10 +1,4 @@ Entries: -- author: Rane - changes: - - {message: Objectives involving other traitors should be more reliable at providing - traitors that are alive and not SSD., type: Fix} - id: 2573 - time: '2022-11-04T02:58:19.0000000+00:00' - author: keronshb changes: - {message: Stealth boxes are now available via traitor uplinks., type: Add} @@ -2919,3 +2913,8 @@ Entries: - {message: Fix tile definition reloads., type: Fix} id: 3072 time: '2023-02-28T05:32:05.0000000+00:00' +- author: pofitlo + changes: + - {message: added ability to drag something for animals, type: Add} + id: 3073 + time: '2023-02-28T12:57:09.0000000+00:00' From 807e075f4fd347afab50c6f49a20acaf4aa51de2 Mon Sep 17 00:00:00 2001 From: crazybrain23 <44417085+crazybrain23@users.noreply.github.com> Date: Tue, 28 Feb 2023 13:00:22 +0000 Subject: [PATCH 31/53] Change ID examine icon to character outline icon (#13788) --- Content.Server/Access/Systems/IdExaminableSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Access/Systems/IdExaminableSystem.cs b/Content.Server/Access/Systems/IdExaminableSystem.cs index f6307f8c5d..009718efad 100644 --- a/Content.Server/Access/Systems/IdExaminableSystem.cs +++ b/Content.Server/Access/Systems/IdExaminableSystem.cs @@ -36,7 +36,7 @@ public sealed class IdExaminableSystem : EntitySystem Category = VerbCategory.Examine, Disabled = !detailsRange, Message = Loc.GetString("id-examinable-component-verb-disabled"), - Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/VerbIcons/information.svg.192dpi.png")) + Icon = new SpriteSpecifier.Texture(new ResourcePath("/Textures/Interface/character.svg.192dpi.png")) }; args.Verbs.Add(verb); From f28cd22cfd0023495abe7901995c64f056d30a54 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 28 Feb 2023 08:01:26 -0500 Subject: [PATCH 32/53] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 00ded00445..e545953dc5 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,14 +1,4 @@ Entries: -- author: keronshb - changes: - - {message: Stealth boxes are now available via traitor uplinks., type: Add} - - {message: 'Stealth boxes have been rebalanced. They now require players to move - slower to stay hidden, collide with bullets, and can no longer trap simple mobs.', - type: Tweak} - - {message: Fixed a bug that allowed sleeping mobs to still control vehicles and - boxes., type: Fix} - id: 2574 - time: '2022-11-04T03:16:24.0000000+00:00' - author: 25203 changes: - {message: Upgradeable machines can now be examined to show the effects that the @@ -2918,3 +2908,9 @@ Entries: - {message: added ability to drag something for animals, type: Add} id: 3073 time: '2023-02-28T12:57:09.0000000+00:00' +- author: crazybrain + changes: + - {message: 'Changed ID card examine icon, at least until someone makes a better + icon.', type: Tweak} + id: 3074 + time: '2023-02-28T13:00:23.0000000+00:00' From 32648fdac81e0b520685ae3f40729a122d04d42b Mon Sep 17 00:00:00 2001 From: Slava0135 <40753025+Slava0135@users.noreply.github.com> Date: Tue, 28 Feb 2023 16:14:13 +0300 Subject: [PATCH 33/53] Fix meat spike vaporizing victim items (#13697) --- .../Kitchen/EntitySystems/KitchenSpikeSystem.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Content.Server/Kitchen/EntitySystems/KitchenSpikeSystem.cs b/Content.Server/Kitchen/EntitySystems/KitchenSpikeSystem.cs index 19514310ba..77b56bfa2f 100644 --- a/Content.Server/Kitchen/EntitySystems/KitchenSpikeSystem.cs +++ b/Content.Server/Kitchen/EntitySystems/KitchenSpikeSystem.cs @@ -17,6 +17,8 @@ using Content.Shared.Kitchen; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; using Content.Shared.Popups; +using Robust.Server.GameObjects; +using Content.Server.Body.Systems; namespace Content.Server.Kitchen.EntitySystems { @@ -27,6 +29,8 @@ namespace Content.Server.Kitchen.EntitySystems [Dependency] private readonly IAdminLogManager _logger = default!; [Dependency] private readonly MobStateSystem _mobStateSystem = default!; [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly TransformSystem _transform = default!; + [Dependency] private readonly BodySystem _bodySystem = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; @@ -133,9 +137,13 @@ namespace Content.Server.Kitchen.EntitySystems _popupSystem.PopupEntity(Loc.GetString("comp-kitchen-spike-kill", ("user", Identity.Entity(userUid, EntityManager)), ("victim", victimUid)), uid, PopupType.LargeCaution); + _transform.SetCoordinates(victimUid, Transform(uid).Coordinates); // THE WHAT? // TODO: Need to be able to leave them on the spike to do DoT, see ss13. - EntityManager.QueueDeleteEntity(victimUid); + var gibs = _bodySystem.GibBody(victimUid); + foreach (var gib in gibs) { + QueueDel(gib); + } _audio.Play(component.SpikeSound, Filter.Pvs(uid), uid, true); } From 487abb81652e9c7ef3cab6648a84905770790980 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 28 Feb 2023 08:15:17 -0500 Subject: [PATCH 34/53] Automatic changelog update --- Resources/Changelog/Changelog.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index e545953dc5..d86ec945d3 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,10 +1,4 @@ Entries: -- author: 25203 - changes: - - {message: Upgradeable machines can now be examined to show the effects that the - upgrades have., type: Add} - id: 2575 - time: '2022-11-04T03:27:47.0000000+00:00' - author: rolfero changes: - {message: You can now link airlocks and windoors to buttons and levers!, type: Add} @@ -2914,3 +2908,8 @@ Entries: icon.', type: Tweak} id: 3074 time: '2023-02-28T13:00:23.0000000+00:00' +- author: Slava0135 + changes: + - {message: meat spike no longer vaporizes victim items, type: Fix} + id: 3075 + time: '2023-02-28T13:14:14.0000000+00:00' From 5e6a446c0233cbf8e9b2d6cd30ea290bd21292f8 Mon Sep 17 00:00:00 2001 From: wrexbe <81056464+wrexbe@users.noreply.github.com> Date: Tue, 28 Feb 2023 07:40:02 -0800 Subject: [PATCH 35/53] Copy eyecolor, and age on cloning (#14296) --- Content.Server/Humanoid/Systems/HumanoidAppearanceSystem.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Content.Server/Humanoid/Systems/HumanoidAppearanceSystem.cs b/Content.Server/Humanoid/Systems/HumanoidAppearanceSystem.cs index fe5b98e7de..ed83b7c189 100644 --- a/Content.Server/Humanoid/Systems/HumanoidAppearanceSystem.cs +++ b/Content.Server/Humanoid/Systems/HumanoidAppearanceSystem.cs @@ -121,6 +121,8 @@ public sealed partial class HumanoidAppearanceSystem : SharedHumanoidAppearanceS targetHumanoid.Species = sourceHumanoid.Species; targetHumanoid.SkinColor = sourceHumanoid.SkinColor; + targetHumanoid.EyeColor = sourceHumanoid.EyeColor; + targetHumanoid.Age = sourceHumanoid.Age; SetSex(target, sourceHumanoid.Sex, false, targetHumanoid); targetHumanoid.CustomBaseLayers = new(sourceHumanoid.CustomBaseLayers); targetHumanoid.MarkingSet = new(sourceHumanoid.MarkingSet); From 7f8860187e35a995e91a48b5f4790d379f1980e9 Mon Sep 17 00:00:00 2001 From: Visne <39844191+Visne@users.noreply.github.com> Date: Tue, 28 Feb 2023 16:55:25 +0100 Subject: [PATCH 36/53] Make pricing system aware of SpawnItemsOnUseComponent (#13626) * Make appraisal tool aware of SpawnItemsOnUseComponent * Move to SpawnItemsOnUseSystem --- Content.Server/Cargo/Systems/PricingSystem.cs | 21 +++- .../Components/SpawnItemsOnUseComponent.cs | 2 - .../EntitySystems/SpawnItemsOnUseSystem.cs | 43 ++++++- Content.Shared/Storage/EntitySpawnEntry.cs | 108 ++++++++++++------ .../Consumable/Food/Containers/tin.yml | 2 - 5 files changed, 132 insertions(+), 44 deletions(-) diff --git a/Content.Server/Cargo/Systems/PricingSystem.cs b/Content.Server/Cargo/Systems/PricingSystem.cs index 39bd51628c..56f8e2ffd1 100644 --- a/Content.Server/Cargo/Systems/PricingSystem.cs +++ b/Content.Server/Cargo/Systems/PricingSystem.cs @@ -3,7 +3,6 @@ using Content.Server.Administration; using Content.Server.Body.Systems; using Content.Server.Cargo.Components; using Content.Server.Chemistry.Components.SolutionManager; -using Content.Server.Stack; using Content.Shared.Administration; using Content.Shared.Body.Components; using Content.Shared.Chemistry.Reagent; @@ -88,6 +87,9 @@ public sealed class PricingSystem : EntitySystem private void CalculateMobPrice(EntityUid uid, MobPriceComponent component, ref PriceCalculationEvent args) { + if (args.Handled) + return; + if (!TryComp(uid, out var body) || !TryComp(uid, out var state)) { Logger.ErrorS("pricing", $"Tried to get the mob price of {ToPrettyString(uid)}, which has no {nameof(BodyComponent)} and no {nameof(MobStateComponent)}."); @@ -106,6 +108,9 @@ public sealed class PricingSystem : EntitySystem private void CalculateStackPrice(EntityUid uid, StackPriceComponent component, ref PriceCalculationEvent args) { + if (args.Handled) + return; + if (!TryComp(uid, out var stack)) { Logger.ErrorS("pricing", $"Tried to get the stack price of {ToPrettyString(uid)}, which has no {nameof(StackComponent)}."); @@ -117,6 +122,9 @@ public sealed class PricingSystem : EntitySystem private void CalculateSolutionPrice(EntityUid uid, SolutionContainerManagerComponent component, ref PriceCalculationEvent args) { + if (args.Handled) + return; + var price = 0f; foreach (var solution in component.Solutions.Values) @@ -133,6 +141,9 @@ public sealed class PricingSystem : EntitySystem private void CalculateStaticPrice(EntityUid uid, StaticPriceComponent component, ref PriceCalculationEvent args) { + if (args.Handled) + return; + args.Price += component.Price; } @@ -187,6 +198,9 @@ public sealed class PricingSystem : EntitySystem var ev = new PriceCalculationEvent(); RaiseLocalEvent(uid, ref ev); + if (ev.Handled) + return ev.Price; + //TODO: Add an OpaqueToAppraisal component or similar for blocking the recursive descent into containers, or preventing material pricing. if (TryComp(uid, out var material) && !HasComp(uid)) @@ -249,5 +263,10 @@ public struct PriceCalculationEvent /// public double Price = 0; + /// + /// Whether this event was already handled. + /// + public bool Handled = false; + public PriceCalculationEvent() { } } diff --git a/Content.Server/Storage/Components/SpawnItemsOnUseComponent.cs b/Content.Server/Storage/Components/SpawnItemsOnUseComponent.cs index 363561606c..95ef6b33c3 100644 --- a/Content.Server/Storage/Components/SpawnItemsOnUseComponent.cs +++ b/Content.Server/Storage/Components/SpawnItemsOnUseComponent.cs @@ -12,7 +12,6 @@ namespace Content.Server.Storage.Components /// /// The list of entities to spawn, with amounts and orGroups. /// - /// [DataField("items", required: true)] public List Items = new(); @@ -25,7 +24,6 @@ namespace Content.Server.Storage.Components /// /// How many uses before the item should delete itself. /// - /// [DataField("uses")] public int Uses = 1; } diff --git a/Content.Server/Storage/EntitySystems/SpawnItemsOnUseSystem.cs b/Content.Server/Storage/EntitySystems/SpawnItemsOnUseSystem.cs index 35936fea5c..b24348507d 100644 --- a/Content.Server/Storage/EntitySystems/SpawnItemsOnUseSystem.cs +++ b/Content.Server/Storage/EntitySystems/SpawnItemsOnUseSystem.cs @@ -1,12 +1,15 @@ using Content.Server.Administration.Logs; +using Content.Server.Cargo.Systems; using Content.Server.Storage.Components; using Content.Shared.Database; using Content.Shared.Hands.EntitySystems; using Content.Shared.Interaction.Events; using Content.Shared.Storage; using Robust.Shared.Audio; +using Robust.Shared.Map; using Robust.Shared.Player; using Robust.Shared.Random; +using static Content.Shared.Storage.EntitySpawnCollection; namespace Content.Server.Storage.EntitySystems { @@ -14,13 +17,47 @@ namespace Content.Server.Storage.EntitySystems { [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly IAdminLogManager _adminLogger = default!; - [Dependency] private readonly SharedHandsSystem _handsSystem = default!; + [Dependency] private readonly SharedHandsSystem _hands = default!; + [Dependency] private readonly PricingSystem _pricing = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnUseInHand); + SubscribeLocalEvent(CalculatePrice, before: new[] { typeof(PricingSystem) }); + } + + private void CalculatePrice(EntityUid uid, SpawnItemsOnUseComponent component, ref PriceCalculationEvent args) + { + var ungrouped = CollectOrGroups(component.Items, out var orGroups); + + foreach (var entry in ungrouped) + { + var protUid = Spawn(entry.PrototypeId, MapCoordinates.Nullspace); + + // Calculate the average price of the possible spawned items + args.Price += _pricing.GetPrice(protUid) * entry.SpawnProbability * entry.GetAmount(getAverage: true); + + EntityManager.DeleteEntity(protUid); + } + + foreach (var group in orGroups) + { + foreach (var entry in group.Entries) + { + var protUid = Spawn(entry.PrototypeId, MapCoordinates.Nullspace); + + // Calculate the average price of the possible spawned items + args.Price += _pricing.GetPrice(protUid) * + (entry.SpawnProbability / group.CumulativeProbability) * + entry.GetAmount(getAverage: true); + + EntityManager.DeleteEntity(protUid); + } + } + + args.Handled = true; } private void OnUseInHand(EntityUid uid, SpawnItemsOnUseComponent component, UseInHandEvent args) @@ -29,7 +66,7 @@ namespace Content.Server.Storage.EntitySystems return; var coords = Transform(args.User).Coordinates; - var spawnEntities = EntitySpawnCollection.GetSpawns(component.Items, _random); + var spawnEntities = GetSpawns(component.Items, _random); EntityUid? entityToPlaceInHands = null; foreach (var proto in spawnEntities) @@ -50,7 +87,7 @@ namespace Content.Server.Storage.EntitySystems if (entityToPlaceInHands != null) { - _handsSystem.PickupOrDrop(args.User, entityToPlaceInHands.Value); + _hands.PickupOrDrop(args.User, entityToPlaceInHands.Value); } } } diff --git a/Content.Shared/Storage/EntitySpawnEntry.cs b/Content.Shared/Storage/EntitySpawnEntry.cs index d1c92c59b8..da57ca850a 100644 --- a/Content.Shared/Storage/EntitySpawnEntry.cs +++ b/Content.Shared/Storage/EntitySpawnEntry.cs @@ -1,6 +1,6 @@ -using Robust.Shared.Prototypes; +using System.Linq; +using Robust.Shared.Prototypes; using Robust.Shared.Random; -using Robust.Shared.Serialization.Manager; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Shared.Storage; @@ -62,7 +62,7 @@ public struct EntitySpawnEntry public static class EntitySpawnCollection { - private sealed class OrGroup + public sealed class OrGroup { public List Entries { get; set; } = new(); public float CumulativeProbability { get; set; } = 0f; @@ -84,34 +84,16 @@ public static class EntitySpawnCollection IoCManager.Resolve(ref random); var spawned = new List(); - var orGroupedSpawns = new Dictionary(); + var ungrouped = CollectOrGroups(entries, out var orGroupedSpawns); - // collect groups together, create singular items that pass probability - foreach (var entry in entries) + foreach (var entry in ungrouped) { - // Handle "Or" groups - if (!string.IsNullOrEmpty(entry.GroupId)) - { - if (!orGroupedSpawns.TryGetValue(entry.GroupId, out OrGroup? orGroup)) - { - orGroup = new(); - orGroupedSpawns.Add(entry.GroupId, orGroup); - } - - orGroup.Entries.Add(entry); - orGroup.CumulativeProbability += entry.SpawnProbability; - continue; - } - - // else // Check random spawn // ReSharper disable once CompareOfFloatsByEqualityOperator - if (entry.SpawnProbability != 1f && !random.Prob(entry.SpawnProbability)) continue; + if (entry.SpawnProbability != 1f && !random.Prob(entry.SpawnProbability)) + continue; - var amount = entry.Amount; - - if (entry.MaxAmount > amount) - amount = random.Next(amount, entry.MaxAmount); + var amount = (int) entry.GetAmount(random); for (var i = 0; i < amount; i++) { @@ -119,25 +101,25 @@ public static class EntitySpawnCollection } } - // handle orgroup spawns - foreach (var spawnValue in orGroupedSpawns.Values) + // Handle OrGroup spawns + foreach (var spawnValue in orGroupedSpawns) { // For each group use the added cumulative probability to roll a double in that range - double diceRoll = random.NextDouble() * spawnValue.CumulativeProbability; + var diceRoll = random.NextDouble() * spawnValue.CumulativeProbability; + // Add the entry's spawn probability to this value, if equals or lower, spawn item, otherwise continue to next item. var cumulative = 0.0; + foreach (var entry in spawnValue.Entries) { cumulative += entry.SpawnProbability; - if (diceRoll > cumulative) continue; + if (diceRoll > cumulative) + continue; + // Dice roll succeeded, add item and break loop + var amount = (int) entry.GetAmount(random); - var amount = entry.Amount; - - if (entry.MaxAmount > amount) - amount = random.Next(amount, entry.MaxAmount); - - for (var index = 0; index < amount; index++) + for (var i = 0; i < amount; i++) { spawned.Add(entry.PrototypeId); } @@ -148,4 +130,58 @@ public static class EntitySpawnCollection return spawned; } + + /// + /// Collects all entries that belong together in an OrGroup, and then returns the leftover ungrouped entries. + /// + /// A list of entries that will be collected into OrGroups. + /// A list of entries collected into OrGroups. + /// A list of entries that are not in an OrGroup. + public static List CollectOrGroups(IEnumerable entries, out List orGroups) + { + var ungrouped = new List(); + var orGroupsDict = new Dictionary(); + + foreach (var entry in entries) + { + // If the entry is in a group, collect it into an OrGroup. Otherwise just add it to a list of ungrouped + // entries. + if (!string.IsNullOrEmpty(entry.GroupId)) + { + // Create a new OrGroup if necessary + if (!orGroupsDict.TryGetValue(entry.GroupId, out var orGroup)) + { + orGroup = new OrGroup(); + orGroupsDict.Add(entry.GroupId, orGroup); + } + + orGroup.Entries.Add(entry); + orGroup.CumulativeProbability += entry.SpawnProbability; + } + else + { + ungrouped.Add(entry); + } + } + + // We don't really need the group IDs anymore, so just return the values as a list + orGroups = orGroupsDict.Values.ToList(); + + return ungrouped; + } + + public static double GetAmount(this EntitySpawnEntry entry, IRobustRandom? random = null, bool getAverage = false) + { + // Max amount is less or equal than amount, so just return the amount + if (entry.MaxAmount <= entry.Amount) + return entry.Amount; + + // If we want the average, just calculate the expected amount + if (getAverage) + return (entry.Amount + entry.MaxAmount) / 2.0; + + // Otherwise get a random value in between + IoCManager.Resolve(ref random); + return random.Next(entry.Amount, entry.MaxAmount); + } } diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/tin.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/tin.yml index c1867876e4..84bbb670be 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/tin.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/tin.yml @@ -247,8 +247,6 @@ - id: FoodTinMREOpen sound: path: /Audio/Items/can_open3.ogg - - type: StaticPrice - price: 50 - type: entity From 0dbccbb5827f5a190f9f5d2baf0c263f276ed249 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 28 Feb 2023 10:56:30 -0500 Subject: [PATCH 37/53] Automatic changelog update --- Resources/Changelog/Changelog.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index d86ec945d3..0efa9a36bc 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: rolfero - changes: - - {message: You can now link airlocks and windoors to buttons and levers!, type: Add} - id: 2576 - time: '2022-11-04T04:00:34.0000000+00:00' - author: Macoron changes: - {message: Pinpointer arrow should be more accurate., type: Tweak} @@ -2913,3 +2908,9 @@ Entries: - {message: meat spike no longer vaporizes victim items, type: Fix} id: 3075 time: '2023-02-28T13:14:14.0000000+00:00' +- author: Visne + changes: + - {message: Fixed a bug where an unwrapped nutribrick was worth more than a wrapped + one, type: Fix} + id: 3076 + time: '2023-02-28T15:55:25.0000000+00:00' From 796bff4099d627e1cb598f7ec604ff1fb041b405 Mon Sep 17 00:00:00 2001 From: h3half Date: Tue, 28 Feb 2023 10:57:17 -0500 Subject: [PATCH 38/53] Fix sprite of newly-spawned empty power cells (#14254) * Overwrite inherited Sprite layers to exclude the full-charge light. * Include unshaded layer with visible set to false --- .../Entities/Objects/Power/powercells.yml | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/Resources/Prototypes/Entities/Objects/Power/powercells.yml b/Resources/Prototypes/Entities/Objects/Power/powercells.yml index 8a5e209303..0f03ac7782 100644 --- a/Resources/Prototypes/Entities/Objects/Power/powercells.yml +++ b/Resources/Prototypes/Entities/Objects/Power/powercells.yml @@ -68,6 +68,14 @@ suffix: Empty parent: PowerCellSmall components: + - type: Sprite + layers: + - map: [ "enum.PowerCellVisualLayers.Base" ] + state: small + - map: [ "enum.PowerCellVisualLayers.Unshaded" ] + state: o2 + shader: unshaded + visible: false - type: Battery maxCharge: 360 startingCharge: 0 @@ -95,6 +103,14 @@ suffix: Empty parent: PowerCellMedium components: + - type: Sprite + layers: + - map: [ "enum.PowerCellVisualLayers.Base" ] + state: medium + - map: [ "enum.PowerCellVisualLayers.Unshaded" ] + state: o2 + shader: unshaded + visible: false - type: Battery maxCharge: 720 startingCharge: 0 @@ -122,6 +138,14 @@ suffix: Empty parent: PowerCellHigh components: + - type: Sprite + layers: + - map: [ "enum.PowerCellVisualLayers.Base" ] + state: high + - map: [ "enum.PowerCellVisualLayers.Unshaded" ] + state: o2 + shader: unshaded + visible: false - type: Battery maxCharge: 1080 startingCharge: 0 @@ -149,6 +173,14 @@ suffix: Empty parent: PowerCellHyper components: + - type: Sprite + layers: + - map: [ "enum.PowerCellVisualLayers.Base" ] + state: hyper + - map: [ "enum.PowerCellVisualLayers.Unshaded" ] + state: o2 + shader: unshaded + visible: false - type: Battery maxCharge: 1800 startingCharge: 0 From 456013ad370d660bc207d0e6fcb5133492e90386 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 28 Feb 2023 10:58:21 -0500 Subject: [PATCH 39/53] Automatic changelog update --- Resources/Changelog/Changelog.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 0efa9a36bc..f18996c291 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: Macoron - changes: - - {message: Pinpointer arrow should be more accurate., type: Tweak} - id: 2577 - time: '2022-11-04T04:15:24.0000000+00:00' - author: EmoGarbage404 changes: - {message: Fixed a bug allowing lathes to infinitely print items when upgraded., @@ -2914,3 +2909,9 @@ Entries: one, type: Fix} id: 3076 time: '2023-02-28T15:55:25.0000000+00:00' +- author: h3half + changes: + - {message: Freshly-printed powercells no longer look like they're fully charged., + type: Fix} + id: 3077 + time: '2023-02-28T15:57:17.0000000+00:00' From f0f18368f08e7c5eb1d4d59f4ef446afe3109881 Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Tue, 28 Feb 2023 16:00:14 +0000 Subject: [PATCH 40/53] make bread slice smaller (#14276) Co-authored-by: deltanedas <@deltanedas:kde.org> --- .../Prototypes/Entities/Objects/Consumable/Food/Baked/bread.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/bread.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/bread.yml index 204cf6841e..8de9a456b9 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/bread.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/bread.yml @@ -25,6 +25,8 @@ id: FoodBreadSliceBase abstract: true components: + - type: Item + size: 1 - type: FlavorProfile flavors: - bread From 38e61e17093c1840385c5a96ccc3be5814b51fef Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 28 Feb 2023 11:01:19 -0500 Subject: [PATCH 41/53] Automatic changelog update --- Resources/Changelog/Changelog.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index f18996c291..c058de7c16 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,10 +1,4 @@ Entries: -- author: EmoGarbage404 - changes: - - {message: Fixed a bug allowing lathes to infinitely print items when upgraded., - type: Fix} - id: 2578 - time: '2022-11-04T19:13:07.0000000+00:00' - author: checkraze changes: - {message: changed the presents to be boxes and made a new present that has a surprise @@ -2915,3 +2909,8 @@ Entries: type: Fix} id: 3077 time: '2023-02-28T15:57:17.0000000+00:00' +- author: deltanedas + changes: + - {message: You can now fit more bread in your bag., type: Tweak} + id: 3078 + time: '2023-02-28T16:00:15.0000000+00:00' From 13d71f14e272ea3cd73965d5f2447d6ca6fc5203 Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Tue, 28 Feb 2023 11:03:55 -0500 Subject: [PATCH 42/53] add support for per-id access on AccessReaderComponent (#13659) * add support for per-id access on AccessReaderComponent * comments!!! * oh yeah we predicting baby * foobar * sloth review * weh --- .../Tests/Access/AccessReaderTest.cs | 51 ++++---- .../Access/Systems/IdCardConsoleSystem.cs | 2 +- .../CrewManifest/CrewManifestSystem.cs | 7 +- Content.Server/Mind/Commands/RenameCommand.cs | 3 +- .../StationRecordKeyStorageComponent.cs | 13 -- .../Components/StationRecordsComponent.cs | 2 + .../Systems/StationRecordsSystem.cs | 6 +- .../Components/AccessReaderComponent.cs | 62 +++++++--- .../Access/Systems/AccessReaderSystem.cs | 117 +++++++++++++++--- Content.Shared/Emag/Systems/EmagSystem.cs | 3 +- .../StationRecordKeyStorageComponent.cs | 25 ++++ .../StationRecordKeyStorageSystem.cs | 26 +++- 12 files changed, 234 insertions(+), 83 deletions(-) delete mode 100644 Content.Server/StationRecords/Components/StationRecordKeyStorageComponent.cs create mode 100644 Content.Shared/StationRecords/StationRecordKeyStorageComponent.cs rename {Content.Server/StationRecords/Systems => Content.Shared/StationRecords}/StationRecordKeyStorageSystem.cs (63%) diff --git a/Content.IntegrationTests/Tests/Access/AccessReaderTest.cs b/Content.IntegrationTests/Tests/Access/AccessReaderTest.cs index ae8da040ec..6b4df318b4 100644 --- a/Content.IntegrationTests/Tests/Access/AccessReaderTest.cs +++ b/Content.IntegrationTests/Tests/Access/AccessReaderTest.cs @@ -17,59 +17,60 @@ namespace Content.IntegrationTests.Tests.Access await using var pairTracker = await PoolManager.GetServerClient(new PoolSettings{NoClient = true}); var server = pairTracker.Pair.Server; + await server.WaitAssertion(() => { var system = EntitySystem.Get(); // test empty var reader = new AccessReaderComponent(); - Assert.That(system.IsAllowed(new[] { "Foo" }, reader), Is.True); - Assert.That(system.IsAllowed(new[] { "Bar" }, reader), Is.True); - Assert.That(system.IsAllowed(new string[] { }, reader), Is.True); + Assert.That(system.AreAccessTagsAllowed(new[] { "Foo" }, reader), Is.True); + Assert.That(system.AreAccessTagsAllowed(new[] { "Bar" }, reader), Is.True); + Assert.That(system.AreAccessTagsAllowed(new string[] { }, reader), Is.True); // test deny reader = new AccessReaderComponent(); reader.DenyTags.Add("A"); - Assert.That(system.IsAllowed(new[] { "Foo" }, reader), Is.True); - Assert.That(system.IsAllowed(new[] { "A" }, reader), Is.False); - Assert.That(system.IsAllowed(new[] { "A", "Foo" }, reader), Is.False); - Assert.That(system.IsAllowed(new string[] { }, reader), Is.True); + Assert.That(system.AreAccessTagsAllowed(new[] { "Foo" }, reader), Is.True); + Assert.That(system.AreAccessTagsAllowed(new[] { "A" }, reader), Is.False); + Assert.That(system.AreAccessTagsAllowed(new[] { "A", "Foo" }, reader), Is.False); + Assert.That(system.AreAccessTagsAllowed(new string[] { }, reader), Is.True); // test one list reader = new AccessReaderComponent(); reader.AccessLists.Add(new HashSet { "A" }); - Assert.That(system.IsAllowed(new[] { "A" }, reader), Is.True); - Assert.That(system.IsAllowed(new[] { "B" }, reader), Is.False); - Assert.That(system.IsAllowed(new[] { "A", "B" }, reader), Is.True); - Assert.That(system.IsAllowed(new string[] { }, reader), Is.False); + Assert.That(system.AreAccessTagsAllowed(new[] { "A" }, reader), Is.True); + Assert.That(system.AreAccessTagsAllowed(new[] { "B" }, reader), Is.False); + Assert.That(system.AreAccessTagsAllowed(new[] { "A", "B" }, reader), Is.True); + Assert.That(system.AreAccessTagsAllowed(new string[] { }, reader), Is.False); // test one list - two items reader = new AccessReaderComponent(); reader.AccessLists.Add(new HashSet { "A", "B" }); - Assert.That(system.IsAllowed(new[] { "A" }, reader), Is.False); - Assert.That(system.IsAllowed(new[] { "B" }, reader), Is.False); - Assert.That(system.IsAllowed(new[] { "A", "B" }, reader), Is.True); - Assert.That(system.IsAllowed(new string[] { }, reader), Is.False); + Assert.That(system.AreAccessTagsAllowed(new[] { "A" }, reader), Is.False); + Assert.That(system.AreAccessTagsAllowed(new[] { "B" }, reader), Is.False); + Assert.That(system.AreAccessTagsAllowed(new[] { "A", "B" }, reader), Is.True); + Assert.That(system.AreAccessTagsAllowed(new string[] { }, reader), Is.False); // test two list reader = new AccessReaderComponent(); reader.AccessLists.Add(new HashSet { "A" }); reader.AccessLists.Add(new HashSet { "B", "C" }); - Assert.That(system.IsAllowed(new[] { "A" }, reader), Is.True); - Assert.That(system.IsAllowed(new[] { "B" }, reader), Is.False); - Assert.That(system.IsAllowed(new[] { "A", "B" }, reader), Is.True); - Assert.That(system.IsAllowed(new[] { "C", "B" }, reader), Is.True); - Assert.That(system.IsAllowed(new[] { "C", "B", "A" }, reader), Is.True); - Assert.That(system.IsAllowed(new string[] { }, reader), Is.False); + Assert.That(system.AreAccessTagsAllowed(new[] { "A" }, reader), Is.True); + Assert.That(system.AreAccessTagsAllowed(new[] { "B" }, reader), Is.False); + Assert.That(system.AreAccessTagsAllowed(new[] { "A", "B" }, reader), Is.True); + Assert.That(system.AreAccessTagsAllowed(new[] { "C", "B" }, reader), Is.True); + Assert.That(system.AreAccessTagsAllowed(new[] { "C", "B", "A" }, reader), Is.True); + Assert.That(system.AreAccessTagsAllowed(new string[] { }, reader), Is.False); // test deny list reader = new AccessReaderComponent(); reader.AccessLists.Add(new HashSet { "A" }); reader.DenyTags.Add("B"); - Assert.That(system.IsAllowed(new[] { "A" }, reader), Is.True); - Assert.That(system.IsAllowed(new[] { "B" }, reader), Is.False); - Assert.That(system.IsAllowed(new[] { "A", "B" }, reader), Is.False); - Assert.That(system.IsAllowed(new string[] { }, reader), Is.False); + Assert.That(system.AreAccessTagsAllowed(new[] { "A" }, reader), Is.True); + Assert.That(system.AreAccessTagsAllowed(new[] { "B" }, reader), Is.False); + Assert.That(system.AreAccessTagsAllowed(new[] { "A", "B" }, reader), Is.False); + Assert.That(system.AreAccessTagsAllowed(new string[] { }, reader), Is.False); }); await pairTracker.CleanReturnAsync(); } diff --git a/Content.Server/Access/Systems/IdCardConsoleSystem.cs b/Content.Server/Access/Systems/IdCardConsoleSystem.cs index 15578a0b98..5804e709d4 100644 --- a/Content.Server/Access/Systems/IdCardConsoleSystem.cs +++ b/Content.Server/Access/Systems/IdCardConsoleSystem.cs @@ -1,6 +1,6 @@ using System.Linq; using Content.Server.Station.Systems; -using Content.Server.StationRecords; +using Content.Server.StationRecords.Systems; using Content.Shared.Access.Components; using Content.Shared.Access.Systems; using Content.Shared.Administration.Logs; diff --git a/Content.Server/CrewManifest/CrewManifestSystem.cs b/Content.Server/CrewManifest/CrewManifestSystem.cs index 1bd61d872b..fe037edcc3 100644 --- a/Content.Server/CrewManifest/CrewManifestSystem.cs +++ b/Content.Server/CrewManifest/CrewManifestSystem.cs @@ -1,22 +1,17 @@ using System.Linq; using Content.Server.Administration; using Content.Server.EUI; -using Content.Server.GameTicking; using Content.Server.Station.Systems; using Content.Server.StationRecords; +using Content.Server.StationRecords.Systems; using Content.Shared.Administration; using Content.Shared.CCVar; using Content.Shared.CrewManifest; using Content.Shared.GameTicking; -using Content.Shared.Roles; using Content.Shared.StationRecords; -using Robust.Server.GameObjects; using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Console; -using Robust.Shared.Player; -using Robust.Shared.Players; -using Robust.Shared.Prototypes; namespace Content.Server.CrewManifest; diff --git a/Content.Server/Mind/Commands/RenameCommand.cs b/Content.Server/Mind/Commands/RenameCommand.cs index 2986f578e1..7b3cb92c16 100644 --- a/Content.Server/Mind/Commands/RenameCommand.cs +++ b/Content.Server/Mind/Commands/RenameCommand.cs @@ -1,10 +1,9 @@ using Content.Server.Access.Systems; using Content.Server.Administration; using Content.Server.Administration.Systems; -using Content.Server.Cloning; using Content.Server.Mind.Components; using Content.Server.PDA; -using Content.Server.StationRecords; +using Content.Server.StationRecords.Systems; using Content.Shared.Access.Components; using Content.Shared.Administration; using Content.Shared.PDA; diff --git a/Content.Server/StationRecords/Components/StationRecordKeyStorageComponent.cs b/Content.Server/StationRecords/Components/StationRecordKeyStorageComponent.cs deleted file mode 100644 index a5e118c503..0000000000 --- a/Content.Server/StationRecords/Components/StationRecordKeyStorageComponent.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Content.Shared.StationRecords; - -namespace Content.Server.StationRecords; - -[RegisterComponent] -public sealed class StationRecordKeyStorageComponent : Component -{ - /// - /// The key stored in this component. - /// - [ViewVariables] - public StationRecordKey? Key; -} diff --git a/Content.Server/StationRecords/Components/StationRecordsComponent.cs b/Content.Server/StationRecords/Components/StationRecordsComponent.cs index 4cd295dc12..447d06385a 100644 --- a/Content.Server/StationRecords/Components/StationRecordsComponent.cs +++ b/Content.Server/StationRecords/Components/StationRecordsComponent.cs @@ -1,3 +1,5 @@ +using Content.Server.StationRecords.Systems; + namespace Content.Server.StationRecords; [Access(typeof(StationRecordsSystem))] diff --git a/Content.Server/StationRecords/Systems/StationRecordsSystem.cs b/Content.Server/StationRecords/Systems/StationRecordsSystem.cs index e801cad73e..50f62d323b 100644 --- a/Content.Server/StationRecords/Systems/StationRecordsSystem.cs +++ b/Content.Server/StationRecords/Systems/StationRecordsSystem.cs @@ -1,9 +1,7 @@ using System.Diagnostics.CodeAnalysis; -using Content.Server.Access.Systems; +using System.Linq; using Content.Server.GameTicking; using Content.Server.Station.Systems; -using Content.Server.StationRecords; -using Content.Server.StationRecords.Systems; using Content.Shared.Access.Components; using Content.Shared.Inventory; using Content.Shared.PDA; @@ -13,6 +11,8 @@ using Content.Shared.StationRecords; using Robust.Shared.Enums; using Robust.Shared.Prototypes; +namespace Content.Server.StationRecords.Systems; + /// /// Station records. /// diff --git a/Content.Shared/Access/Components/AccessReaderComponent.cs b/Content.Shared/Access/Components/AccessReaderComponent.cs index 97fe78f7e6..a365ecae84 100644 --- a/Content.Shared/Access/Components/AccessReaderComponent.cs +++ b/Content.Shared/Access/Components/AccessReaderComponent.cs @@ -1,22 +1,52 @@ -namespace Content.Shared.Access.Components +using Content.Shared.Access.Systems; +using Content.Shared.StationRecords; +using Robust.Shared.GameStates; +using Robust.Shared.Serialization; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Set; + +namespace Content.Shared.Access.Components; + +/// +/// Stores access levels necessary to "use" an entity +/// and allows checking if something or somebody is authorized with these access levels. +/// +[RegisterComponent, NetworkedComponent] +public sealed class AccessReaderComponent : Component { /// - /// Stores access levels necessary to "use" an entity - /// and allows checking if something or somebody is authorized with these access levels. + /// The set of tags that will automatically deny an allowed check, if any of them are present. /// - [RegisterComponent] - public sealed class AccessReaderComponent : Component - { - /// - /// The set of tags that will automatically deny an allowed check, if any of them are present. - /// - public HashSet DenyTags = new(); + [DataField("denyTags", customTypeSerializer: typeof(PrototypeIdHashSetSerializer))] + public HashSet DenyTags = new(); - /// - /// List of access lists to check allowed against. For an access check to pass - /// there has to be an access list that is a subset of the access in the checking list. - /// - [DataField("access")] - public List> AccessLists = new(); + /// + /// List of access lists to check allowed against. For an access check to pass + /// there has to be an access list that is a subset of the access in the checking list. + /// + [DataField("access")] + public List> AccessLists = new(); + + /// + /// A list of valid stationrecordkeys + /// + [DataField("accessKeys")] + public HashSet AccessKeys = new(); +} + +[Serializable, NetSerializable] +public sealed class AccessReaderComponentState : ComponentState +{ + public HashSet DenyTags; + + public List> AccessLists; + + public HashSet AccessKeys; + + public AccessReaderComponentState(HashSet denyTags, List> accessLists, HashSet accessKeys) + { + DenyTags = denyTags; + AccessLists = accessLists; + AccessKeys = accessKeys; } } + diff --git a/Content.Shared/Access/Systems/AccessReaderSystem.cs b/Content.Shared/Access/Systems/AccessReaderSystem.cs index 4562d05858..b486d6dd9c 100644 --- a/Content.Shared/Access/Systems/AccessReaderSystem.cs +++ b/Content.Shared/Access/Systems/AccessReaderSystem.cs @@ -8,6 +8,8 @@ using Content.Shared.Access.Components; using Robust.Shared.Prototypes; using Content.Shared.Hands.EntitySystems; using Content.Shared.MachineLinking.Events; +using Content.Shared.StationRecords; +using Robust.Shared.GameStates; namespace Content.Shared.Access.Systems { @@ -23,6 +25,24 @@ namespace Content.Shared.Access.Systems SubscribeLocalEvent(OnInit); SubscribeLocalEvent(OnEmagged); SubscribeLocalEvent(OnLinkAttempt); + + SubscribeLocalEvent(OnGetState); + SubscribeLocalEvent(OnHandleState); + } + + private void OnGetState(EntityUid uid, AccessReaderComponent component, ref ComponentGetState args) + { + args.State = new AccessReaderComponentState(component.DenyTags, component.AccessLists, + component.AccessKeys); + } + + private void OnHandleState(EntityUid uid, AccessReaderComponent component, ref ComponentHandleState args) + { + if (args.Current is not AccessReaderComponentState state) + return; + component.AccessKeys = new (state.AccessKeys); + component.AccessLists = new (state.AccessLists); + component.DenyTags = new (state.DenyTags); } private void OnLinkAttempt(EntityUid uid, AccessReaderComponent component, LinkAttemptEvent args) @@ -62,8 +82,7 @@ namespace Content.Shared.Access.Systems { if (!Resolve(target, ref reader, false)) return true; - var tags = FindAccessTags(source); - return IsAllowed(tags, reader); + return IsAllowed(source, reader); } /// @@ -74,8 +93,15 @@ namespace Content.Shared.Access.Systems /// A reader from a different entity public bool IsAllowed(EntityUid entity, AccessReaderComponent reader) { - var tags = FindAccessTags(entity); - return IsAllowed(tags, reader); + var allEnts = FindPotentialAccessItems(entity); + + if (AreAccessTagsAllowed(FindAccessTags(entity, allEnts), reader)) + return true; + + if (AreStationRecordKeysAllowed(FindStationRecordKeys(entity, allEnts), reader)) + return true; + + return false; } /// @@ -83,7 +109,7 @@ namespace Content.Shared.Access.Systems /// /// A list of access tags /// An access reader to check against - public bool IsAllowed(ICollection accessTags, AccessReaderComponent reader) + public bool AreAccessTagsAllowed(ICollection accessTags, AccessReaderComponent reader) { if (HasComp(reader.Owner)) { @@ -105,17 +131,18 @@ namespace Content.Shared.Access.Systems } /// - /// Finds the access tags on the given entity + /// Compares the given stationrecordkeys with the accessreader to see if it is allowed. /// - /// The entity that is being searched. - public ICollection FindAccessTags(EntityUid uid) + public bool AreStationRecordKeysAllowed(ICollection keys, AccessReaderComponent reader) { - HashSet? tags = null; - var owned = false; - - // check entity itself - FindAccessTagsItem(uid, ref tags, ref owned); + return keys.Any() && reader.AccessKeys.Any(keys.Contains); + } + /// + /// Finds all the items that could potentially give access to a given entity + /// + public HashSet FindPotentialAccessItems(EntityUid uid) + { FindAccessItemsInventory(uid, out var items); var ev = new GetAdditionalAccessEvent @@ -123,7 +150,23 @@ namespace Content.Shared.Access.Systems Entities = items }; RaiseLocalEvent(uid, ref ev); - foreach (var ent in ev.Entities) + items.Add(uid); + return items; + } + + /// + /// Finds the access tags on the given entity + /// + /// The entity that is being searched. + /// All of the items to search for access. If none are passed in, will be used. + public ICollection FindAccessTags(EntityUid uid, HashSet? items = null) + { + HashSet? tags = null; + var owned = false; + + items ??= FindPotentialAccessItems(uid); + + foreach (var ent in items) { FindAccessTagsItem(ent, ref tags, ref owned); } @@ -131,6 +174,26 @@ namespace Content.Shared.Access.Systems return (ICollection?) tags ?? Array.Empty(); } + /// + /// Finds the access tags on the given entity + /// + /// The entity that is being searched. + /// All of the items to search for access. If none are passed in, will be used. + public ICollection FindStationRecordKeys(EntityUid uid, HashSet? items = null) + { + HashSet keys = new(); + + items ??= FindPotentialAccessItems(uid); + + foreach (var ent in items) + { + if (FindStationRecordKeyItem(ent, out var key)) + keys.Add(key.Value); + } + + return keys; + } + /// /// Try to find on this item /// or inside this item (if it's pda) @@ -203,5 +266,31 @@ namespace Content.Shared.Access.Systems tags = null; return false; } + + /// + /// Try to find on this item + /// or inside this item (if it's pda) + /// + private bool FindStationRecordKeyItem(EntityUid uid, [NotNullWhen(true)] out StationRecordKey? key) + { + if (EntityManager.TryGetComponent(uid, out StationRecordKeyStorageComponent? storage) && storage.Key != null) + { + key = storage.Key; + return true; + } + + if (TryComp(uid, out var pda) && + pda.ContainedID?.Owner is {Valid: true} id) + { + if (TryComp(id, out var pdastorage) && pdastorage.Key != null) + { + key = pdastorage.Key; + return true; + } + } + + key = null; + return false; + } } } diff --git a/Content.Shared/Emag/Systems/EmagSystem.cs b/Content.Shared/Emag/Systems/EmagSystem.cs index d5db09e1e2..360cfa3141 100644 --- a/Content.Shared/Emag/Systems/EmagSystem.cs +++ b/Content.Shared/Emag/Systems/EmagSystem.cs @@ -130,7 +130,8 @@ namespace Content.Shared.Emag.Systems if (component.Charges <= 0) { - _popupSystem.PopupEntity(Loc.GetString("emag-no-charges"), user, user); + if (_net.IsServer) + _popupSystem.PopupEntity(Loc.GetString("emag-no-charges"), user, user); return false; } diff --git a/Content.Shared/StationRecords/StationRecordKeyStorageComponent.cs b/Content.Shared/StationRecords/StationRecordKeyStorageComponent.cs new file mode 100644 index 0000000000..87f789364a --- /dev/null +++ b/Content.Shared/StationRecords/StationRecordKeyStorageComponent.cs @@ -0,0 +1,25 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Serialization; + +namespace Content.Shared.StationRecords; + +[RegisterComponent, NetworkedComponent] +public sealed class StationRecordKeyStorageComponent : Component +{ + /// + /// The key stored in this component. + /// + [ViewVariables] + public StationRecordKey? Key; +} + +[Serializable, NetSerializable] +public sealed class StationRecordKeyStorageComponentState : ComponentState +{ + public StationRecordKey? Key; + + public StationRecordKeyStorageComponentState(StationRecordKey? key) + { + Key = key; + } +} diff --git a/Content.Server/StationRecords/Systems/StationRecordKeyStorageSystem.cs b/Content.Shared/StationRecords/StationRecordKeyStorageSystem.cs similarity index 63% rename from Content.Server/StationRecords/Systems/StationRecordKeyStorageSystem.cs rename to Content.Shared/StationRecords/StationRecordKeyStorageSystem.cs index d19444b644..94eda02c5f 100644 --- a/Content.Server/StationRecords/Systems/StationRecordKeyStorageSystem.cs +++ b/Content.Shared/StationRecords/StationRecordKeyStorageSystem.cs @@ -1,9 +1,29 @@ -using Content.Shared.StationRecords; +using Robust.Shared.GameStates; -namespace Content.Server.StationRecords.Systems; +namespace Content.Shared.StationRecords; public sealed class StationRecordKeyStorageSystem : EntitySystem { + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnGetState); + SubscribeLocalEvent(OnHandleState); + } + + private void OnGetState(EntityUid uid, StationRecordKeyStorageComponent component, ref ComponentGetState args) + { + args.State = new StationRecordKeyStorageComponentState(component.Key); + } + + private void OnHandleState(EntityUid uid, StationRecordKeyStorageComponent component, ref ComponentHandleState args) + { + if (args.Current is not StationRecordKeyStorageComponentState state) + return; + component.Key = state.Key; + } + /// /// Assigns a station record key to an entity. /// @@ -18,6 +38,7 @@ public sealed class StationRecordKeyStorageSystem : EntitySystem } keyStorage.Key = key; + Dirty(keyStorage); } /// @@ -35,6 +56,7 @@ public sealed class StationRecordKeyStorageSystem : EntitySystem var key = keyStorage.Key; keyStorage.Key = null; + Dirty(keyStorage); return key; } From 644e2e2d60a761168c1d66762bce1afa6facd2f5 Mon Sep 17 00:00:00 2001 From: lapatison <100279397+lapatison@users.noreply.github.com> Date: Tue, 28 Feb 2023 19:04:30 +0300 Subject: [PATCH 43/53] size 121 -> 100 (#14250) --- .../Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml index 133607c34b..d7f0cbaf93 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml @@ -250,6 +250,8 @@ - type: ClothingSpeedModifier walkModifier: 0.75 sprintModifier: 0.75 + - type: Item + size: 100 - type: ExplosionResistance damageCoefficient: 0.1 - type: ToggleableClothing From b9a805b352722b18d075147da1aa61916cb8b594 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Wed, 1 Mar 2023 03:05:29 +1100 Subject: [PATCH 44/53] Reduce some state handling allocs (#14301) --- Content.Shared/Doors/Systems/SharedDoorSystem.cs | 5 +++-- Content.Shared/Mobs/Systems/MobStateSystem.cs | 7 ++++++- Content.Shared/Mobs/Systems/MobThresholdSystem.cs | 12 +++++++++++- .../StepTrigger/Systems/StepTriggerSystem.cs | 14 ++++++++++---- 4 files changed, 30 insertions(+), 8 deletions(-) diff --git a/Content.Shared/Doors/Systems/SharedDoorSystem.cs b/Content.Shared/Doors/Systems/SharedDoorSystem.cs index c8db06b792..bb590a32d9 100644 --- a/Content.Shared/Doors/Systems/SharedDoorSystem.cs +++ b/Content.Shared/Doors/Systems/SharedDoorSystem.cs @@ -108,9 +108,10 @@ public abstract class SharedDoorSystem : EntitySystem if (args.Current is not DoorComponentState state) return; - if (!door.CurrentlyCrushing.Equals(state.CurrentlyCrushing)) + if (!door.CurrentlyCrushing.SetEquals(state.CurrentlyCrushing)) { - door.CurrentlyCrushing = new(state.CurrentlyCrushing); + door.CurrentlyCrushing.Clear(); + door.CurrentlyCrushing.UnionWith(state.CurrentlyCrushing); } door.State = state.DoorState; diff --git a/Content.Shared/Mobs/Systems/MobStateSystem.cs b/Content.Shared/Mobs/Systems/MobStateSystem.cs index 4be7715a98..ad2de1c801 100644 --- a/Content.Shared/Mobs/Systems/MobStateSystem.cs +++ b/Content.Shared/Mobs/Systems/MobStateSystem.cs @@ -104,7 +104,12 @@ public partial class MobStateSystem : EntitySystem return; component.CurrentState = state.CurrentState; - component.AllowedStates = new HashSet(state.AllowedStates); + + if (!component.AllowedStates.SetEquals(state.AllowedStates)) + { + component.AllowedStates.Clear(); + component.AllowedStates.UnionWith(state.AllowedStates); + } } private void OnGetComponentState(EntityUid uid, MobStateComponent component, ref ComponentGetState args) diff --git a/Content.Shared/Mobs/Systems/MobThresholdSystem.cs b/Content.Shared/Mobs/Systems/MobThresholdSystem.cs index c84fd097d9..dabd998ebc 100644 --- a/Content.Shared/Mobs/Systems/MobThresholdSystem.cs +++ b/Content.Shared/Mobs/Systems/MobThresholdSystem.cs @@ -340,7 +340,17 @@ public sealed class MobThresholdSystem : EntitySystem if (args.Current is not MobThresholdComponentState state) return; - component.Thresholds = new SortedDictionary(state.Thresholds); + if (component.Thresholds.Count != state.Thresholds.Count || + !component.Thresholds.SequenceEqual(state.Thresholds)) + { + component.Thresholds.Clear(); + + foreach (var threshold in state.Thresholds) + { + component.Thresholds.Add(threshold.Key, threshold.Value); + } + } + component.CurrentThresholdState = state.CurrentThresholdState; } diff --git a/Content.Shared/StepTrigger/Systems/StepTriggerSystem.cs b/Content.Shared/StepTrigger/Systems/StepTriggerSystem.cs index 72415ed839..b6398ca21d 100644 --- a/Content.Shared/StepTrigger/Systems/StepTriggerSystem.cs +++ b/Content.Shared/StepTrigger/Systems/StepTriggerSystem.cs @@ -150,11 +150,17 @@ public sealed class StepTriggerSystem : EntitySystem component.IntersectRatio = state.IntersectRatio; component.Active = state.Active; - component.CurrentlySteppedOn.Clear(); - component.Colliding.Clear(); + if (!component.CurrentlySteppedOn.SetEquals(state.CurrentlySteppedOn)) + { + component.CurrentlySteppedOn.Clear(); + component.CurrentlySteppedOn.UnionWith(state.CurrentlySteppedOn); + } - component.CurrentlySteppedOn.UnionWith(state.CurrentlySteppedOn); - component.Colliding.UnionWith(state.Colliding); + if (!component.Colliding.SetEquals(state.Colliding)) + { + component.Colliding.Clear(); + component.Colliding.UnionWith(state.Colliding); + } if (component.Colliding.Count > 0) { From fbb23bd540dba14528f484991503a74d39286a37 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 28 Feb 2023 11:05:35 -0500 Subject: [PATCH 45/53] Automatic changelog update --- Resources/Changelog/Changelog.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index c058de7c16..9d0b66d795 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,10 +1,4 @@ Entries: -- author: checkraze - changes: - - {message: changed the presents to be boxes and made a new present that has a surprise - inside!, type: Tweak} - id: 2579 - time: '2022-11-04T19:24:29.0000000+00:00' - author: Salex08 changes: - {message: Shot Projectiles cause impulses like it was supposed to, type: Fix} @@ -2914,3 +2908,8 @@ Entries: - {message: You can now fit more bread in your bag., type: Tweak} id: 3078 time: '2023-02-28T16:00:15.0000000+00:00' +- author: lapatison + changes: + - {message: Experimental research hardsuit can now be hidden in a backpack., type: Add} + id: 3079 + time: '2023-02-28T16:04:30.0000000+00:00' From 8f402ee8ca64165d635efe799235074f3f81653d Mon Sep 17 00:00:00 2001 From: Chief-Engineer <119664036+Chief-Engineer@users.noreply.github.com> Date: Tue, 28 Feb 2023 10:09:35 -0600 Subject: [PATCH 46/53] Add non-players button to log viewer (#14097) * add include non-players button to log viewer * breakout player filter check * fix sending player logs with no players selected * fix default not returning player logs, causing test issue --- .../UI/Logs/AdminLogsControl.xaml | 2 + .../UI/Logs/AdminLogsControl.xaml.cs | 39 +++++++++++++++++-- .../Administration/UI/Logs/AdminLogsEui.cs | 2 + .../Logs/AdminLogManager.Cache.cs | 21 +++++++--- .../Administration/Logs/AdminLogsEui.cs | 2 + .../Administration/Logs/LogFilter.cs | 4 ++ Content.Server/Database/ServerDbBase.cs | 21 +++++++--- .../Administration/Logs/AdminLogsEuiState.cs | 6 +++ .../en-US/administration/ui/admin-logs.ftl | 1 + 9 files changed, 84 insertions(+), 14 deletions(-) diff --git a/Content.Client/Administration/UI/Logs/AdminLogsControl.xaml b/Content.Client/Administration/UI/Logs/AdminLogsControl.xaml index 990a7d0803..9d3506c6ba 100644 --- a/Content.Client/Administration/UI/Logs/AdminLogsControl.xaml +++ b/Content.Client/Administration/UI/Logs/AdminLogsControl.xaml @@ -32,6 +32,8 @@ +